diff --git a/eng/apiview_reqs.txt b/eng/apiview_reqs.txt index 4e982663d0e5..2fb4c47ac25f 100644 --- a/eng/apiview_reqs.txt +++ b/eng/apiview_reqs.txt @@ -1,18 +1,19 @@ +aiohttp==3.13.3 astroid==4.0.4 charset-normalizer==3.4.1 dill==0.3.9 isodate==0.6.1 isort==5.13.2 -lazy-object-proxy==1.10.0 +lazy-object-proxy==1.12.0 mccabe==0.7.0 pkginfo==1.12.1.2 platformdirs==4.3.6 pylint==4.0.4 -azure-pylint-guidelines-checker==0.5.7 +azure-pylint-guidelines-checker==0.5.9 six==1.17.0 tomli==2.2.1 tomlkit==0.13.2 typing_extensions==4.15.0 wrapt==1.17.2 -apiview-stub-generator==0.3.28 -pip==24.0 \ No newline at end of file +apiview-stub-generator==0.3.31 +pip==24.0 diff --git a/eng/common/TestResources/SubConfig-Helpers.ps1 b/eng/common/TestResources/SubConfig-Helpers.ps1 index 061160d59f6c..0e9d878054b8 100644 --- a/eng/common/TestResources/SubConfig-Helpers.ps1 +++ b/eng/common/TestResources/SubConfig-Helpers.ps1 @@ -82,6 +82,11 @@ function ShouldMarkValueAsSecret([string]$serviceName, [string]$key, [string]$va "SERVICE_MANAGEMENT_URL", "ENDPOINT_SUFFIX", "SERVICE_DIRECTORY", + "RUST_TEST_THREADS", + "RUST_BACKTRACE", + "COSMOS_RUSTFLAGS", + "DATABASE_NAME", + "ACCOUNT_HOST", # This is used in many places and is harder to extract from the base subscription config, so hardcode it for now. "STORAGE_ENDPOINT_SUFFIX", # Parameters diff --git a/eng/common/TestResources/TestResources-Helpers.ps1 b/eng/common/TestResources/TestResources-Helpers.ps1 index c6c118cc5038..d3a985cffddf 100644 --- a/eng/common/TestResources/TestResources-Helpers.ps1 +++ b/eng/common/TestResources/TestResources-Helpers.ps1 @@ -349,6 +349,36 @@ function SetDeploymentOutputs( return $deploymentEnvironmentVariables, $deploymentOutputs } +<# + Writes Resource Manager errors which often have nested exceptions. + https://learn.microsoft.com/dotnet/api/microsoft.azure.commands.resourcemanager.cmdlets.sdkmodels.psresourcemanagererror +#> +function Write-PSResourceManagerError($resourceManagerError, [int]$level, [int]$maxLevel) { + if (!$resourceManagerError -or !$resourceManagerError.Message) { + return; + } + + # Retrieve one or more messages then decode the strings for readability (remove quote escapes, fix link readability, etc.) + $parsedMessage = ($resourceManagerError.Message -join "$([System.Environment]::NewLine)$([System.Environment]::NewLine)") + $parsedMessage = [System.Net.WebUtility]::UrlDecode($parsedMessage) + + $prefix = " " * ($level * 2) + "-" + Write-Host "$prefix $parsedMessage" + + # Limit the level of nested exceptions to prevent overwhelming users with details and infinite recursive calls. + if ($level -ge $maxLevel) { + if ($resourceManagerError.Details.Count -gt 0) { + Write-Host "$prefix ... (additional nested errors not shown)" + } + + return; + } + + foreach ($detail in $resourceManagerError.Details) { + Write-PSResourceManagerError $detail ($level + 1) $maxLevel + } +} + function HandleTemplateDeploymentError($templateValidationResult) { Write-Warning "Deployment template validation failed" @@ -357,14 +387,10 @@ function HandleTemplateDeploymentError($templateValidationResult) { return } - # Retrieve one or more messages then decode the strings for readability (remove quote escapes, fix link readability, etc.) - $parsedMessage = ($templateValidationResult.Details.Message -join "$([System.Environment]::NewLine)$([System.Environment]::NewLine)") - $parsedMessage = [System.Net.WebUtility]::UrlDecode($parsedMessage) - Write-Warning "#####################################################" Write-Warning "######### TEMPLATE VALIDATION ERROR DETAILS #########" Write-Warning "#####################################################" - Write-Host $parsedMessage + Write-PSResourceManagerError $templateValidationResult 0 5 Write-Warning "#####################################################" } diff --git a/eng/common/TestResources/deploy-test-resources.yml b/eng/common/TestResources/deploy-test-resources.yml index 4429d6631aa3..ac5ef1dba4c0 100644 --- a/eng/common/TestResources/deploy-test-resources.yml +++ b/eng/common/TestResources/deploy-test-resources.yml @@ -12,6 +12,7 @@ parameters: UseFederatedAuth: true PersistOidcToken: false SelfContainedPostScript: self-contained-test-resources-post.ps1 + SkipEnvironmentSetup: false # SubscriptionConfiguration will be splatted into the parameters of the test # resources script. It should be JSON in the form: @@ -42,7 +43,8 @@ parameters: steps: - template: /eng/common/pipelines/templates/steps/cache-ps-modules.yml - - template: /eng/common/TestResources/setup-environments.yml + - ${{ if eq(parameters.SkipEnvironmentSetup, false) }}: + - template: /eng/common/TestResources/setup-environments.yml - ${{ if eq(parameters.PersistOidcToken, true) }}: - task: AzureCLI@2 diff --git a/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md b/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md index 4d0e4bb2e39e..c4dbf7813b76 100644 --- a/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md +++ b/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md @@ -52,7 +52,7 @@ Follow the steps in #file:.github/skills/azsdk-common-generate-sdk-locally/SKILL For data plane: `Python`, `.NET`, `JavaScript`, `Java` - Each SDK generation tool call should show a label to indicate the language being generated. 2. Monitor pipeline status after 15 minutes and provide updates. If pipeline is in progress, inform user that it may take additional time and check the status later. -3. Display generated SDK PR links when available. If pipeline fails, inform user with error details and suggest to check pipeline logs for more information. Use the `azsdk-common-pipeline-troubleshooting` skill to diagnose and resolve pipeline failures. +3. Display generated SDK PR links when available. If pipeline fails, inform user with error details and suggest to check pipeline logs for more information. Use the `azsdk-common-pipeline-analysis` skill to diagnose and resolve pipeline failures. 4. If SDK pull request is available for all languages, ask user to review generated SDK pull request and mark them as ready for review when they are ready to get them reviewed and merged. If APIView feedback is received, use the `azsdk-common-apiview-feedback-resolution` skill to analyze and resolve review comments. 5. Inform the user that they can checkout generated SDK pull request locally and add more tests, samples or code customizations if needed using local SDK generation tools. 6. If SDK pull request was created for test purposes, inform user to close the test SDK pull request. diff --git a/eng/common/pipelines/live-eval.yml b/eng/common/pipelines/live-eval.yml new file mode 100644 index 000000000000..e69e48005506 --- /dev/null +++ b/eng/common/pipelines/live-eval.yml @@ -0,0 +1,43 @@ +# Live-tier eval CI: nightly end-to-end run of the live workflow scenarios against the real +# azsdk-cli MCP and real Azure DevOps (writes confined to a test area). + +# Nightly only — no CI/PR trigger. +trigger: none +pr: none + +schedules: + - cron: '0 9 * * *' # 09:00 UTC daily + displayName: 'Nightly live eval' + branches: + include: + - main + always: true # run even when main has not changed + +variables: + # Managed-pool image selection (LINUXPOOL/LINUXVMIMAGE). Repo-local. + - template: /eng/pipelines/templates/variables/image.yml + # Provides the secret azuresdk-copilot-github-pat, mapped into GITHUB_TOKEN in the invoke step. + - group: AzSDK_Eval_Variable_group + +extends: + template: /eng/common/pipelines/templates/stages/archetype-eval.yml + parameters: + # Shared mock/live builder; select the live tier (real Cli MCP). + mcpSetupTemplate: /eng/common/pipelines/templates/steps/eval-mcp-setup.yml + TestType: live + vallyRoot: evals + evalGlobs: + - 'workflows/live/*.eval.yaml' + # Run each shard under AzureCLI@2 so the real MCP's DevOps calls are authenticated. + UseAzSdkAuthentication: true + failOnFailedTests: true + # Live scenarios are end-to-end, so give each shard more headroom than the report-only tiers. + shardTimeoutInMinutes: 45 + # Pass-rate gate for `vally eval`. This tier gates (failOnFailedTests: true), so the threshold + # is the real bar the nightly run must clear; raise it here as live coverage stabilizes. + threshold: 0.8 + # This repo needs no repo-specific setup (the live MCP is built by the common BuildMcp job). + # A spec/language repo that must start its own bot / server / MCP copies the example hook and + # points these at it — see eng/common/pipelines/templates/steps/eval-hook-example.yml. + # preEvalTemplate: /eng/pipelines/eval/start-my-bot.yml + # postEvalTemplate: /eng/pipelines/eval/stop-my-bot.yml diff --git a/eng/common/pipelines/skill-eval.yml b/eng/common/pipelines/skill-eval.yml new file mode 100644 index 000000000000..880a9d3eef22 --- /dev/null +++ b/eng/common/pipelines/skill-eval.yml @@ -0,0 +1,38 @@ +# Skill-compliance eval CI: runs the per-skill Vally evals under .github/skills (one job per skill). + +trigger: + branches: + include: + - main + paths: + include: + - .github/skills/** + # Retrigger when the mock MCP's tool catalog changes (it can move results). + - tools/azsdk-cli/Azure.Sdk.Tools.Mock/** + - eng/common/pipelines/skill-eval.yml + - eng/common/pipelines/templates/jobs/** + - eng/common/pipelines/templates/steps/eval-invoke.yml + - eng/common/pipelines/templates/steps/eval-mcp-setup.yml + - eng/common/pipelines/templates/stages/archetype-eval.yml + - eng/common/scripts/eval/** + +pr: none + +variables: + # Managed-pool image selection (LINUXPOOL/LINUXVMIMAGE). Repo-local. + - template: /eng/pipelines/templates/variables/image.yml + # Provides the secret azuresdk-copilot-github-pat, mapped into GITHUB_TOKEN in the invoke step. + - group: AzSDK_Eval_Variable_group + +extends: + template: /eng/common/pipelines/templates/stages/archetype-eval.yml + parameters: + # Shared mock/live builder; select the mock tier. + mcpSetupTemplate: /eng/common/pipelines/templates/steps/eval-mcp-setup.yml + TestType: mock + vallyRoot: .github/skills + # Single-level glob excludes azure-typespec-author/evaluate/ (its own benchmark pipeline). + evalGlobs: + - '*/evals/*.eval.yaml' + # Per-shard job timeout (report-only tier). + shardTimeoutInMinutes: 20 diff --git a/eng/common/pipelines/templates/archetype-typespec-emitter.yml b/eng/common/pipelines/templates/archetype-typespec-emitter.yml index d3770c797e37..371208f341fd 100644 --- a/eng/common/pipelines/templates/archetype-typespec-emitter.yml +++ b/eng/common/pipelines/templates/archetype-typespec-emitter.yml @@ -303,7 +303,12 @@ extends: jobs: - job: Initialize steps: + # Regeneration does not read repository history, so fetch only the + # checked-out commit. git-branch-push.ps1's retry path diffs the branch + # tip against its parent, which stays inside the depth-1 boundary. - checkout: self + fetchDepth: 1 + fetchTags: false - template: /eng/common/pipelines/templates/steps/login-to-github.yml parameters: @@ -399,6 +404,8 @@ extends: emitterNpmrcPath: $(Agent.TempDirectory)/${{ parameters.EmitterPackagePath }}/.npmrc steps: - checkout: self + fetchDepth: 1 + fetchTags: false - template: /eng/common/pipelines/templates/steps/login-to-github.yml parameters: @@ -625,3 +632,5 @@ extends: scriptLocation: "inlineScript" inlineScript: npx tsp-spector upload-coverage --coverageFile $(Build.ArtifactStagingDirectory)/tsp-spector-coverage-azure.json --generatorName @azure-typespec/$(SpectorName) --storageAccountName typespec --containerName coverages --generatorVersion $(node -p -e "require('./package.json').version") --generatorMode azure workingDirectory: $(Build.SourcesDirectory)/eng/packages/$(SpectorName) + env: + npm_config_userconfig: $(emitterNpmrcPath) diff --git a/eng/common/pipelines/templates/jobs/apireview-hub-job-base.yml b/eng/common/pipelines/templates/jobs/apireview-hub-job-base.yml new file mode 100644 index 000000000000..d89e11edd062 --- /dev/null +++ b/eng/common/pipelines/templates/jobs/apireview-hub-job-base.yml @@ -0,0 +1,75 @@ +# Base job wrapper for API Review Hub artifact creation. Language-specific job +# templates provide setup steps and the request handler provides orchestration steps. +parameters: + - name: jobName + type: string + default: CreateApiReviewArtifacts + - name: displayName + type: string + default: 'Create API review artifacts' + - name: poolName + type: string + default: 'azsdk-pool' + - name: imageOverride + type: string + default: 'ubuntu-24.04' + - name: variables + type: object + default: [] + - name: sourceRepositoryFullName + type: string + default: '' + - name: sourceCheckoutDir + type: string + default: '' + - name: toolingDir + type: string + default: '$(Pipeline.Workspace)/apireview/tooling' + - name: setupSteps + type: stepList + default: [] + - name: steps + type: stepList + default: [] + +jobs: +- job: ${{ parameters.jobName }} + displayName: ${{ parameters.displayName }} + + pool: + name: ${{ parameters.poolName }} + demands: ImageOverride -equals ${{ parameters.imageOverride }} + + variables: + - template: /eng/pipelines/templates/variables/globals.yml + - name: ApiReviewRepositoryFullName + value: ${{ parameters.sourceRepositoryFullName }} + - name: ApiReviewSourceDir + value: ${{ parameters.sourceCheckoutDir }} + - name: ApiReviewToolingDir + value: ${{ parameters.toolingDir }} + - ${{ each variable in parameters.variables }}: + - ${{ variable }} + + steps: + - ${{ if ne(parameters.sourceCheckoutDir, '') }}: + - bash: | + set -Eeuo pipefail + + source_repo="$SOURCE_CHECKOUT_DIR" + repository_full_name="$SOURCE_REPOSITORY_FULL_NAME" + + rm -rf "$source_repo" + mkdir -p "$(dirname "$source_repo")" + + echo "Cloning $repository_full_name into $source_repo" + git clone --filter=blob:none --no-checkout "https://github.com/$repository_full_name.git" "$source_repo" + env: + SOURCE_CHECKOUT_DIR: ${{ parameters.sourceCheckoutDir }} + SOURCE_REPOSITORY_FULL_NAME: ${{ parameters.sourceRepositoryFullName }} + displayName: 'Clone API review source repository' + + - ${{ parameters.setupSteps }} + + # These steps are assembled by the generic API Review Hub request pipeline. + - ${{ parameters.steps }} \ No newline at end of file diff --git a/eng/common/pipelines/templates/jobs/build-mcp.yml b/eng/common/pipelines/templates/jobs/build-mcp.yml new file mode 100644 index 000000000000..5ac67bfeffcf --- /dev/null +++ b/eng/common/pipelines/templates/jobs/build-mcp.yml @@ -0,0 +1,43 @@ +# BuildMcp job: builds the MCP server(s) via the swap-point mcpSetupTemplate and ships the +# artifacts/mcp tree as the `mcp-servers` artifact every shard re-stages. + +parameters: + - name: mcpSetupTemplate + type: string + - name: TestType + # Which MCP tier to build (mock/live), forwarded to templates that build both tiers + # (e.g. eval-mcp-setup.yml). Use 'none' for param-free repo templates. + type: string + default: none + - name: toolsRepo + # Optional azure-sdk-tools repository-resource alias, forwarded to the MCP template when this + # pipeline runs OUTSIDE azure-sdk-tools (cross-repo build). Blank in the tools repo. + type: string + default: '' + +jobs: + - job: BuildMcp + displayName: 'Build + publish MCP server(s)' + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + # 1ES publishes via templateContext.outputs, not the `publish` shortcut. + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish MCP server artifact' + artifactName: mcp-servers + targetPath: $(Build.SourcesDirectory)/artifacts/mcp + steps: + - checkout: self + fetchDepth: 1 + + # Pass TestType only when not 'none', so param-free repo templates still resolve. + - ${{ if ne(parameters.TestType, 'none') }}: + - template: ${{ parameters.mcpSetupTemplate }} + parameters: + TestType: ${{ parameters.TestType }} + toolsRepo: ${{ parameters.toolsRepo }} + - ${{ else }}: + - template: ${{ parameters.mcpSetupTemplate }} diff --git a/eng/common/pipelines/templates/jobs/eval-shard.yml b/eng/common/pipelines/templates/jobs/eval-shard.yml new file mode 100644 index 000000000000..fc4245111884 --- /dev/null +++ b/eng/common/pipelines/templates/jobs/eval-shard.yml @@ -0,0 +1,144 @@ +# Fan-out shard job: one leg per shard runs its evals against the prebuilt MCP and publishes +# per-leg JUnit (always) + transcripts (on failure). Pass/fail is the eval VERDICT, not the +# `vally` exit code (vally can exit 1 on a teardown flake after a pass). + +parameters: + - name: vallyRoot + # Required (no default) so each repo passes its own eval root explicitly. + type: string + - name: evalInvokeTemplate + # Swap point: runs `vally eval` for the shard (the common template is auth-conditional). + type: string + default: /eng/common/pipelines/templates/steps/eval-invoke.yml + - name: UseAzSdkAuthentication + # Forwarded to the invoke template: true runs the shard under AzureCLI@2. + type: boolean + default: false + - name: threshold + # Pass-rate gate forwarded to the invoke template (`vally eval --threshold` + shard verdict). + type: number + default: 0.8 + - name: preEvalTemplate + # Optional repo-specific setup run before the eval (e.g. start a bot/agent). Placeholder by default. + type: string + default: '' + - name: postEvalTemplate + # Optional repo-specific teardown run after the eval. Placeholder by default. + type: string + default: '' + - name: shardTimeoutInMinutes + # Per-shard job timeout. Must be a parameter (not a runtime variable) so 1ES resolves it at compile time. + type: number + default: 20 + +jobs: + - job: RunShard + displayName: 'Eval' + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + # A red shard shouldn't abort its siblings; the rollup gates in Summary. + continueOnError: true + timeoutInMinutes: ${{ parameters.shardTimeoutInMinutes }} + strategy: + matrix: $[ stageDependencies.Prepare.generate_eval_matrix.outputs['detect.matrix'] ] + maxParallel: 10 + templateContext: + outputs: + # Artifact names carry $(System.JobAttempt) so "Rerun failed jobs" publishes a fresh + # name instead of colliding with the prior attempt's artifact (which fails the rerun). + # The Summary job keeps only the highest attempt per shard so retries supersede cleanly. + - output: pipelineArtifact + displayName: 'Publish $(shardName) JUnit' + artifactName: 'eval-result-$(shardName)-$(System.JobAttempt)' + targetPath: $(Build.ArtifactStagingDirectory)/junit + condition: always() + - output: pipelineArtifact + displayName: 'Publish $(shardName) transcripts (on failure)' + artifactName: 'eval-debug-$(shardName)-$(System.JobAttempt)' + targetPath: $(Build.ArtifactStagingDirectory)/debug + condition: failed() + steps: + - checkout: self + fetchDepth: 1 + + - task: UseNode@1 + displayName: 'Use Node.js 22.x' + inputs: + version: 22.x + + # 1ES Official image blocks registry.npmjs.org; restore via the azure-sdk npm mirror. + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml + parameters: + npmrcPath: $(Build.SourcesDirectory)/.npmrc + registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-tools/npm/registry/ + + - script: npm install --global npm@11.11.1 --userconfig $(Build.SourcesDirectory)/.npmrc + displayName: 'Use npm 11.11.1' + + # Installs vally-cli + its pinned copilot-sdk executor into node_modules. + - script: npm ci --userconfig $(Build.SourcesDirectory)/.npmrc + displayName: 'Install Vally CLI + copilot-sdk (pinned)' + workingDirectory: eng/common/scripts/eval + + - download: current + artifact: mcp-servers + displayName: 'Download MCP server(s)' + + - script: | + mkdir -p "$(Build.SourcesDirectory)/artifacts/mcp" + cp -r "$(Pipeline.Workspace)/mcp-servers/." "$(Build.SourcesDirectory)/artifacts/mcp/" + displayName: 'Stage MCP server(s) at expected path' + + # Optional repo-specific setup (e.g. start a bot/agent) before the eval runs. + - ${{ if parameters.preEvalTemplate }}: + - template: ${{ parameters.preEvalTemplate }} + + # Clone only the git fixtures this shard's evals reference (Vally won't clone them). + - script: | + patterns=() + set -f + for tok in $EVAL_ARGS; do + [ "$tok" = "-e" ] && continue + patterns+=(--pattern "$tok") + done + set +f + node --experimental-strip-types "$(Build.SourcesDirectory)/eng/common/scripts/eval/init-eval-git-fixtures.ts" \ + --eval-root "$(Build.SourcesDirectory)/${{ parameters.vallyRoot }}" \ + "${patterns[@]}" + displayName: 'Prime eval git fixtures' + env: + EVAL_ARGS: $(evalArgs) + + # Runs the eval via the invoke template (auth-conditional in the common default). + - template: ${{ parameters.evalInvokeTemplate }} + parameters: + vallyRoot: ${{ parameters.vallyRoot }} + UseAzSdkAuthentication: ${{ parameters.UseAzSdkAuthentication }} + threshold: ${{ parameters.threshold }} + + # Optional repo-specific teardown after the eval. + - ${{ if parameters.postEvalTemplate }}: + - template: ${{ parameters.postEvalTemplate }} + + # JUnit is tiny — stage it always; heavy transcripts stage separately on failure. + # Also create the debug dir here so the failed()-gated debug publish always has a target + # (otherwise the publish errors "Path does not exist" when the dir was never created). + - script: | + mkdir -p "$(Build.ArtifactStagingDirectory)/junit" "$(Build.ArtifactStagingDirectory)/debug" + find "$(Build.SourcesDirectory)/artifacts/vally-results/$(shardName)" -name '*.junit.xml' -exec cp {} "$(Build.ArtifactStagingDirectory)/junit/" \; + displayName: 'Collect $(shardName) JUnit' + condition: always() + + # On a real failure keep transcripts; strip JUnit so Summary can't double-count it. + - script: | + src="$(Build.SourcesDirectory)/artifacts/vally-results/$(shardName)" + dest="$(Build.ArtifactStagingDirectory)/debug" + mkdir -p "$dest" + if [ -d "$src" ]; then + cp -r "$src/." "$dest/" + find "$dest" -name '*.junit.xml' -delete + fi + displayName: 'Collect $(shardName) transcripts (on failure)' + condition: failed() diff --git a/eng/common/pipelines/templates/jobs/eval-summarize.yml b/eng/common/pipelines/templates/jobs/eval-summarize.yml new file mode 100644 index 000000000000..8d9f49d6c8c8 --- /dev/null +++ b/eng/common/pipelines/templates/jobs/eval-summarize.yml @@ -0,0 +1,45 @@ +# Summary job: merges every shard's JUnit into one rollup (Markdown summary + Tests tab) and +# gates on it when failOnFailedTests is true. + +parameters: + - name: failOnFailedTests + type: boolean + default: false + +jobs: + - job: Summarize + displayName: 'Publish + gate rollup' + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + steps: + - task: UseNode@1 + displayName: 'Use Node.js 22.x' + inputs: + version: 22.x + + # Match *.junit.xml only so stray XML (e.g. a DLL's doc XML) can't fake a shard. + - task: DownloadPipelineArtifact@2 + displayName: 'Download all shard results' + inputs: + buildType: 'current' + itemPattern: '**/*.junit.xml' + targetPath: $(Pipeline.Workspace)/eval-results + + # Renders the rollup to the run's Summary tab (##vso[task.uploadsummary]). + - script: | + node --experimental-strip-types "$(Build.SourcesDirectory)/eng/common/scripts/eval/build-eval-summary.ts" \ + --results-root "$(Pipeline.Workspace)/eval-results" \ + --output-path "$(Build.ArtifactStagingDirectory)/eval-summary.md" + displayName: 'Render Markdown rollup' + condition: always() + + - task: PublishTestResults@2 + displayName: 'Publish eval rollup' + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: '$(Pipeline.Workspace)/eval-results/**/*.junit.xml' + mergeTestResults: true + failTaskOnFailedTests: ${{ parameters.failOnFailedTests }} + testRunTitle: 'Vally evals' diff --git a/eng/common/pipelines/templates/jobs/generate-eval-matrix.yml b/eng/common/pipelines/templates/jobs/generate-eval-matrix.yml new file mode 100644 index 000000000000..688a1018bfb7 --- /dev/null +++ b/eng/common/pipelines/templates/jobs/generate-eval-matrix.yml @@ -0,0 +1,48 @@ +# Globs the eval files into a fan-out matrix (output var detect.matrix). Runs in Prepare +# alongside BuildMcp; the Eval stage's RunShard job reads it cross-stage. + +parameters: + - name: vallyRoot + type: string + - name: evalGlobs + type: object + default: [] + +jobs: + # Job/step/output names are fixed: the Eval stage reads the matrix cross-stage at + # stageDependencies.Prepare.generate_eval_matrix.outputs['detect.matrix']. + - job: generate_eval_matrix + displayName: 'Glob eval files -> matrix' + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + steps: + - checkout: self + fetchDepth: 1 + + - task: UseNode@1 + displayName: 'Use Node.js 22.x' + inputs: + version: 22.x + + # set -f stops the shell expanding the glob `*` before patterns reach the script. + - script: | + patterns=() + if [ -n "$EVAL_PATTERNS" ]; then + set -f + for p in $EVAL_PATTERNS; do + patterns+=(--pattern "$p") + done + set +f + fi + base="$(Build.SourcesDirectory)/${{ parameters.vallyRoot }}" + node --experimental-strip-types "$(Build.SourcesDirectory)/eng/common/scripts/eval/collect-stimuli.ts" \ + --eval-root "$base" \ + --path-base "$base" \ + "${patterns[@]}" \ + --output-variable matrix + name: detect + displayName: 'Build fan-out matrix' + env: + EVAL_PATTERNS: ${{ join(' ', parameters.evalGlobs) }} diff --git a/eng/common/pipelines/templates/jobs/generate-job-matrix.yml b/eng/common/pipelines/templates/jobs/generate-job-matrix.yml index 2833b1d9e931..e36d261828fb 100644 --- a/eng/common/pipelines/templates/jobs/generate-job-matrix.yml +++ b/eng/common/pipelines/templates/jobs/generate-job-matrix.yml @@ -53,9 +53,16 @@ parameters: - name: PRMatrixKey type: string default: 'ArtifactName' +# Default number of PackageInfo entries assigned to each PR job. +# Used when a pool-specific override is absent or its runtime variable is unset. - name: PRJobBatchSize type: number default: 10 +# Optional map of pool names to per-job batch-size overrides. +# Values may be numbers or runtime variables populated by PreGenerationSteps. +- name: PRJobBatchSizeByPool + type: object + default: {} - name: PRMatrixIndirectFilters type: object default: [] @@ -142,6 +149,28 @@ jobs: - pwsh: | '${{ convertToJson(parameters.MatrixConfigs) }}' | Set-Content matrix.json + $batchSize = ${{ parameters.PRJobBatchSize }} + $overrides = '${{ convertToJson(parameters.PRJobBatchSizeByPool) }}' | ConvertFrom-Json + $poolOverride = $overrides.PSObject.Properties | + Where-Object { $_.Name -eq '${{ pool.name }}' } | + Select-Object -First 1 + # An unset runtime macro remains in $(Name) form; retain the default in that case. + if ($poolOverride) { + $overrideValue = [string]$poolOverride.Value + if (-not [string]::IsNullOrWhiteSpace($overrideValue) -and $overrideValue -notmatch '^\$\(.+\)$') { + try { + $batchSize = [int]$overrideValue + } + catch { + throw "PR job batch size override for ${{ pool.name }} must be an integer, got '$overrideValue'." + } + Write-Host "Using batch size override for ${{ pool.name }}: $batchSize" + } + } + if ($batchSize -le 0) { + throw "PR job batch size for ${{ pool.name }} must be greater than zero." + } + ./eng/common/scripts/job-matrix/Create-PrJobMatrix.ps1 ` -PackagePropertiesFolder $(Build.ArtifactStagingDirectory)/PackageInfo ` -PRMatrixFile matrix.json ` @@ -151,7 +180,7 @@ jobs: -Filters '${{ join(''',''', parameters.MatrixFilters) }}', 'container=^$', 'SupportedClouds=^$|${{ parameters.CloudConfig.Cloud }}', 'Pool=${{ pool.filter }}' ` -IndirectFilters '${{ join(''',''', parameters.PRMatrixIndirectFilters) }}' ` -Replace '${{ join(''',''', parameters.MatrixReplace) }}' ` - -PackagesPerPRJob ${{ parameters.PRJobBatchSize }} ` + -PackagesPerPRJob $batchSize ` -SparseIndirect $${{ parameters.PRMatrixSparseIndirect }} displayName: Create ${{ pool.name }} PR Matrix name: vm_job_matrix_pr_${{ pool.name }} diff --git a/eng/common/pipelines/templates/stages/archetype-auto-release-prepare.yml b/eng/common/pipelines/templates/stages/archetype-auto-release-prepare.yml new file mode 100644 index 000000000000..69e1f99722cb --- /dev/null +++ b/eng/common/pipelines/templates/stages/archetype-auto-release-prepare.yml @@ -0,0 +1,76 @@ +parameters: + - name: DependsOn + type: object + default: + - Signing + - name: Artifacts + type: object + default: [] + - name: Condition + type: string + default: succeeded() + # Language-specific steps that run (in the resolve job) before the package-detection script. + # Repos whose Get-AllPackageInfoFromRepo needs tooling set up first (e.g. Python installing + # azure-sdk-tools from an authenticated feed) pass those steps here. Default is none. + - name: PreSteps + type: stepList + default: [] + +stages: + # Post-merge auto-release preparation, shared across language repos (this file lives in the synced + # eng/common tree). Runs after the Signing stage: it resolves the merged PR for Build.SourceVersion, + # requires the auto-release label, maps the PR's changed files to releasable packages via the language + # repo's own package detection (Get-PrPkgProperties -> Get-AllPackageInfoFromRepo), and emits the + # auto-release output variables consumed by each language's release stage. + # + # The stage/job/step names below (AutoReleasePrepare / ResolveAutoReleasePackages / resolve) are the + # fixed cross-language output contract. Downstream release stages read outputs as: + # condition: dependencies.AutoReleasePrepare.outputs['ResolveAutoReleasePackages.resolve.'] + # variables: stageDependencies.AutoReleasePrepare.ResolveAutoReleasePackages.outputs['resolve.'] + # Emitted variables: HasAutoReleaseArtifacts (the single eligibility gate), AutoReleaseArtifactsJson, + # and ReleaseArtifact_ per declared artifact. + - stage: AutoReleasePrepare + displayName: Auto-release prepare + dependsOn: ${{ parameters.DependsOn }} + condition: ${{ parameters.Condition }} + variables: + - template: /eng/pipelines/templates/variables/globals.yml + - template: /eng/pipelines/templates/variables/image.yml + jobs: + - job: ResolveAutoReleasePackages + displayName: Resolve releasable packages from merged PR + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + steps: + # Package detection reads package properties from source, so a checkout is required. + - checkout: self + fetchDepth: 1 + + - template: /eng/common/pipelines/templates/steps/login-to-github.yml + + # Optional language-specific environment setup (e.g. Python: UsePythonVersion + feed auth so + # the in-script azure-sdk-tools install resolves from an authenticated, reachable feed). + - ${{ parameters.PreSteps }} + + - template: /eng/common/pipelines/templates/steps/install-azsdk-cli.yml + + - task: AzureCLI@2 + name: resolve + displayName: Determine releasable packages + env: + # convertToJson emits multi-line JSON, so pass it via env instead of the command line. + AUTORELEASE_ARTIFACTS: ${{ convertToJson(parameters.Artifacts) }} + # Map the secret token to env so it is not written to the task command line. + GH_TOKEN: $(GH_TOKEN) + inputs: + azureSubscription: opensource-api-connection + scriptType: pscore + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/scripts/Resolve-AutoReleasePackages.ps1 + arguments: > + -CommitSha "$(Build.SourceVersion)" + -RepoId "$(Build.Repository.Name)" + -PipelineUrl "$(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)" + -AzsdkExePath "$(AZSDK)" diff --git a/eng/common/pipelines/templates/stages/archetype-eval.yml b/eng/common/pipelines/templates/stages/archetype-eval.yml new file mode 100644 index 000000000000..4e29b4c314ce --- /dev/null +++ b/eng/common/pipelines/templates/stages/archetype-eval.yml @@ -0,0 +1,106 @@ +# Reusable eval CI orchestrator. Stages: Prepare (build MCP + glob a fan-out matrix), +# Eval (one shard job per matrix leg), Summary (merge JUnit + gate). Each stage just +# references a job template — no inline steps live here. +# A thin entrypoint supplies trigger + params + `extends` this. +# +# The per-shard timeout flows in as the `shardTimeoutInMinutes` parameter (compile-time, so +# 1ES can set the job's timeoutInMinutes); the live tier raises it via the same param. + +parameters: + - name: vallyRoot + # Dir each shard runs `vally eval` from; anchor for the matrix's -e paths. Required (no default). + type: string + - name: evalGlobs + # Globs selecting *.eval.yaml under vallyRoot. Default = hermetic mock suite; skill/live override. + # collect-stimuli.js mirrors this list as its no-args fallback — keep them in sync. + type: object + default: + - 'tools/*.eval.yaml' + - 'workflows/mock/*.eval.yaml' + - name: mcpSetupTemplate + # SWAP POINT: builds/installs the MCP server(s) under artifacts/mcp/. Required (no default): + # each repo passes its own build template. This repo uses the shared mock/live builder + # steps/eval-mcp-setup.yml and selects the tier via TestType. + type: string + - name: TestType + # Which MCP tier the mcpSetupTemplate builds: mock, live, or none (repo template is param-free). + type: string + default: none + values: + - mock + - live + - none + - name: toolsRepo + # Optional azure-sdk-tools repository-resource alias for a cross-repo MCP build (running the eval + # outside the tools repo). Blank in azure-sdk-tools. The consuming pipeline declares the resource. + type: string + default: '' + - name: evalInvokeTemplate + # SWAP POINT: runs `vally eval` per shard. Default = the conditional common invoke template. + type: string + default: /eng/common/pipelines/templates/steps/eval-invoke.yml + - name: UseAzSdkAuthentication + # When true, the invoke step runs under AzureCLI@2 (live MCP inherits the service connection). + type: boolean + default: false + - name: threshold + # Pass-rate gate forwarded to `vally eval --threshold` and the shard verdict. Repos may override. + type: number + default: 0.8 + - name: preEvalTemplate + # Optional repo-specific setup before the eval runs. Blank by default. + type: string + default: '' + - name: postEvalTemplate + # Optional repo-specific teardown after the eval runs. Blank by default. + type: string + default: '' + - name: failOnFailedTests + type: boolean + default: false + - name: shardTimeoutInMinutes + # Per-shard job timeout, passed to the shard job's timeoutInMinutes. Live tier raises it. + type: number + default: 20 + +extends: + # 1es-redirect picks Official (internal) vs Unofficial; its Use1ESOfficial defaults true. + template: /eng/pipelines/templates/stages/1es-redirect.yml + parameters: + stages: + - stage: Prepare + displayName: 'Build MCP' + jobs: + - template: /eng/common/pipelines/templates/jobs/build-mcp.yml + parameters: + mcpSetupTemplate: ${{ parameters.mcpSetupTemplate }} + TestType: ${{ parameters.TestType }} + toolsRepo: ${{ parameters.toolsRepo }} + + - template: /eng/common/pipelines/templates/jobs/generate-eval-matrix.yml + parameters: + vallyRoot: ${{ parameters.vallyRoot }} + evalGlobs: ${{ parameters.evalGlobs }} + + - stage: Eval + displayName: 'Run eval shards' + dependsOn: Prepare + jobs: + - template: /eng/common/pipelines/templates/jobs/eval-shard.yml + parameters: + vallyRoot: ${{ parameters.vallyRoot }} + evalInvokeTemplate: ${{ parameters.evalInvokeTemplate }} + UseAzSdkAuthentication: ${{ parameters.UseAzSdkAuthentication }} + threshold: ${{ parameters.threshold }} + preEvalTemplate: ${{ parameters.preEvalTemplate }} + postEvalTemplate: ${{ parameters.postEvalTemplate }} + shardTimeoutInMinutes: ${{ parameters.shardTimeoutInMinutes }} + + - stage: Summary + displayName: 'Summarize results' + dependsOn: Eval + condition: always() + jobs: + - template: /eng/common/pipelines/templates/jobs/eval-summarize.yml + parameters: + failOnFailedTests: ${{ parameters.failOnFailedTests }} diff --git a/eng/common/pipelines/templates/steps/check-spelling.yml b/eng/common/pipelines/templates/steps/check-spelling.yml index d5faccdbd7ae..3963e785fd96 100644 --- a/eng/common/pipelines/templates/steps/check-spelling.yml +++ b/eng/common/pipelines/templates/steps/check-spelling.yml @@ -35,6 +35,7 @@ parameters: steps: - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml - task: PowerShell@2 displayName: Check spelling (cspell) condition: and(succeeded(), ne(variables['Skip.SpellCheck'],'true')) @@ -46,9 +47,6 @@ steps: -CspellConfigPath ${{ parameters.CspellConfigPath }} -ExitWithError:(!$${{ parameters.ContinueOnError }}) pwsh: true - env: - ${{ if ne(parameters.NpmConfigUserConfig, '') }}: - npm_config_userconfig: ${{ parameters.NpmConfigUserConfig }} - ${{ if ne('', parameters.ScriptToValidateUpgrade) }}: - pwsh: | $changedFiles = ./eng/common/scripts/get-changedfiles.ps1 diff --git a/eng/common/pipelines/templates/steps/create-apireview-hub-artifacts-base.yml b/eng/common/pipelines/templates/steps/create-apireview-hub-artifacts-base.yml new file mode 100644 index 000000000000..e8ba1bad9f7c --- /dev/null +++ b/eng/common/pipelines/templates/steps/create-apireview-hub-artifacts-base.yml @@ -0,0 +1,118 @@ +# Base artifact step for API Review Hub. Language-specific templates provide the +# generation steps and this template enforces the shared artifact contract. +parameters: + - name: requestMode + type: string + - name: operationId + type: string + - name: packageName + type: string + - name: ref + type: string + - name: kind + type: string + - name: outputDir + type: string + - name: workingDir + type: string + - name: sourceDir + type: string + - name: language + type: string + - name: repositoryFullName + type: string + - name: generationSteps + type: stepList + default: [] + +steps: + - pwsh: | + $ErrorActionPreference = 'Stop' + + New-Item -ItemType Directory -Force -Path $env:OUTPUT_DIR | Out-Null + New-Item -ItemType Directory -Force -Path $env:WORKING_DIR | Out-Null + New-Item -ItemType Directory -Force -Path (Join-Path $env:WORKING_DIR 'state') | Out-Null + env: + OUTPUT_DIR: ${{ parameters.outputDir }} + WORKING_DIR: ${{ parameters.workingDir }} + displayName: 'Prepare ${{ parameters.kind }} API review bundle directories' + + - bash: | + set -Eeuo pipefail + + source_repo="$SOURCE_DIR" + ref="$REF" + + if [ ! -d "$source_repo/.git" ]; then + echo "Expected API review source repository was not cloned at $source_repo" >&2 + exit 1 + fi + + # API Review Hub must provide a fully-qualified Git ref (for example refs/heads/* or refs/tags/*). + # Keeping this explicit avoids ambiguous fetch behavior across remote refspec configurations. + if [[ -z "$ref" || "$ref" != refs/* ]]; then + echo "Expected a fully-qualified git ref (refs/*), but received: '$ref'" >&2 + exit 1 + fi + + echo "Checking out $KIND API review source ref $ref in $source_repo" + git -C "$source_repo" fetch --depth=1 origin "$ref" + git -C "$source_repo" checkout --force FETCH_HEAD + git -C "$source_repo" clean -ffd + env: + SOURCE_DIR: ${{ parameters.sourceDir }} + REF: ${{ parameters.ref }} + KIND: ${{ parameters.kind }} + displayName: 'Checkout ${{ parameters.kind }} API review source' + + - ${{ parameters.generationSteps }} + + - pwsh: | + $ErrorActionPreference = 'Stop' + + $outputDir = $env:OUTPUT_DIR + $stateDir = Join-Path $env:WORKING_DIR 'state' + $apiMdPath = Join-Path $outputDir 'api.md' + $apiMetadataPath = Join-Path $outputDir 'api.metadata.yml' + $packageRelativePathPath = Join-Path $stateDir 'package-relative-path.txt' + $versionPath = Join-Path $stateDir 'version.txt' + if (!(Test-Path -Path $apiMdPath -PathType Leaf)) { + Write-Error "Expected api.md was not produced at $apiMdPath." + } + if (!(Test-Path -Path $apiMetadataPath -PathType Leaf)) { + Write-Error "Expected api.metadata.yml was not produced at $apiMetadataPath." + } + if (!(Test-Path -Path $packageRelativePathPath -PathType Leaf)) { + Write-Error "Expected package-relative-path.txt was not produced at $packageRelativePathPath." + } + if (!(Test-Path -Path $versionPath -PathType Leaf)) { + Write-Error "Expected version.txt was not produced at $versionPath." + } + + $packageRelativePath = Get-Content -Raw -Path $packageRelativePathPath + $version = Get-Content -Raw -Path $versionPath + + $metadata = [ordered]@{ + operationId = $env:OPERATION_ID + mode = $env:REQUEST_MODE + language = $env:LANGUAGE + repositoryFullName = $env:REPOSITORY_FULL_NAME + packageName = $env:PACKAGE_NAME + packageRelativePath = $packageRelativePath.Trim() + ref = $env:REF + version = $version.Trim() + kind = $env:KIND + } + $metadata | ConvertTo-Json -Depth 10 | Set-Content -Path (Join-Path $outputDir 'artifact-metadata.json') -Encoding utf8 + Get-Content -Path (Join-Path $outputDir 'artifact-metadata.json') + env: + OUTPUT_DIR: ${{ parameters.outputDir }} + WORKING_DIR: ${{ parameters.workingDir }} + OPERATION_ID: ${{ parameters.operationId }} + REQUEST_MODE: ${{ parameters.requestMode }} + LANGUAGE: ${{ parameters.language }} + REPOSITORY_FULL_NAME: ${{ parameters.repositoryFullName }} + PACKAGE_NAME: ${{ parameters.packageName }} + REF: ${{ parameters.ref }} + KIND: ${{ parameters.kind }} + displayName: 'Validate and write ${{ parameters.kind }} API review bundle metadata' \ No newline at end of file diff --git a/eng/common/pipelines/templates/steps/create-apiview-revision.yml b/eng/common/pipelines/templates/steps/create-apiview-revision.yml new file mode 100644 index 000000000000..7938b4afa8fb --- /dev/null +++ b/eng/common/pipelines/templates/steps/create-apiview-revision.yml @@ -0,0 +1,66 @@ +parameters: + - name: ArtifactPath + type: string + default: $(Build.ArtifactStagingDirectory) + - name: Artifacts + type: object + default: [] + - name: ConfigFileDir + type: string + default: $(Build.ArtifactStagingDirectory)/PackageInfo + - name: GenerateApiReviewForManualOnly + type: boolean + default: false + - name: ArtifactName + type: string + default: "packages" + - name: PackageName + type: string + default: "" + - name: SourceRootPath + type: string + default: $(Build.SourcesDirectory) + - name: PackageInfoFiles + type: object + default: [] + +steps: + # Automatic APIView revisions are created regardless of how the pipeline is triggered. + # This condition limits revision creation to manual runs when GenerateApiReviewForManualOnly is true. + - ${{ if or(ne(parameters.GenerateApiReviewForManualOnly, true), eq(variables['Build.Reason'], 'Manual')) }}: + # Ideally this should be an initial step in the caller job. + # Remove this step once all callers set the default branch themselves. + - template: /eng/common/pipelines/templates/steps/set-default-branch.yml + parameters: + WorkingDirectory: ${{ parameters.SourceRootPath }} + + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest'), not(endsWith(variables['Build.Repository.Name'], '-pr'))) }}: + - task: AzureCLI@2 + inputs: + azureSubscription: "APIView prod deployment" + scriptType: pscore + scriptLocation: scriptPath + scriptPath: ${{ parameters.SourceRootPath }}/eng/common/scripts/Create-APIViewRevision.ps1 + # PackageInfoFiles example: @('a/file1.json','a/file2.json') + arguments: > + -PackageInfoFiles @('${{ join(''',''', parameters.PackageInfoFiles) }}') + -ArtifactList ('${{ convertToJson(parameters.Artifacts) }}' | ConvertFrom-Json | Select-Object Name) + -ArtifactPath '${{ parameters.ArtifactPath }}' + -ArtifactName '${{ parameters.ArtifactName }}' + -PackageName '${{ parameters.PackageName }}' + -SourceBranch '$(Build.SourceBranchName)' + -DefaultBranch '$(DefaultBranch)' + -ConfigFileDir '${{ parameters.ConfigFileDir }}' + -BuildId '$(Build.BuildId)' + -RepoName '$(Build.Repository.Name)' + displayName: Create APIView Revision + condition: >- + and( + succeededOrFailed(), + not( + and( + eq(variables['Skip.CreateApiReview'], 'true'), + eq(variables['IsRequesterAuthorizedToSkipApiReview'], 'true') + ) + ) + ) diff --git a/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml b/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml index d742bd72b7f2..3fa699b387d2 100644 --- a/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml +++ b/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml @@ -1,34 +1,41 @@ parameters: - name: npmrcPath type: string + # When empty, defaults to the agent user's .npmrc ($HOME/.npmrc on + # Linux/macOS, %USERPROFILE%\.npmrc on Windows) so every subsequent + # npm / pnpm / npx call in the job inherits the registry + auth. + default: "" - name: registryUrl type: string - default: 'https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/' + default: "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/" - name: CustomCondition type: string default: succeeded() - name: ServiceConnection type: string - default: '' + default: "" steps: -- pwsh: | - Write-Host "Creating .npmrc file ${{ parameters.npmrcPath }} for registry ${{ parameters.registryUrl }}" - $parentFolder = Split-Path -Path '${{ parameters.npmrcPath }}' -Parent - - if (!(Test-Path $parentFolder)) { - Write-Host "Creating folder $parentFolder" - New-Item -Path $parentFolder -ItemType Directory | Out-Null - } + - pwsh: | + $npmrcPath = '${{ parameters.npmrcPath }}' + if (-not $npmrcPath) { $npmrcPath = Join-Path $HOME '.npmrc' } - $content = "registry=${{ parameters.registryUrl }}" - $content | Out-File '${{ parameters.npmrcPath }}' - displayName: 'Create .npmrc' - condition: ${{ parameters.CustomCondition }} + Write-Host "Creating .npmrc file $npmrcPath for registry ${{ parameters.registryUrl }}" + $parentFolder = Split-Path -Path $npmrcPath -Parent -- task: npmAuthenticate@0 - displayName: Authenticate .npmrc - condition: ${{ parameters.CustomCondition }} - inputs: - workingFile: ${{ parameters.npmrcPath }} - azureDevOpsServiceConnection: ${{ parameters.ServiceConnection }} + if ($parentFolder -and -not (Test-Path $parentFolder)) { + Write-Host "Creating folder $parentFolder" + New-Item -Path $parentFolder -ItemType Directory | Out-Null + } + + "registry=${{ parameters.registryUrl }}" | Out-File $npmrcPath + Write-Host "##vso[task.setvariable variable=resolvedNpmrcPath]$npmrcPath" + displayName: "Create .npmrc" + condition: ${{ parameters.CustomCondition }} + + - task: npmAuthenticate@0 + displayName: Authenticate .npmrc + condition: ${{ parameters.CustomCondition }} + inputs: + workingFile: $(resolvedNpmrcPath) + azureDevOpsServiceConnection: ${{ parameters.ServiceConnection }} diff --git a/eng/common/pipelines/templates/steps/create-pull-request.yml b/eng/common/pipelines/templates/steps/create-pull-request.yml index 625b6400eb16..83e6070c00cb 100644 --- a/eng/common/pipelines/templates/steps/create-pull-request.yml +++ b/eng/common/pipelines/templates/steps/create-pull-request.yml @@ -22,7 +22,7 @@ parameters: SkipCheckingForChanges: false CloseAfterOpenForTesting: false OpenAsDraft: false - AuthToken: $(azuresdk-github-pat) + AuthToken: '' # PushAuthToken: for cross-org pushes (pushing to PROwner's fork in a different org). # Defaults to AuthToken when not specified. PushAuthToken: '' diff --git a/eng/common/pipelines/templates/steps/create-tags-and-git-release.yml b/eng/common/pipelines/templates/steps/create-tags-and-git-release.yml index b81e72ac9b7f..3b2b76a50af1 100644 --- a/eng/common/pipelines/templates/steps/create-tags-and-git-release.yml +++ b/eng/common/pipelines/templates/steps/create-tags-and-git-release.yml @@ -8,7 +8,7 @@ parameters: ScriptDirectory: eng/common/scripts NpmConfigUserConfig: '' NpmConfigRegistry: '' - AuthToken: $(azuresdk-github-pat) + AuthToken: '' steps: - ${{ if eq(parameters.AuthToken, '') }}: diff --git a/eng/common/pipelines/templates/steps/eval-hook-example.yml b/eng/common/pipelines/templates/steps/eval-hook-example.yml new file mode 100644 index 000000000000..e88a9cd48573 --- /dev/null +++ b/eng/common/pipelines/templates/steps/eval-hook-example.yml @@ -0,0 +1,24 @@ +# Example pre/post-eval hook (a steps template). +# +# Point archetype-eval.yml's `preEvalTemplate` or `postEvalTemplate` at a copy of this file to run +# repo-specific setup/teardown around each shard's `vally eval` — for example: start a chat bot, +# start a web server, or start a non-common MCP server that your scenarios need. The hook runs on +# the shard agent with the MCP artifact already staged under artifacts/mcp/. +# +# - preEvalTemplate runs BEFORE the eval (setup: start your bot / server / MCP). +# - postEvalTemplate runs AFTER the eval (teardown: stop it, collect logs). +# +# The azure-sdk-tools repo does not use a hook: its mock/live MCP is built by the common BuildMcp +# job, so both eval entrypoints leave preEvalTemplate/postEvalTemplate commented out. A spec or +# language repo copies this file, replaces the no-op below with real steps, and passes the path via +# the parameter, e.g.: +# +# extends: +# template: /eng/common/pipelines/templates/stages/archetype-eval.yml +# parameters: +# preEvalTemplate: /eng/pipelines/eval/start-my-bot.yml + +steps: + # Replace this no-op with your setup (pre) or teardown (post) steps. + - script: echo "No eval hook configured — replace this placeholder with repo-specific steps." + displayName: 'Eval hook (placeholder — no-op)' diff --git a/eng/common/pipelines/templates/steps/eval-invoke.yml b/eng/common/pipelines/templates/steps/eval-invoke.yml new file mode 100644 index 000000000000..2ebb5133f11d --- /dev/null +++ b/eng/common/pipelines/templates/steps/eval-invoke.yml @@ -0,0 +1,50 @@ +# Invokes `vally eval` for one shard. UseAzSdkAuthentication=false (default) runs the hermetic +# node script directly. UseAzSdkAuthentication=true wraps the same run in AzureCLI@2 so a live +# MCP's Azure DevOps calls inherit the service-connection identity. +# copilot-sdk authenticates the model session via GITHUB_TOKEN (from the linked eval variable group). + +parameters: + - name: vallyRoot + type: string + - name: UseAzSdkAuthentication + type: boolean + default: false + - name: threshold + # Pass-rate gate passed to `vally eval --threshold` and the shard verdict in invoke-eval-shard.js. + type: number + default: 0.8 + - name: azureSubscription + type: string + default: opensource-api-connection + +steps: + - ${{ if parameters.UseAzSdkAuthentication }}: + - task: AzureCLI@2 + displayName: 'vally eval $(shardName) (authenticated)' + inputs: + azureSubscription: ${{ parameters.azureSubscription }} + scriptType: bash + scriptLocation: inlineScript + workingDirectory: ${{ parameters.vallyRoot }} + inlineScript: | + node --experimental-strip-types "$(Build.SourcesDirectory)/eng/common/scripts/eval/invoke-eval-shard.ts" \ + --eval-args "$(evalArgs)" \ + --shard-name "$(shardName)" \ + --output-dir "$(Build.SourcesDirectory)/artifacts/vally-results/$(shardName)" \ + --threshold ${{ parameters.threshold }} + ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: + env: + GITHUB_TOKEN: $(azuresdk-copilot-github-pat) + + - ${{ else }}: + - script: | + node --experimental-strip-types "$(Build.SourcesDirectory)/eng/common/scripts/eval/invoke-eval-shard.ts" \ + --eval-args "$(evalArgs)" \ + --shard-name "$(shardName)" \ + --output-dir "$(Build.SourcesDirectory)/artifacts/vally-results/$(shardName)" \ + --threshold ${{ parameters.threshold }} + displayName: 'vally eval $(shardName)' + workingDirectory: ${{ parameters.vallyRoot }} + ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: + env: + GITHUB_TOKEN: $(azuresdk-copilot-github-pat) diff --git a/eng/common/pipelines/templates/steps/eval-mcp-setup.yml b/eng/common/pipelines/templates/steps/eval-mcp-setup.yml new file mode 100644 index 000000000000..939ccd708d3e --- /dev/null +++ b/eng/common/pipelines/templates/steps/eval-mcp-setup.yml @@ -0,0 +1,53 @@ +# MCP setup for azure-sdk-tools' eval CI: builds the in-repo .NET MCP server(s) and publishes each +# under artifacts/mcp/ (the path BuildMcp ships as `mcp-servers`). The TestType param selects +# the mock vs live tier via if/else. The BuildMcp job checks out `self`, so in azure-sdk-tools this +# template only builds. Other repos override mcpSetupTemplate to point at their own equivalent. +# +# Cross-repo use: when this runs OUTSIDE azure-sdk-tools, set `toolsRepo` to a repository-resource +# alias so the tools sources are side-checked-out before the build. The consuming pipeline declares +# the resource and passes toolsRepo (via the archetype) alongside TestType, e.g.: +# resources: +# repositories: +# - repository: azure-sdk-tools +# type: github +# name: Azure/azure-sdk-tools +# endpoint: +# # ... extends archetype-eval.yml with: toolsRepo: azure-sdk-tools + +parameters: + - name: TestType + type: string + default: mock + values: + - mock + - live + - name: toolsRepo + # Repository-resource alias for azure-sdk-tools when building from outside the tools repo. + # Blank (default) = current repo IS azure-sdk-tools, build from Build.SourcesDirectory. + type: string + default: '' + +steps: + # Outside azure-sdk-tools: side-check-out the tools sources so the build below can find azsdk-cli. + - ${{ if parameters.toolsRepo }}: + - checkout: ${{ parameters.toolsRepo }} + path: s/azure-sdk-tools + fetchDepth: 1 + + # Builds this repo's server(s) under artifacts/mcp/; other repos override mcpSetupTemplate. + # workingDirectory switches to the side-checkout when toolsRepo is set (cross-repo build). + - ${{ if eq(parameters.TestType, 'live') }}: + - script: | + set -e + dotnet build tools/azsdk-cli/Azure.Sdk.Tools.Cli -c Release -o "$(Build.SourcesDirectory)/artifacts/mcp/cli" --nologo + displayName: 'Build MCP: Cli (live) server' + ${{ if parameters.toolsRepo }}: + workingDirectory: $(Build.SourcesDirectory)/azure-sdk-tools + + - ${{ else }}: + - script: | + set -e + dotnet build tools/azsdk-cli/Azure.Sdk.Tools.Mock -c Release -o "$(Build.SourcesDirectory)/artifacts/mcp/mock" --nologo + displayName: 'Build MCP: Mock server' + ${{ if parameters.toolsRepo }}: + workingDirectory: $(Build.SourcesDirectory)/azure-sdk-tools diff --git a/eng/common/pipelines/templates/steps/get-package-approval-status.yml b/eng/common/pipelines/templates/steps/get-package-approval-status.yml new file mode 100644 index 000000000000..f33ea0cb0759 --- /dev/null +++ b/eng/common/pipelines/templates/steps/get-package-approval-status.yml @@ -0,0 +1,45 @@ +parameters: + - name: PackageInfoFiles + type: object + - name: RepoOwner + type: string + default: "" + - name: SourceRootPath + type: string + default: $(Build.SourcesDirectory) + +steps: + # The consuming pipeline must install the Azure SDK Tools CLI before including this template. + # Use install-azsdk-cli.yml or otherwise set $(AZSDK) to the azsdk executable path. + - task: AzureCLI@2 + displayName: Check Package Approval Status + # Keep this predicate aligned with the release-stage inclusion condition in archetype-python-release.yml. + condition: >- + and( + succeeded(), + eq(variables['System.TeamProject'], 'internal'), + or( + in(variables['Build.Reason'], 'Manual', ''), + and( + eq(variables['Build.Reason'], 'IndividualCI'), + eq(variables['Build.SourceBranch'], 'refs/heads/main') + ) + ), + not( + and( + eq(variables['Skip.CheckPackageApproval'], 'true'), + eq(variables['IsRequesterAuthorizedToSkipApiReview'], 'true') + ) + ) + ) + inputs: + azureSubscription: "ADO to ARH Service Connection" + scriptType: pscore + scriptLocation: scriptPath + scriptPath: ${{ parameters.SourceRootPath }}/eng/common/scripts/Get-PackageApprovalStatus.ps1 + # PackageInfoFiles example: @('a/file1.json','a/file2.json') + arguments: > + -PackageInfoFiles @('${{ join(''',''', parameters.PackageInfoFiles) }}') + -RepoOwner '${{ parameters.RepoOwner }}' + -AzSdkExePath '$(AZSDK)' + workingDirectory: $(Pipeline.Workspace) diff --git a/eng/common/pipelines/templates/steps/git-push-changes.yml b/eng/common/pipelines/templates/steps/git-push-changes.yml index 84d6338c1554..45295029b608 100644 --- a/eng/common/pipelines/templates/steps/git-push-changes.yml +++ b/eng/common/pipelines/templates/steps/git-push-changes.yml @@ -8,7 +8,7 @@ parameters: WorkingDirectory: $(System.DefaultWorkingDirectory) ScriptDirectory: eng/common/scripts SkipCheckingForChanges: false - AuthToken: $(azuresdk-github-pat) + AuthToken: '' steps: - ${{ if eq(parameters.AuthToken, '') }}: diff --git a/eng/common/pipelines/templates/steps/login-to-github.yml b/eng/common/pipelines/templates/steps/login-to-github.yml index 91327fcbb123..22c1464cb28d 100644 --- a/eng/common/pipelines/templates/steps/login-to-github.yml +++ b/eng/common/pipelines/templates/steps/login-to-github.yml @@ -8,6 +8,9 @@ parameters: - name: VariableNamePrefix type: string default: GH_TOKEN +- name: AlwaysUseOwnerSuffix + type: boolean + default: false - name: ExportAsOutputVariable type: boolean default: false @@ -25,4 +28,5 @@ steps: arguments: > -InstallationTokenOwners '${{ join(''',''', parameters.TokenOwners) }}' -VariableNamePrefix '${{ parameters.VariableNamePrefix }}' + -AlwaysUseOwnerSuffix:$${{ parameters.AlwaysUseOwnerSuffix }} -ExportAsOutputVariable:$${{ parameters.ExportAsOutputVariable }} \ No newline at end of file diff --git a/eng/common/pipelines/templates/steps/mark-package-released.yml b/eng/common/pipelines/templates/steps/mark-package-released.yml new file mode 100644 index 000000000000..318622cbfbbd --- /dev/null +++ b/eng/common/pipelines/templates/steps/mark-package-released.yml @@ -0,0 +1,37 @@ +parameters: + - name: PackageInfoFiles + type: object + - name: RepoOwner + type: string + default: "" + - name: SourceRootPath + type: string + default: $(Build.SourcesDirectory) + +steps: + # Include this template only after package publishing in the release stage. + # The consuming pipeline must install the Azure SDK Tools CLI before including this template. + # Use install-azsdk-cli.yml or otherwise set $(AZSDK) to the azsdk executable path. + - task: AzureCLI@2 + displayName: Mark Packages Released + condition: >- + and( + succeeded(), + not( + and( + eq(variables['Skip.MarkPackageReleased'], 'true'), + eq(variables['IsRequesterAuthorizedToSkipApiReview'], 'true') + ) + ) + ) + inputs: + azureSubscription: "ADO to ARH Service Connection" + scriptType: pscore + scriptLocation: scriptPath + scriptPath: ${{ parameters.SourceRootPath }}/eng/common/scripts/Mark-PackageReleased.ps1 + # PackageInfoFiles example: @('a/file1.json','a/file2.json') + arguments: > + -PackageInfoFiles @('${{ join(''',''', parameters.PackageInfoFiles) }}') + -RepoOwner '${{ parameters.RepoOwner }}' + -AzSdkExePath '$(AZSDK)' + workingDirectory: $(Pipeline.Workspace) diff --git a/eng/common/pipelines/templates/steps/maven-authenticate.yml b/eng/common/pipelines/templates/steps/maven-authenticate.yml new file mode 100644 index 000000000000..1b84e984add3 --- /dev/null +++ b/eng/common/pipelines/templates/steps/maven-authenticate.yml @@ -0,0 +1,17 @@ +parameters: + SourceDirectory: $(Build.SourcesDirectory) + +steps: + # Copy mirror settings to default Maven location so all requests go through CFS + - pwsh: | + $m2Dir = if ($env:USERPROFILE) { "$env:USERPROFILE\.m2" } else { "$HOME/.m2" } + New-Item -ItemType Directory -Force -Path $m2Dir | Out-Null + Copy-Item -Path "${{ parameters.SourceDirectory }}/eng/settings.xml" -Destination "$m2Dir/settings.xml" + displayName: "Setup Maven mirror settings" + + # Authenticate with Azure Artifacts feeds + # MavenAuthenticate adds entries to ~/.m2/settings.xml matching mirror id 'azure-sdk-for-java' + - task: MavenAuthenticate@0 + displayName: "Maven Authenticate" + inputs: + artifactsFeeds: "azure-sdk-for-java" diff --git a/eng/common/pipelines/templates/steps/python-auth-dev-feed.yml b/eng/common/pipelines/templates/steps/python-auth-dev-feed.yml new file mode 100644 index 000000000000..dc912b269737 --- /dev/null +++ b/eng/common/pipelines/templates/steps/python-auth-dev-feed.yml @@ -0,0 +1,57 @@ +parameters: + DevFeedName: 'public/azure-sdk-for-python' + EnableTwineAuth: true + EnablePipAuth: true + EnableUvAuth: true + DisableAdditionalIndexes: false + +steps: + - pwsh: | + # For safety default to publishing to the private feed. + # Publish to https://dev.azure.com/azure-sdk/internal/_packaging?_a=feed&feed=azure-sdk-for-python-pr + $devopsFeedName = 'internal/azure-sdk-for-python-pr' + if (-not ('$(Build.Repository.Name)').EndsWith('-pr')) { + # Publish to https://dev.azure.com/azure-sdk/public/_packaging?_a=feed&feed=azure-sdk-for-python + $devopsFeedName = '${{ parameters.DevFeedName }}' + } + echo "##vso[task.setvariable variable=DevFeedName]$devopsFeedName" + echo "Using DevopsFeed = $devopsFeedName" + displayName: Setup DevOpsFeedName + + - ${{ if eq(parameters.EnableTwineAuth, true) }}: + - task: TwineAuthenticate@0 + displayName: 'Twine Authenticate to feed' + inputs: + artifactFeeds: $(DevFeedName) + + - ${{ if eq(parameters.EnablePipAuth, true) }}: + - task: PipAuthenticate@1 + displayName: 'Pip Authenticate to feed' + inputs: + artifactFeeds: $(DevFeedName) + onlyAddExtraIndex: false + + - ${{ if eq(parameters.DisableAdditionalIndexes, true) }}: + - pwsh: | + Write-Host "##vso[task.setvariable variable=PIP_EXTRA_INDEX_URL]" + Write-Host "##vso[task.setvariable variable=UV_INDEX]" + Write-Host "##vso[task.setvariable variable=UV_EXTRA_INDEX_URL]" + displayName: 'Disable Additional Package Indexes' + + - ${{ if eq(parameters.EnableUvAuth, true) }}: + - pwsh: | + if ($env:PIP_INDEX_URL) { + Write-Host "Found pip index URL: $($env:PIP_INDEX_URL)" + # UV_DEFAULT_INDEX is the canonical replacement for the deprecated UV_INDEX_URL (uv 0.4.23+). + # PIP_INDEX_URL is set by PipAuthenticate@1 and contains embedded credentials, which uv + # will use for Basic auth against the ADO feed (and its PyPI upstream) per astral-sh/uv#12651. + Write-Host "##vso[task.setvariable variable=UV_DEFAULT_INDEX]$($env:PIP_INDEX_URL)" + # Disable keyring so uv uses the URL-embedded credentials directly. + Write-Host "##vso[task.setvariable variable=UV_KEYRING_PROVIDER]disabled" + } else { + Write-Host "##[warning]PIP_INDEX_URL not set - uv will fall back to public PyPI." + } + # Force any managed Python downloads to go directly to GitHub releases + # rather than the default CDN (releases.astral.sh). + Write-Host "##vso[task.setvariable variable=UV_PYTHON_INSTALL_MIRROR]https://github.com/astral-sh/python-build-standalone/releases/download" + displayName: 'Configure UV Authentication' diff --git a/eng/common/pipelines/templates/steps/save-package-properties.yml b/eng/common/pipelines/templates/steps/save-package-properties.yml index d3a1177aced5..90581dbe74cc 100644 --- a/eng/common/pipelines/templates/steps/save-package-properties.yml +++ b/eng/common/pipelines/templates/steps/save-package-properties.yml @@ -32,9 +32,8 @@ steps: - task: Powershell@2 displayName: Generate PR Diff inputs: - targetType: inline - script: > - ${{ parameters.ScriptDirectory }}/Generate-PR-Diff.ps1 + filePath: ${{ parameters.ScriptDirectory }}/Generate-PR-Diff.ps1 + arguments: > -TargetPath '${{ parameters.TargetPath }}' -ArtifactPath '${{ parameters.DiffDirectory }}' -ExcludePaths ('${{ convertToJson(parameters.ExcludePaths) }}' | ConvertFrom-Json) diff --git a/eng/common/pipelines/templates/steps/set-vcpkg-cache-vars.yml b/eng/common/pipelines/templates/steps/set-vcpkg-cache-vars.yml index c7ece396e0d6..7827494c5c5e 100644 --- a/eng/common/pipelines/templates/steps/set-vcpkg-cache-vars.yml +++ b/eng/common/pipelines/templates/steps/set-vcpkg-cache-vars.yml @@ -6,9 +6,10 @@ parameters: steps: - pwsh: | - Write-Host "Setting vcpkg cache variables for read only access to vcpkg binary and asset caches" + Write-Host "Setting vcpkg cache variables for read only access to the vcpkg binary cache" Write-Host '##vso[task.setvariable variable=VCPKG_BINARY_SOURCES_SECRET;issecret=true;]clear;x-azcopy,https://azuresdkartifacts.blob.core.windows.net/public-vcpkg-container,read' - Write-Host '##vso[task.setvariable variable=X_VCPKG_ASSET_SOURCES_SECRET;issecret=true;]clear;x-azurl,https://azuresdkartifacts.blob.core.windows.net/public-vcpkg-container,,read' + Write-Host "Setting Terrapin asset source for read only access to the vcpkg source mirror" + Write-Host '##vso[task.setvariable variable=X_VCPKG_ASSET_SOURCES]clear;x-azurl,https://vcpkg.storage.devpackages.microsoft.io/artifacts/;x-block-origin' displayName: Set vcpkg variables - ${{if eq(variables['System.TeamProject'], 'internal') }}: diff --git a/eng/common/pipelines/templates/steps/upload-llm-artifacts.yml b/eng/common/pipelines/templates/steps/upload-llm-artifacts.yml new file mode 100644 index 000000000000..b0c2781d336a --- /dev/null +++ b/eng/common/pipelines/templates/steps/upload-llm-artifacts.yml @@ -0,0 +1,50 @@ +# This template stages test result files into an "llm-artifacts" directory so they can be +# uploaded as a pipeline artifact and consumed by LLM tooling (for example GitHub Copilot) +# to analyze a test run. +# +# It is language agnostic. Every Azure SDK language repo emits test results in a different +# format (.NET produces TRX, the other languages produce JUnit XML) and with a different +# file name, so callers pass the appropriate leaf-name glob via TestResultsGlob: +# +# .NET (TRX): TestResultsGlob: '$(TestTargetFramework)*.trx' +# Python (JUnit XML): TestResultsGlob: '*test*.xml' +# JS (JUnit XML): TestResultsGlob: 'test-results*.xml', SearchFolder: '$(System.DefaultWorkingDirectory)/sdk' +# Java (JUnit XML): TestResultsGlob: 'TEST-*.xml', SearchFolder: '$(System.DefaultWorkingDirectory)/sdk' +# Go (JUnit XML): TestResultsGlob: 'report.xml' +# +# The staging step does not care about the file format; it only moves files. Each file is +# renamed using its location relative to the repo's "sdk" directory so results from different +# services/packages do not collide once flattened into a single directory. +# +# Example template usage, see above for per language values: +# +# - template: /eng/common/pipelines/templates/steps/upload-llm-artifacts.yml +# parameters: +# TestResultsGlob: '*test*.xml' # e.g. Python +# SearchFolder: '$(System.DefaultWorkingDirectory)/sdk' +# - output: pipelineArtifact +# condition: eq(variables['uploadLlmArtifacts'], 'true') + + +parameters: + # One or more comma separated leaf-name globs used to locate test result files. + - name: TestResultsGlob + type: string + # Root directory to search recursively. Scope this (for example to ".../sdk") to avoid + # scanning large unrelated trees such as node_modules. + - name: SearchFolder + type: string + default: '$(Build.SourcesDirectory)' + +steps: + - task: PowerShell@2 + inputs: + pwsh: true + filePath: eng/common/scripts/Copy-TestResultsToLlmStaging.ps1 + arguments: > + -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory) + -SearchFolder ${{ parameters.SearchFolder }} + -TestResultsGlob ${{ parameters.TestResultsGlob }} + -SourcesDirectory $(Build.SourcesDirectory) + condition: succeededOrFailed() + displayName: Copy test result files to llm artifacts staging directory diff --git a/eng/common/pipelines/templates/steps/verify-codeowners.yml b/eng/common/pipelines/templates/steps/verify-codeowners.yml index c389a3ae3a7d..c8bd1a4ea79c 100644 --- a/eng/common/pipelines/templates/steps/verify-codeowners.yml +++ b/eng/common/pipelines/templates/steps/verify-codeowners.yml @@ -25,14 +25,42 @@ parameters: - data - functions - datamovement + # Comma separated list of Microsoft emails allowed to skip codeowners + # validation on manually queued builds. Build.RequestedForEmail is empty on + # pull request builds, so use AllowSkipAliases for those. + - name: AllowSkipEmails + type: string + default: '' + # Comma separated list of GitHub aliases (logins) allowed to skip codeowners + # validation on pull request builds. Matched against the GitHub login of the + # pull request author. Pull requests opened by a coding agent report the agent + # as the author, so they are not exempt. + - name: AllowSkipAliases + type: string + default: '' steps: - ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), eq(parameters.EnablePrValidation, true)) }}: + - task: PowerShell@2 + displayName: Evaluate Codeowners Skip + condition: succeeded() + inputs: + pwsh: true + filePath: $(Build.SourcesDirectory)/eng/common/scripts/Set-VerifyCodeownersSkip.ps1 + arguments: >- + -BuildReason '$(Build.Reason)' + -Repo '${{ parameters.Repo }}' + -PullRequestNumber '$(System.PullRequest.PullRequestNumber)' + -AdditionalSkipAliases '${{ parameters.AllowSkipAliases }}' + workingDirectory: $(Build.SourcesDirectory) + - template: /eng/common/pipelines/templates/steps/install-azsdk-cli.yml + parameters: + Condition: and(succeeded(), ne(variables['ShouldSkipVerifyCodeowners'], 'true')) - task: PowerShell@2 displayName: Generate PR Diff for Codeowners - condition: and(succeeded(), ne(variables['Skip.VerifyCodeowners'], 'true')) + condition: and(succeeded(), ne(variables['ShouldSkipVerifyCodeowners'], 'true')) inputs: pwsh: true filePath: $(Build.SourcesDirectory)/eng/common/scripts/Generate-PR-Diff.ps1 @@ -43,7 +71,7 @@ steps: - task: PowerShell@2 displayName: Verify Codeowners - condition: and(succeeded(), ne(variables['Skip.VerifyCodeowners'], 'true')) + condition: and(succeeded(), ne(variables['ShouldSkipVerifyCodeowners'], 'true')) inputs: pwsh: true filePath: $(Build.SourcesDirectory)/eng/common/scripts/Test-CodeownersForArtifacts.ps1 @@ -56,13 +84,26 @@ steps: workingDirectory: $(Build.SourcesDirectory) - ${{ elseif eq(variables['Build.Reason'], 'Manual') }}: + - task: PowerShell@2 + displayName: Evaluate Codeowners Skip + condition: succeeded() + inputs: + pwsh: true + filePath: $(Build.SourcesDirectory)/eng/common/scripts/Set-VerifyCodeownersSkip.ps1 + arguments: >- + -RequestedForEmail '$(Build.RequestedForEmail)' + -SkipVerifyCodeowners '$(Skip.VerifyCodeowners)' + -BuildReason '$(Build.Reason)' + -AdditionalSkipEmails '${{ parameters.AllowSkipEmails }}' + workingDirectory: $(Build.SourcesDirectory) + - template: /eng/common/pipelines/templates/steps/install-azsdk-cli.yml parameters: - Condition: and(succeeded(), ne(variables['Skip.VerifyCodeowners'], 'true')) + Condition: and(succeeded(), ne(variables['ShouldSkipVerifyCodeowners'], 'true')) - task: PowerShell@2 displayName: Verify Codeowners - condition: and(succeeded(), ne(variables['Skip.VerifyCodeowners'], 'true')) + condition: and(succeeded(), ne(variables['ShouldSkipVerifyCodeowners'], 'true')) inputs: pwsh: true filePath: $(Build.SourcesDirectory)/eng/common/scripts/Test-CodeownersForArtifacts.ps1 diff --git a/eng/common/pipelines/templates/variables/api-review-break-glass.yml b/eng/common/pipelines/templates/variables/api-review-break-glass.yml new file mode 100644 index 000000000000..048fc74261f1 --- /dev/null +++ b/eng/common/pipelines/templates/variables/api-review-break-glass.yml @@ -0,0 +1,12 @@ +variables: + IsRequesterAuthorizedToSkipApiReview: >- + $[in( + lower(variables['Build.RequestedForEmail']), + 'bebroder@microsoft.com', + 'mharder@microsoft.com', + 'djurek@microsoft.com', + 'chononiw@microsoft.com', + 'raychen@microsoft.com', + 'trpresco@microsoft.com', + 'prmarott@microsoft.com' + )] diff --git a/eng/common/pipelines/workflow-eval.yml b/eng/common/pipelines/workflow-eval.yml new file mode 100644 index 000000000000..d61b02b65e0a --- /dev/null +++ b/eng/common/pipelines/workflow-eval.yml @@ -0,0 +1,46 @@ +# Hermetic workflow-scenario eval CI: runs the unit-tool + mock workflow-scenario evals in +# evals against the mock MCP (live tier runs in live-eval.yml). + +trigger: + branches: + include: + - main + paths: + include: + - evals/** + - tools/azsdk-cli/Azure.Sdk.Tools.Mock/** + # Cli tool catalog + skills feed the eval results, so changes here must retrigger. + - tools/azsdk-cli/Azure.Sdk.Tools.Cli/** + - .github/skills/** + - eng/common/pipelines/workflow-eval.yml + - eng/common/pipelines/templates/jobs/** + - eng/common/pipelines/templates/steps/eval-invoke.yml + - eng/common/pipelines/templates/steps/eval-mcp-setup.yml + - eng/common/pipelines/templates/stages/archetype-eval.yml + - eng/common/scripts/eval/** + +pr: none + +variables: + # Defines LINUXPOOL + LINUXVMIMAGE used by the archetype's jobs. + - template: /eng/pipelines/templates/variables/image.yml + # Provides the secret azuresdk-copilot-github-pat, mapped into GITHUB_TOKEN in the invoke step. + - group: AzSDK_Eval_Variable_group + +extends: + template: /eng/common/pipelines/templates/stages/archetype-eval.yml + parameters: + # Shared mock/live builder; select the mock tier. + mcpSetupTemplate: /eng/common/pipelines/templates/steps/eval-mcp-setup.yml + TestType: mock + vallyRoot: evals + # Per-shard job timeout (report-only tier). + shardTimeoutInMinutes: 20 + # Pass-rate gate for `vally eval`. This tier is report-only (failOnFailedTests defaults false), + # so the threshold only colors the verdict; a repo/team can raise or lower it here. + threshold: 0.8 + # This repo needs no repo-specific setup (the mock MCP is built by the common BuildMcp job). + # A spec/language repo that must start its own bot / server / MCP copies the example hook and + # points these at it — see eng/common/pipelines/templates/steps/eval-hook-example.yml. + # preEvalTemplate: /eng/pipelines/eval/start-my-bot.yml + # postEvalTemplate: /eng/pipelines/eval/stop-my-bot.yml diff --git a/eng/common/scripts/AutoRelease-Operations.ps1 b/eng/common/scripts/AutoRelease-Operations.ps1 new file mode 100644 index 000000000000..7fe90013690d --- /dev/null +++ b/eng/common/scripts/AutoRelease-Operations.ps1 @@ -0,0 +1,151 @@ +# Shared auto-release operations used by language repos to resolve the pull request and +# changed-file set that drive post-merge auto-release. Generic GitHub API calls live in +# Invoke-GitHubAPI.ps1; this file holds the auto-release policy and diff-shaping logic. + +. "${PSScriptRoot}\logging.ps1" +. "${PSScriptRoot}\Invoke-GitHubAPI.ps1" + +# Resolves the auto-release pull request for a commit SHA. +# +# Applies the shared auto-release selection policy: +# 1. Look up the pull requests associated with the commit. +# 2. Keep only pull requests merged into the target branch. +# 3. Select the most recently merged one. +# 4. Re-fetch that pull request by number to read its authoritative merge state and labels. +# 5. Require it to be merged into the target branch and to carry the auto-release label. +# +# Returns a result object: +# PullRequest : the selected PR object, or $null +# PullRequestNumber : the selected PR number, or $null +# IsEligible : $true only when a merged, labeled PR was found +# SkipReason : a human readable reason when IsEligible is $false +function Get-GitHubAutoReleasePullRequestForCommit { + param ( + $RepoOwner, + $RepoName, + $RepoId = "$RepoOwner/$RepoName", + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + $CommitSha, + $TargetBranch = "main", + $RequiredLabel = "auto-release", + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory = $true)] + $AuthToken + ) + + $result = [PSCustomObject]@{ + PullRequest = $null + PullRequestNumber = $null + IsEligible = $false + SkipReason = "" + } + + $associatedPullRequests = @(Get-GitHubPullRequestsForCommit -RepoId $RepoId -CommitSha $CommitSha -AuthToken $AuthToken) + + $mergedToTarget = @( + $associatedPullRequests | + Where-Object { $_.merged_at -and $_.base.ref -eq $TargetBranch } + ) + + if ($mergedToTarget.Count -eq 0) { + $result.SkipReason = "No merged pull request targeting '$TargetBranch' was associated with commit '$CommitSha'." + return $result + } + + $selectedPullRequest = $mergedToTarget | + Sort-Object { [datetime]$_.merged_at } -Descending | + Select-Object -First 1 + + $result.PullRequestNumber = $selectedPullRequest.number + + # Re-fetch the pull request by number to read its authoritative state. The commit -> pulls payload is + # a secondary representation whose labels and merge state can lag the canonical pull request, so + # eligibility (merge target + required label) is decided against this authoritative payload. + $pullRequest = Get-GitHubPullRequest -RepoId $RepoId -PullRequestNumber $selectedPullRequest.number -AuthToken $AuthToken + $result.PullRequest = $pullRequest + + if (-not $pullRequest.merged_at -or $pullRequest.base.ref -ne $TargetBranch) { + $result.SkipReason = "Pull request #$($pullRequest.number) is not merged into '$TargetBranch'." + return $result + } + + $labels = @($pullRequest.labels | ForEach-Object { $_.name }) + if ($RequiredLabel -notin $labels) { + $result.SkipReason = "Pull request #$($pullRequest.number) does not have the required label '$RequiredLabel'." + return $result + } + + $result.IsEligible = $true + return $result +} + +# Converts GitHub pull request file entries into the Azure SDK PR diff object shape +# consumed by package-detection tooling (compatible with Generate-PR-Diff.ps1 output). +# +# Parameters: +# PullRequestNumber : the PR number recorded in the diff object. +# PullRequestFiles : the file entries returned by Get-GitHubPullRequestFiles. +# ExcludePaths : optional paths to record on the diff object. +# ExcludeServiceRootFiles : excludes files directly under sdk/ so they do not resolve every +# package in that service. +# +# Returns a PSCustomObject with ChangedFiles, ChangedServices, ExcludePaths, DeletedFiles, PRNumber. +function New-GitHubPullRequestDiffObject { + param ( + [Parameter(Mandatory = $true)] + $PullRequestNumber, + [Parameter(Mandatory = $true)] + [AllowEmptyCollection()] + [array] $PullRequestFiles, + [AllowEmptyCollection()] + [array] $ExcludePaths = @(), + [switch] $ExcludeServiceRootFiles + ) + + $changedFiles = @() + $deletedFiles = @() + + foreach ($file in $PullRequestFiles) { + $filename = "$($file.filename)" -replace '\\', '/' + + if ($file.status -eq 'removed') { + $deletedFiles += $filename + } + else { + $changedFiles += $filename + } + + # For renames, include the previous path as deleted so package detection sees both sides of the move. + if ($file.status -eq 'renamed' -and $file.previous_filename) { + $deletedFiles += ("$($file.previous_filename)" -replace '\\', '/') + } + } + + if ($ExcludeServiceRootFiles) { + $serviceRootFilePattern = '^sdk/[^/]+/[^/]+$' + $changedFiles = @($changedFiles | Where-Object { $_ -notmatch $serviceRootFilePattern }) + $deletedFiles = @($deletedFiles | Where-Object { $_ -notmatch $serviceRootFilePattern }) + } + + $changedFiles = @($changedFiles | Where-Object { $_ } | Sort-Object -Unique) + $deletedFiles = @($deletedFiles | Where-Object { $_ } | Sort-Object -Unique) + + $changedServices = @( + $changedFiles + $deletedFiles | + ForEach-Object { if ($_ -match "^sdk/([^/]+)/") { $Matches[1] } } | + Sort-Object -Unique + ) + + if (-not $ExcludePaths) { + $ExcludePaths = @() + } + + return [PSCustomObject]@{ + ChangedFiles = $changedFiles + ChangedServices = $changedServices + ExcludePaths = @($ExcludePaths) + DeletedFiles = $deletedFiles + PRNumber = "$PullRequestNumber" + } +} diff --git a/eng/common/scripts/Copy-TestResultsToLlmStaging.ps1 b/eng/common/scripts/Copy-TestResultsToLlmStaging.ps1 new file mode 100644 index 000000000000..1484d1482829 --- /dev/null +++ b/eng/common/scripts/Copy-TestResultsToLlmStaging.ps1 @@ -0,0 +1,97 @@ +<# +.SYNOPSIS +Copies the test result files to the llm-artifacts directory for further processing. + +.DESCRIPTION +This script stages test result files into an "llm-artifacts" directory so they can be +uploaded as a pipeline artifact and consumed by LLM tooling (for example GitHub Copilot) +to analyze a test run. + +It is language agnostic. Every Azure SDK language repo emits test results in a different +format (.NET produces TRX, the other languages produce JUnit XML) and with a different +file name, so callers pass the appropriate leaf-name glob via TestResultsGlob: + +- .NET (TRX): TestResultsGlob: '$(TestTargetFramework)*.trx' +- Python (JUnit XML): TestResultsGlob: '*test*.xml' +- JS (JUnit XML): TestResultsGlob: 'test-results*.xml', SearchFolder: '$(System.DefaultWorkingDirectory)/sdk' +- Java (JUnit XML): TestResultsGlob: 'TEST-*.xml', SearchFolder: '$(System.DefaultWorkingDirectory)/sdk' +- Go (JUnit XML): TestResultsGlob: 'report.xml' + +The staging step does not care about the file format; it only moves files. Each file is +renamed using its location relative to the repo's "sdk" directory so results from different +services/packages do not collide once flattened into a single directory. + +.PARAMETER ArtifactStagingDirectory +The folder in which the llm-artifacts directory will be created. Passed from DevOps as a string. + +.PARAMETER SearchFolder +The folder under which test result files will be searched for. Passed from DevOps as a string. + +.PARAMETER TestResultsGlob +The glob pattern to match test result files. Passed from DevOps as a string. + +.PARAMETER SourcesDirectory +The root folder of the repo. Passed from DevOps as a string. +#> +[CmdletBinding()] +Param( + [Parameter(Mandatory = $True)] + [string] $ArtifactStagingDirectory, + [Parameter(Mandatory = $True)] + [string] $SearchFolder, + [Parameter(Mandatory = $True)] + [string] $TestResultsGlob, + [Parameter(Mandatory = $True)] + [string] $SourcesDirectory +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = 'Stop' + +$artifactsDirectory = "$ArtifactStagingDirectory/llm-artifacts" +New-Item $artifactsDirectory -ItemType Directory -Force | Out-Null + +$patterns = $TestResultsGlob.Split(",", [StringSplitOptions]::RemoveEmptyEntries) ` +| ForEach-Object { $_.Trim() } | Where-Object { $_ } + +$testResultsFiles = @(Get-ChildItem -Path $SearchFolder -Include $patterns -Recurse -File -ErrorAction SilentlyContinue) + +Write-Host "=================" +Write-Host "Found $($testResultsFiles.Count) test result file(s) under '$SearchFolder' matching: $($patterns -join ', ')" +$testResultsFiles | ForEach-Object { Write-Host $_.FullName } +Write-Host "=================" + +$stagedCount = 0 +foreach ($testResultsFile in $testResultsFiles) { + $fileFullName = $testResultsFile.FullName + + # Build a unique, traceable artifact name from the file's location. Prefer the path + # relative to the language repo's "sdk" directory, for example: + # /sdk/template/Azure.Template/tests/TestResults/net8.0.trx + # -> template-Azure.Template-tests-TestResults-net8.0.trx + # /sdk/storage/report.xml + # -> storage-report.xml + # Fall back to a sources-relative path for repos without an "sdk" directory. + if ($fileFullName -match "[\\/]sdk[\\/]") { + $relativePath = ($fileFullName -split "[\\/]sdk[\\/]", 2)[-1] + } + else { + $relativePath = [System.IO.Path]::GetRelativePath($SourcesDirectory, $fileFullName) + } + $fileName = $relativePath -replace "^[\\/]+", "" -replace "[\\/]+", "-" + + $destination = "$artifactsDirectory/$fileName" + Move-Item -Path $fileFullName -Destination $destination -ErrorAction Continue + if (Test-Path -Path $destination) { + $stagedCount++ + } +} + +# Only signal an upload when test result files were actually staged. +if ($stagedCount -gt 0) { + Write-Host "Staged $stagedCount test result file(s) into '$artifactsDirectory'." + Write-Host "##vso[task.setvariable variable=uploadLlmArtifacts]true" +} +else { + Write-Host "No test result files were staged; skipping llm-artifacts upload." +} diff --git a/eng/common/scripts/Create-APIReview.ps1 b/eng/common/scripts/Create-APIReview.ps1 index 86b95ed0e552..53de649a6335 100644 --- a/eng/common/scripts/Create-APIReview.ps1 +++ b/eng/common/scripts/Create-APIReview.ps1 @@ -337,10 +337,10 @@ function ProcessPackage($packageInfo) { if (!$apiStatus.IsApproved) { - Write-Host "Package version $($version) is GA and automatic API Review is not yet approved for package $($packageInfo.ArtifactName)." - Write-Host "Build and release is not allowed for GA package without API review approval." - Write-Host "You will need to queue another build to proceed further after API review is approved" - Write-Host "You can check http://aka.ms/azsdk/engsys/apireview/faq for more details on API Approval." + Write-Error "Package version $($version) is GA and automatic API Review is not yet approved for package $($packageInfo.ArtifactName)." -ErrorAction Continue + Write-Error "Build and release is not allowed for GA package without API review approval." -ErrorAction Continue + Write-Error "You will need to queue another build to proceed further after API review is approved" -ErrorAction Continue + Write-Error "You can check https://aka.ms/azsdk/engsys/apireview/faq for more details on API Approval." -ErrorAction Continue } return 1 } @@ -437,7 +437,7 @@ foreach($pkg in $responses.keys) { if ($responses[$pkg] -eq 1) { - Write-Host "API changes are not approved for $($pkg)" + Write-Error "API changes are not approved for $($pkg)" -ErrorAction Continue $exitCode = 1 } } diff --git a/eng/common/scripts/Create-APIViewRevision.ps1 b/eng/common/scripts/Create-APIViewRevision.ps1 new file mode 100644 index 000000000000..e885d55ea23a --- /dev/null +++ b/eng/common/scripts/Create-APIViewRevision.ps1 @@ -0,0 +1,285 @@ +<# +.SYNOPSIS +Creates APIView revisions for SDK packages. + +.DESCRIPTION +Uploads package artifacts directly to APIView or creates revisions from pre-generated review token files. +#> +[CmdletBinding()] +param ( + [Parameter(Mandatory = $false)] + [array] $ArtifactList, + + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string] $ArtifactPath, + + [string] $SourceBranch, + [string] $DefaultBranch, + [string] $RepoName, + [string] $BuildId, + [string] $PackageName = "", + [string] $ConfigFileDir = "", + [string] $APIViewUri = "https://apiview.dev/autoreview", + [string] $ArtifactName = "packages", + + [Parameter(Mandatory = $false)] + [array] $PackageInfoFiles +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = "Stop" + +# Loads LanguageShort from eng/scripts/Language-Settings.ps1. +. (Join-Path $PSScriptRoot common.ps1) + +function Get-ApiViewBearerToken { + $tokenResponse = az account get-access-token --resource "api://apiview" --output json 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Failed to acquire APIView access token: $tokenResponse" + } + + try { + $accessToken = ($tokenResponse | ConvertFrom-Json -ErrorAction Stop).accessToken + } + catch { + throw "Failed to parse APIView access token response: $($_.Exception.Message)" + } + + if ([string]::IsNullOrWhiteSpace($accessToken)) { + throw "APIView access token response did not contain an access token." + } + + return $accessToken +} + +function Invoke-ApiViewSourceUpload( + [string] $FilePath, + [string] $ApiLabel, + [string] $ReleaseStatus, + [string] $PackageVersion, + [string] $PackageType +) { + $fileName = Split-Path -Leaf $FilePath + Write-Host "Uploading $FilePath to APIView." + + $multipartContent = [System.Net.Http.MultipartFormDataContent]::new() + $fileStream = $null + try { + $fileStream = [System.IO.FileStream]::new($FilePath, [System.IO.FileMode]::Open) + $fileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new("form-data") + $fileHeader.Name = "file" + $fileHeader.FileName = $fileName + $fileContent = [System.Net.Http.StreamContent]::new($fileStream) + $fileContent.Headers.ContentDisposition = $fileHeader + $fileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse("application/octet-stream") + $multipartContent.Add($fileContent) + + Add-MultipartString $multipartContent "label" $ApiLabel + Add-MultipartString $multipartContent "packageVersion" $PackageVersion + Add-MultipartString $multipartContent "setReleaseTag" "False" + Add-MultipartString $multipartContent "packageType" $PackageType + if ($ReleaseStatus -and $ReleaseStatus -ne "Unreleased") { + Add-MultipartString $multipartContent "compareAllRevisions" "True" + } + + $headers = @{ Authorization = "Bearer $(Get-ApiViewBearerToken)" } + $response = Invoke-WebRequest -Method Post -Uri "$APIViewUri/upload" -Body $multipartContent -Headers $headers -MaximumRetryCount 3 + Write-Host "API review: $($response.Content)" + Write-Host "HTTP response code: $($response.StatusCode)" + } + finally { + $multipartContent.Dispose() + if ($null -ne $fileStream) { + $fileStream.Dispose() + } + } +} + +function Add-MultipartString( + [System.Net.Http.MultipartFormDataContent] $MultipartContent, + [string] $Name, + [string] $Value +) { + $header = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new("form-data") + $header.Name = $Name + $content = [System.Net.Http.StringContent]::new($Value) + $content.Headers.ContentDisposition = $header + $MultipartContent.Add($content) + Write-Host "Request param, ${Name}: $Value" +} + +function Invoke-ApiViewTokenCreation( + [object] $PackageInfo, + [string] $ApiLabel, + [string] $ReviewFileName, + [string] $PackagePath +) { + if ([string]::IsNullOrWhiteSpace($BuildId)) { + throw "BuildId is required to create an APIView revision from a review token file." + } + if ([string]::IsNullOrWhiteSpace($RepoName)) { + throw "RepoName is required to create an APIView revision from a review token file." + } + + $fileName = Split-Path -Leaf $PackagePath + $queryParameters = [ordered]@{ + buildId = $BuildId + artifactName = $ArtifactName + originalFilePath = $fileName + reviewFilePath = $ReviewFileName + label = $ApiLabel + repoName = $RepoName + packageName = $PackageInfo.ArtifactName + project = "internal" + packageVersion = $PackageInfo.Version + packageType = $PackageInfo.SdkType + } + if ($PackageInfo.ReleaseStatus -and $PackageInfo.ReleaseStatus -ne "Unreleased") { + $queryParameters["compareAllRevisions"] = "true" + } + + $query = @($queryParameters.GetEnumerator() | ForEach-Object { + "$([System.Uri]::EscapeDataString($_.Key))=$([System.Uri]::EscapeDataString($_.Value))" + }) -join "&" + $uri = "$APIViewUri/create?$query" + Write-Host "Creating APIView revision from review token file $ReviewFileName." + Write-Host "Request to APIView: $uri" + $headers = @{ Authorization = "Bearer $(Get-ApiViewBearerToken)" } + $response = Invoke-WebRequest -Method Post -Uri $uri -Headers $headers -MaximumRetryCount 3 + Write-Host "API review: $($response.Content)" + Write-Host "HTTP response code: $($response.StatusCode)" +} + +function Get-ApiReviewTokenFileName([string] $ArtifactName) { + $reviewTokenFileName = "${ArtifactName}_${LanguageShort}.json" + $tokenFilePath = Join-Path $ArtifactPath $ArtifactName $reviewTokenFileName + if (Test-Path $tokenFilePath) { + Write-Host "Review token file is present at $tokenFilePath" + return $reviewTokenFileName + } + + Write-Host "Review token file is not present at $tokenFilePath" + return $null +} + +function Submit-ApiViewRevision([object] $PackageInfo, [string] $PackagePath) { + $apiLabel = "Source Branch:$SourceBranch" + $reviewTokenFileName = Get-ApiReviewTokenFileName $PackageInfo.ArtifactName + if ($reviewTokenFileName) { + Invoke-ApiViewTokenCreation $PackageInfo $apiLabel $reviewTokenFileName $PackagePath + return + } + + Invoke-ApiViewSourceUpload $PackagePath $apiLabel $PackageInfo.ReleaseStatus $PackageInfo.Version $PackageInfo.SdkType +} + +function Find-PackageArtifacts([object] $PackageInfo) { + if (-not $FindArtifactForApiReviewFn -or -not (Test-Path "Function:$FindArtifactForApiReviewFn")) { + throw "The function configured by 'FindArtifactForApiReviewFn' was not found." + } + + $artifactName = if ($PackageInfo.ArtifactName) { $PackageInfo.ArtifactName } else { $PackageInfo.Name } + $functionInfo = Get-Command $FindArtifactForApiReviewFn -ErrorAction Stop + if ($functionInfo.Parameters.Keys -contains "packageInfo") { + return &$FindArtifactForApiReviewFn $ArtifactPath $PackageInfo + } + + return &$FindArtifactForApiReviewFn $ArtifactPath $artifactName +} + +function Process-Package([object] $PackageInfo) { + $packages = Find-PackageArtifacts $PackageInfo + if (-not $packages) { + Write-Host "No package is found in artifact path to submit a review request for $($PackageInfo.ArtifactName)." + return + } + + $version = [AzureEngSemanticVersion]::ParseVersionString($PackageInfo.Version) + if ($null -eq $version) { + throw "Version '$($PackageInfo.Version)' for package $($PackageInfo.ArtifactName) is invalid." + } + + Write-Host "Version: $version" + Write-Host "SDK Type: $($PackageInfo.SdkType)" + Write-Host "Release Status: $($PackageInfo.ReleaseStatus)" + if ($SourceBranch -ne $DefaultBranch -and $version.IsPrerelease) { + Write-Host "Build is triggered from $SourceBranch with a prerelease version. Skipping APIView revision creation." + return + } + + foreach ($packagePath in $packages.Values) { + Write-Host "Submitting APIView revision for package $($PackageInfo.ArtifactName), file path: $packagePath" + Submit-ApiViewRevision $PackageInfo $packagePath + } +} + +function Resolve-PackageInfoFiles { + if (-not $ConfigFileDir) { + $script:ConfigFileDir = Join-Path $ArtifactPath "PackageInfo" + } + + if ($PackageName) { + $packageInfoPath = Join-Path $ConfigFileDir "$PackageName.json" + if (-not (Test-Path $packageInfoPath)) { + throw "Package property file path $packageInfoPath is invalid." + } + return @($packageInfoPath) + } + + if ($ArtifactList -and $ArtifactList.Count -gt 0) { + $files = @() + foreach ($artifact in $ArtifactList) { + $packageInfoPath = Join-Path $ConfigFileDir "$($artifact.Name).json" + if (Test-Path $packageInfoPath) { + $files += $packageInfoPath + } + else { + Write-Warning "Package property file path $packageInfoPath is invalid." + } + } + return $files + } + + if ($PackageInfoFiles -and $PackageInfoFiles.Count -gt 0) { + return @($PackageInfoFiles | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }) + } + + throw "No package information provided. Provide PackageName, ArtifactList, or PackageInfoFiles." +} + +Write-Host "Artifact path: $ArtifactPath" +Write-Host "Source branch: $SourceBranch" +Write-Host "Package name: $PackageName" + +if ([string]::IsNullOrWhiteSpace($SourceBranch)) { + throw "SourceBranch is required to determine APIView revision eligibility." +} +if ([string]::IsNullOrWhiteSpace($DefaultBranch)) { + throw "DefaultBranch is required to determine APIView revision eligibility." +} +if (-not (Test-Path $ArtifactPath -PathType Container)) { + throw "Artifact path $ArtifactPath does not exist or is not a directory." +} + +$processedPackageInfoFiles = @(Resolve-PackageInfoFiles) +if ($processedPackageInfoFiles.Count -eq 0) { + throw "No package info files found after processing the supplied package inputs." +} + +$failures = @() +foreach ($packageInfoFile in $processedPackageInfoFiles) { + try { + $packageInfo = Get-Content $packageInfoFile -Raw | ConvertFrom-Json -ErrorAction Stop + Write-Host "Processing $($packageInfo.ArtifactName)" + Process-Package $packageInfo + } + catch { + Write-Error "Failed to create an APIView revision from ${packageInfoFile}: $($_.Exception.Message)" -ErrorAction Continue + $failures += "${packageInfoFile}: $($_.Exception.Message)" + } +} + +if ($failures.Count -gt 0) { + throw "APIView revision creation failed for $($failures.Count) package(s):`n$($failures -join "`n")" +} diff --git a/eng/common/scripts/Get-PackageApprovalStatus.ps1 b/eng/common/scripts/Get-PackageApprovalStatus.ps1 new file mode 100644 index 000000000000..642add267c79 --- /dev/null +++ b/eng/common/scripts/Get-PackageApprovalStatus.ps1 @@ -0,0 +1,194 @@ +<# +.SYNOPSIS +Checks whether a package is approved for release. + +.DESCRIPTION +Invokes the centralized Azure SDK CLI API review release gate and fails unless its structured result approves the package. + +.PARAMETER PackageInfoFiles +Package-info JSON files containing the package name, version, and optional API hash. + +.PARAMETER RepoOwner +The optional GitHub repository owner to query in API Review Hub. + +.PARAMETER AzSdkExePath +The path to the azsdk executable. +#> +[CmdletBinding()] +param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [array] $PackageInfoFiles, + + [string] $RepoOwner = "", + + [ValidateNotNullOrEmpty()] + [string] $AzSdkExePath = "azsdk" +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = "Stop" + +. (Join-Path $PSScriptRoot common.ps1) + +if ([string]::IsNullOrWhiteSpace($LanguageShort) -or $LanguageShort -eq "Unknown") { + throw "SDK language settings were not loaded." +} +Write-Host "SDK language: $LanguageShort" + +function Write-BackendStatus([string] $Name, [object] $Status) { + if ($null -eq $Status) { + return + } + + $approval = if ($Status.isApproved) { "APPROVED" } else { "NOT APPROVED" } + Write-Host $Name + Write-Host " Status: $approval" + if ($Status.PSObject.Properties["reason"]) { + Write-Host " Reason: $($Status.reason)" + } + if ($Status.PSObject.Properties["statusCode"]) { + Write-Host " HTTP status: $($Status.statusCode)" + } + + if ($Status.PSObject.Properties["details"]) { + foreach ($detail in @($Status.details)) { + Write-Host " Detail: $detail" + } + } +} + +function Write-ApprovalSummary([object] $Response) { + $result = $Response.result + $source = if ($result.PSObject.Properties["finalSource"]) { $result.finalSource } else { "unknown" } + $reason = if ($result.PSObject.Properties["reason"]) { $result.reason } else { "none" } + + Write-Host "" + Write-Host "Approval results" + Write-Host "----------------" + if ($result.PSObject.Properties["reviewHub"]) { + Write-BackendStatus "API Review Hub" $result.reviewHub + } + if ($result.PSObject.Properties["apiView"]) { + Write-Host "" + Write-BackendStatus "APIView" $result.apiView + } + + $approval = if ($result.isApproved) { "APPROVED" } else { "NOT APPROVED" } + Write-Host "" + Write-Host "Overall" + Write-Host " Status: $approval" + Write-Host " Source: $source" + Write-Host " Reason: $reason" +} + +function Test-PackageApproval([string] $PackageName, [string] $PackageVersion, [string] $ApiHash) { + $arguments = @( + "package", + "get-approval-status", + "--language", $LanguageShort, + "--package-name", $PackageName, + "--package-version", $PackageVersion, + "--output", "json" + ) + + if (-not [string]::IsNullOrWhiteSpace($ApiHash)) { + $arguments += @("--api-hash", $ApiHash) + } + + if (-not [string]::IsNullOrWhiteSpace($RepoOwner)) { + $arguments += @("--repo-owner", $RepoOwner) + } + + $hashDescription = if ([string]::IsNullOrWhiteSpace($ApiHash)) { "not provided" } else { $ApiHash } + Write-Host "Checking package approval: language=$LanguageShort, package=$PackageName, version=$PackageVersion, apiHash=$hashDescription" + $formattedArguments = @($arguments | ForEach-Object { Format-CommandArgument $_ }) + Write-Host "Command: azsdk $($formattedArguments -join ' ')" + + $commandResult = Invoke-AzSdkCliCommand $AzSdkExePath $arguments + $exitCode = $commandResult.ExitCode + + try { + $response = $commandResult.Output | ConvertFrom-Json -ErrorAction Stop + } + catch { + $capturedOutput = "stdout:`n$($commandResult.Stdout)`nstderr:`n$($commandResult.Stderr)" + throw "Package approval check returned malformed JSON for $PackageName $PackageVersion (azsdk exit code $exitCode). Captured output:`n$capturedOutput" + } + + if ($response.PSObject.Properties["result"] -and + $null -ne $response.result -and + $response.result.PSObject.Properties["isApproved"] -and + $response.result.isApproved -is [bool]) { + Write-ApprovalSummary $response + } + + if ($exitCode -ne 0) { + $failureMessage = if ($response.PSObject.Properties["response_error"] -and + -not [string]::IsNullOrWhiteSpace($response.response_error)) { + $response.response_error + } else { + "azsdk exited with code $exitCode." + } + throw "Package approval check failed: $failureMessage" + } + + if (-not $response.PSObject.Properties["result"] -or + $null -eq $response.result -or + -not $response.result.PSObject.Properties["isApproved"] -or + $response.result.isApproved -isnot [bool]) { + throw "Package approval check returned an invalid response for $PackageName $PackageVersion." + } + + if (-not $response.result.isApproved) { + throw "Package $PackageName $PackageVersion is not approved for release." + } +} + +$packageInfoPaths = @($PackageInfoFiles | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }) +if ($packageInfoPaths.Count -eq 0) { + throw "At least one package-info file is required." +} + +Confirm-AzSdkCliMinimumVersion $AzSdkExePath ([version] "0.6.38") +$failures = @() +foreach ($packageInfoFile in $packageInfoPaths) { + try { + if (-not (Test-Path $packageInfoFile -PathType Leaf)) { + throw "Package-info file does not exist." + } + + $packageInfo = Get-Content $packageInfoFile -Raw | ConvertFrom-Json -ErrorAction Stop + $packageName = if ($packageInfo.PSObject.Properties["Name"]) { [string] $packageInfo.Name } else { "" } + $packageVersion = if ($packageInfo.PSObject.Properties["Version"]) { [string] $packageInfo.Version } else { "" } + $apiHash = if ($packageInfo.PSObject.Properties["ApiHash"]) { [string] $packageInfo.ApiHash } else { "" } + $releaseStatus = if ($packageInfo.PSObject.Properties["ReleaseStatus"]) { [string] $packageInfo.ReleaseStatus } else { "" } + + if ([string]::IsNullOrWhiteSpace($packageName)) { + throw "Package-info file does not contain a package Name." + } + if ([string]::IsNullOrWhiteSpace($packageVersion)) { + throw "Package-info file does not contain a package Version." + } + + try { + Test-PackageApproval $packageName $packageVersion $apiHash + } + catch { + if ($releaseStatus -eq "Unreleased") { + Write-Host "$packageName $packageVersion is not marked for release. Ignoring approval check failure: $($_.Exception.Message)" + } + else { + throw + } + } + } + catch { + Write-Error "Package approval failed for ${packageInfoFile}: $($_.Exception.Message)" -ErrorAction Continue + $failures += "${packageInfoFile}: $($_.Exception.Message)" + } +} + +if ($failures.Count -gt 0) { + throw "Package approval failed for $($failures.Count) package(s):`n$($failures -join "`n")" +} \ No newline at end of file diff --git a/eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 b/eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 index 48b81498728c..a3c0aa9ac689 100644 --- a/eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 +++ b/eng/common/scripts/Helpers/CommandInvocation-Helpers.ps1 @@ -1,5 +1,73 @@ . $PSScriptRoot/../logging.ps1 +function Format-CommandArgument([string] $Argument) { + if ($Argument -match '[\s"'']') { + return '"' + $Argument.Replace('"', '\"') + '"' + } + return $Argument +} + +function Invoke-AzSdkCliCommand([string] $Executable, [string[]] $Arguments) { + $command = Get-Command $Executable -ErrorAction SilentlyContinue + if (-not $command) { + throw "The azsdk CLI executable was not found at '$Executable'. Install azsdk before continuing." + } + + if ($command.CommandType -ne [System.Management.Automation.CommandTypes]::Application) { + $output = @(& $command @Arguments 2>&1) + return [PSCustomObject]@{ + ExitCode = $LASTEXITCODE + Output = ($output | ForEach-Object { "$_" }) -join [Environment]::NewLine + Stdout = ($output | ForEach-Object { "$_" }) -join [Environment]::NewLine + Stderr = "" + } + } + + $startInfo = [System.Diagnostics.ProcessStartInfo]::new() + $startInfo.FileName = $command.Source + $startInfo.UseShellExecute = $false + $startInfo.RedirectStandardOutput = $true + $startInfo.RedirectStandardError = $true + $startInfo.CreateNoWindow = $true + + if ($startInfo.PSObject.Properties["ArgumentList"]) { + foreach ($argument in $Arguments) { + $startInfo.ArgumentList.Add($argument) + } + } + else { + $formattedArguments = @($Arguments | ForEach-Object { Format-CommandArgument $_ }) + $startInfo.Arguments = $formattedArguments -join " " + } + + $process = [System.Diagnostics.Process]::Start($startInfo) + $stdoutTask = $process.StandardOutput.ReadToEndAsync() + $stderrTask = $process.StandardError.ReadToEndAsync() + $process.WaitForExit() + $stdout = $stdoutTask.GetAwaiter().GetResult() + $stderr = $stderrTask.GetAwaiter().GetResult() + + return [PSCustomObject]@{ + ExitCode = $process.ExitCode + Output = if (-not [string]::IsNullOrWhiteSpace($stdout)) { $stdout } else { $stderr } + Stdout = $stdout + Stderr = $stderr + } +} + +function Confirm-AzSdkCliMinimumVersion([string] $Executable, [version] $MinimumVersion) { + $commandResult = Invoke-AzSdkCliCommand $Executable @("--version") + $versionMatch = [regex]::Match($commandResult.Output, '(? ''" - $query += " AND [Custom.ProductLifecycle] <> ''" - $query += " AND [Custom.ProductType] IN ('Feature', 'Offering', 'Sku')" $workItems = Invoke-Query $fields $query return $workItems diff --git a/eng/common/scripts/Helpers/Resource-Helpers.ps1 b/eng/common/scripts/Helpers/Resource-Helpers.ps1 index f12b35503500..35f3ec23b87e 100644 --- a/eng/common/scripts/Helpers/Resource-Helpers.ps1 +++ b/eng/common/scripts/Helpers/Resource-Helpers.ps1 @@ -297,7 +297,8 @@ function Remove-WormStorageAccounts() { [CmdletBinding(SupportsShouldProcess = $True)] param( [string]$GroupPrefix, - [switch]$CI + [switch]$CI, + [bool]$CheckPrefix = $true ) $ErrorActionPreference = 'Stop' @@ -306,10 +307,16 @@ function Remove-WormStorageAccounts() { # DO NOT REMOVE THIS # We call this script from live test pipelines as well, and a string mismatch/error could blow away # some static storage accounts we rely on - if (!$groupPrefix -or ($CI -and (!$GroupPrefix.StartsWith('rg-') -and !$GroupPrefix.StartsWith('SSS3PT_rg-')))) { - throw "The -GroupPrefix parameter must not be empty, or must start with 'rg-' or 'SSS3PT_rg-' in CI contexts" + # Note: Prefix check can be disabled via `-CheckPrefix:$false` for scenarios where the resource group prefix isn't standardized. + if (!$GroupPrefix) { + throw "The -GroupPrefix parameter must not be empty" } + if ($CheckPrefix -and $CI -and (!$GroupPrefix.StartsWith('rg-') -and !$GroupPrefix.StartsWith('SSS3PT_rg-'))) { + throw "In CI contexts with -CheckPrefix enabled, -GroupPrefix must start with 'rg-' or 'SSS3PT_rg-'" + } + + $groups = Get-AzResourceGroup | Where-Object { $_.ResourceGroupName.StartsWith($GroupPrefix) } | Where-Object { $_.ProvisioningState -ne 'Deleting' } foreach ($group in $groups) { diff --git a/eng/common/scripts/Install-TestProxy.ps1 b/eng/common/scripts/Install-TestProxy.ps1 new file mode 100644 index 000000000000..d3d0658a7575 --- /dev/null +++ b/eng/common/scripts/Install-TestProxy.ps1 @@ -0,0 +1,66 @@ +<# +.SYNOPSIS +Installs Test Proxy. + +.DESCRIPTION +Installs Test Proxy, which is a tool used to record and playback HTTP requests for testing purposes. + +.PARAMETER TemplateRoot +The root directory where the Test Proxy templates are located. Passed from DevOps as a string. + +.PARAMETER BinariesDirectory +The directory where the Test Proxy binaries will be installed. Passed from DevOps as a string. + +.PARAMETER RunProxy +Whether to run the Test Proxy after installation. Passed from DevOps as a boolean. +#> +[CmdletBinding()] +Param( + [Parameter(Mandatory = $True)] + [string] $TemplateRoot, + [Parameter(Mandatory = $True)] + [string] $BinariesDirectory, + [Parameter(Mandatory = $False)] + [bool] $RunProxy = $true +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = 'Stop' + +$standardVersion = "$TemplateRoot/eng/common/testproxy/target_version.txt" +$overrideVersion = "$TemplateRoot/eng/target_proxy_version.txt" + +$version = $(Get-Content $standardVersion -Raw).Trim() + +if (Test-Path $overrideVersion) { + $version = $(Get-Content $overrideVersion -Raw).Trim() +} + +Write-Host "Installing test-proxy version $version" + +$invocation = @" +dotnet tool install azure.sdk.tools.testproxy ` + --tool-path $BinariesDirectory/test-proxy ` + --add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json ` + --version $version +"@ +Write-Host $invocation + +dotnet tool install azure.sdk.tools.testproxy ` + --tool-path $BinariesDirectory/test-proxy ` + --add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json ` + --version $version + +Write-Host "Prepending path with the test proxy tool install location: '$BinariesDirectory/test-proxy'" +Write-Host "##vso[task.prependpath]$BinariesDirectory/test-proxy" + +if ($runProxy) { + Write-Host "Configuring Kestrel and PROXY_MANUAL_START environment variables for Test Proxy" + + Write-Host "Setting ASPNETCORE_Kestrel__Certificates__Default__Path to '$TemplateRoot/eng/common/testproxy/dotnet-devcert.pfx'" + Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Path]$TemplateRoot/eng/common/testproxy/dotnet-devcert.pfx" + Write-Host "Setting ASPNETCORE_Kestrel__Certificates__Default__Password to 'password'" + Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Password]password" + Write-Host "Setting PROXY_MANUAL_START to 'true'" + Write-Host "##vso[task.setvariable variable=PROXY_MANUAL_START]true" +} diff --git a/eng/common/scripts/Invoke-DevOpsAPI.ps1 b/eng/common/scripts/Invoke-DevOpsAPI.ps1 index dc525ce7b106..8e85fa1ef9bf 100644 --- a/eng/common/scripts/Invoke-DevOpsAPI.ps1 +++ b/eng/common/scripts/Invoke-DevOpsAPI.ps1 @@ -51,7 +51,9 @@ function Start-DevOpsBuild { $Base64EncodedToken=$null, $BearerToken=$null, [Parameter(Mandatory = $false)] - [string]$BuildParametersJson + [string]$BuildParametersJson, + [Parameter(Mandatory = $false)] + [string]$TemplateParametersJson ) $uri = "$DevOpsAPIBaseURI" -F $Organization, $Project , "build" , "builds", "" @@ -62,6 +64,10 @@ function Start-DevOpsBuild { parameters = $BuildParametersJson } + if (![string]::IsNullOrWhiteSpace($TemplateParametersJson)) { + $parameters["templateParameters"] = ($TemplateParametersJson | ConvertFrom-Json) + } + $headers = (Get-DevOpsApiHeaders -Base64EncodedToken $Base64EncodedToken -BearerToken $BearerToken) return Invoke-RestMethod ` diff --git a/eng/common/scripts/Invoke-GitHubAPI.ps1 b/eng/common/scripts/Invoke-GitHubAPI.ps1 index 0e5bace3e48c..1322a080e29e 100644 --- a/eng/common/scripts/Invoke-GitHubAPI.ps1 +++ b/eng/common/scripts/Invoke-GitHubAPI.ps1 @@ -114,6 +114,66 @@ function Get-GitHubPullRequest { -MaximumRetryCount 3 } +# Returns the pull requests associated with a commit SHA. +# See https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit +function Get-GitHubPullRequestsForCommit { + param ( + $RepoOwner, + $RepoName, + $RepoId = "$RepoOwner/$RepoName", + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + $CommitSha, + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory = $true)] + $AuthToken + ) + # A commit is associated with ~1 pull request, so a single request is sufficient. + $uri = "$GithubAPIBaseURI/$RepoId/commits/$CommitSha/pulls" + + return Invoke-RestMethod ` + -Method GET ` + -Uri $uri ` + -Headers (Get-GitHubApiHeaders -token $AuthToken) ` + -MaximumRetryCount 3 +} + +# Returns the list of files changed in a pull request, following pagination. +# See https://docs.github.com/rest/pulls/pulls#list-pull-requests-files +function Get-GitHubPullRequestFiles { + param ( + $RepoOwner, + $RepoName, + $RepoId = "$RepoOwner/$RepoName", + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + $PullRequestNumber, + [ValidateNotNullOrEmpty()] + [Parameter(Mandatory = $true)] + $AuthToken + ) + + $headers = Get-GitHubApiHeaders -token $AuthToken + $pageSize = 100 + $page = 1 + $files = @() + + do { + $uri = "$GithubAPIBaseURI/$RepoId/pulls/$PullRequestNumber/files?per_page=$pageSize&page=$page" + $response = Invoke-RestMethod ` + -Method GET ` + -Uri $uri ` + -Headers $headers ` + -MaximumRetryCount 3 + + $response = @($response) + if ($response.Count -gt 0) { $files += $response } + $page++ + } while ($response.Count -eq $pageSize) + + return $files +} + function New-GitHubPullRequest { param ( $RepoOwner, diff --git a/eng/common/scripts/Mark-PackageReleased.ps1 b/eng/common/scripts/Mark-PackageReleased.ps1 new file mode 100644 index 000000000000..ff2287beb84c --- /dev/null +++ b/eng/common/scripts/Mark-PackageReleased.ps1 @@ -0,0 +1,123 @@ +<# +.SYNOPSIS +Marks a published package as released in API Review Hub and APIView. + +.DESCRIPTION +Invokes the centralized Azure SDK CLI release-completion command and surfaces each backend result. + +.PARAMETER PackageInfoFiles +Package-info JSON files containing the published package name, version, and API hash. + +.PARAMETER AzSdkExePath +The path to the azsdk executable. +#> +[CmdletBinding()] +param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [array] $PackageInfoFiles, + + [string] $RepoOwner = "", + + [ValidateNotNullOrEmpty()] + [string] $AzSdkExePath = "azsdk" +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = "Stop" + +. (Join-Path $PSScriptRoot common.ps1) + +function Write-BackendResult([string] $Name, [object] $Result) { + Write-Host $Name + Write-Host " Result: $($Result | ConvertTo-Json -Compress -Depth 20)" +} + +function Set-PackageReleased([string] $PackageName, [string] $PackageVersion, [string] $ApiHash) { + $arguments = @( + "package", + "mark-released", + "--language", $LanguageShort, + "--package-name", $PackageName, + "--package-version", $PackageVersion + ) + + if (-not [string]::IsNullOrWhiteSpace($ApiHash)) { + $arguments += @("--api-hash", $ApiHash) + } + + $arguments += @("--output", "json") + + if (-not [string]::IsNullOrWhiteSpace($RepoOwner)) { + $arguments += @("--repo-owner", $RepoOwner) + } + + $hashDescription = if ([string]::IsNullOrWhiteSpace($ApiHash)) { "not provided" } else { $ApiHash } + Write-Host "Marking package released: language=$LanguageShort, package=$PackageName, version=$PackageVersion, apiHash=$hashDescription" + $formattedArguments = @($arguments | ForEach-Object { Format-CommandArgument $_ }) + Write-Host "Command: azsdk $($formattedArguments -join ' ')" + + $commandResult = Invoke-AzSdkCliCommand $AzSdkExePath $arguments + $exitCode = $commandResult.ExitCode + + try { + $response = $commandResult.Output | ConvertFrom-Json -ErrorAction Stop + } + catch { + $capturedOutput = "stdout:`n$($commandResult.Stdout)`nstderr:`n$($commandResult.Stderr)" + throw "Mark released returned malformed JSON for $PackageName $PackageVersion (azsdk exit code $exitCode). Captured output:`n$capturedOutput" + } + + $hasReviewHubResult = $response.PSObject.Properties["api_review_hub"] -and $null -ne $response.api_review_hub + $hasApiViewResult = $response.PSObject.Properties["api_view"] -and $null -ne $response.api_view + if ($hasReviewHubResult) { + Write-BackendResult "API Review Hub" $response.api_review_hub + } + if ($hasApiViewResult) { + Write-BackendResult "APIView" $response.api_view + } + + if ($exitCode -ne 0) { + [array] $errors = if ($response.PSObject.Properties["response_errors"]) { @($response.response_errors) } else { @() } + $failureMessage = if ($errors.Count -gt 0) { $errors -join "; " } else { "azsdk exited with code $exitCode." } + throw "Mark released failed: $failureMessage" + } +} + +$packageInfoPaths = @($PackageInfoFiles | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }) +if ($packageInfoPaths.Count -eq 0) { + throw "At least one package-info file is required." +} + +Confirm-AzSdkCliMinimumVersion $AzSdkExePath ([version] "0.6.38") + +$failures = @() +foreach ($packageInfoFile in $packageInfoPaths) { + try { + if (-not (Test-Path $packageInfoFile -PathType Leaf)) { + throw "Package-info file does not exist." + } + + $packageInfo = Get-Content $packageInfoFile -Raw | ConvertFrom-Json -ErrorAction Stop + $packageName = if ($packageInfo.PSObject.Properties["Name"]) { [string] $packageInfo.Name } else { "" } + $packageVersion = if ($packageInfo.PSObject.Properties["Version"]) { [string] $packageInfo.Version } else { "" } + $apiHash = if ($packageInfo.PSObject.Properties["ApiHash"]) { [string] $packageInfo.ApiHash } else { "" } + + if ([string]::IsNullOrWhiteSpace($packageName)) { + throw "Package-info file does not contain a package Name." + } + if ([string]::IsNullOrWhiteSpace($packageVersion)) { + throw "Package-info file does not contain a package Version." + } + + Set-PackageReleased $packageName $packageVersion $apiHash + } + catch { + Write-Error "Mark released failed for ${packageInfoFile}: $($_.Exception.Message)" -ErrorAction Continue + $failures += "${packageInfoFile}: $($_.Exception.Message)" + } +} + +if ($failures.Count -gt 0) { + throw "Mark released failed for $($failures.Count) package(s):`n$($failures -join "`n")" +} diff --git a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 index 1ff17d633b2f..7d5a5ed122f1 100644 --- a/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 +++ b/eng/common/scripts/Mark-ReleasePlanCompletion.ps1 @@ -49,7 +49,24 @@ function Process-Package([string]$packageInfoPath) Write-Host "Marking release completion for package, name: $PackageName" $PackageVersion = $pkgInfo.Version - $releaseArgs = @("release-plan", "update-release-status", "--package-name", $PackageName, "--language", $LanguageDisplayName, "--status", "Released") + $version = [AzureEngSemanticVersion]::ParseVersionString($PackageVersion) + if (!$version) + { + Write-Host "Failed to parse version string '$($PackageVersion)' for package '$PackageName'. Skipping the release plan status update." + return + } + + $sdkReleaseType = "" + if ($version.IsPrerelease) + { + $sdkReleaseType = "beta" + } + else + { + $sdkReleaseType = "stable" + } + + $releaseArgs = @("release-plan", "update-release-status", "--package-name", $PackageName, "--language", $LanguageDisplayName, "--status", "Released", "--sdk-release-type", $sdkReleaseType) if ($PackageVersion) { $releaseArgs += @("--package-version", $PackageVersion) diff --git a/eng/common/scripts/Queue-Pipeline.ps1 b/eng/common/scripts/Queue-Pipeline.ps1 index e100300edc8c..93f5e00b87f0 100644 --- a/eng/common/scripts/Queue-Pipeline.ps1 +++ b/eng/common/scripts/Queue-Pipeline.ps1 @@ -38,6 +38,21 @@ Of the format: } ``` +.PARAMETER TemplateParametersJson +YAML runtime template parameters to provide to the pipeline execution. Unlike +BuildParametersJson (which sets pipeline variables that must be marked settable +at queue time), these override values declared in the pipeline's `parameters:` +block. + +Of the format: + +```json +{ + "parameter1": "value1", + "parameter2": "value2" +} +``` + #> [CmdletBinding(SupportsShouldProcess = $true)] @@ -64,7 +79,10 @@ param( [string]$BearerToken=$null, [Parameter(Mandatory = $false)] - [string]$BuildParametersJson + [string]$BuildParametersJson, + + [Parameter(Mandatory = $false)] + [string]$TemplateParametersJson ) . (Join-Path $PSScriptRoot common.ps1) @@ -105,7 +123,8 @@ try { -DefinitionId $DefinitionId ` -Base64EncodedToken $Base64EncodedToken ` -BearerToken $BearerToken ` - -BuildParametersJson $BuildParametersJson + -BuildParametersJson $BuildParametersJson ` + -TemplateParametersJson $TemplateParametersJson } catch { LogError "Start-DevOpsBuild failed with exception:`n$_" diff --git a/eng/common/scripts/Resolve-AutoReleasePackages.ps1 b/eng/common/scripts/Resolve-AutoReleasePackages.ps1 new file mode 100644 index 000000000000..06cd79a43519 --- /dev/null +++ b/eng/common/scripts/Resolve-AutoReleasePackages.ps1 @@ -0,0 +1,274 @@ +<# +.SYNOPSIS +Determines which of a pipeline's packages should be auto-released after a labeled PR merge to main. + +.DESCRIPTION +Language-agnostic. Intended to run in an internal post-merge CI run on 'main'. Given the build's merge +commit, this script: + 1. Uses the shared Get-GitHubAutoReleasePullRequestForCommit policy to resolve the pull request for + the commit: it selects the newest PR merged into the base branch (default 'main') and requires the + 'auto-release' label. + 2. Builds a PR diff object (New-GitHubPullRequestDiffObject) from the PR's changed files and reuses + the repo's existing package-detection logic (Get-PrPkgProperties) to identify the changed packages + (honoring triggering paths and deleted files while ignoring only files directly under + sdk//, not files in package subdirectories), excluding validation-only packages. + Get-PrPkgProperties delegates to each repo's own + Get-AllPackageInfoFromRepo (language-settings.ps1), so this script works for any language repo. + 3. Intersects those packages with this pipeline's declared artifacts and emits Azure DevOps output + variables consumed by the release stages. Both consumption styles are emitted: + - per-artifact ReleaseArtifact_ booleans, for pipelines that loop over their + compile-time Artifacts list and gate each entry (e.g. .NET); + - AutoReleaseArtifactsJson, the matched declared-artifact objects serialized as a JSON array, + for pipelines that iterate the releasable set at runtime (e.g. Java). + +The script FAILS CLOSED: on any error, or if no qualifying labeled PR / changed package is found, it +emits HasAutoReleaseArtifacts=false, AutoReleaseArtifactsJson=[] and ReleaseArtifact_=false +for every artifact, and exits 0 so the CI run is not failed. + +.PARAMETER CommitSha +The build source version (merge commit) to resolve the pull request from. Typically $(Build.SourceVersion). + +.PARAMETER RepoId +The GitHub repository id in '/' form. Typically $(Build.Repository.Name). + +.PARAMETER Artifacts +JSON array of the pipeline's declared artifacts. Each entry must have 'name' and 'safeName'; entries may +also carry a 'groupId' (used to disambiguate name collisions across groups) and any other fields the +consuming stage needs (they are passed through unchanged in AutoReleaseArtifactsJson). +Defaults to the AUTORELEASE_ARTIFACTS environment variable, which the pipeline sets to +'${{ convertToJson(parameters.Artifacts) }}' (passed via env because it is multi-line JSON). + +.PARAMETER AuthToken +GitHub token used for API calls. Defaults to the GH_TOKEN environment variable produced by +login-to-github.yml (passed via env so the secret is not written to the task command line). + +.PARAMETER AutoReleaseLabel +The GitHub PR label that opts a merged PR into auto-release. Defaults to 'auto-release'. + +.PARAMETER BaseBranch +The base branch a PR must have been merged into to qualify. Defaults to 'main'. + +.PARAMETER PipelineUrl +The URL of the pipeline run, used for logging or linking back to the pipeline. Defaults to empty. + +.PARAMETER AzsdkExePath +The path to the azsdk executable used for release operations. Defaults to the AZSDK environment variable. + +.OUTPUTS +Azure DevOps output variables (reference cross-stage via dependencies..outputs['..']): + - HasAutoReleaseArtifacts : 'true' if at least one declared package is releasable + - AutoReleaseArtifactsJson : JSON array of the matched declared-artifact objects (or '[]') + - ReleaseArtifact_ : 'true'/'false' per declared artifact +HasAutoReleaseArtifacts is the single eligibility gate: it is 'true' only when a merged, auto-release-labeled +PR changed at least one declared package, and it is emitted last so any earlier failure fails closed. +#> +#Requires -Version 7.0 +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)][string] $CommitSha, + [Parameter(Mandatory = $true)][string] $RepoId, + [string] $Artifacts = $env:AUTORELEASE_ARTIFACTS, + [string] $AuthToken = $env:GH_TOKEN, + [string] $AutoReleaseLabel = 'auto-release', + [string] $BaseBranch = 'main', + [string] $PipelineUrl = '', + [string] $AzsdkExePath = $env:AZSDK +) + +$ErrorActionPreference = 'Stop' + +# Import shared logic unless a caller (e.g. a test harness) has already provided it. common.ps1 provides +# Get-PrPkgProperties, the GitHub helpers, Set-PipelineVariable, $RepoRoot and language settings; +# AutoRelease-Operations.ps1 provides the shared auto-release PR selection and diff helpers. StrictMode +# is intentionally not enabled here because the shared package-detection code is not written to run under it. +if (-not (Get-Command 'Get-PrPkgProperties' -ErrorAction SilentlyContinue)) { + . (Join-Path $PSScriptRoot "common.ps1") +} +if (-not (Get-Command 'Get-GitHubAutoReleasePullRequestForCommit' -ErrorAction SilentlyContinue)) { + . (Join-Path $PSScriptRoot "AutoRelease-Operations.ps1") +} + +# Parse the declared artifacts. +$declaredArtifacts = @() +try { + $parsed = $Artifacts | ConvertFrom-Json + if ($null -ne $parsed) { $declaredArtifacts = @($parsed) } +} +catch { + LogWarning "Failed to parse -Artifacts JSON; treating as empty. $($_.Exception.Message)" +} + +# Fail-closed defaults: nothing releases unless we positively determine otherwise below. +Set-PipelineVariable -Name 'HasAutoReleaseArtifacts' -Value 'false' -IsOutput +Set-PipelineVariable -Name 'AutoReleaseArtifactsJson' -Value '[]' -IsOutput +foreach ($artifact in $declaredArtifacts) { + if ($artifact.PSObject.Properties['safeName'] -and $artifact.safeName) { + Set-PipelineVariable -Name "ReleaseArtifact_$($artifact.safeName)" -Value 'false' -IsOutput + } +} + +function Invoke-AutoReleaseResolution { + Write-Host "Resolving the auto-release pull request for commit '$CommitSha' in '$RepoId'..." + $release = Get-GitHubAutoReleasePullRequestForCommit ` + -RepoId $RepoId ` + -CommitSha $CommitSha ` + -TargetBranch $BaseBranch ` + -RequiredLabel $AutoReleaseLabel ` + -AuthToken $AuthToken + + if (-not $release.IsEligible) { + Write-Host "Skipping auto-release: $($release.SkipReason)" + return + } + + $pr = $release.PullRequest + # Prefer the PR's canonical html_url; fall back to constructing it so the log link stays clickable even + # if the field is absent from the payload. + $prLink = if ($pr.PSObject.Properties['html_url'] -and $pr.html_url) { "$($pr.html_url)" } else { "https://github.com/$RepoId/pull/$($pr.number)" } + Write-Host "PR $prLink is eligible for auto-release (merged into '$BaseBranch' with the '$AutoReleaseLabel' label)." + + if ($declaredArtifacts.Count -eq 0) { + LogWarning "PR $prLink has the '$AutoReleaseLabel' label but this pipeline declares no artifacts; nothing will be auto-released." + return + } + + # Turn the PR's changed files into a diff object (Generate-PR-Diff.ps1 shape) and reuse the repo's + # package-detection logic to identify the changed packages. + Write-Host "Fetching changed files for PR $prLink..." + $files = @(Get-GitHubPullRequestFiles -RepoId $RepoId -PullRequestNumber $pr.number -AuthToken $AuthToken) + $diff = New-GitHubPullRequestDiffObject ` + -PullRequestNumber $pr.number ` + -PullRequestFiles $files ` + -ExcludeServiceRootFiles + Write-Host "PR $prLink changed $($diff.ChangedFiles.Count) file(s) and deleted $($diff.DeletedFiles.Count) file(s)." + + $diffPath = Join-Path ([System.IO.Path]::GetTempPath()) ("autorelease-diff-" + [System.Guid]::NewGuid().ToString('N') + ".json") + $diff | ConvertTo-Json -Depth 10 | Set-Content -Path $diffPath -Encoding utf8 + + try { + $changedPackages = @(Get-PrPkgProperties -InputDiffJson $diffPath) + } + finally { + Remove-Item -Path $diffPath -ErrorAction SilentlyContinue + } + + # Build the releasable key set. Add each changed package's name and, when the group is known, a + # 'group/name' composite so that pipelines whose declared artifacts carry a groupId (e.g. Java) match + # the correct group and are not confused by name collisions across groups. Packages pulled in solely + # for validation are not releasable. + $releasableKeys = New-Object 'System.Collections.Generic.HashSet[string]' ([System.StringComparer]::OrdinalIgnoreCase) + foreach ($package in $changedPackages) { + if ($package.IncludedForValidation) { continue } + + $names = @() + if ($package.Name) { $names += [string]$package.Name } + if ($package.PSObject.Properties['ArtifactName'] -and $package.ArtifactName) { $names += [string]$package.ArtifactName } + + $group = $null + if ($package.PSObject.Properties['Group'] -and $package.Group) { $group = [string]$package.Group } + + foreach ($name in ($names | Sort-Object -Unique)) { + [void]$releasableKeys.Add($name) + if ($group) { [void]$releasableKeys.Add("$group/$name") } + } + } + + $matchedArtifacts = @() + foreach ($artifact in $declaredArtifacts) { + try { + $name = $artifact.name + $safeName = $artifact.safeName + if (-not $name -or -not $safeName) { + Write-Host " Skipping artifact with missing name/safeName." + continue + } + + $groupId = $null + if ($artifact.PSObject.Properties['groupId'] -and $artifact.groupId) { $groupId = [string]$artifact.groupId } + + # Prefer a group-qualified match when the artifact declares a group; otherwise match by name. + if ($groupId) { + $isMatch = $releasableKeys.Contains("$groupId/$name") + } + else { + $isMatch = $releasableKeys.Contains([string]$name) + } + + if ($isMatch) { + Write-Host " [$name] changed by PR $prLink -> releasable." + Set-PipelineVariable -Name "ReleaseArtifact_$safeName" -Value 'true' -IsOutput + $matchedArtifacts += $artifact + + # Update release pending status and release pipeline URL in the release plan for this package. + # release status is updated as "Released" when the package has been successfully released; here we are marking it as "Approval Pending" to indicate that the release is awaiting approval. + try + { + if($AzsdkExePath) + { + $sdkPullRequestUrl = $pr.html_url + $cliArgs = @("release-plan", "update-release-status", "--package-name", $name, "--language", $LanguageDisplayName, "--status", "Approval Pending", "--sdk-pull-request", $sdkPullRequestUrl) + if ($PipelineUrl) + { + $cliArgs += @("--release-pipeline", $PipelineUrl) + } + else + { + LogWarning "Pipeline URL is not set; Not setting release pipeline link for package '$name' in release plan." + } + + & $AzsdkExePath @cliArgs + if ($LASTEXITCODE -ne 0) + { + ## Not all releases have a release plan. So we should not fail the script even if a release plan is missing. + Write-Host "Failed to update release pending status for package '$name' using azsdk. Exit code: $LASTEXITCODE" + } + } + else + { + Write-Host "AzsdkExePath is not set; skipping release plan update for package '$name'." + } + } + catch + { + Write-Host "Failed to update release pending status in release plan for package '$name'. $($_.Exception.Message)" + } + } + else { + Write-Host " [$name] not changed by PR $prLink." + } + } + catch { + LogWarning "Failed to evaluate an artifact; treating as not releasable. $($_.Exception.Message)" + } + } + + if ($matchedArtifacts.Count -gt 0) { + # Pipe (not -InputObject) with -AsArray so a single match still serializes as a JSON array, '[{...}]'. + $artifactsJson = $matchedArtifacts | ConvertTo-Json -Depth 100 -Compress -AsArray + Set-PipelineVariable -Name 'AutoReleaseArtifactsJson' -Value $artifactsJson -IsOutput + Write-Host "Auto-release packages from PR ${prLink}: $((@($matchedArtifacts | ForEach-Object { $_.name })) -join ', ')" + Set-PipelineVariable -Name 'HasAutoReleaseArtifacts' -Value 'true' -IsOutput + } + else { + LogWarning "PR $prLink has the '$AutoReleaseLabel' label but changed no releasable package in this pipeline; nothing will be auto-released." + } +} + +try { + Invoke-AutoReleaseResolution +} +catch { + # Re-emit the fail-closed defaults so a failure after any positive signal was set (e.g. after a + # ReleaseArtifact_ flag was flipped to 'true') cannot leak a partial "release" decision to + # downstream stages, regardless of how each consumer gates on the outputs. + LogWarning "Auto-release resolution failed; skipping auto-release. $($_.Exception.Message)" + Set-PipelineVariable -Name 'HasAutoReleaseArtifacts' -Value 'false' -IsOutput + Set-PipelineVariable -Name 'AutoReleaseArtifactsJson' -Value '[]' -IsOutput + foreach ($artifact in $declaredArtifacts) { + if ($artifact.PSObject.Properties['safeName'] -and $artifact.safeName) { + Set-PipelineVariable -Name "ReleaseArtifact_$($artifact.safeName)" -Value 'false' -IsOutput + } + } +} + +exit 0 diff --git a/eng/common/scripts/Set-VcpkgWriteModeCache.ps1 b/eng/common/scripts/Set-VcpkgWriteModeCache.ps1 index 37bca90019b1..27bdef477d37 100755 --- a/eng/common/scripts/Set-VcpkgWriteModeCache.ps1 +++ b/eng/common/scripts/Set-VcpkgWriteModeCache.ps1 @@ -20,4 +20,3 @@ Write-Host "##vso[task.setvariable variable=VCPKG_BINARY_SAS_TOKEN;issecret=true Write-Host "Setting vcpkg binary cache to read and write" Write-Host "##vso[task.setvariable variable=VCPKG_BINARY_SOURCES_SECRET;issecret=true;]clear;x-azcopy-sas,https://$StorageAccountName.blob.core.windows.net/$StorageContainerName,$vcpkgBinarySourceSas,readwrite" -Write-Host "##vso[task.setvariable variable=X_VCPKG_ASSET_SOURCES_SECRET;issecret=true;]clear;x-azurl,https://$StorageAccountName.blob.core.windows.net/$StorageContainerName,$vcpkgBinarySourceSas,readwrite" diff --git a/eng/common/scripts/Set-VerifyCodeownersSkip.ps1 b/eng/common/scripts/Set-VerifyCodeownersSkip.ps1 new file mode 100644 index 000000000000..6cb0491e4e19 --- /dev/null +++ b/eng/common/scripts/Set-VerifyCodeownersSkip.ps1 @@ -0,0 +1,205 @@ +<# +.SYNOPSIS +Evaluates whether codeowners verification should be skipped and sets a pipeline +variable with the result. + +.DESCRIPTION +Verification is skipped only for an allow listed person. Who that is gets +established differently depending on how the build started: + - Pull request builds: the GitHub login of the pull request author, resolved + from the GitHub API. 'Build.RequestedForEmail' is empty here, because the + build is queued by the 'GitHub' app service principal rather than by a user. + - Manually queued builds: 'Build.RequestedForEmail', and only when the + 'Skip.VerifyCodeowners' queue time variable is also 'true'. That variable + cannot be supplied on a pull request build, so it is ignored there. + +Matching on the pull request author, rather than on whoever pushed most +recently, keeps the decision a property of the pull request. Agent opened pull +requests report the agent (for example 'Copilot') as the author, so they are +never exempt. + +If the author cannot be resolved, verification runs. A GitHub outage or an +exhausted rate limit never blocks a build, and never silently grants a skip. + +.PARAMETER RequestedForEmail +The email of the person who requested the build (e.g. Build.RequestedForEmail). +Only populated for manually queued builds. + +.PARAMETER SkipVerifyCodeowners +The 'Skip.VerifyCodeowners' pipeline variable. Ignored on pull request builds, +where queue time variables cannot be supplied. + +.PARAMETER BuildReason +The 'Build.Reason' pipeline variable. + +.PARAMETER Repo +The GitHub repository in '/' form (e.g. Build.Repository.Name). +Used to resolve the pull request author. + +.PARAMETER PullRequestNumber +The pull request number (e.g. System.PullRequest.PullRequestNumber). Used to +resolve the pull request author. + +.PARAMETER AdditionalSkipEmails +Emails allowed to skip verification, in addition to the default set. Accepts a +comma-, semicolon-, or whitespace-separated list. + +.PARAMETER AdditionalSkipAliases +GitHub aliases (logins) allowed to skip verification, in addition to the default +set. Accepts a comma-, semicolon-, or whitespace-separated list. + +.PARAMETER OutputVariableName +The name of the pipeline variable to set with the boolean result. +#> +[CmdletBinding()] +param ( + [string] $RequestedForEmail = '', + [string] $SkipVerifyCodeowners = $env:SKIP_VERIFYCODEOWNERS, + [string] $BuildReason = $env:BUILD_REASON, + [string] $Repo = $env:BUILD_REPOSITORY_NAME, + [string] $PullRequestNumber = $env:SYSTEM_PULLREQUEST_PULLREQUESTNUMBER, + [string] $AdditionalSkipEmails = '', + [string] $AdditionalSkipAliases = '', + [string] $OutputVariableName = 'ShouldSkipVerifyCodeowners' +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = 'Stop' + +# Microsoft emails allowed to skip verification. Only usable on manually queued +# builds, where Build.RequestedForEmail is populated. +$defaultSkipEmails = @( + 'bebroder@microsoft.com', + 'mharder@microsoft.com', + 'djurek@microsoft.com', + 'chononiw@microsoft.com', + 'raychen@microsoft.com' +) + +# GitHub aliases (logins) allowed to skip verification. Used on pull request +# builds, where the GitHub login of the user who triggered the build is the only +# identity available. These are the same people as $defaultSkipEmails above; keep +# the two lists in sync. +$defaultSkipAliases = @( + 'benbp', + 'mikeharder', + 'danieljurek', + 'chidozieononiwu', + 'raych1' +) + +function Get-NormalizedSet { + param ( + [string[]] $Default, + [string] $Additional + ) + + $extra = @($Additional -split '[,;\s]+' | Where-Object { $_ }) + + return @($Default + $extra) | + ForEach-Object { $_.Trim().ToLowerInvariant() } | + Where-Object { $_ } | + Select-Object -Unique +} + +# Returns the GitHub login of the pull request author, or an empty string if it +# cannot be determined. +function Get-PullRequestAuthor { + param ( + [string] $Repo, + [string] $PullRequestNumber + ) + + $uri = "https://api.github.com/repos/$Repo/pulls/$PullRequestNumber" + + # The request is unauthenticated and subject to GitHub's anonymous per IP + # rate limit. Retries are kept low, because every attempt spends budget. + try { + $pullRequest = Invoke-RestMethod -Uri $uri -MaximumRetryCount 3 -RetryIntervalSec 2 + $author = "$($pullRequest.user.login)" + + if ($pullRequest.user.type -eq 'Bot') { + Write-Host "Pull request $PullRequestNumber was opened by the '$author' app rather than by a person, so it is attributed to the app and not to whoever dispatched it. Verification will run." + } + + return $author + } catch { + Write-Host "Failed to resolve the author of '$uri': $_" + return '' + } +} + +function Set-Result { + param ( + [bool] $ShouldSkip + ) + + $value = $ShouldSkip.ToString().ToLowerInvariant() + Write-Host "Setting $OutputVariableName to $value" + Write-Host "##vso[task.setvariable variable=$OutputVariableName]$value" +} + +$isPullRequest = $BuildReason -eq 'PullRequest' + +Write-Host "Build.Reason: $BuildReason" + +# Skip.VerifyCodeowners is a queue-time variable, which cannot be supplied on a +# pull request build, so it only applies outside of pull requests. There, +# skipping must be explicitly requested. +if (!$isPullRequest) { + Write-Host "Skip.VerifyCodeowners: $SkipVerifyCodeowners" + + if ($SkipVerifyCodeowners -ne 'true') { + Write-Host "This is not a pull request build and Skip.VerifyCodeowners is not set to 'true' (value: '$SkipVerifyCodeowners'). Verification will run." + Set-Result -ShouldSkip $false + return + } +} + +$allowedSkipAliases = Get-NormalizedSet -Default $defaultSkipAliases -Additional $AdditionalSkipAliases + +if ($isPullRequest) { + # Build.RequestedForEmail is empty on GitHub pull request builds, so match on + # the PR author's GitHub login instead. + $pullRequestAuthor = Get-PullRequestAuthor -Repo $Repo -PullRequestNumber $PullRequestNumber + + $normalizedAlias = $pullRequestAuthor.Trim().ToLowerInvariant() + + if (!$normalizedAlias) { + Write-Host "Could not determine the pull request author. Codeowners verification will run." + Set-Result -ShouldSkip $false + return + } + + Write-Host "Pull request author: $normalizedAlias" + + if ($allowedSkipAliases -notcontains $normalizedAlias) { + Write-Host "The GitHub alias '$normalizedAlias' is not in the allowed skip list." + Set-Result -ShouldSkip $false + return + } + + Write-Host "The GitHub alias '$normalizedAlias' is allowed to skip verification." + Set-Result -ShouldSkip $true + return +} + +$allowedSkipEmails = Get-NormalizedSet -Default $defaultSkipEmails -Additional $AdditionalSkipEmails +$normalizedEmail = $RequestedForEmail.Trim().ToLowerInvariant() + +if (!$normalizedEmail) { + Write-Host "Could not determine the email of the person who requested the build. Verification will run." + Set-Result -ShouldSkip $false + return +} + +if ($allowedSkipEmails -notcontains $normalizedEmail) { + Write-Host "The email '$normalizedEmail' is not in the allowed skip list." + Set-Result -ShouldSkip $false + return +} + +Write-Host "The email '$normalizedEmail' is allowed to skip verification." +Set-Result -ShouldSkip $true + +return diff --git a/eng/common/scripts/Start-TestProxy.ps1 b/eng/common/scripts/Start-TestProxy.ps1 new file mode 100644 index 000000000000..1b4447eab436 --- /dev/null +++ b/eng/common/scripts/Start-TestProxy.ps1 @@ -0,0 +1,44 @@ +<# +.SYNOPSIS +Starts Test Proxy. + +.DESCRIPTION +Starts Test Proxy, which is a tool used to record and playback HTTP requests for testing purposes. + +.PARAMETER RootFolder +The root folder where the Test Proxy will store its recordings. Passed from DevOps as a string. + +.PARAMETER ProxyUrl +The URL of the Test Proxy to start. Passed from DevOps as a string. + +.PARAMETER BinariesDirectory +The directory where the Test Proxy binaries were installed. Passed from DevOps as a string. +#> +[CmdletBinding()] +Param( + [Parameter(Mandatory = $True)] + [string] $RootFolder, + [Parameter(Mandatory = $True)] + [string] $ProxyUrl, + [Parameter(Mandatory = $True)] + [string] $BinariesDirectory +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = 'Stop' + +$invocation = @" +Start-Process $BinariesDirectory/test-proxy/test-proxy.exe + -ArgumentList `"start -u --storage-location $RootFolder -- --urls $ProxyUrl`" + -NoNewWindow -PassThru -RedirectStandardOutput $RootFolder/test-proxy.log + -RedirectStandardError $RootFolder/test-proxy-error.log +"@ +Write-Host $invocation + +$Process = Start-Process $BinariesDirectory/test-proxy/test-proxy.exe ` + -ArgumentList "start -u --storage-location $RootFolder -- --urls $ProxyUrl" ` + -NoNewWindow -PassThru -RedirectStandardOutput $RootFolder/test-proxy.log ` + -RedirectStandardError $RootFolder/test-proxy-error.log + +Write-Host "Setting PROXY_PID to $($Process.Id)" +Write-Host "##vso[task.setvariable variable=PROXY_PID]$($Process.Id)" diff --git a/eng/common/scripts/Test-CodeownersForArtifacts.ps1 b/eng/common/scripts/Test-CodeownersForArtifacts.ps1 index e721fdd911ab..b87444911257 100644 --- a/eng/common/scripts/Test-CodeownersForArtifacts.ps1 +++ b/eng/common/scripts/Test-CodeownersForArtifacts.ps1 @@ -141,6 +141,47 @@ function shouldSkipCodeownersInPrContext([PSCustomObject] $PackageProperties, [P return $true } +function getCheckPackageOutputText([array] $OutputLines) { + if (!$OutputLines) { + return "" + } + + return ((@($OutputLines) | ForEach-Object { "$_" }) -join [Environment]::NewLine).Trim() +} + +function getCheckPackageResponse([string] $OutputText) { + if (!$OutputText) { + return $null + } + + try { + return $OutputText | ConvertFrom-Json -ErrorAction Stop + } + catch { + return $null + } +} + +function getCheckPackageIssues([object] $CheckPackageResponse) { + if (!$CheckPackageResponse -or !$CheckPackageResponse.PSObject.Properties['issues']) { + return ,@() + } + + $issues = @() + foreach ($issue in @($CheckPackageResponse.issues)) { + if (!$issue) { + continue + } + + $issues += [PSCustomObject]@{ + Message = $issue.message + Prompt = $issue.next_step + } + } + + return ,@($issues) +} + $failedPackages = @() $prDiff = $null $isPrCheck = $false @@ -158,6 +199,8 @@ if ($PrDiffFile) { Write-Host "SDK types to validate: $($SdkTypes -join ', ')" +LogGroupStart "Validating CODEOWNERS for Artifacts" + foreach ($pkgPropertiesFile in Get-ChildItem -Path $PackageInfoDirectory -Filter '*.json' -File) { $pkgProperties = Get-Content -Raw -Path $pkgPropertiesFile | ConvertFrom-Json $artifactDetails = $pkgProperties.ArtifactDetails @@ -173,9 +216,19 @@ foreach ($pkgPropertiesFile in Get-ChildItem -Path $PackageInfoDirectory -Filter Write-Host "Validating codeowners for package: $($pkgProperties.Name) $($pkgProperties.DirectoryPath)" - if (!$isPrCheck -and !$pkgProperties.ReleaseStatus) { - LogError "Package $($pkgProperties.Name) at $($pkgProperties.DirectoryPath) is missing a ReleaseStatus property." - $failedPackages += $pkgProperties.DirectoryPath + $hasReleaseStatus = $pkgProperties.PSObject.Properties['ReleaseStatus'] -and + ![string]::IsNullOrWhiteSpace([string]$pkgProperties.ReleaseStatus) + + if (!$isPrCheck -and !$hasReleaseStatus) { + $responseError = "Package $($pkgProperties.Name) at $($pkgProperties.DirectoryPath) is missing a ReleaseStatus property." + LogError $responseError + $failedPackages += [PSCustomObject]@{ + Name = $pkgProperties.Name + DirectoryPath = $pkgProperties.DirectoryPath + ResponseError = $responseError + Issues = @() + HasParsedResponse = $false + } continue } @@ -188,11 +241,26 @@ foreach ($pkgPropertiesFile in Get-ChildItem -Path $PackageInfoDirectory -Filter --directory-path $pkgProperties.DirectoryPath ` --repo $Repo ` --output json 2>&1 + $checkPackageExitCode = $LASTEXITCODE + $outputText = getCheckPackageOutputText -OutputLines $output - if ($LASTEXITCODE) { - LogError "Codeowners validation failed for package: $($pkgProperties.DirectoryPath)" - $output | Write-Host - $failedPackages += $pkgProperties.DirectoryPath + Write-Host " check-package output:" + if ($outputText) { + Write-Host $outputText + } else { + Write-Host " (no output)" + } + + if ($checkPackageExitCode) { + Write-Host "Codeowners validation failed for package: $($pkgProperties.DirectoryPath)" + $checkPackageResponse = getCheckPackageResponse -OutputText $outputText + $failedPackages += [PSCustomObject]@{ + Name = $pkgProperties.Name + DirectoryPath = $pkgProperties.DirectoryPath + ResponseError = if ($checkPackageResponse) { $checkPackageResponse.response_error } else { $null } + Issues = getCheckPackageIssues -CheckPackageResponse $checkPackageResponse + HasParsedResponse = $null -ne $checkPackageResponse + } } else { Write-Host " Codeowners validation succeeded for package: $($pkgProperties.DirectoryPath)" } @@ -201,13 +269,31 @@ foreach ($pkgPropertiesFile in Get-ChildItem -Path $PackageInfoDirectory -Filter } } +LogGroupEnd + if ($failedPackages.Count -gt 0) { Write-Host "" + Write-Host "Codeowners validation failed for one or more packages. See https://aka.ms/azsdk/codeowners for instructions to fix the issue." Write-Host "Failed Packages:" - foreach ($directoryPath in $failedPackages) { - LogError " - $directoryPath does not have sufficient code owners coverage" + foreach ($failedPackage in $failedPackages) { + Write-Host " - $($failedPackage.DirectoryPath) does not have sufficient code owners coverage" + if ($failedPackage.HasParsedResponse -and @($failedPackage.Issues).Count -gt 0) { + Write-Host " Issue details:" + foreach ($issue in $failedPackage.Issues) { + if ($issue.Message) { + Write-Host " Error: $($issue.Message)" + } + + if ($issue.Prompt) { + Write-Host " Use this prompt template to fix: $($issue.Prompt)" + } + } + } elseif ($failedPackage.ResponseError) { + Write-Host " $($failedPackage.ResponseError)" + } elseif (!$failedPackage.HasParsedResponse) { + Write-Host " Unable to parse check-package output; see grouped output above." + } } - LogError "Codeowners validation failed for one or more packages. See http://aka.ms/azsdk/codeowners for instructions to fix the issue." exit 1 } exit 0 diff --git a/eng/common/scripts/Test-TestProxyIsAlive.ps1 b/eng/common/scripts/Test-TestProxyIsAlive.ps1 new file mode 100644 index 000000000000..1ec206551771 --- /dev/null +++ b/eng/common/scripts/Test-TestProxyIsAlive.ps1 @@ -0,0 +1,34 @@ +<# +.SYNOPSIS +Tests if the Test Proxy is alive and responding to requests. + +.DESCRIPTION +Tests if the Test Proxy is alive and responding to requests by sending a request to the /Admin/IsAlive endpoint. +If the Test Proxy is not responding, the script will retry up to 10 times with a 6 second delay between attempts. + +.PARAMETER ProxyUrl +The URL of the Test Proxy to test. Passed from DevOps as a string. +#> +[CmdletBinding()] +Param( + [Parameter(Mandatory = $True)] + [string] $ProxyUrl +) + +Set-StrictMode -Version 4 +$ErrorActionPreference = 'Stop' + +for ($i = 0; $i -lt 10; $i++) { + try { + Write-Host "Invoke-WebRequest -Uri `"$ProxyUrl/Admin/IsAlive`" | Out-Null" + Invoke-WebRequest -Uri "$ProxyUrl/Admin/IsAlive" | Out-Null + Write-Host "Successfully connected to the test proxy at '$ProxyUrl'." + exit 0 + } + catch { + Write-Warning "Failed to successfully connect to test proxy. Retrying..." + Start-Sleep 6 + } +} +Write-Error "Could not connect to test proxy." +exit 1 diff --git a/eng/common/scripts/Verify-Links.ps1 b/eng/common/scripts/Verify-Links.ps1 index da8eca8c8995..e0e4640dceb9 100644 --- a/eng/common/scripts/Verify-Links.ps1 +++ b/eng/common/scripts/Verify-Links.ps1 @@ -22,7 +22,7 @@ Path to the root of the site for resolving rooted relative links, defaults to host root for http and file directory for local files. .PARAMETER errorStatusCodes - List of http status codes that count as broken links. Defaults to 400, 404, SocketError.HostNotFound = 11001, SocketError.NoData = 11004. + List of http status codes that count as broken links. Defaults to 400, 404, SocketError.HostNotFound = 11001, SocketError.NoData = 11004, and -131073 (socket error on Linux). .PARAMETER branchReplaceRegex Regex to check if the link needs to be replaced. E.g. ^(https://github.com/.*/(?:blob|tree)/)main(/.*)$ @@ -75,7 +75,7 @@ param ( [switch] $recursive = $true, [string] $baseUrl = "", [string] $rootUrl = "", - [array] $errorStatusCodes = @(400, 404, 11001, 11004), + [array] $errorStatusCodes = @(400, 404, 11001, 11004, -131073), [string] $branchReplaceRegex = "", [string] $branchReplacementName = "", [bool] $checkLinkGuidance = $false, diff --git a/eng/common/scripts/allow-relative-links.txt b/eng/common/scripts/allow-relative-links.txt index b415d39b925d..084448ef1e55 100644 --- a/eng/common/scripts/allow-relative-links.txt +++ b/eng/common/scripts/allow-relative-links.txt @@ -9,3 +9,5 @@ AGENTS.md # Allow relative links for all files under the eng folder (e.g. engineering system scripts and templates). eng/** +# Allow relative links for the top-level eval suite (evals is a cross-cutting asset at repo root). +evals/** diff --git a/eng/common/scripts/eval/.gitignore b/eng/common/scripts/eval/.gitignore new file mode 100644 index 000000000000..a45aeeaa2241 --- /dev/null +++ b/eng/common/scripts/eval/.gitignore @@ -0,0 +1,7 @@ +# The Vally eval harness ships hand-written ES modules under lib/ (glob.ts, verdict.ts). +# Most repos ignore a top-level `lib/` (Python build output); re-include ours here so the +# harness stays tracked wherever eng/common is synced (else node fails ERR_MODULE_NOT_FOUND). +# Living in eng/common means this fix travels with the sync to every language SDK repo, so no +# per-repo root .gitignore edit is needed. +!lib/ +!lib/** diff --git a/eng/common/scripts/eval/README.md b/eng/common/scripts/eval/README.md new file mode 100644 index 000000000000..b934c0f9357a --- /dev/null +++ b/eng/common/scripts/eval/README.md @@ -0,0 +1,50 @@ +# eval-scripts (CI glue + pinned Vally CLI) + +This folder holds the TypeScript glue the Vally eval CI runs (matrix sharding, the shard +runner, the JUnit summary) **and** pins the [`@microsoft/vally-cli`](https://www.npmjs.com/package/@microsoft/vally-cli) +version those shards install. The CLI and its full transitive dependency tree are locked by +the committed `package-lock.json` instead of resolved fresh from semver ranges on every run. +It lives under `eng/common` so it syncs to every repo that consumes the shared eval pipeline +templates. + +- The only dependency should be `@microsoft/vally-cli`, pinned to the version CI should evaluate with. +- `package-lock.json` must be committed so `npm ci` is deterministic. + +## TypeScript (no build step) + +The `*.ts` sources run directly through Node's native type stripping (erasable syntax only — +no `enum`/`namespace`/parameter properties, no emit). CI pins Node `22.x`, which strips types +unflagged on `>=22.18`; the pipeline `node` invocations and the `npm test` script pass +`--experimental-strip-types` so the same sources also run on older local Node (`>=22.6`), which +prints a harmless `ExperimentalWarning`. Relative imports use explicit `.ts` specifiers, as Node requires. + +## Vendored files + +- `lib/exec.ts` was **copied from azure-rest-api-specs** (`.github/shared/src/exec.js` + @ `ef7dd74c13aa9ca12b67b33b9dc4b5d1419a46f0`) and ported to TypeScript. It lives here under + `eng/common` (rather than the specs repo's `.github/shared` path) so it travels with the + eng/common sync into the language repos. Re-vendor from upstream rather than editing locally; + see [azure-sdk-tools#16296](https://github.com/Azure/azure-sdk-tools/issues/16296) for the plan + to share these primitives instead of copying. + +## Updating the Vally CLI version + +1. Bump `@microsoft/vally-cli` in `package.json`. +2. Run `npm install --package-lock-only --registry https://registry.npmjs.org/` to refresh `package-lock.json`. +3. Commit both files in the same PR. The eval pipelines' path triggers include + `eng/common/scripts/eval/**`, so CI re-runs against the new version automatically. + +## Local use + +Reproduce what CI does by installing from the same lockfile and invoking the local binary: + +```sh +cd eng/common/scripts/eval +npm ci +cd ../../../.. +./eng/common/scripts/eval/node_modules/.bin/vally lint . +``` + +This matches the CI job step-for-step, so a green local run on the current lockfile means a green CI run. + +A global install (`npm install -g @microsoft/vally-cli@`) still works for ad-hoc iteration, but it won't match the transitive dependency tree CI uses and isn't a substitute for the steps above when validating a version bump. diff --git a/eng/common/scripts/eval/build-eval-summary.ts b/eng/common/scripts/eval/build-eval-summary.ts new file mode 100644 index 000000000000..c270821e6375 --- /dev/null +++ b/eng/common/scripts/eval/build-eval-summary.ts @@ -0,0 +1,356 @@ +// Renders a Markdown rollup from the per-shard Vally JUnit results: groups by shard, +// collapses per-trial testcases to one stimulus, applies the threshold, and lists failing +// scenarios. Presentation only — never changes pass/fail. + +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; +import { globFiles } from "./lib/glob.ts"; + +// Maps a JUnit file path back to its shard and job attempt. Result artifacts download into +// folders named `eval-result--` (the attempt suffix keeps "Rerun failed +// jobs" from colliding on the artifact name); everything below that is the shard's JUnit. +export function getShardArtifact(filePath) { + const segments = filePath.split(/[\\/]/).filter(Boolean); + for (const segment of segments) { + if (segment.startsWith("eval-result-")) { + const raw = segment.replace(/^eval-result-/, ""); + // Strip a trailing `-` job-attempt suffix (absent in older single-attempt runs). + const match = raw.match(/^(.*)-(\d+)$/); + if (match) { + return { shardName: match[1], attempt: Number(match[2]) }; + } + return { shardName: raw, attempt: 1 }; + } + } + // Fallback: nearest ancestor dir that isn't a Vally timestamp folder. + for (let i = segments.length - 2; i >= 0; i--) { + if (!/^\d{4}-\d{2}-\d{2}T/.test(segments[i])) { + return { shardName: segments[i], attempt: 1 }; + } + } + return { shardName: "unknown", attempt: 1 }; +} + +// Back-compat: return just the shard name (attempt suffix stripped). +export function getShardName(filePath) { + return getShardArtifact(filePath).shardName; +} + +// Strips Vally's ' (trial N)' suffix so every trial of a stimulus collapses to one stimulus. +export function getStimulusName(name) { + if (!name || !name.trim()) { + return "(unnamed scenario)"; + } + return name.replace(/\s*\(trial\s+\d+\)\s*$/, "").trim(); +} + +// Formats a 0..1 ratio as a percentage, dropping a trailing '.0' so whole numbers read as +// '100%' while fractional rates keep one decimal ('93.5%'). +export function formatPct(ratio) { + const value = ratio * 100; + if (Math.abs(value - Math.round(value)) < 0.05) { + return `${Math.round(value)}%`; + } + return `${value.toFixed(1)}%`; +} + +function getAttr(attrs, name) { + const match = attrs.match(new RegExp(`\\b${name}=["']([^"']*)["']`)); + return match ? match[1] : undefined; +} + +// Minimal dependency-free JUnit parse: testsuite (optional threshold property) > testcase +// with optional // children. `\b` avoids matching `testsuites`. +// NOTE: coupled to Vally's JUnit output shape; if that XML changes, update these regexes +// (or swap in a real XML parser). +function parseSuites(content) { + const suites = []; + const suiteRe = /]*?)(\/>|>([\s\S]*?)<\/testsuite>)/g; + let suiteMatch; + while ((suiteMatch = suiteRe.exec(content))) { + const inner = suiteMatch[2].startsWith("/>") ? "" : suiteMatch[3]; + + let threshold; + const thresholdMatch = inner.match( + /]*\bname=["']threshold["'][^>]*\bvalue=["']([^"']+)["']/ + ); + if (thresholdMatch) { + const parsed = Number(thresholdMatch[1]); + if (!Number.isNaN(parsed)) { + threshold = parsed; + } + } + + const testcases = []; + const caseRe = /]*?)(\/>|>([\s\S]*?)<\/testcase>)/g; + let caseMatch; + while ((caseMatch = caseRe.exec(inner))) { + const attrs = caseMatch[1]; + const body = caseMatch[2].startsWith("/>") ? "" : caseMatch[3]; + const timeStr = getAttr(attrs, "time"); + testcases.push({ + name: getAttr(attrs, "name") ?? "", + time: timeStr ? Number(timeStr) || 0 : 0, + failure: /} + */ +export function getEvalSummary(resultsRoot) { + const root = path.resolve(resultsRoot); + const xmlFiles = globFiles(root, "**/*.xml"); + const shards = {}; + + // A "Rerun failed jobs" retry publishes a higher-attempt artifact for the same shard. + // Resolve each file's shard + attempt up front, then only aggregate the highest attempt + // per shard so a retry supersedes the earlier one instead of double-counting. + const parsedFiles = xmlFiles.map((xmlFile) => ({ xmlFile, ...getShardArtifact(xmlFile) })); + const maxAttempt = {}; + for (const { shardName, attempt } of parsedFiles) { + maxAttempt[shardName] = Math.max(maxAttempt[shardName] ?? 0, attempt); + } + + for (const { xmlFile, shardName, attempt } of parsedFiles) { + if (attempt !== maxAttempt[shardName]) { + continue; // superseded by a later rerun attempt of this shard + } + if (!shards[shardName]) { + shards[shardName] = { + shardName, + total: 0, + failed: 0, + skipped: 0, + durationS: 0, + failures: [], + // stimulus name -> { trials, passed, skipped, threshold } + stimuli: new Map(), + }; + } + const shard = shards[shardName]; + + const content = fs.readFileSync(xmlFile, "utf8"); + // Read each 's threshold and aggregate its trials back up to the stimulus, + // mirroring exactly what `vally eval` gates on. + for (const suite of parseSuites(content)) { + const threshold = suite.threshold ?? 0.8; + for (const testcase of suite.testcases) { + const stimulus = getStimulusName(testcase.name); + if (!shard.stimuli.has(stimulus)) { + shard.stimuli.set(stimulus, { trials: 0, passed: 0, skipped: 0, threshold }); + } + const entry = shard.stimuli.get(stimulus); + entry.threshold = threshold; + shard.durationS += testcase.time; + + if (testcase.skipped) { + entry.skipped++; + } else { + entry.trials++; + if (!testcase.failure) { + entry.passed++; + } + } + } + } + } + + // Collapse each stimulus's trials into one pass/fail, once per shard after all XML is read. + for (const shardName of Object.keys(shards)) { + const shard = shards[shardName]; + for (const [stimulus, entry] of shard.stimuli) { + shard.total++; + if (entry.trials === 0) { + shard.skipped++; + continue; + } + const passRate = entry.passed / entry.trials; + // 1e-9 epsilon guards float rounding so 4/5 = 0.8 is not dropped below an 0.8 gate. + if (passRate + 1e-9 < entry.threshold) { + shard.failed++; + shard.failures.push(`${stimulus} (${entry.passed}/${entry.trials} runs passed)`); + } + } + } + + return shards; +} + +/** + * Renders the Markdown summary for the given shard map. + * + * @param {Record} shards Output of getEvalSummary. + * @returns {string} Markdown. + */ +export function formatEvalSummaryMarkdown(shards) { + const all = Object.values(shards); + const shardCount = all.length; + + let totalTests = 0; + let totalFailed = 0; + let totalSkipped = 0; + for (const shard of all) { + totalTests += shard.total; + totalFailed += shard.failed; + totalSkipped += shard.skipped; + } + const totalPassed = totalTests - totalFailed - totalSkipped; + + const lines = []; + + // A run that parsed zero testcases is NOT a pass — surface it as a loud NO RESULTS state. + let overall; + let overallIcon; + if (totalTests === 0) { + overall = "NO RESULTS"; + overallIcon = "⚠️"; + } else if (totalFailed === 0) { + overall = "PASSED"; + overallIcon = "✅"; + } else { + overall = "FAILED"; + overallIcon = "❌"; + } + + // Pass rate is measured over scenarios that actually ran (skips excluded). + const nonSkipped = totalPassed + totalFailed; + const overallRatio = nonSkipped > 0 ? totalPassed / nonSkipped : 0; + + lines.push(`## ${overallIcon} Vally eval results — ${overall}`); + lines.push(""); + + if (totalTests === 0) { + lines.push(`No scenarios were found across ${shardCount} shard(s).`); + lines.push(""); + lines.push("> ⚠️ No eval testcases were found in the downloaded results. This usually means the"); + lines.push("> eval shards did not publish JUnit — the shard jobs failed before running, or the"); + lines.push("> `eval-result-*` artifacts were empty. Check the Eval stage shard logs."); + return lines.join("\n") + "\n"; + } + + // Glanceable one-liner. + const scenarioWord = totalTests === 1 ? "scenario" : "scenarios"; + const shardWord = shardCount === 1 ? "shard" : "shards"; + const tallies = [`✅ **${totalPassed} passed**`]; + if (totalFailed > 0) { + tallies.push(`❌ **${totalFailed} failed**`); + } + if (totalSkipped > 0) { + tallies.push(`⏭️ ${totalSkipped} skipped`); + } + tallies.push(`**${formatPct(overallRatio)}** pass rate`); + lines.push( + `**${totalTests} ${scenarioWord}** across **${shardCount} ${shardWord}** — ${tallies.join(" · ")}` + ); + lines.push(""); + + // Red shards first (then alphabetical) so a reader's eye lands on failures. + const ordered = [...all].sort((a, b) => { + const aClean = a.failed === 0 ? 1 : 0; + const bClean = b.failed === 0 ? 1 : 0; + if (aClean !== bClean) { + return aClean - bClean; + } + return a.shardName.localeCompare(b.shardName); + }); + + lines.push("| Shard | Result | Pass rate | Passed | Failed | Skipped | Time (s) |"); + lines.push("| --- | :---: | ---: | ---: | ---: | ---: | ---: |"); + for (const shard of ordered) { + const passed = shard.total - shard.failed - shard.skipped; + const icon = shard.failed === 0 ? "✅" : "❌"; + const ran = passed + shard.failed; + const shardPct = ran > 0 ? formatPct(passed / ran) : "—"; + lines.push( + `| ${shard.shardName} | ${icon} | ${shardPct} | ${passed} | ${shard.failed} | ${shard.skipped} | ${shard.durationS.toFixed(1)} |` + ); + } + // Totals row. + const totalIcon = totalFailed === 0 ? "✅" : "❌"; + let totalDuration = 0; + for (const shard of all) { + totalDuration += shard.durationS; + } + lines.push( + `| **Total** | ${totalIcon} | **${formatPct(overallRatio)}** | **${totalPassed}** | **${totalFailed}** | **${totalSkipped}** | **${totalDuration.toFixed(1)}** |` + ); + + if (totalFailed > 0) { + const failWord = totalFailed === 1 ? "scenario" : "scenarios"; + lines.push(""); + lines.push(`
❌ ${totalFailed} failing ${failWord}`); + lines.push(""); + for (const shard of ordered) { + if (shard.failed === 0) { + continue; + } + lines.push(`- **${shard.shardName}**`); + for (const name of shard.failures) { + lines.push(` - ❌ ${name}`); + } + } + lines.push(""); + lines.push("
"); + } + + return lines.join("\n") + "\n"; +} + +// ----- CLI ----- + +function parseArgs(argv) { + const options = { outputPath: "eval-summary.md" }; + for (let i = 0; i < argv.length; i++) { + const next = () => argv[++i]; + switch (argv[i]) { + case "--results-root": + options.resultsRoot = next(); + break; + case "--output-path": + options.outputPath = next(); + break; + default: + throw new Error(`Unknown argument: ${argv[i]}`); + } + } + if (!options.resultsRoot) { + throw new Error("Missing required argument: --results-root"); + } + return options; +} + +function main(argv) { + const options = parseArgs(argv); + const shards = getEvalSummary(options.resultsRoot); + const markdown = formatEvalSummaryMarkdown(shards); + fs.writeFileSync(options.outputPath, markdown, "utf8"); + + console.log(markdown); + + if (process.env.TF_BUILD) { + console.log(`##vso[task.uploadsummary]${path.resolve(options.outputPath)}`); + } + + return shards; +} + +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + try { + main(process.argv.slice(2)); + } catch (error) { + console.error(error.message); + process.exit(1); + } +} diff --git a/eng/common/scripts/eval/collect-stimuli.ts b/eng/common/scripts/eval/collect-stimuli.ts new file mode 100644 index 000000000000..d13d028c9046 --- /dev/null +++ b/eng/common/scripts/eval/collect-stimuli.ts @@ -0,0 +1,188 @@ +// Discovers Vally eval files and emits an Azure Pipelines matrix for fan-out sharding. +// Globs one or more eval-file patterns under one or more roots, de-dups, and shards by the +// `area` tag (one job per area; files with no tag fall back to their parent folder). Each +// matrix leg exposes shardName (result-folder id) and evalArgs (the `-e ` flags). + +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; +import { globFiles } from "./lib/glob.ts"; + +// Fallback patterns when run with no --pattern. Mirrors archetype-eval.yml's evalGlobs default. +const DEFAULT_PATTERNS = [ + "tools/*.eval.yaml", + "workflows/mock/*.eval.yaml", +]; + +const SANITIZE = /[^A-Za-z0-9]/g; + +// Discovers eval files across every root, de-duplicated. Each file's `relative` path (handed +// to `vally eval -e`) is computed against `pathBase` when supplied, else against its root. +export function getEvalFiles(roots, patterns, pathBase = null) { + const seen = new Set(); // case-insensitive + const files = []; + const base = pathBase ? path.resolve(pathBase) : null; + + for (const root of roots) { + const resolvedRoot = path.resolve(root); + for (const glob of patterns) { + for (const full of globFiles(resolvedRoot, glob)) { + const key = full.toLowerCase(); + if (seen.has(key)) { + continue; + } + seen.add(key); + const relative = path.relative(base ?? resolvedRoot, full).split(path.sep).join("/"); + // Eval paths are passed as space-delimited `-e ` args, so whitespace would mis-split. Fail fast. + if (/\s/.test(relative)) { + throw new Error(`Eval path '${relative}' contains whitespace, which is not supported.`); + } + files.push({ + fullName: full, + relative, + leaf: path.basename(full).replace(/\.eval\.yaml$/, ""), + parent: path.basename(path.dirname(full)), + }); + } + } + } + + return files; +} + +// Reads the `area` tag from an eval YAML via regex. Returns null when no tag is present. +export function getEvalArea(filePath) { + const content = fs.readFileSync(filePath, "utf8"); + const match = content.match(/^\s*area:\s*["']?([A-Za-z0-9._-]+)/m); + return match ? match[1] : null; +} + +/** + * Builds the Azure Pipelines matrix object from the discovered eval files. + * + * @param {object} options + * @param {string[]} options.roots Eval roots to glob from (repo-specific and/or scattered). + * @param {string[]} [options.patterns] Forward-slashed globs relative to each root. + * @param {string|null} [options.pathBase] Anchor for emitted `-e` paths (the run root). When + * null, each file's path is relative to the root it was found under. + * @param {(message: string) => void} [options.warn] Sink for non-fatal warnings. + * @returns {Record} + */ +export function buildMatrix({ + roots, + patterns = DEFAULT_PATTERNS, + pathBase = null, + warn = (message) => console.warn(message), +} = {}) { + const files = getEvalFiles(roots, patterns, pathBase); + if (files.length === 0) { + throw new Error( + `No eval files matched any of: ${patterns.join(", ")} under ${roots.join(", ")}.` + ); + } + + const matrix = {}; + + // One shard per `area` tag; every file with that area runs in the same job. + const byArea = new Map(); + const sorted = [...files].sort((a, b) => a.relative.localeCompare(b.relative)); + for (const file of sorted) { + let area = getEvalArea(file.fullName); + if (!area) { + // No `area:` tag — fall back to the parent folder and warn. + area = file.parent; + warn(`No 'area' tag in '${file.relative}'; falling back to folder '${area}'.`); + } + if (!byArea.has(area)) { + byArea.set(area, []); + } + byArea.get(area).push(file.relative); + } + + for (const area of [...byArea.keys()].sort()) { + const shardName = `area_${area}`.replace(SANITIZE, "_"); + const evalArgs = byArea.get(area).map((relative) => `-e ${relative}`).join(" "); + if (Object.prototype.hasOwnProperty.call(matrix, shardName)) { + throw new Error( + `Duplicate shard name '${shardName}' (from area '${area}'). Shard names must be unique.` + ); + } + matrix[shardName] = { shardName, evalArgs }; + } + + return matrix; +} + +// ----- CLI ----- + +function parseArgs(argv) { + const options = { + roots: [], + patterns: [], + pathBase: null, + outputVariable: "matrix", + }; + + for (let i = 0; i < argv.length; i++) { + const arg = argv[i]; + const next = () => argv[++i]; + switch (arg) { + case "--eval-root": + options.roots.push(next()); + break; + case "--path-base": + options.pathBase = next(); + break; + case "--pattern": + options.patterns.push(next()); + break; + case "--output-variable": + options.outputVariable = next(); + break; + default: + throw new Error(`Unknown argument: ${arg}`); + } + } + + if (options.roots.length === 0) { + options.roots = ["."]; + } + if (options.patterns.length === 0) { + options.patterns = DEFAULT_PATTERNS; + } + + return options; +} + +function main(argv) { + const options = parseArgs(argv); + const matrix = buildMatrix({ + roots: options.roots, + patterns: options.patterns, + pathBase: options.pathBase, + }); + const json = JSON.stringify(matrix); + + const keys = Object.keys(matrix); + console.log(`Discovered ${keys.length} shard(s):`); + for (const key of keys) { + console.log(` - ${key} -> ${matrix[key].evalArgs}`); + } + + // Emit for Azure Pipelines (a harmless log line when run locally outside a pipeline). + console.log( + `##vso[task.setVariable variable=${options.outputVariable};isOutput=true]${json}` + ); + + return matrix; +} + +// Run as a CLI only when invoked directly (not when imported by the tests). +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + try { + main(process.argv.slice(2)); + } catch (error) { + console.error(error.message); + process.exit(1); + } +} diff --git a/eng/common/scripts/eval/init-eval-git-fixtures.ts b/eng/common/scripts/eval/init-eval-git-fixtures.ts new file mode 100644 index 000000000000..1a30e1f36508 --- /dev/null +++ b/eng/common/scripts/eval/init-eval-git-fixtures.ts @@ -0,0 +1,161 @@ +// Discovers `environment.git` worktree fixtures across an eval suite and primes a shallow + +// sparse cache clone for each unique one (Vally runs `git worktree add` and won't clone them). +// The discovery logic is exported and unit-tested; --list-only dry-runs without cloning. + +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; +import { globFiles } from "./lib/glob.ts"; +import { syncRepo } from "./sync-eval-git-repo.ts"; + +export const DEFAULT_PATTERNS = [ + "tools/*.eval.yaml", + "workflows/mock/*.eval.yaml", +]; + +// Repos we know how to clone efficiently (cone-sparse to the spec folders the fixtures touch). +// Unknown repos fall back to a full shallow clone under the --default-org owner. +export const KNOWN_REPOS = { + "azure-rest-api-specs": { + url: "https://github.com/Azure/azure-rest-api-specs.git", + sparse: ["specification/contosowidgetmanager", "specification/ai/Face"], + }, +}; + +/** + * Scans an eval suite for `environment.git` worktree fixtures. + * + * @param {object} options + * @param {string} options.root Suite root the patterns are resolved against. + * @param {string[]} [options.patterns] Glob patterns of eval files to scan. + * @returns {Array<{evalFile:string, source:string, ref:string, cachePath:string, repoName:string}>} + */ +export function getEvalGitFixtures({ root, patterns = DEFAULT_PATTERNS }) { + // Match a `git:` mapping plus the indented block beneath it. \k ties the body lines to + // a deeper indent than `git:` itself, so a sibling key at the same level ends the block. + const blockRegex = /^(?[ \t]*)git:[ \t]*\r?\n(?(?:\k[ \t]+\S.*(?:\r?\n|$))+)/gm; + const fixtures = []; + + for (const pattern of patterns) { + for (const file of globFiles(root, pattern)) { + const content = fs.readFileSync(file, "utf8"); + blockRegex.lastIndex = 0; + let match; + while ((match = blockRegex.exec(content)) !== null) { + const body = match.groups.body; + const sourceMatch = body.match(/^\s*source:\s*(\S+)/m); + if (!sourceMatch) { + continue; // a git block without a source is not a worktree fixture we can prime + } + const source = sourceMatch[1]; + const refMatch = body.match(/^\s*ref:\s*(\S+)/m); + const ref = refMatch ? refMatch[1] : "main"; + const cachePath = path.resolve(path.dirname(file), source); + fixtures.push({ evalFile: file, source, ref, cachePath, repoName: path.basename(cachePath) }); + } + } + } + + return fixtures; +} + +/** + * Collapses fixtures that point at the same cache path + ref, sorted for stable output. + * + * @param {ReturnType} fixtures + */ +export function dedupeFixtures(fixtures) { + const seen = new Set(); + const unique = []; + const sorted = [...fixtures].sort( + (a, b) => a.cachePath.localeCompare(b.cachePath) || a.ref.localeCompare(b.ref) + ); + for (const fixture of sorted) { + const key = `${fixture.cachePath}|${fixture.ref}`; + if (seen.has(key)) { + continue; + } + seen.add(key); + unique.push(fixture); + } + return unique; +} + +// ----- CLI ----- + +function parseArgs(argv) { + const options = { evalRoot: ".", patterns: [], maxAgeHours: 24, defaultOrg: "Azure", listOnly: false }; + for (let i = 0; i < argv.length; i++) { + const next = () => argv[++i]; + switch (argv[i]) { + case "--eval-root": + options.evalRoot = next(); + break; + case "--pattern": + options.patterns.push(next()); + break; + case "--max-age-hours": + options.maxAgeHours = Number(next()); + break; + case "--default-org": + options.defaultOrg = next(); + break; + case "--list-only": + options.listOnly = true; + break; + default: + throw new Error(`Unknown argument: ${argv[i]}`); + } + } + if (options.patterns.length === 0) { + options.patterns = DEFAULT_PATTERNS; + } + return options; +} + +async function main(argv) { + const options = parseArgs(argv); + const root = path.resolve(options.evalRoot); + + const fixtures = getEvalGitFixtures({ root, patterns: options.patterns }); + if (fixtures.length === 0) { + console.log("[prime-fixtures] No git fixtures declared in the scanned suite. Nothing to do."); + return []; + } + + const unique = dedupeFixtures(fixtures); + console.log(`[prime-fixtures] Discovered ${unique.length} unique git fixture(s):`); + for (const fixture of unique) { + console.log(` - ${fixture.repoName} @ ${fixture.ref} -> ${fixture.cachePath}`); + } + + if (options.listOnly) { + return unique; + } + + for (const fixture of unique) { + const known = KNOWN_REPOS[fixture.repoName]; + const repoUrl = known ? known.url : `https://github.com/${options.defaultOrg}/${fixture.repoName}.git`; + const sparseCheckoutPaths = known ? known.sparse : []; + const cacheRoot = path.dirname(fixture.cachePath); + console.log(`[prime-fixtures] Priming ${fixture.repoName} @ ${fixture.ref} from ${repoUrl}`); + await syncRepo({ + cacheRoot, + repoUrl, + repoName: fixture.repoName, + ref: fixture.ref, + sparseCheckoutPaths, + maxAgeHours: options.maxAgeHours, + }); + } + + console.log("[prime-fixtures] Done."); + return unique; +} + +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + main(process.argv.slice(2)).catch((error) => { + console.error(error instanceof Error ? error.message : error); + process.exit(1); + }); +} diff --git a/eng/common/scripts/eval/invoke-eval-shard.ts b/eng/common/scripts/eval/invoke-eval-shard.ts new file mode 100644 index 000000000000..135a71d5a98e --- /dev/null +++ b/eng/common/scripts/eval/invoke-eval-shard.ts @@ -0,0 +1,130 @@ +// Runs one Vally eval shard and gates on the eval verdict (from results.jsonl), not the +// `vally` exit code, since vally can exit non-zero on a teardown flake after a pass. + +import { spawnSync } from "node:child_process"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { getVallyShardVerdict } from "./lib/verdict.ts"; + +// The pinned Vally CLI is installed next to this script (package.json + node_modules live here), +// so the npm --prefix is just this file's own directory. +const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url)); + +/** + * Executes the shard and returns the process exit code (0 pass, 1 fail). Side effects + * (logging + Azure Pipelines `##vso` issues) go to the console; the verdict drives the code. + * + * @param {object} options + * @param {string} options.evalArgs Whitespace-separated `-e ` args, exactly as the matrix emits them. + * @param {string} options.shardName Shard name (log messages + result folder). + * @param {string} options.outputDir `--output-dir` Vally writes results into. + * @param {number} [options.threshold] Pass-rate gate forwarded to `vally eval --threshold`. + * @returns {number} 0 when the shard verdict passes, 1 otherwise. + */ +export function runShard({ evalArgs, shardName, outputDir, threshold = 0.8 }) { + const evalArgList = evalArgs.split(/\s+/).filter(Boolean); + const thresholdArg = String(threshold); + + console.log( + `Running: vally eval ${evalArgs} --junit --threshold ${thresholdArg} --output-dir "${outputDir}"` + ); + + // Do NOT abort on a non-zero exit — the verdict below is authoritative. + // Uses spawnSync (not the vendored execFile helper) on purpose: the shard needs vally's output + // streamed live to the log (stdio: "inherit") and must keep going on a non-zero exit, whereas + // the exec helper captures output and rejects on failure. + const proc = spawnSync( + "npm", + [ + "exec", + "--no", + "--prefix", + SCRIPT_DIR, + "--", + "vally", + "eval", + ...evalArgList, + "--junit", + "--threshold", + thresholdArg, + "--output-dir", + outputDir, + ], + { stdio: "inherit", shell: process.platform === "win32" } + ); + const vallyExit = proc.status ?? 1; + + const verdict = getVallyShardVerdict({ resultsDir: outputDir, threshold }); + for (const line of verdict.lines) { + console.log(` ${line}`); + } + + if (!verdict.found) { + console.log( + `##vso[task.logissue type=error]Shard '${shardName}' produced no usable verdict (vally exit ${vallyExit}). Treating as failure.` + ); + return 1; + } + + if (verdict.passed) { + if (verdict.hadExecutionErrors) { + // Post-run teardown noise, not a mid-eval failure — verdict already passed; just log. + console.log( + `Shard '${shardName}' passed the pass-rate threshold; vally flagged execution errors (post-run teardown noise, not blocking).` + ); + } + if (vallyExit !== 0) { + // vally's teardown can exit non-zero after the verdict is written — log, don't fail. + console.log( + `vally exited ${vallyExit} during post-run shutdown; shard '${shardName}' is PASSED per results.jsonl (exit code ignored).` + ); + } + console.log(`##[section]Shard '${shardName}' PASSED (verdict from results.jsonl).`); + return 0; + } + + console.log( + `##vso[task.logissue type=error]Shard '${shardName}' FAILED - one or more evals are below the pass-rate threshold.` + ); + return 1; +} + +// ----- CLI ----- + +function parseArgs(argv) { + const options = { threshold: 0.8 }; + for (let i = 0; i < argv.length; i++) { + const next = () => argv[++i]; + switch (argv[i]) { + case "--eval-args": + options.evalArgs = next(); + break; + case "--shard-name": + options.shardName = next(); + break; + case "--output-dir": + options.outputDir = next(); + break; + case "--threshold": + options.threshold = Number(next()); + break; + default: + throw new Error(`Unknown argument: ${argv[i]}`); + } + } + for (const required of ["evalArgs", "shardName", "outputDir"]) { + if (!options[required]) { + throw new Error(`Missing required argument for ${required}.`); + } + } + return options; +} + +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + try { + process.exit(runShard(parseArgs(process.argv.slice(2)))); + } catch (error) { + console.error(error.message); + process.exit(1); + } +} diff --git a/eng/common/scripts/eval/lib/exec.ts b/eng/common/scripts/eval/lib/exec.ts new file mode 100644 index 000000000000..3bddedcf06a4 --- /dev/null +++ b/eng/common/scripts/eval/lib/exec.ts @@ -0,0 +1,139 @@ +// Secure process/exec primitives (execFile wrapper with logging + a larger default maxBuffer). +// +// PROVENANCE: Copied from azure-rest-api-specs .github/shared/src/exec.js +// @ ef7dd74c13aa9ca12b67b33b9dc4b5d1419a46f0 and ported to TypeScript (erasable syntax only, +// run via Node native type stripping). See azure-sdk-tools#16296 for the plan to share these +// primitives properly instead of copying. Kept under eng/common/scripts/eval/lib so it travels +// with the eng/common sync into the language repos (unlike .github/shared, which does not sync); +// this is why the folder path differs from the specs repo. + +import child_process from "node:child_process"; +import { dirname, join } from "node:path"; +import { promisify } from "node:util"; + +const execFileImpl = promisify(child_process.execFile); + +// Minimal logger contract used by the exec helpers (subset of the specs repo ILogger). +export interface ILogger { + info(message: string): void; + debug(message: string): void; +} + +export interface ExecOptions { + /** Current working directory. Default: process.cwd(). */ + cwd?: string; + logger?: ILogger; + /** Max bytes allowed on stdout or stderr. Default: 16 * 1024 * 1024. */ + maxBuffer?: number; +} + +export interface NpmPrefixOptions { + /** Prefix to pass to npm via "--prefix". */ + prefix?: string; +} + +export type ExecNpmOptions = ExecOptions & NpmPrefixOptions; + +export interface ExecResult { + stdout: string; + stderr: string; +} + +export type ExecError = Error & { stdout?: string; stderr?: string; code?: number }; + +/** + * Checks whether an unknown error object is an ExecError. + */ +export function isExecError(error: unknown): error is ExecError { + if (!(error instanceof Error)) return false; + + const e = error as ExecError; + return typeof e.stdout === "string" || typeof e.stderr === "string"; +} + +/** + * Wraps `child_process.execFile()`, adding logging and a larger default maxBuffer. + * + * @throws {ExecError} + */ +export async function execFile( + file: string, + args?: string[], + options: ExecOptions = {}, +): Promise { + const { + cwd, + logger, + // Node default is 1024 * 1024, which is too small for some git commands returning many + // entities or large file content. To support "git show", should be larger than the largest + // swagger file in the repo (2.5 MB as of 2/28/2025). + maxBuffer = 16 * 1024 * 1024, + } = options; + + logger?.info(`execFile("${file}", ${JSON.stringify(args)})`); + + try { + // execFile(file, args) is more secure than exec(cmd), since the latter is vulnerable to + // shell injection. + const result = await execFileImpl(file, args, { + cwd, + maxBuffer, + }); + + logger?.debug(`stdout: '${result.stdout}'`); + logger?.debug(`stderr: '${result.stderr}'`); + + return result; + } catch (error) { + /* v8 ignore next */ + logger?.debug(`error: '${JSON.stringify(error)}'`); + + throw error; + } +} + +/** + * Calls `execFile()` with appropriate arguments to run `npm` on all platforms. + * + * @throws {ExecError} + */ +export async function execNpm(args: string[], options: ExecNpmOptions = {}): Promise { + const { prefix } = options; + + // Exclude platform-specific code from coverage + /* v8 ignore start */ + const { file, defaultArgs } = + process.platform === "win32" + ? { + // Only way I could find to run "npm" on Windows, without using the shell (e.g. + // "cmd /c npm ...") + // + // "node.exe", ["--", "npm-cli.js", ...args] + // + // The "--" MUST come BEFORE "npm-cli.js", to ensure args are sent to the script + // unchanged. If the "--" comes after "npm-cli.js", the args sent to the script will be + // ["--", ...args], which is NOT equivalent, and can break if args itself contains + // another "--". + + // example: "C:\Program Files\nodejs\node.exe" + file: process.execPath, + + // example: "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" + defaultArgs: ["--", join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js")], + } + : { file: "npm", defaultArgs: [] as string[] }; + /* v8 ignore stop */ + + const prefixArgs = prefix ? ["--prefix", prefix] : []; + + return await execFile(file, [...defaultArgs, ...prefixArgs, ...args], options); +} + +/** + * Calls `execNpm()` with arguments ["exec", "--no", "--"] prepended. + * + * @throws {ExecError} + */ +export async function execNpmExec(args: string[], options: ExecNpmOptions = {}): Promise { + return await execNpm(["exec", "--no", "--", ...args], options); +} diff --git a/eng/common/scripts/eval/lib/glob.ts b/eng/common/scripts/eval/lib/glob.ts new file mode 100644 index 000000000000..f60018273623 --- /dev/null +++ b/eng/common/scripts/eval/lib/glob.ts @@ -0,0 +1,73 @@ +// Tiny dependency-free glob used by the eval matrix discovery. Supports `*` (one path +// segment), `?` (one char), and `**` (any number of segments). + +import fs from "node:fs"; +import path from "node:path"; + +// Convert one glob path-segment (no slashes) to an anchored RegExp. +// * -> any run of non-separator chars +// ? -> exactly one non-separator char +// All other regex metacharacters are escaped so they match literally. +function segmentToRegExp(segment) { + const escaped = segment + .replace(/[.+^${}()|[\]\\]/g, "\\$&") + .replace(/\*/g, "[^/]*") + .replace(/\?/g, "[^/]"); + return new RegExp(`^${escaped}$`); +} + +function walk(dir, segments, out) { + if (segments.length === 0) { + return; + } + const [head, ...rest] = segments; + + let entries; + try { + entries = fs.readdirSync(dir, { withFileTypes: true }); + } catch { + // Missing/inaccessible directory: no matches. + return; + } + + // `**` matches zero or more directory levels. + if (head === "**") { + walk(dir, rest, out); // zero levels: try the remainder right here + for (const entry of entries) { + if (entry.isDirectory()) { + walk(path.join(dir, entry.name), segments, out); // one+ levels + } + } + return; + } + + const matcher = segmentToRegExp(head); + for (const entry of entries) { + if (!matcher.test(entry.name)) { + continue; + } + const full = path.join(dir, entry.name); + if (rest.length === 0) { + if (entry.isFile()) { + out.push(full); + } + } else if (entry.isDirectory()) { + walk(full, rest, out); + } + } +} + +/** + * Returns the absolute paths of files under `root` matching the forward-slashed + * glob `pattern`. Results are sorted for deterministic ordering. + * + * @param {string} root Absolute or relative base directory to glob from. + * @param {string} pattern Forward-slashed glob relative to `root` (e.g. "tools/*.eval.yaml"). + * @returns {string[]} Sorted absolute file paths. + */ +export function globFiles(root, pattern) { + const segments = pattern.split("/").filter(Boolean); + const out = []; + walk(path.resolve(root), segments, out); + return out.sort(); +} diff --git a/eng/common/scripts/eval/lib/verdict.ts b/eng/common/scripts/eval/lib/verdict.ts new file mode 100644 index 000000000000..330c59be75c0 --- /dev/null +++ b/eng/common/scripts/eval/lib/verdict.ts @@ -0,0 +1,108 @@ +// Verdict helpers for the Vally eval shard gate. Reads the `run-summary` record from +// results.jsonl (authoritative) rather than the `vally` exit code, which can be non-zero +// after a teardown flake. A shard passes only if every eval passes: scored evals need +// overallScore >= threshold, unscored evals need their own `passed` true, both need stimuli. + +import fs from "node:fs"; +import path from "node:path"; +import { globFiles } from "./glob.ts"; + +// Formats a 0..1 ratio as a fixed-1-decimal percentage string (e.g. 97.1). +function pct(ratio) { + return (ratio * 100).toFixed(1); +} + +/** + * Reads the canonical `run-summary` from the newest results.jsonl under `resultsDir` and + * decides pass/fail. Returns a plain result object so gating is unit-testable without + * running `vally`. + * + * @param {object} options + * @param {string} options.resultsDir Directory Vally wrote results into (nested per-run folders). + * @param {number} [options.threshold] Default pass-rate gate when an eval omits its own. + * @returns {{found: boolean, passed: boolean, hadExecutionErrors: boolean, lines: string[]}} + */ +export function getVallyShardVerdict({ resultsDir, threshold = 0.8 } = {}) { + const result = { found: false, passed: false, hadExecutionErrors: false, lines: [] }; + + if (!fs.existsSync(resultsDir)) { + result.lines.push(`No results directory at '${resultsDir}'.`); + return result; + } + + // Find the newest results.jsonl beneath resultsDir (Vally nests a per-run timestamp folder). + const candidates = globFiles(resultsDir, "**/results.jsonl"); + let summaryFile = null; + let newest = -Infinity; + for (const file of candidates) { + const mtime = fs.statSync(file).mtimeMs; + if (mtime >= newest) { + newest = mtime; + summaryFile = file; + } + } + if (!summaryFile) { + result.lines.push(`No results.jsonl found under '${resultsDir}'.`); + return result; + } + + // The last `run-summary` line is the canonical end-of-run verdict. + let runSummary = null; + for (const line of fs.readFileSync(summaryFile, "utf8").split(/\r?\n/)) { + if (!line.trim()) { + continue; + } + let obj; + try { + obj = JSON.parse(line); + } catch { + continue; + } + if (obj && obj.type === "run-summary") { + runSummary = obj; + } + } + if (!runSummary) { + result.lines.push(`No run-summary record in '${path.resolve(summaryFile)}'.`); + return result; + } + + result.found = true; + result.hadExecutionErrors = Boolean(runSummary.hadExecutionErrors); + + const evals = Array.isArray(runSummary.evals) ? runSummary.evals : []; + if (evals.length === 0) { + result.lines.push("run-summary contains no evals."); + return result; + } + + let allPassed = true; + for (const e of evals) { + const name = e.name ?? "(unnamed eval)"; + const ran = Number.parseInt(e.stimuliRun ?? 0, 10) || 0; + + if (e.scoringApplied) { + const score = Number(e.overallScore ?? 0); + const thr = Number(e.threshold ?? threshold); + // 1e-9 epsilon so an exact boundary (0.80 >= 0.80) is not dropped by float rounding. + const pass = ran > 0 && score + 1e-9 >= thr; + if (pass) { + result.lines.push(`PASS ${name} — ${pct(score)}% >= ${pct(thr)}% (${ran} stimuli)`); + } else { + result.lines.push(`FAIL ${name} — ${pct(score)}% < ${pct(thr)}% (${ran} stimuli)`); + allPassed = false; + } + } else { + const pass = Boolean(e.passed) && ran > 0; + if (pass) { + result.lines.push(`PASS ${name} — graders passed (${ran} stimuli)`); + } else { + result.lines.push(`FAIL ${name} — graders failed (${ran} stimuli)`); + allPassed = false; + } + } + } + + result.passed = allPassed; + return result; +} diff --git a/eng/common/scripts/eval/package-lock.json b/eng/common/scripts/eval/package-lock.json new file mode 100644 index 000000000000..c0a2ff437295 --- /dev/null +++ b/eng/common/scripts/eval/package-lock.json @@ -0,0 +1,1868 @@ +{ + "name": "@azure-tools/eval-scripts", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@azure-tools/eval-scripts", + "version": "1.0.0", + "devDependencies": { + "@microsoft/vally-cli": "0.14.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.11.0.tgz", + "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.11.0.tgz", + "integrity": "sha512-JjQWO6akOck45PH/XBrxzsQGAiKrfFl4m5iggJ0ItMIz5omRufOXWpqCPpdjKN3vKDzlSUvFjaMb7Zwf0gvAdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", + "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.4.0.tgz", + "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.14.0.tgz", + "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.4.0.tgz", + "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/monitor-opentelemetry-exporter": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@azure/monitor-opentelemetry-exporter/-/monitor-opentelemetry-exporter-1.0.0-beta.32.tgz", + "integrity": "sha512-Tk5Tv8KwHhKCQlXET/7ZLtjBv1Zi4lmPTadKTQ9KCURRJWdt+6hu5ze52Tlp2pVeg3mg+MRQ9vhWvVNXMZAp/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.19.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-logs": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.32.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@github/copilot": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.80.tgz", + "integrity": "sha512-6tf93ZF56KOiTTAjK/UhLZkl1W543IzaTQly288kockJZFswpRTnQEI00Yvacpb39DTvTYu3/ha9SeKpo/pgZQ==", + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "detect-libc": "^2.1.2" + }, + "bin": { + "copilot": "npm-loader.js" + }, + "optionalDependencies": { + "@github/copilot-darwin-arm64": "1.0.80", + "@github/copilot-darwin-x64": "1.0.80", + "@github/copilot-linux-arm64": "1.0.80", + "@github/copilot-linux-x64": "1.0.80", + "@github/copilot-linuxmusl-arm64": "1.0.80", + "@github/copilot-linuxmusl-x64": "1.0.80", + "@github/copilot-win32-arm64": "1.0.80", + "@github/copilot-win32-x64": "1.0.80" + } + }, + "node_modules/@github/copilot-darwin-arm64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.80.tgz", + "integrity": "sha512-fzn4PnSx3+O/a3ip72KVsjnzORsEygK+0i21bFAnFBYS+0Wi1Pk+o/CmNsJ7aRbf1enSJrcH8UDVkyc9pMGEBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "darwin" + ], + "bin": { + "copilot-darwin-arm64": "copilot" + } + }, + "node_modules/@github/copilot-darwin-x64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.80.tgz", + "integrity": "sha512-PKsyGk5DccNzR3bYXcYTGB9N6sHzhzGqEwq/2t1qBwqPbrC98Zo2dOT2G40/QYpJ4XdrGmTmdmfPJQ9PJknlIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "darwin" + ], + "bin": { + "copilot-darwin-x64": "copilot" + } + }, + "node_modules/@github/copilot-linux-arm64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.80.tgz", + "integrity": "sha512-8oXwN2luyHEjIoSk8AkATBjXDhRoQtuiUvC93GpfQKFHI+I1eoOVwIsAq5fKP8jNCF2rOrYFIcTjwmRt38kCcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linux-arm64": "copilot" + } + }, + "node_modules/@github/copilot-linux-x64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.80.tgz", + "integrity": "sha512-qv1ytVNwA3IDK7kcQow+fAikD67t42+AQ8X42bK/7oudNiv4frVZMO0yh1DYIebVRcmEhmPvbVPY/ptVUK3cbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linux-x64": "copilot" + } + }, + "node_modules/@github/copilot-linuxmusl-arm64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.80.tgz", + "integrity": "sha512-Qjyi+OlVnPC4Lkuy7blDMMwMUQI/yELl7gDnqQlaN8TEbhZqZueuf3p0a+kEjXcNsw4XtNYQc0eMJqSIYy/Pjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linuxmusl-arm64": "copilot" + } + }, + "node_modules/@github/copilot-linuxmusl-x64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.80.tgz", + "integrity": "sha512-rBg8pugf+5FhiZxi2zkOr+rlcOVF6Xg63j1FvryfwPT4DJ2w5Na7O3lpS4sgu8QmsP5H+dAqjlXYLYsvSoVQ0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linuxmusl-x64": "copilot" + } + }, + "node_modules/@github/copilot-sdk": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@github/copilot-sdk/-/copilot-sdk-1.0.11.tgz", + "integrity": "sha512-ngrnfa9052fLTOMoY0iiQS2B6pFDYJpWNj3syCdjzdje0R5mWoij9b8exJZciLvX7BbJjKz2/lIdwo24av3e3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@github/copilot": "^1.0.79", + "koffi": "^3.1.0", + "vscode-jsonrpc": "^8.2.1", + "zod": "^4.3.6" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@github/copilot-win32-arm64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.80.tgz", + "integrity": "sha512-+f7Vkd3vt2DYOxRnS8dStvYu3DY638N/AuLuIjxZp1F9GgwCUZK69wspqIxg2L59PmRRQcH4AGTrRDR60ENIZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "win32" + ], + "bin": { + "copilot-win32-arm64": "copilot.exe" + } + }, + "node_modules/@github/copilot-win32-x64": { + "version": "1.0.80", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.80.tgz", + "integrity": "sha512-PO0kPqhRTWQfsqGaj4UN3cj8ttkcJYy4wmXiArtFm+03AIFu8xTvuhQDPn2xEOsUome7m7t2XomKoavcrCcRsw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "win32" + ], + "bin": { + "copilot-win32-x64": "copilot.exe" + } + }, + "node_modules/@hono/node-server": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.1.tgz", + "integrity": "sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@koromix/koffi-darwin-arm64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-darwin-arm64/-/koffi-darwin-arm64-3.1.5.tgz", + "integrity": "sha512-IpqITl2fJi3QN9bTtNnygWPdK7ScSjw3xtGu8e6feYGvimCysu+spgI5KyeslY2jTnqxGS9xr8pLAbLhGJ8edA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-darwin-x64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-darwin-x64/-/koffi-darwin-x64-3.1.5.tgz", + "integrity": "sha512-4Tia4BS5EV/+vN9eIrdToanVe+U/2VqTZCBgOzoUbPKjgky51eqM+3J4qdRUvmYJohcJNPob5/hsxeItUZrl1g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-freebsd-arm64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-freebsd-arm64/-/koffi-freebsd-arm64-3.1.5.tgz", + "integrity": "sha512-bP94uzseFO79NG3flpU3WxfyvltD+jzC/kN8FDZLi8J0VUZNW1Wmu8yq87KEzjX1qT9KyX4Y+elVbGqHXHTv2Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-freebsd-ia32": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-freebsd-ia32/-/koffi-freebsd-ia32-3.1.5.tgz", + "integrity": "sha512-raFXXAPHzvCQWhaoMUF+Cc2ZWgg2UBU0RVoowHZhaw9nQYPC1pERcPRH+JA+SNIN6g4d2GFW6uPFc+QbUhsagA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-freebsd-x64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-freebsd-x64/-/koffi-freebsd-x64-3.1.5.tgz", + "integrity": "sha512-h6RyBZmPMBIDWTABkJIhzDdYwSnYAJvTacHpEjbT55Arkmw1H15Rl7CFtXuEuBrqh+uivoCrRgA6vszl9CsJ9g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-linux-arm64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-arm64/-/koffi-linux-arm64-3.1.5.tgz", + "integrity": "sha512-u0vCmKPu4yQDhl/ri1J6U3vDnvYtYjoZaIWb+oMbRXhVZeiqdE53MGPb+q2A7Dj2n9IbYloAfEICQbL6l0pmiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-linux-ia32": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-ia32/-/koffi-linux-ia32-3.1.5.tgz", + "integrity": "sha512-Xa5JbumWglwPVZgrJcLhqyC1wCWlfm7+C00p3FuOTNGp0qoYuf2/tOoAh0/q7+taVm30cMopu/6lRHwdmF6I/w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-linux-loong64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-loong64/-/koffi-linux-loong64-3.1.5.tgz", + "integrity": "sha512-F3i2CeTcqVBUQiSRUBSEzX1VgtXmLLiZb/ouZtXHkWpTLhJNd9TH7s3CizTofci0VRqlKdexGUYhK5vzPDAAHA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-linux-riscv64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-riscv64/-/koffi-linux-riscv64-3.1.5.tgz", + "integrity": "sha512-2TgQuzy+4PfDg+rw3kOmN6lywEWdzKT3eaLPbOp0b/9DaN7CLBJ/QIR5GhGsMNpeI30zU0YzFeYFxoVoJ/LqFw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-linux-x64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-linux-x64/-/koffi-linux-x64-3.1.5.tgz", + "integrity": "sha512-2yaIg/1V0m4CiAUMzG4CIlWmq1WJ+QBMlFfaGr9su+OH5fuIqC7V3BbMiB03IwIl1VofIZO5JA4Db4lID8tpbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-openbsd-ia32": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-openbsd-ia32/-/koffi-openbsd-ia32-3.1.5.tgz", + "integrity": "sha512-8/OXd+u9omMooykhvdJPEP7u6FFzzrrFo9gOmSHc9/DPt3XkVYOtSsE97PDk6zYaAzwIYHSKjHvIXsfFwFc7sg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-openbsd-x64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-openbsd-x64/-/koffi-openbsd-x64-3.1.5.tgz", + "integrity": "sha512-SpeqldKkuDk2aTj5PVWumy7eq6Tr2GtBPAOI1NiDHhg8xe433KraxrA9V9UjEd+1+kSGJQGR04nQByN3MPA9PQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-win32-arm64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-win32-arm64/-/koffi-win32-arm64-3.1.5.tgz", + "integrity": "sha512-uej3YAEKAhlfVPoIo5sOwtxhTLRVJ01LgtWrKGpnnAQU3C+Ilmaxdh+Oc2xc1G3NK30N5eCVJpyO9r3pjKC6Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-win32-ia32": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-win32-ia32/-/koffi-win32-ia32-3.1.5.tgz", + "integrity": "sha512-d42jv2f4PwtJGNJS19Xfn/BRtGsBNNVkw0O0K5tkIGI+yNq4MnPTSUsaGbDIkCLNsCgk/LFqAaE8BExyCdrujA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@koromix/koffi-win32-x64": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@koromix/koffi-win32-x64/-/koffi-win32-x64-3.1.5.tgz", + "integrity": "sha512-Pyo1WEHEP6Ek2NEn2pquwJzSPLOdY4vymoPSz0an1DgvFWSkOyBYYkGVoxL1ajfj5I1pPdXysYqixtVTzAtOfQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "funding": { + "url": "https://liberapay.com/Koromix" + } + }, + "node_modules/@microsoft/vally": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@microsoft/vally/-/vally-0.14.0.tgz", + "integrity": "sha512-a3Xhj5PUSp6vv38ViSOocrYneMuBu9HpJQ2/VAyoIAHYhWklm/IGmGCylOMv+4brMX2aZSEiX3sW2dMIy3q7vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@github/copilot-sdk": "^1.0.7", + "@opentelemetry/api": "^1.9.1", + "js-tiktoken": "^1.0.21", + "mdast-util-from-markdown": "^2.0.3", + "picomatch": "^4.0.5", + "yaml": "^2.9.0", + "zod": "^4.4.3" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@microsoft/vally-cli": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@microsoft/vally-cli/-/vally-cli-0.14.0.tgz", + "integrity": "sha512-jN9ap1aiuRJQDkiPecrFUp3v5r4Lm+l7154CPY+22cdySGl+XfaOAY5Eh9YqkfwFcya5X+U3pJmBBpFMzHuVlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/monitor-opentelemetry-exporter": "^1.0.0-beta.32", + "@microsoft/vally": "^0.14.0", + "@microsoft/vally-server": "^0.14.0", + "@opentelemetry/api": "^1.9.1", + "@opentelemetry/exporter-trace-otlp-http": "^0.221.0", + "@opentelemetry/resources": "^2.10.0", + "@opentelemetry/sdk-trace-base": "^2.10.0", + "@opentelemetry/sdk-trace-node": "^2.10.0", + "commander": "^15.0.0" + }, + "bin": { + "vally": "dist/index.js" + }, + "engines": { + "node": ">=22.12.0" + }, + "optionalDependencies": { + "@vscode/deviceid": "~0.1.5" + } + }, + "node_modules/@microsoft/vally-server": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@microsoft/vally-server/-/vally-server-0.14.0.tgz", + "integrity": "sha512-uFyeR8s1oHopjWK0GhRRRFbI+hm4BqHWFUTdgA2GdFRiz+xJfhxjMvTDi69WC0tJoq4WuDEglraEg0CG07LodA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hono/node-server": "^2.0.12", + "@microsoft/vally": "^0.14.0", + "better-sqlite3": "^13.0.2", + "hono": "^4.13.1" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", + "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.10.0.tgz", + "integrity": "sha512-bvyMcgLEkozzSzpEEEo1OMoeQ97bxj6Qs2uN3mPrSdDvObMI1myffD/BPqcLlzZO9//d1SqQA/WPw7Cz2AiqhA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.10.0.tgz", + "integrity": "sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.221.0.tgz", + "integrity": "sha512-AySXiKoC+meiWm6zdVj5T2LnPDZuatveBby1cMOeQteIWsYXAUxs8Sru13G2pVSPrUXz6vF+og7QVBX6GdC/oQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/otlp-exporter-base": "0.221.0", + "@opentelemetry/otlp-transformer": "0.221.0", + "@opentelemetry/sdk-trace": "2.10.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.221.0.tgz", + "integrity": "sha512-UFPIq80OH3Ns/oPFHRj14d4DTOxUo+MUFU8hUiCq5jTqFhdeJnfVSANHT+xp92409cA+oxzvlZCe6NM1wvCuBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/otlp-transformer": "0.221.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.221.0.tgz", + "integrity": "sha512-lg6lkOU08Az23jVcn/0Els9HP+V8PnR4Km6p0KgpTggS0n/WuhnmY64rSh83Of9iR9nD+dpWr6adlcX8KzAwjg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.221.0", + "@opentelemetry/core": "2.10.0", + "@opentelemetry/resources": "2.10.0", + "@opentelemetry/sdk-logs": "0.221.0", + "@opentelemetry/sdk-metrics": "2.10.0", + "@opentelemetry/sdk-trace": "2.10.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/api-logs": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.221.0.tgz", + "integrity": "sha512-OlanaW1vv7ufTqQ3/fPLI4arGt5ZoM+P8abOMki6uEYnpRazepSWDwDnnw+la7kE26SHVC18//SMccrDvLKOXQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-logs": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.221.0.tgz", + "integrity": "sha512-FaDcazjyMp7TZZZAsqbo4IkovP0UegoCu0EBkiNt+qCqvUf7FPAsfcrZ3+ZEkKgXZ/jHafop+JoGPDk3A0SmLg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.221.0", + "@opentelemetry/core": "2.10.0", + "@opentelemetry/resources": "2.10.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.10.0.tgz", + "integrity": "sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", + "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", + "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", + "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.10.0.tgz", + "integrity": "sha512-t6r1VSvXNtSDnPXU1FbZeetJb7yyovHmgu0wRSoftxtE0g2rSNhQZQUy69sRUCL+iioJpX8SN/S6wq6ZtvLySQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/resources": "2.10.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace/-/sdk-trace-2.10.0.tgz", + "integrity": "sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/resources": "2.10.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.10.0.tgz", + "integrity": "sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/resources": "2.10.0", + "@opentelemetry/sdk-trace": "2.10.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.10.0.tgz", + "integrity": "sha512-GZK/G6oZyBLGlH1pUgeDch7D91KoHd2uotUGIkWCPi9GI5T9X0p4L7nNAMDR1BQjkRYoDqo+ddfVx9t5Uhys+Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "2.10.0", + "@opentelemetry/core": "2.10.0", + "@opentelemetry/sdk-trace-base": "2.10.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz", + "integrity": "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.8.tgz", + "integrity": "sha512-bLMpVcWZNzq6lYOybwFwOAR1IXKcHnhUNqYeHjl1bET/qE3jFPFH+p8Wrh3rU4xwdnifPxmKNESBYnvnmc75aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@vscode/deviceid": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@vscode/deviceid/-/deviceid-0.1.5.tgz", + "integrity": "sha512-D0be67wWo7WyyBqHnRkL2bK7lp7CDH/EMN4kMV6INoKc7kxRL3nsTtngt9JZrOcZdnW59gquGRk+6KFIDyD3QA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fs-extra": "^11.2.0", + "uuid": "^14.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/better-sqlite3": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.3.tgz", + "integrity": "sha512-RbOBxmLBG8uvFUc15X9+9SFemKcQ0WBuISBVkpuiaUB2qblC8UWlHEjdWVoZ8AdhSwmoEgsiXKfopX0CQxaACQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^8.0.0" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", + "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/hono": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.2.tgz", + "integrity": "sha512-JydRilDRkYBQMt9qR9U92mXxmbGqsqSn/IKOrh4e7/gEbn+0zSr8igTu0obwJoNGN4sez28DIql7FBHWydoJpA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/js-tiktoken": { + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.21.tgz", + "integrity": "sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.5.1" + } + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/koffi": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/koffi/-/koffi-3.1.5.tgz", + "integrity": "sha512-XVwwrxg0Ca6IEUQF4YtGIU4XN0LSselFYpYvgfhh8wafCunhEEx5hPr7LZhp5QyeFA/LcRsKHTqncCdjWjWAlg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "url": "https://liberapay.com/Koromix" + }, + "optionalDependencies": { + "@koromix/koffi-darwin-arm64": "3.1.5", + "@koromix/koffi-darwin-x64": "3.1.5", + "@koromix/koffi-freebsd-arm64": "3.1.5", + "@koromix/koffi-freebsd-ia32": "3.1.5", + "@koromix/koffi-freebsd-x64": "3.1.5", + "@koromix/koffi-linux-arm64": "3.1.5", + "@koromix/koffi-linux-ia32": "3.1.5", + "@koromix/koffi-linux-loong64": "3.1.5", + "@koromix/koffi-linux-riscv64": "3.1.5", + "@koromix/koffi-linux-x64": "3.1.5", + "@koromix/koffi-openbsd-ia32": "3.1.5", + "@koromix/koffi-openbsd-x64": "3.1.5", + "@koromix/koffi-win32-arm64": "3.1.5", + "@koromix/koffi-win32-ia32": "3.1.5", + "@koromix/koffi-win32-x64": "3.1.5" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.9.2.tgz", + "integrity": "sha512-VijLXbi3UACN69I0JVXJsX4tjACjNoQDgv2gTF6sx2wWEi8tkSg2eX8p5gSIFi8z2+DL3oHmY6OyKce38SDolg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uuid": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.1.tgz", + "integrity": "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", + "integrity": "sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/eng/common/scripts/eval/package.json b/eng/common/scripts/eval/package.json new file mode 100644 index 000000000000..b0473fcf8061 --- /dev/null +++ b/eng/common/scripts/eval/package.json @@ -0,0 +1,16 @@ +{ + "name": "@azure-tools/eval-scripts", + "version": "1.0.0", + "private": true, + "description": "Vally eval CI glue scripts (matrix sharding, shard runner, JUnit summary) plus the pinned @microsoft/vally-cli the shards install from the committed lockfile. Synced via eng/common; not published.", + "type": "module", + "engines": { + "node": ">=22.12.0" + }, + "scripts": { + "test": "node --experimental-strip-types --test" + }, + "devDependencies": { + "@microsoft/vally-cli": "0.14.0" + } +} diff --git a/eng/common/scripts/eval/sync-eval-git-repo.ts b/eng/common/scripts/eval/sync-eval-git-repo.ts new file mode 100644 index 000000000000..98929f010992 --- /dev/null +++ b/eng/common/scripts/eval/sync-eval-git-repo.ts @@ -0,0 +1,134 @@ +// Ensures a shallow + sparse cache clone of a git repo exists and is reasonably fresh. +// First run: shallow blobless cone-sparse clone. Within maxAgeHours: no-op. Past that: +// fetch + checkout. Primes the cache Vally's `environment.git` fixtures point at; FETCH_HEAD +// is landed on a local branch named so `git worktree add --detach ` resolves. + +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; +import { execFile, isExecError } from "./lib/exec.ts"; + +// Throws on non-zero git exit so a failed clone stops immediately. Delegates to the shared +// execFile helper (copied from azure-rest-api-specs; see lib/exec.ts), which runs git without a +// shell (no injection) and captures output; git's stderr is surfaced only when the command fails. +async function invokeGit(args: string[]): Promise { + try { + await execFile("git", args); + } catch (error) { + if (isExecError(error) && error.stderr) { + process.stderr.write(error.stderr); + } + throw new Error(`git ${args.join(" ")} failed`); + } +} + +/** + * Clones or refreshes the cache and returns its path. + * + * @param {object} options + * @param {string} [options.cacheRoot] Cache root dir (default /artifacts/specs-cache). + * @param {string} [options.repoUrl] Clone URL. + * @param {string} [options.repoName] Cache sub-folder name. + * @param {string} [options.ref] Branch/ref to check out. + * @param {string[]} [options.sparseCheckoutPaths] Cone-sparse paths (pass [] for full tree). + * @param {number} [options.maxAgeHours] Skip the refresh fetch if cached within this window. + * @returns {Promise} The cache path. + */ +export async function syncRepo({ + cacheRoot, + repoUrl = "https://github.com/Azure/azure-rest-api-specs.git", + repoName = "azure-rest-api-specs", + ref = "main", + sparseCheckoutPaths = ["specification/contosowidgetmanager", "specification/ai/Face"], + maxAgeHours = 24, +} = {}) { + if (!cacheRoot) { + cacheRoot = path.join(process.cwd(), "artifacts", "specs-cache"); + } + const cache = path.join(cacheRoot, repoName); + const stamp = path.join(cache, ".vally-last-fetch"); + + if (!fs.existsSync(path.join(cache, ".git"))) { + console.log(`[sync-eval-git-repo] Cloning ${repoName} (${ref}) into cache: ${cache}`); + fs.mkdirSync(cache, { recursive: true }); + // init + fetch (not clone --depth 1) so any branch/tag/SHA is pinned on a cold cache. + await invokeGit(["-C", cache, "init", "--quiet"]); + await invokeGit(["-C", cache, "remote", "add", "origin", repoUrl]); + if (sparseCheckoutPaths.length > 0) { + await invokeGit(["-C", cache, "sparse-checkout", "init", "--cone"]); + await invokeGit(["-C", cache, "sparse-checkout", "set", ...sparseCheckoutPaths]); + } + await invokeGit(["-C", cache, "fetch", "--depth", "1", "--filter=blob:none", "origin", ref]); + // Land FETCH_HEAD on a real local branch named (not detached) so Vally's worktree + // fixtures can resolve `git worktree add --detach `. + await invokeGit(["-C", cache, "checkout", "-B", ref, "FETCH_HEAD"]); + fs.writeFileSync(stamp, new Date().toISOString()); + } else { + let stale = true; + if (fs.existsSync(stamp)) { + const ageHours = (Date.now() - fs.statSync(stamp).mtimeMs) / 3_600_000; + stale = ageHours > maxAgeHours; + } + if (stale) { + console.log(`[sync-eval-git-repo] Refreshing cache (>${maxAgeHours}h old): ${cache}`); + await invokeGit(["-C", cache, "fetch", "--depth", "1", "origin", ref]); + // Re-point the local branch at FETCH_HEAD (also repairs a previously detached cache) + // so the worktree fixtures keep resolving. + await invokeGit(["-C", cache, "checkout", "-B", ref, "FETCH_HEAD"]); + fs.writeFileSync(stamp, new Date().toISOString()); + } else { + console.log(`[sync-eval-git-repo] Cache is fresh (<${maxAgeHours}h): ${cache}`); + } + } + + return cache; +} + +// ----- CLI ----- + +function parseArgs(argv) { + const options = { sparseCheckoutPaths: [], maxAgeHours: 24 }; + let sparseGiven = false; + for (let i = 0; i < argv.length; i++) { + const next = () => argv[++i]; + switch (argv[i]) { + case "--cache-root": + options.cacheRoot = next(); + break; + case "--repo-url": + options.repoUrl = next(); + break; + case "--repo-name": + options.repoName = next(); + break; + case "--ref": + options.ref = next(); + break; + case "--sparse": + options.sparseCheckoutPaths.push(next()); + sparseGiven = true; + break; + case "--max-age-hours": + options.maxAgeHours = Number(next()); + break; + default: + throw new Error(`Unknown argument: ${argv[i]}`); + } + } + // Only override the default sparse paths when --sparse was actually passed. + if (!sparseGiven) { + delete options.sparseCheckoutPaths; + } + return options; +} + +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + syncRepo(parseArgs(process.argv.slice(2))) + .then((cache) => { + console.log(cache); // echo the cache path so a wrapper can capture it + }) + .catch((error) => { + console.error(error instanceof Error ? error.message : error); + process.exit(1); + }); +} diff --git a/eng/common/scripts/eval/test/build-eval-summary.test.ts b/eng/common/scripts/eval/test/build-eval-summary.test.ts new file mode 100644 index 000000000000..e1e77dacebc0 --- /dev/null +++ b/eng/common/scripts/eval/test/build-eval-summary.test.ts @@ -0,0 +1,206 @@ +// node:test unit tests for build-eval-summary.ts (port of Build-EvalSummary.Tests.ps1). +// Run from eng/common/scripts/eval: npm test + +import assert from "node:assert/strict"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { after, before, beforeEach, describe, it } from "node:test"; + +import { getEvalSummary, formatEvalSummaryMarkdown } from "../build-eval-summary.ts"; + +// Convenience: build the summary and also write the markdown, returning both. +function summarize(resultsRoot, outFile) { + const shards = getEvalSummary(resultsRoot); + const markdown = formatEvalSummaryMarkdown(shards); + fs.writeFileSync(outFile, markdown, "utf8"); + return { shards, markdown }; +} + +describe("build-eval-summary", () => { + let root; + let outFile; + + before(() => { + root = fs.mkdtempSync(path.join(os.tmpdir(), "vally-summary-")); + + const newJunit = (shard, xml) => { + const dir = path.join(root, `eval-result-${shard}`); + fs.mkdirSync(dir, { recursive: true }); + fs.writeFileSync(path.join(dir, "junit.xml"), xml); + }; + + // area_github: 2 pass. + newJunit( + "area_github", + ` + + + + +` + ); + + // area_typespec: 1 pass, 1 fail, 1 skip. + newJunit( + "area_typespec", + ` + + + expected tool call + + +` + ); + + // area_multitrial: two stimuli, each run 5 times, gated at 0.8. + // 'flaky pass' 4/5 (>= 0.8 passes); 'flaky fail' 2/5 (< 0.8 fails). + newJunit( + "area_multitrial", + ` + + + + + + nope + + + + nope + nope + nope + +` + ); + + // area_multifile: one shard with TWO JUnit files; total must be 4, not double-counted. + const multiDir = path.join(root, "eval-result-area_multifile"); + fs.mkdirSync(multiDir, { recursive: true }); + fs.writeFileSync( + path.join(multiDir, "part1.xml"), + ` + + + + +` + ); + fs.writeFileSync( + path.join(multiDir, "part2.xml"), + ` + + + nope + +` + ); + }); + + after(() => fs.rmSync(root, { recursive: true, force: true })); + + beforeEach(() => { + outFile = path.join(root, `summary-${Math.random().toString(36).slice(2)}.md`); + }); + + it("aggregates pass/fail/skip per shard", () => { + const { shards } = summarize(root, outFile); + assert.equal(shards.area_github.total, 2); + assert.equal(shards.area_github.failed, 0); + assert.equal(shards.area_typespec.total, 3); + assert.equal(shards.area_typespec.failed, 1); + assert.equal(shards.area_typespec.skipped, 1); + }); + + it("captures the failing scenario name", () => { + const { shards } = summarize(root, outFile); + assert.ok(shards.area_typespec.failures.includes("renames client (0/1 runs passed)")); + }); + + it("collapses per-trial testcases to one stimulus and applies the threshold", () => { + const { shards } = summarize(root, outFile); + assert.equal(shards.area_multitrial.total, 2); + assert.equal(shards.area_multitrial.failed, 1); + assert.ok(shards.area_multitrial.failures.includes("flaky fail (2/5 runs passed)")); + assert.ok(!shards.area_multitrial.failures.includes("flaky pass (4/5 runs passed)")); + }); + + it("does not double-count totals when a shard has multiple JUnit files", () => { + const { shards } = summarize(root, outFile); + assert.equal(shards.area_multifile.total, 4); + assert.equal(shards.area_multifile.failed, 1); + const deltaCount = shards.area_multifile.failures.filter((f) => f.startsWith("delta ")).length; + assert.equal(deltaCount, 1); + }); + + it("writes a Markdown file with an overall FAILED header when any shard is red", () => { + const { markdown } = summarize(root, outFile); + assert.match(markdown, /## .* Vally eval results — FAILED/); + assert.match(markdown, /\| area_github \| .* \| 2 \| 0 \| 0 \|/); + assert.match(markdown, /failing scenarios/i); + assert.match(markdown, /renames client/); + }); + + it("reports PASSED when no shard has failures", () => { + const passRoot = path.join(root, "pass-only"); + const dir = path.join(passRoot, "eval-result-area_github"); + fs.mkdirSync(dir, { recursive: true }); + fs.writeFileSync( + path.join(dir, "junit.xml"), + `` + ); + const { markdown } = summarize(passRoot, outFile); + assert.match(markdown, /## .* Vally eval results — PASSED/); + }); + + it("reports NO RESULTS (not PASSED) when an XML has zero testcases", () => { + const emptyRoot = path.join(root, "empty-results"); + const dir = path.join(emptyRoot, "eval-result-area_empty"); + fs.mkdirSync(dir, { recursive: true }); + fs.writeFileSync( + path.join(dir, "junit.xml"), + `` + ); + const { markdown } = summarize(emptyRoot, outFile); + assert.match(markdown, /## .* Vally eval results — NO RESULTS/); + assert.doesNotMatch(markdown, /results — PASSED/); + assert.match(markdown, /No eval testcases were found/); + }); + + it("falls back to a meaningful shard name when not under eval-result-*", () => { + const fbRoot = path.join(root, "fallback"); + const dir = path.join(fbRoot, "_unit5", "2026-06-17T23-53-02-457Z"); + fs.mkdirSync(dir, { recursive: true }); + fs.writeFileSync( + path.join(dir, "eval-results.junit.xml"), + `` + ); + const { shards } = summarize(fbRoot, outFile); + assert.ok("_unit5" in shards); + assert.ok(!("unknown" in shards)); + }); + + it("supersedes an earlier job attempt with the highest attempt on rerun", () => { + const rerunRoot = path.join(root, "rerun"); + // Attempt 1 failed; attempt 2 (the rerun) passed. Only attempt 2 should count, and the + // shard name must drop the - suffix so it reads as a single shard. + const a1 = path.join(rerunRoot, "eval-result-area_flaky-1"); + const a2 = path.join(rerunRoot, "eval-result-area_flaky-2"); + fs.mkdirSync(a1, { recursive: true }); + fs.mkdirSync(a2, { recursive: true }); + fs.writeFileSync( + path.join(a1, "junit.xml"), + `nope` + ); + fs.writeFileSync( + path.join(a2, "junit.xml"), + `` + ); + const { shards } = summarize(rerunRoot, outFile); + assert.ok("area_flaky" in shards); + assert.ok(!("area_flaky-1" in shards)); + assert.ok(!("area_flaky-2" in shards)); + assert.equal(shards.area_flaky.total, 1); + assert.equal(shards.area_flaky.failed, 0); + }); +}); diff --git a/eng/common/scripts/eval/test/collect-stimuli.test.ts b/eng/common/scripts/eval/test/collect-stimuli.test.ts new file mode 100644 index 000000000000..17deca963305 --- /dev/null +++ b/eng/common/scripts/eval/test/collect-stimuli.test.ts @@ -0,0 +1,317 @@ +// node:test unit tests for collect-stimuli.ts (port of Split-EvalSuite.Tests.ps1). +// Run from eng/common/scripts/eval: npm test +// +// Sharding is always by `area` tag: one shard per area, each carrying every eval of that +// area via repeated `-e` flags. Untagged evals fall back to their parent folder. + +import assert from "node:assert/strict"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { after, before, describe, it } from "node:test"; + +import { buildMatrix } from "../collect-stimuli.ts"; + +// Helper: write a file, creating parent directories as needed. +function writeFile(filePath, content) { + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + fs.writeFileSync(filePath, content); +} + +// Collect warnings instead of printing them, so tests can assert on them. +function withWarnings(fn) { + const warnings = []; + const result = fn((message) => warnings.push(message)); + return { result, warnings }; +} + +describe("collect-stimuli (default discovery)", () => { + let root; + + before(() => { + root = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-")); + writeFile( + path.join(root, "tools/prompt-to-tool-github.eval.yaml"), + "tags:\n area: github" + ); + writeFile( + path.join(root, "tools/add-arm-resource.eval.yaml"), + "tags:\n area: typespec" + ); + writeFile( + path.join(root, "workflows/mock/rename-client-property.eval.yaml"), + "tags:\n area: typespec" + ); + writeFile( + path.join(root, "workflows/live/release-planner.eval.yaml"), + "tags:\n area: release-plan" + ); + }); + + after(() => fs.rmSync(root, { recursive: true, force: true })); + + it("discovers the hermetic mock-vertical files by default", () => { + // github (1 file) + typespec (2 files) = 2 area shards from 3 files. + const matrix = buildMatrix({ roots: [root] }); + assert.equal(Object.keys(matrix).length, 2); + assert.ok("area_github" in matrix); + assert.ok("area_typespec" in matrix); + }); + + it("excludes the live tier from the default pattern", () => { + const matrix = buildMatrix({ roots: [root] }); + for (const entry of Object.values(matrix)) { + assert.doesNotMatch(entry.evalArgs, /live\//); + } + assert.ok(!("area_release_plan" in matrix)); + }); + + it("emits forward-slashed `-e` args", () => { + const matrix = buildMatrix({ roots: [root] }); + for (const entry of Object.values(matrix)) { + assert.doesNotMatch(entry.evalArgs, /\\/); + assert.match(entry.evalArgs, /^-e (tools|workflows)\//); + } + }); + + it("produces filesystem-safe shard names", () => { + const matrix = buildMatrix({ roots: [root] }); + for (const key of Object.keys(matrix)) { + assert.match(key, /^[A-Za-z0-9_]+$/); + } + }); + + it("throws when no eval files match", () => { + assert.throws(() => + buildMatrix({ roots: [root], patterns: ["evals/none/*.eval.yaml"] }) + ); + }); +}); + +describe("collect-stimuli (area grouping)", () => { + let root; + + before(() => { + root = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-area-")); + writeFile( + path.join(root, "tools/prompt-to-tool-github.eval.yaml"), + "tags:\n area: github" + ); + writeFile( + path.join(root, "tools/add-arm-resource.eval.yaml"), + "tags:\n area: typespec" + ); + writeFile( + path.join(root, "workflows/mock/rename-client-property.eval.yaml"), + "tags:\n area: typespec" + ); + }); + + after(() => fs.rmSync(root, { recursive: true, force: true })); + + it("collapses files into one shard per area tag", () => { + const matrix = buildMatrix({ roots: [root] }); + // github (1 file) + typespec (2 files) = 2 shards from 3 files. + assert.equal(Object.keys(matrix).length, 2); + assert.ok("area_github" in matrix); + assert.ok("area_typespec" in matrix); + }); + + it("groups every file of an area into one shard via repeated -e flags", () => { + const matrix = buildMatrix({ roots: [root] }); + const count = (matrix.area_typespec.evalArgs.match(/-e /g) || []).length; + assert.equal(count, 2); + }); + + it("throws when two area tags collide after sanitization", () => { + const collideRoot = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-area-collide-")); + try { + writeFile( + path.join(collideRoot, "tools/a.eval.yaml"), + "tags:\n area: release-plan" + ); + writeFile( + path.join(collideRoot, "tools/b.eval.yaml"), + "tags:\n area: release_plan" + ); + assert.throws( + () => buildMatrix({ roots: [collideRoot] }), + /Duplicate shard name 'area_release_plan'/ + ); + } finally { + fs.rmSync(collideRoot, { recursive: true, force: true }); + } + }); +}); + +describe("collect-stimuli (area with an untagged eval)", () => { + let root; + + before(() => { + root = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-ut-")); + writeFile(path.join(root, "tools/tagged.eval.yaml"), "tags:\n area: github"); + writeFile(path.join(root, "tools/untagged.eval.yaml"), "no tags here"); + }); + + after(() => fs.rmSync(root, { recursive: true, force: true })); + + it("falls back to the parent folder name as the area", () => { + const { result: matrix } = withWarnings((warn) => + buildMatrix({ + roots: [root], + patterns: ["tools/*.eval.yaml"], + warn, + }) + ); + assert.ok("area_github" in matrix); + assert.ok("area_tools" in matrix); + assert.match(matrix.area_tools.evalArgs, /untagged\.eval\.yaml/); + }); + + it("does not lump untagged files into a single untagged bucket", () => { + const { result: matrix } = withWarnings((warn) => + buildMatrix({ + roots: [root], + patterns: ["tools/*.eval.yaml"], + warn, + }) + ); + assert.ok(!("area_untagged" in matrix)); + }); + + it("warns when an eval has no area tag", () => { + const { warnings } = withWarnings((warn) => + buildMatrix({ + roots: [root], + patterns: ["tools/*.eval.yaml"], + warn, + }) + ); + assert.match(warnings.join("\n"), /untagged\.eval\.yaml/); + }); +}); + +describe("collect-stimuli (overlapping patterns)", () => { + let root; + + before(() => { + root = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-overlap-")); + writeFile( + path.join(root, "tools/add-arm-resource.eval.yaml"), + "tags:\n area: typespec" + ); + writeFile( + path.join(root, "tools/prompt-to-tool-github.eval.yaml"), + "tags:\n area: github" + ); + }); + + after(() => fs.rmSync(root, { recursive: true, force: true })); + + it("does not emit a duplicate -e flag for a file matched by multiple patterns", () => { + const matrix = buildMatrix({ + roots: [root], + patterns: ["tools/*.eval.yaml", "tools/add-arm-resource.eval.yaml"], + }); + const count = (matrix.area_typespec.evalArgs.match(/add-arm-resource/g) || []).length; + assert.equal(count, 1); + }); +}); + +describe("collect-stimuli (multiple eval roots: repo + common)", () => { + let repoRoot; + let commonRoot; + + before(() => { + repoRoot = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-repo-")); + commonRoot = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-common-")); + writeFile( + path.join(repoRoot, "tools/repo-specific.eval.yaml"), + "tags:\n area: repo" + ); + writeFile( + path.join(commonRoot, "tools/shared-scenario.eval.yaml"), + "tags:\n area: shared" + ); + }); + + after(() => { + fs.rmSync(repoRoot, { recursive: true, force: true }); + fs.rmSync(commonRoot, { recursive: true, force: true }); + }); + + it("collects evals from both roots into one matrix", () => { + const matrix = buildMatrix({ + roots: [repoRoot, commonRoot], + patterns: ["tools/*.eval.yaml"], + }); + const keys = Object.keys(matrix); + assert.equal(keys.length, 2); + assert.ok(keys.includes("area_repo")); + assert.ok(keys.includes("area_shared")); + }); + + it("computes each file's relative path against its own root", () => { + const matrix = buildMatrix({ + roots: [repoRoot, commonRoot], + patterns: ["tools/*.eval.yaml"], + }); + assert.equal( + matrix.area_shared.evalArgs, + "-e tools/shared-scenario.eval.yaml" + ); + }); +}); + +describe("collect-stimuli (pathBase anchors scattered roots to one run root)", () => { + let parent; + let runRoot; + let scatteredRoot; + + before(() => { + // A common parent so the scattered root is a sibling of the run root, yielding a + // clean `../` relative path. + parent = fs.mkdtempSync(path.join(os.tmpdir(), "vally-matrix-base-")); + runRoot = path.join(parent, "project"); + scatteredRoot = path.join(parent, "extra"); + writeFile( + path.join(runRoot, "tools/in-project.eval.yaml"), + "tags:\n area: inproject" + ); + writeFile( + path.join(scatteredRoot, "workflows/out-of-tree.eval.yaml"), + "tags:\n area: scattered" + ); + }); + + after(() => fs.rmSync(parent, { recursive: true, force: true })); + + it("anchors every -e path to pathBase, including roots outside it", () => { + const matrix = buildMatrix({ + roots: [runRoot, scatteredRoot], + pathBase: runRoot, + patterns: ["tools/**/*.eval.yaml", "workflows/*.eval.yaml"], + }); + // The in-project file stays a simple relative path; the scattered one walks up. + assert.equal( + matrix.area_inproject.evalArgs, + "-e tools/in-project.eval.yaml" + ); + assert.equal( + matrix.area_scattered.evalArgs, + "-e ../extra/workflows/out-of-tree.eval.yaml" + ); + }); + + it("falls back to per-root relative paths when no pathBase is given", () => { + const matrix = buildMatrix({ + roots: [scatteredRoot], + patterns: ["workflows/*.eval.yaml"], + }); + // Without a base, the path is relative to the root it was found under (no `../`). + assert.equal( + matrix.area_scattered.evalArgs, + "-e workflows/out-of-tree.eval.yaml" + ); + }); +}); diff --git a/eng/common/scripts/eval/test/init-eval-git-fixtures.test.ts b/eng/common/scripts/eval/test/init-eval-git-fixtures.test.ts new file mode 100644 index 000000000000..a1804a4f73d4 --- /dev/null +++ b/eng/common/scripts/eval/test/init-eval-git-fixtures.test.ts @@ -0,0 +1,162 @@ +// Tests for init-eval-git-fixtures.ts — discovery only (the dry-run path that clones nothing). + +import assert from "node:assert/strict"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { after, before, describe, it } from "node:test"; + +import { dedupeFixtures, getEvalGitFixtures } from "../init-eval-git-fixtures.ts"; + +const here = path.dirname(fileURLToPath(import.meta.url)); + +describe("getEvalGitFixtures discovery", () => { + let root; + + before(() => { + // Throwaway eval tree so the tests do not depend on real eval content. + root = fs.mkdtempSync(path.join(os.tmpdir(), "vally-fixtures-test-")); + fs.mkdirSync(path.join(root, "tools"), { recursive: true }); + fs.mkdirSync(path.join(root, "workflows/mock"), { recursive: true }); + + // A unit eval with NO git fixture. + fs.writeFileSync( + path.join(root, "tools/prompt-to-tool-github.eval.yaml"), + "tags:\n area: github\nstimuli:\n - name: x\n" + ); + + // A workflow eval declaring the same azure-rest-api-specs fixture twice + // (two stimuli) — should collapse to one unique fixture. + const mock = [ + "stimuli:", + " - name: a", + " environment:", + " git:", + " type: worktree", + " source: ../../../../../../artifacts/specs-cache/azure-rest-api-specs", + " ref: main", + " - name: b", + " environment:", + " git:", + " type: worktree", + " source: ../../../../../../artifacts/specs-cache/azure-rest-api-specs", + " ref: main", + "", + ].join("\n"); + fs.writeFileSync( + path.join(root, "workflows/mock/release-planner-workflows.eval.yaml"), + mock + ); + }); + + after(() => { + fs.rmSync(root, { recursive: true, force: true }); + }); + + it("discovers the declared git fixture", () => { + const fixtures = dedupeFixtures(getEvalGitFixtures({ root })); + assert.equal(fixtures.length, 1); + }); + + it("deduplicates identical fixtures across stimuli", () => { + const fixtures = dedupeFixtures(getEvalGitFixtures({ root })); + const specs = fixtures.filter((f) => f.repoName === "azure-rest-api-specs"); + assert.equal(specs.length, 1); + }); + + it("parses the repo name, ref, and resolves an absolute cache path", () => { + const fixtures = dedupeFixtures(getEvalGitFixtures({ root })); + const f = fixtures[0]; + assert.equal(f.repoName, "azure-rest-api-specs"); + assert.equal(f.ref, "main"); + assert.match(f.cachePath, /artifacts[\\/]specs-cache[\\/]azure-rest-api-specs$/); + assert.doesNotMatch(f.cachePath, /\.\./); // '..' segments must be collapsed + assert.ok(path.isAbsolute(f.cachePath)); + }); + + it("is a no-op when the scanned suite declares no git fixtures", () => { + const fixtures = getEvalGitFixtures({ root, patterns: ["tools/*.eval.yaml"] }); + assert.equal(fixtures.length, 0); + }); + + it("defaults the ref to main when none is declared", () => { + const noRef = [ + "stimuli:", + " - name: a", + " environment:", + " git:", + " type: worktree", + " source: ../../../../../../artifacts/specs-cache/some-other-repo", + "", + ].join("\n"); + const file = path.join(root, "workflows/mock/no-ref.eval.yaml"); + fs.writeFileSync(file, noRef); + try { + const fixtures = dedupeFixtures(getEvalGitFixtures({ root })); + const other = fixtures.find((f) => f.repoName === "some-other-repo"); + assert.ok(other); + assert.equal(other.ref, "main"); + } finally { + fs.rmSync(file, { force: true }); + } + }); +}); + +// Folder-level invariant guard (runs against the REAL Vally eval tree when present). Because +// Vally resolves `git.source` relative to each eval file's own directory (no repo-root/env +// anchor — see microsoft/vally#562), the only way a single repo-relative path stays correct is +// if every git-fixture eval sits at the same depth and points at the same cache root. These tests +// fail loudly if a new fixture file is dropped at the wrong level. In synced repos that do not +// contain the Vally suite they skip. +describe("Folder-level invariant for real git fixtures", () => { + const repoRoot = path.resolve(here, "../../../../.."); + const vallyRoot = path.join(repoRoot, "evals"); + const evalRoots = [path.join(vallyRoot, "tools"), path.join(vallyRoot, "workflows")]; + const present = evalRoots.some((root) => fs.existsSync(root)); + + const expectedCacheRoot = path + .join(repoRoot, "artifacts", "specs-cache") + .replace(/[\\/]+$/, ""); + + function collectRealFixtures() { + const srcRegex = /^\s*source:\s*(\.\.\S+)/gm; + const results = []; + const stack = evalRoots.filter((root) => fs.existsSync(root)); + while (stack.length > 0) { + const dir = stack.pop(); + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + stack.push(full); + } else if (entry.name.endsWith(".eval.yaml")) { + const content = fs.readFileSync(full, "utf8"); + let m; + srcRegex.lastIndex = 0; + while ((m = srcRegex.exec(content)) !== null) { + const source = m[1]; + const abs = path.resolve(path.dirname(full), source); + results.push({ + file: full, + source, + parent: path.dirname(abs).replace(/[\\/]+$/, ""), + depth: source.split(/[\\/]/).filter((s) => s === "..").length, + }); + } + } + } + } + return results; + } + + it("every git-fixture source resolves to the canonical artifacts/specs-cache root", { skip: !present }, () => { + for (const f of collectRealFixtures()) { + assert.equal(f.parent, expectedCacheRoot, `${f.file} declares source '${f.source}'`); + } + }); + + it("all git-fixture eval files sit at the same folder depth", { skip: !present }, () => { + const depths = [...new Set(collectRealFixtures().map((f) => f.depth))]; + assert.ok(depths.length <= 1, "a uniform ../ depth keeps one relative path valid for every fixture file"); + }); +}); diff --git a/eng/common/scripts/eval/test/verdict.test.ts b/eng/common/scripts/eval/test/verdict.test.ts new file mode 100644 index 000000000000..fe4978ea5bc4 --- /dev/null +++ b/eng/common/scripts/eval/test/verdict.test.ts @@ -0,0 +1,122 @@ +// node:test unit tests for lib/verdict.ts (port of Invoke-EvalShard.Tests.ps1, which +// exercised the verdict helpers). Run from eng/common/scripts/eval: npm test + +import assert from "node:assert/strict"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { after, before, describe, it } from "node:test"; + +import { getVallyShardVerdict } from "../lib/verdict.ts"; + +describe("getVallyShardVerdict", () => { + let root; + + before(() => { + root = fs.mkdtempSync(path.join(os.tmpdir(), "vally-shard-")); + }); + + after(() => fs.rmSync(root, { recursive: true, force: true })); + + // Mimic Vally's nested per-run timestamp folder under the shard output dir. + function newRunSummary(shard, jsonl, timestamp = "2026-06-18T04-27-19-656Z") { + const dir = path.join(root, shard, timestamp); + fs.mkdirSync(dir, { recursive: true }); + fs.writeFileSync(path.join(dir, "results.jsonl"), jsonl); + return path.join(root, shard); + } + + it("passes a scored eval above the threshold", () => { + const dir = newRunSummary( + "above", + '{"type":"run-summary","passed":true,"hadExecutionErrors":false,"evals":[{"name":"e","passed":true,"scoringApplied":true,"overallScore":0.971,"threshold":0.8,"stimuliRun":7,"stimuliTotal":7}]}' + ); + const v = getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }); + assert.equal(v.found, true); + assert.equal(v.passed, true); + }); + + it("passes a scored eval exactly on the threshold boundary", () => { + const dir = newRunSummary( + "boundary", + '{"type":"run-summary","passed":true,"hadExecutionErrors":false,"evals":[{"name":"e","passed":true,"scoringApplied":true,"overallScore":0.8,"threshold":0.8,"stimuliRun":5,"stimuliTotal":5}]}' + ); + assert.equal(getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }).passed, true); + }); + + it("passes when the verdict cleared the threshold but the run had execution errors", () => { + const dir = newRunSummary( + "execerrors", + '{"type":"run-summary","passed":false,"hadExecutionErrors":true,"evals":[{"name":"e","passed":false,"scoringApplied":true,"overallScore":0.971,"threshold":0.8,"stimuliRun":7,"stimuliTotal":7}]}' + ); + const v = getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }); + assert.equal(v.passed, true); + assert.equal(v.hadExecutionErrors, true); + }); + + it("fails a scored eval below the threshold", () => { + const dir = newRunSummary( + "below", + '{"type":"run-summary","passed":false,"hadExecutionErrors":false,"evals":[{"name":"e","passed":false,"scoringApplied":true,"overallScore":0.6,"threshold":0.8,"stimuliRun":5,"stimuliTotal":5}]}' + ); + assert.equal(getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }).passed, false); + }); + + it("fails a scored eval that cleared the threshold but ran zero stimuli (no vacuous pass)", () => { + const dir = newRunSummary( + "norun", + '{"type":"run-summary","passed":false,"hadExecutionErrors":false,"evals":[{"name":"e","passed":false,"scoringApplied":true,"overallScore":1.0,"threshold":0.8,"stimuliRun":0,"stimuliTotal":3}]}' + ); + assert.equal(getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }).passed, false); + }); + + it("honours a binary (unscored) eval verdict", () => { + const dir = newRunSummary( + "binary", + '{"type":"run-summary","passed":true,"hadExecutionErrors":false,"evals":[{"name":"e","passed":true,"scoringApplied":false,"stimuliRun":2,"stimuliTotal":2}]}' + ); + assert.equal(getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }).passed, true); + }); + + it("fails the shard when any eval in a multi-eval shard is below threshold", () => { + const dir = newRunSummary( + "mixed", + '{"type":"run-summary","passed":false,"hadExecutionErrors":false,"evals":[{"name":"ok","passed":true,"scoringApplied":true,"overallScore":1.0,"threshold":0.8,"stimuliRun":3,"stimuliTotal":3},{"name":"bad","passed":false,"scoringApplied":true,"overallScore":0.5,"threshold":0.8,"stimuliRun":4,"stimuliTotal":4}]}' + ); + assert.equal(getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }).passed, false); + }); + + it("reports not-found when there is no results.jsonl", () => { + const dir = path.join(root, "empty"); + fs.mkdirSync(dir, { recursive: true }); + const v = getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }); + assert.equal(v.found, false); + assert.equal(v.passed, false); + }); + + it("reports not-found when results.jsonl has no run-summary record", () => { + const dir = newRunSummary("nosummary", '{"type":"trial","name":"x"}'); + assert.equal(getVallyShardVerdict({ resultsDir: dir, threshold: 0.8 }).found, false); + }); + + it("uses the newest results.jsonl when several runs exist", () => { + const shardDir = newRunSummary( + "multi", + '{"type":"run-summary","passed":false,"hadExecutionErrors":false,"evals":[{"name":"e","passed":false,"scoringApplied":true,"overallScore":0.5,"threshold":0.8,"stimuliRun":4,"stimuliTotal":4}]}', + "2026-06-18T04-27-19-656Z" + ); + const newerDir = path.join(shardDir, "2026-06-18T05-00-00-000Z"); + fs.mkdirSync(newerDir, { recursive: true }); + const newerFile = path.join(newerDir, "results.jsonl"); + fs.writeFileSync( + newerFile, + '{"type":"run-summary","passed":true,"hadExecutionErrors":false,"evals":[{"name":"e","passed":true,"scoringApplied":true,"overallScore":1.0,"threshold":0.8,"stimuliRun":4,"stimuliTotal":4}]}' + ); + // Make the newer file unambiguously newer (avoid same-millisecond ties on fast disks). + const older = path.join(shardDir, "2026-06-18T04-27-19-656Z", "results.jsonl"); + const past = new Date(Date.now() - 60_000); + fs.utimesSync(older, past, past); + + assert.equal(getVallyShardVerdict({ resultsDir: shardDir, threshold: 0.8 }).passed, true); + }); +}); diff --git a/eng/common/scripts/logging.ps1 b/eng/common/scripts/logging.ps1 index ae0c85438659..9178ec9402fb 100644 --- a/eng/common/scripts/logging.ps1 +++ b/eng/common/scripts/logging.ps1 @@ -126,3 +126,20 @@ function ProcessMsBuildLogLine($line) { } return $line } + +function ConvertTo-DevOpsLoggingValue($value) { + if ($null -eq $value) { + return "" + } + + return "$value".Replace('%', '%25').Replace(';', '%3B').Replace(']', '%5D').Replace("`r", '%0D').Replace("`n", '%0A') +} + +function Set-PipelineVariable($Name, $Value = "", [switch]$IsOutput, [switch]$IsSecret) { + $properties = "variable=$Name" + if ($IsSecret) { $properties += ";issecret=true" } + if ($IsOutput) { $properties += ";isOutput=true" } + + $escapedValue = ConvertTo-DevOpsLoggingValue $Value + Write-Host "##vso[task.setvariable $properties]$escapedValue" +} diff --git a/eng/common/scripts/login-to-github.ps1 b/eng/common/scripts/login-to-github.ps1 index c0b050f27353..c3553b91a208 100644 --- a/eng/common/scripts/login-to-github.ps1 +++ b/eng/common/scripts/login-to-github.ps1 @@ -22,6 +22,9 @@ Prefix for the exported variable name (default: GH_TOKEN). With a single owner, exports as GH_TOKEN. With multiple owners, exports as GH_TOKEN_. +.PARAMETER AlwaysUseOwnerSuffix + Export tokens as _ even when only one owner is requested. + .PARAMETER ExportAsOutputVariable When set in Azure DevOps, also exports the variable as an output variable (##vso[task.setvariable ...;isOutput=true]) for downstream jobs/stages. @@ -39,6 +42,7 @@ param( [string] $GitHubAppId = '1086291', # Azure SDK Automation App ID [string[]] $InstallationTokenOwners = @("Azure"), [string] $VariableNamePrefix = "GH_TOKEN", + [switch] $AlwaysUseOwnerSuffix, [switch] $ExportAsOutputVariable ) @@ -231,7 +235,7 @@ function Invoke-LoginToGitHub { $installationToken = New-GitHubInstallationToken -Jwt $jwt -InstallationId $installationId -ApiBase $GitHubApiBaseUrl -ApiVersion $GitHubApiVersion $variableName = $VariableNamePrefix - if ($InstallationTokenOwners.Count -gt 1) { + if ($AlwaysUseOwnerSuffix -or $InstallationTokenOwners.Count -gt 1) { $variableName = $VariableNamePrefix + "_" + $normalizedOwner } diff --git a/eng/common/scripts/tests/Create-APIViewRevision.Tests.ps1 b/eng/common/scripts/tests/Create-APIViewRevision.Tests.ps1 new file mode 100644 index 000000000000..19e9124f1b8e --- /dev/null +++ b/eng/common/scripts/tests/Create-APIViewRevision.Tests.ps1 @@ -0,0 +1,128 @@ +Describe "Create-APIViewRevision.ps1" { + BeforeAll { + $scriptPath = Join-Path (Join-Path $PSScriptRoot "..") "Create-APIViewRevision.ps1" + + function global:Find-Unknown-Artifacts-For-Apireview { + param ([string] $ArtifactPath, [string] $ArtifactName) + return @{ $ArtifactName = $global:TestPackagePath } + } + + function global:az { + $global:LASTEXITCODE = 0 + return '{"accessToken":"test-token"}' + } + + function global:Invoke-WebRequest { + param ( + [string] $Method, + [string] $Uri, + [object] $Body, + [hashtable] $Headers, + [int] $MaximumRetryCount + ) + + $global:ApiViewRequests += [PSCustomObject]@{ + Method = $Method + Uri = $Uri + Body = if ($null -ne $Body) { $Body.ReadAsStringAsync().GetAwaiter().GetResult() } else { "" } + Headers = $Headers + MaximumRetryCount = $MaximumRetryCount + } + return [PSCustomObject]@{ Content = "created"; StatusCode = 200 } + } + } + + AfterAll { + Remove-Item Function:\Find-Unknown-Artifacts-For-Apireview -ErrorAction SilentlyContinue + Remove-Item Function:\az -ErrorAction SilentlyContinue + Remove-Item Function:\Invoke-WebRequest -ErrorAction SilentlyContinue + Remove-Variable TestPackagePath, ApiViewRequests, LanguageShort -Scope Global -ErrorAction SilentlyContinue + } + + BeforeEach { + $global:LanguageShort = "Python" + $testRoot = Join-Path $TestDrive "artifacts" + $packageName = "test-package" + $packageDirectory = Join-Path $testRoot $packageName + $packageInfoDirectory = Join-Path $testRoot "PackageInfo" + New-Item -ItemType Directory -Path $packageDirectory, $packageInfoDirectory -Force | Out-Null + + $global:TestPackagePath = Join-Path $packageDirectory "$packageName.zip" + Set-Content -Path $global:TestPackagePath -Value "package" + $packageInfoPath = Join-Path $packageInfoDirectory "$packageName.json" + @{ + ArtifactName = $packageName + Name = $packageName + Version = "1.0.0" + SdkType = "client" + ReleaseStatus = "Unreleased" + } | ConvertTo-Json | Set-Content $packageInfoPath + $global:ApiViewRequests = @() + } + + It "uploads the source artifact when no review token exists" { + & $scriptPath -ArtifactPath $testRoot -PackageName $packageName -SourceBranch main -DefaultBranch main + + $global:ApiViewRequests.Count | Should Be 1 + $global:ApiViewRequests[0].Uri | Should Be "https://apiview.dev/autoreview/upload" + $global:ApiViewRequests[0].Headers.Authorization | Should Be "Bearer test-token" + $global:ApiViewRequests[0].MaximumRetryCount | Should Be 3 + $global:ApiViewRequests[0].Body | Should Match '(?s)name="?label"?.*?Source Branch:main' + $global:ApiViewRequests[0].Body | Should Match '(?s)name="?packageVersion"?.*?1.0.0' + $global:ApiViewRequests[0].Body | Should Match '(?s)name="?setReleaseTag"?.*?False' + $global:ApiViewRequests[0].Body | Should Match '(?s)name="?packageType"?.*?client' + } + + It "creates a revision from a review token when one exists" { + Set-Content -Path (Join-Path $packageDirectory "${packageName}_Python.json") -Value "{}" + + & $scriptPath -ArtifactPath $testRoot -PackageName $packageName -SourceBranch main -DefaultBranch main -BuildId 123 -RepoName Azure/test + + $global:ApiViewRequests.Count | Should Be 1 + $global:ApiViewRequests[0].Uri | Should Match "/create\?" + $global:ApiViewRequests[0].Uri | Should Match "buildId=123" + $global:ApiViewRequests[0].Uri | Should Match "repoName=Azure%2ftest" + $global:ApiViewRequests[0].Uri | Should Match "packageName=test-package" + $global:ApiViewRequests[0].Uri | Should Match "reviewFilePath=test-package_Python.json" + $global:ApiViewRequests[0].Uri | Should Not Match "setReleaseTag" + $global:ApiViewRequests[0].MaximumRetryCount | Should Be 3 + } + + It "requires pipeline metadata when creating from a review token" { + Set-Content -Path (Join-Path $packageDirectory "${packageName}_Python.json") -Value "{}" + + $caughtError = $null + try { + & $scriptPath -ArtifactPath $testRoot -PackageName $packageName -SourceBranch main -DefaultBranch main + } + catch { + $caughtError = $_ + } + + $caughtError.Exception.Message | Should Match "BuildId is required" + $global:ApiViewRequests.Count | Should Be 0 + } + + It "requires branch metadata before processing packages" { + $caughtError = $null + try { + & $scriptPath -ArtifactPath $testRoot -PackageName $packageName -SourceBranch "" -DefaultBranch main + } + catch { + $caughtError = $_ + } + + $caughtError.Exception.Message | Should Match "SourceBranch is required" + $global:ApiViewRequests.Count | Should Be 0 + } + + It "skips prerelease revisions from feature branches" { + $packageInfo = Get-Content $packageInfoPath -Raw | ConvertFrom-Json + $packageInfo.Version = "1.0.0-beta.1" + $packageInfo | ConvertTo-Json | Set-Content $packageInfoPath + + & $scriptPath -ArtifactPath $testRoot -PackageName $packageName -SourceBranch feature -DefaultBranch main + + $global:ApiViewRequests.Count | Should Be 0 + } +} diff --git a/eng/common/scripts/tests/Get-PackageApprovalStatus.Tests.ps1 b/eng/common/scripts/tests/Get-PackageApprovalStatus.Tests.ps1 new file mode 100644 index 000000000000..d6a744e3d937 --- /dev/null +++ b/eng/common/scripts/tests/Get-PackageApprovalStatus.Tests.ps1 @@ -0,0 +1,214 @@ +Describe "Get-PackageApprovalStatus.ps1" { + BeforeAll { + $scriptPath = Join-Path (Join-Path $PSScriptRoot "..") "Get-PackageApprovalStatus.ps1" + + function global:azsdk { + param ( + [Parameter(ValueFromRemainingArguments = $true)] + [object[]] $Arguments + ) + + if ($Arguments.Count -eq 1 -and $Arguments[0] -eq "--version") { + $global:LASTEXITCODE = 0 + return $global:AzSdkVersion + } + + $global:CapturedAzSdkArguments = @($Arguments) + $global:CapturedAzSdkInvocations += ,@($Arguments) + $global:LASTEXITCODE = $global:AzSdkExitCode + return $global:AzSdkOutput + } + } + + AfterAll { + Remove-Item Function:\azsdk -ErrorAction SilentlyContinue + Remove-Variable AzSdkExitCode, AzSdkOutput, AzSdkVersion, CapturedAzSdkArguments, CapturedAzSdkInvocations, LanguageShort -Scope Global -ErrorAction SilentlyContinue + } + + BeforeEach { + $global:LanguageShort = "python" + $global:AzSdkExitCode = 0 + $global:AzSdkVersion = "0.6.38" + $global:AzSdkOutput = '{"operation_status":"Succeeded","result":{"isApproved":true,"finalSource":"reviewHub","reason":"approved"}}' + $global:CapturedAzSdkArguments = @() + $global:CapturedAzSdkInvocations = @() + $packageInfoPath = Join-Path $TestDrive "azure-test.json" + @{ + Name = "azure-test" + Version = "1.0.0" + } | ConvertTo-Json | Set-Content $packageInfoPath + } + + It "passes package coordinates, API hash, and repository owner to azsdk" { + $packageInfo = Get-Content $packageInfoPath -Raw | ConvertFrom-Json + $packageInfo | Add-Member -NotePropertyName ApiHash -NotePropertyValue abc123 + $packageInfo | ConvertTo-Json | Set-Content $packageInfoPath + + & $scriptPath -PackageInfoFiles $packageInfoPath -RepoOwner Contoso + + ($global:CapturedAzSdkArguments -join "|") | Should Be (@( + "package", "get-approval-status", + "--language", "python", + "--package-name", "azure-test", + "--package-version", "1.0.0", + "--output", "json", + "--api-hash", "abc123", + "--repo-owner", "Contoso" + ) -join "|") + } + + It "omits the API hash when it is unavailable" { + & $scriptPath -PackageInfoFiles $packageInfoPath + + ($global:CapturedAzSdkArguments -join "|") | Should Not Match "--api-hash" + ($global:CapturedAzSdkArguments -join "|") | Should Not Match "--repo-owner" + } + + It "fails without prompting when the azsdk executable is unavailable" { + $missingExecutable = Join-Path $TestDrive "missing-azsdk.exe" + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath -AzSdkExePath $missingExecutable + } + catch { + $caughtError = $_ + } + + $caughtError | Should Not BeNullOrEmpty + $caughtError.Exception.Message | Should Match "azsdk CLI executable was not found" + } + + It "fails when the azsdk version is unsupported" { + $global:AzSdkVersion = "0.6.37" + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath + } + catch { + $caughtError = $_ + } + + $caughtError.Exception.Message | Should Match "version 0.6.38 or later is required" + $global:CapturedAzSdkInvocations.Count | Should Be 0 + } + + It "fails when azsdk returns a nonzero exit code" { + $global:AzSdkExitCode = 1 + $global:AzSdkOutput = '{"operation_status":"Failed","response_error":"distinct raw command output"}' + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath + } + catch { + $caughtError = $_ + } + + $caughtError | Should Not BeNullOrEmpty + $caughtError.Exception.Message | Should Match "distinct raw command output" + } + + It "logs a reproducible command invocation" { + $packageInfo = Get-Content $packageInfoPath -Raw | ConvertFrom-Json + $packageInfo.Name = "azure test" + $packageInfo | ConvertTo-Json | Set-Content $packageInfoPath + $messages = @(& $scriptPath -PackageInfoFiles $packageInfoPath 6>&1) + + ($messages -join [Environment]::NewLine) | Should Match 'Command: azsdk package get-approval-status --language python --package-name "azure test" --package-version 1.0.0 --output json' + } + + It "shows Review Hub and APIView results before the overall result" { + $global:AzSdkOutput = '{"operation_status":"Succeeded","result":{"isApproved":true,"finalSource":"APIView","reason":"approved","reviewHub":{"isApproved":false,"reason":"repositoryNotSupported","statusCode":200},"apiView":{"isApproved":true,"reason":"approved","statusCode":200,"details":["API review is approved."]}}}' + + $messages = @(& $scriptPath -PackageInfoFiles $packageInfoPath 6>&1) | + ForEach-Object { "$_" } + + [Array]::IndexOf($messages, "API Review Hub") | Should BeLessThan ([Array]::IndexOf($messages, "APIView")) + [Array]::IndexOf($messages, "APIView") | Should BeLessThan ([Array]::IndexOf($messages, "Overall")) + ($messages -join [Environment]::NewLine) | Should Match "Overall\r?\n Status: APPROVED\r?\n Source: APIView\r?\n Reason: approved" + } + + It "includes raw output when azsdk returns malformed output" { + $global:AzSdkExitCode = 1 + $global:AzSdkOutput = "distinct raw command output" + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath + } + catch { + $caughtError = $_ + } + + $caughtError | Should Not BeNullOrEmpty + $caughtError.Exception.Message | Should Match "distinct raw command output" + } + + It "fails when the response is malformed" { + $global:AzSdkOutput = "not json" + + { & $scriptPath -PackageInfoFiles $packageInfoPath } | + Should Throw + } + + It "fails when a successful CLI invocation reports an unapproved result" { + $global:AzSdkOutput = '{"operation_status":"Succeeded","result":{"isApproved":false,"finalSource":"none","reason":"pending"}}' + + { & $scriptPath -PackageInfoFiles $packageInfoPath } | + Should Throw + } + + It "ignores a failed approval check for an unreleased package" { + $packageInfo = Get-Content $packageInfoPath -Raw | ConvertFrom-Json + $packageInfo | Add-Member -NotePropertyName ReleaseStatus -NotePropertyValue Unreleased + $packageInfo | ConvertTo-Json | Set-Content $packageInfoPath + $global:AzSdkExitCode = 1 + $global:AzSdkOutput = '{"operation_status":"Failed","response_error":"Package is not approved."}' + + $messages = @(& $scriptPath -PackageInfoFiles $packageInfoPath 6>&1) + + ($messages -join [Environment]::NewLine) | Should Match "azure-test 1.0.0 is not marked for release. Ignoring approval check failure" + $global:CapturedAzSdkInvocations.Count | Should Be 1 + } + + It "fails when the response contract is missing the result" { + $global:AzSdkOutput = '{"operation_status":"Succeeded"}' + + { & $scriptPath -PackageInfoFiles $packageInfoPath } | + Should Throw + } + + It "fails when the approval decision is not Boolean" { + $global:AzSdkOutput = '{"operation_status":"Succeeded","result":{"isApproved":"false"}}' + + { & $scriptPath -PackageInfoFiles $packageInfoPath } | + Should Throw + } + + It "checks every explicitly supplied package-info file" { + $secondPackageInfoPath = Join-Path $TestDrive "azure-test-two.json" + @{ + Name = "azure-test-two" + Version = "2.0.0" + ApiHash = "def456" + } | ConvertTo-Json | Set-Content $secondPackageInfoPath + + & $scriptPath -PackageInfoFiles @($packageInfoPath, $secondPackageInfoPath) + + $global:CapturedAzSdkInvocations.Count | Should Be 2 + ($global:CapturedAzSdkInvocations[0] -join "|") | Should Match "--package-name\|azure-test\|--package-version\|1.0.0" + ($global:CapturedAzSdkInvocations[1] -join "|") | Should Match "--package-name\|azure-test-two\|--package-version\|2.0.0.*--api-hash\|def456" + } + + It "continues checking valid packages after invalid package info" { + $invalidPackageInfoPath = Join-Path $TestDrive "invalid.json" + Set-Content $invalidPackageInfoPath "not json" + + { & $scriptPath -PackageInfoFiles @($invalidPackageInfoPath, $packageInfoPath) } | + Should Throw + + $global:CapturedAzSdkInvocations.Count | Should Be 1 + } +} \ No newline at end of file diff --git a/eng/common/scripts/tests/Mark-PackageReleased.Tests.ps1 b/eng/common/scripts/tests/Mark-PackageReleased.Tests.ps1 new file mode 100644 index 000000000000..fdd837e6ee71 --- /dev/null +++ b/eng/common/scripts/tests/Mark-PackageReleased.Tests.ps1 @@ -0,0 +1,176 @@ +Describe "Mark-PackageReleased.ps1" { + BeforeAll { + $scriptPath = Join-Path (Join-Path $PSScriptRoot "..") "Mark-PackageReleased.ps1" + + function global:azsdk { + param ( + [Parameter(ValueFromRemainingArguments = $true)] + [object[]] $Arguments + ) + + if ($Arguments.Count -eq 1 -and $Arguments[0] -eq "--version") { + $global:LASTEXITCODE = 0 + return $global:AzSdkVersion + } + + $global:CapturedAzSdkArguments = @($Arguments) + $global:CapturedAzSdkInvocations += ,@($Arguments) + $global:LASTEXITCODE = $global:AzSdkExitCode + return $global:AzSdkOutput + } + } + + AfterAll { + Remove-Item Function:\azsdk -ErrorAction SilentlyContinue + Remove-Variable AzSdkExitCode, AzSdkOutput, AzSdkVersion, CapturedAzSdkArguments, CapturedAzSdkInvocations, LanguageShort -Scope Global -ErrorAction SilentlyContinue + } + + BeforeEach { + $global:LanguageShort = "python" + $global:AzSdkExitCode = 0 + $global:AzSdkVersion = "0.6.38" + $global:AzSdkOutput = '{"operation_status":"Succeeded","api_review_hub":{"packageVersionId":"version123","isReleased":true},"api_view":{"revisionId":"revision456","isReleased":true}}' + $global:CapturedAzSdkArguments = @() + $global:CapturedAzSdkInvocations = @() + $packageInfoPath = Join-Path $TestDrive "azure-test.json" + @{ + Name = "azure-test" + Version = "1.0.0" + ApiHash = "abc123" + } | ConvertTo-Json | Set-Content $packageInfoPath + } + + It "passes package-info release inputs to azsdk" { + & $scriptPath -PackageInfoFiles $packageInfoPath -RepoOwner Azure + + ($global:CapturedAzSdkArguments -join "|") | Should Be (@( + "package", "mark-released", + "--language", "python", + "--package-name", "azure-test", + "--package-version", "1.0.0", + "--api-hash", "abc123", + "--output", "json", + "--repo-owner", "Azure" + ) -join "|") + ($global:CapturedAzSdkArguments -join "|") | Should Not Match "--dry-run" + } + + It "omits the optional repository owner" { + & $scriptPath -PackageInfoFiles $packageInfoPath + + ($global:CapturedAzSdkArguments -join "|") | Should Not Match "--repo-owner" + } + + It "omits the optional ApiHash" { + $packageInfo = Get-Content $packageInfoPath -Raw | ConvertFrom-Json + $packageInfo.PSObject.Properties.Remove("ApiHash") + $packageInfo | ConvertTo-Json | Set-Content $packageInfoPath + + & $scriptPath -PackageInfoFiles $packageInfoPath + + $global:CapturedAzSdkInvocations.Count | Should Be 1 + ($global:CapturedAzSdkArguments -join "|") | Should Not Match "--api-hash" + } + + It "fails without prompting when the azsdk executable is unavailable" { + $missingExecutable = Join-Path $TestDrive "missing-azsdk.exe" + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath -AzSdkExePath $missingExecutable + } + catch { + $caughtError = $_ + } + + $caughtError | Should Not BeNullOrEmpty + $caughtError.Exception.Message | Should Match "azsdk CLI executable was not found" + } + + It "fails when the azsdk version is unsupported" { + $global:AzSdkVersion = "0.6.37" + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath + } + catch { + $caughtError = $_ + } + + $caughtError.Exception.Message | Should Match "version 0.6.38 or later is required" + $global:CapturedAzSdkInvocations.Count | Should Be 0 + } + + It "shows both backend results" { + $messages = @(& $scriptPath -PackageInfoFiles $packageInfoPath 6>&1) | + ForEach-Object { "$_" } + + [Array]::IndexOf($messages, "API Review Hub") | Should BeLessThan ([Array]::IndexOf($messages, "APIView")) + ($messages -join [Environment]::NewLine) | Should Match '"packageVersionId":"version123"' + ($messages -join [Environment]::NewLine) | Should Match '"revisionId":"revision456"' + } + + It "surfaces partial backend failure details from azsdk" { + $global:AzSdkExitCode = 1 + $global:AzSdkOutput = '{"operation_status":"Failed","api_review_hub":{"packageVersionId":"version123"},"api_view":null,"response_errors":["APIView: APIView failed"]}' + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath + } + catch { + $caughtError = $_ + } + + $caughtError | Should Not BeNullOrEmpty + $caughtError.Exception.Message | Should Match "APIView: APIView failed" + } + + It "includes raw output when azsdk returns malformed output" { + $global:AzSdkExitCode = 1 + $global:AzSdkOutput = "distinct raw command output" + $caughtError = $null + + try { + & $scriptPath -PackageInfoFiles $packageInfoPath + } + catch { + $caughtError = $_ + } + + $caughtError | Should Not BeNullOrEmpty + $caughtError.Exception.Message | Should Match "distinct raw command output" + } + + It "accepts a successful response with a missing backend result" { + $global:AzSdkOutput = '{"operation_status":"Succeeded","api_review_hub":{"packageVersionId":"version123"},"api_view":null}' + + { & $scriptPath -PackageInfoFiles $packageInfoPath } | Should Not Throw + } + + It "marks every explicitly supplied package-info file" { + $secondPackageInfoPath = Join-Path $TestDrive "azure-test-two.json" + @{ + Name = "azure-test-two" + Version = "2.0.0" + ApiHash = "def456" + } | ConvertTo-Json | Set-Content $secondPackageInfoPath + + & $scriptPath -PackageInfoFiles @($packageInfoPath, $secondPackageInfoPath) + + $global:CapturedAzSdkInvocations.Count | Should Be 2 + ($global:CapturedAzSdkInvocations[0] -join "|") | Should Match "--package-name\|azure-test\|--package-version\|1.0.0.*--api-hash\|abc123" + ($global:CapturedAzSdkInvocations[1] -join "|") | Should Match "--package-name\|azure-test-two\|--package-version\|2.0.0.*--api-hash\|def456" + } + + It "continues marking valid packages after invalid package info" { + $invalidPackageInfoPath = Join-Path $TestDrive "invalid.json" + Set-Content $invalidPackageInfoPath "not json" + + { & $scriptPath -PackageInfoFiles @($invalidPackageInfoPath, $packageInfoPath) } | + Should Throw + + $global:CapturedAzSdkInvocations.Count | Should Be 1 + } +} diff --git a/eng/common/spelling/package-lock.json b/eng/common/spelling/package-lock.json index 66730293b353..22925b9045d6 100644 --- a/eng/common/spelling/package-lock.json +++ b/eng/common/spelling/package-lock.json @@ -181,9 +181,9 @@ } }, "node_modules/@cspell/dict-companies": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.2.11.tgz", - "integrity": "sha512-0cmafbcz2pTHXLd59eLR1gvDvN6aWAOM0+cIL4LLF9GX9yB2iKDNrKsvs4tJRqutoaTdwNFBbV0FYv+6iCtebQ==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.2.12.tgz", + "integrity": "sha512-mjiz/N3zWOCsz5VfwMUydSl7uW0OU9H2PnbCNc3RV44Vj6Q59CSp6EYGSGZQxrXU1gpsuZUrwr6QCjNjFOOg5A==", "license": "MIT" }, "node_modules/@cspell/dict-cpp": { @@ -217,9 +217,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-data-science": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.14.tgz", - "integrity": "sha512-jl6Ds4u5u5JT+yY30pWQpAbdCHfy3lCcNkLbpL/AZKoUaLEoXbaYsps9xQtvD7DyaiXxiLZkdH2yHHXtoFtZyg==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.16.tgz", + "integrity": "sha512-M72mxv5asuAnORurz4iXRJ+Tw9XBq6eu7D2Ne7biP0Z1RciKGNxXWu9JycA/KlVvK1hAlKj/fANlXhuEWpXKFg==", "license": "MIT" }, "node_modules/@cspell/dict-django": { @@ -247,21 +247,21 @@ "license": "MIT" }, "node_modules/@cspell/dict-en_us": { - "version": "4.4.35", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.4.35.tgz", - "integrity": "sha512-xWpxBCc/FzzMMo/A+0qwARVaIIhR0Ql8yhhv4rvsvg+GfQF+LG9yzg2GwTM5N2rjvzmM3nKuR9zxFZq2I6fJSg==", + "version": "4.4.36", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.4.36.tgz", + "integrity": "sha512-2yOhI/+7d1DbfvMljGW4jw8pLqDEsVmnvUXBOCFXtLU2BWgQkrqOJDCNseYjEiEbTp0OtdrWEWWPFSP1TNugQw==", "license": "MIT" }, "node_modules/@cspell/dict-en-common-misspellings": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.1.12.tgz", - "integrity": "sha512-14Eu6QGqyksqOd4fYPuRb58lK1Va7FQK9XxFsRKnZU8LhL3N+kj7YKDW+7aIaAN/0WGEqslGP6lGbQzNti8Akw==", + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.1.13.tgz", + "integrity": "sha512-00rpydUxKNWY2xxrSx+h46aNWLvbkJdd57SsnEFt24fbs1fROhXZ6XSQu+gQz/zNuiCvFi4Ro3ej9DLbEdWQmQ==", "license": "CC BY-SA 4.0" }, "node_modules/@cspell/dict-en-gb-mit": { - "version": "3.1.24", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.1.24.tgz", - "integrity": "sha512-Oowb/Uzkh7OmDRdCcETzMc9imEb4IpLlHJXoYjX8A8DS2X/54gqSjI915JFB8hKtFjBko5OM0BLQ+6cZhFEMmQ==", + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.1.25.tgz", + "integrity": "sha512-zGODptk24CMrXi49ieG2SUm94CKxEsVF0dYNF+1ZYH0MSsQDZ/PKDlrrbvtBqSupKdPSj0Z9sjOmMNfHHW9ZSg==", "license": "MIT" }, "node_modules/@cspell/dict-filetypes": { @@ -349,9 +349,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-k8s": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.12.tgz", - "integrity": "sha512-2LcllTWgaTfYC7DmkMPOn9GsBWsA4DZdlun4po8s2ysTP7CPEnZc1ZfK6pZ2eI4TsZemlUQQ+NZxMe9/QutQxg==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.13.tgz", + "integrity": "sha512-ELGkS13k7K/NEfVimBSrxVTfqXvOF/Kvxj4I62YxRm8bvHbfoXgrGaOx28lPiNRz+dmu+yYtvuXbnURKtYbC6g==", "license": "MIT" }, "node_modules/@cspell/dict-kotlin": { @@ -409,9 +409,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-npm": { - "version": "5.2.41", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.41.tgz", - "integrity": "sha512-To3xsfRmMBYVXtWVEdUgV35M9a/JZ54dSuoY6m6D3uHKKL3I326Wmy4xifZ3PU8MQaWhyEH7zbIcUEtKwTQMcA==", + "version": "5.2.43", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.43.tgz", + "integrity": "sha512-H2gYwtu59dNO9662Uq0usfuhyNd7lZJE1C61a/UXcpRyWWSrTo2Bz+vwGYp1bXZ1LmjXadqvwJ8ArFlGdiadNQ==", "license": "MIT" }, "node_modules/@cspell/dict-php": { @@ -433,12 +433,12 @@ "license": "MIT" }, "node_modules/@cspell/dict-python": { - "version": "4.2.27", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.27.tgz", - "integrity": "sha512-Rj6xQgYS4X6ienjgAZF+njA0GRY4oSPouJWv0vfikCTn6EWlfk0V6Dy1HP3Migj1O+IC2NmespgVq+BZNSp8OA==", + "version": "4.2.29", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.29.tgz", + "integrity": "sha512-OnEt1a35iuQzc2Ize1qU/43ZyF10urRKAm+mlTz++vnAgDLBHpKfWakpSK50nyL5/1WvyQ8BaMjb52MBLEpTeA==", "license": "MIT", "dependencies": { - "@cspell/dict-data-science": "^2.0.14" + "@cspell/dict-data-science": "^2.0.16" } }, "node_modules/@cspell/dict-r": { @@ -472,9 +472,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-software-terms": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.2.2.tgz", - "integrity": "sha512-0CaYd6TAsKtEoA7tNswm1iptEblTzEe3UG8beG2cpSTHk7afWIVMtJLgXDv0f/Li67Lf3Z1Jf3JeXR7GsJ2TRw==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.2.4.tgz", + "integrity": "sha512-z6y/TGH3QNf5wB4pVvN/P3GfFEW/Whf6QAekNsIn06VKl95dnamfpkPWqV8rEtCixQFaKalb5+y9hRQXH3XQ1g==", "license": "MIT" }, "node_modules/@cspell/dict-sql": { @@ -496,9 +496,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-terraform": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.1.3.tgz", - "integrity": "sha512-gr6wxCydwSFyyBKhBA2xkENXtVFToheqYYGFvlMZXWjviynXmh+NK/JTvTCk/VHk3+lzbO9EEQKee6VjrAUSbA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.1.4.tgz", + "integrity": "sha512-Ere42ilvMFvQA4GlcN0OKlruMPR6EsvaB+iTHzj2xc+NJGRK64V7yApUcWrOrSgTiM/vhWXPIsK3OMfiAiNdmA==", "license": "MIT" }, "node_modules/@cspell/dict-typescript": { @@ -839,9 +839,9 @@ } }, "node_modules/fast-equals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-6.0.0.tgz", - "integrity": "sha512-PFhhIGgdM79r5Uztdj9Zb6Tt1zKafqVfdMGwVca1z5z6fbX7DmsySSuJd8HiP6I1j505DCS83cLxo5rmSNeVEA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-6.0.2.tgz", + "integrity": "sha512-sAjhj9ZhOxYCGiNMnZLaucOqf5ZeFnHNoKoAZiD9thhJ0N8RP85qJK759/97C/3L7NzzmGVB5uiX9AUpySZmUQ==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -944,9 +944,9 @@ } }, "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "license": "MIT", "engines": { "node": ">=12" @@ -965,9 +965,9 @@ } }, "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -977,9 +977,9 @@ } }, "node_modules/smol-toml": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", - "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.0.tgz", + "integrity": "sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" diff --git a/eng/common/testproxy/dotnet-devcert.crt b/eng/common/testproxy/dotnet-devcert.crt index 931b6e739722..fcbad835a016 100644 --- a/eng/common/testproxy/dotnet-devcert.crt +++ b/eng/common/testproxy/dotnet-devcert.crt @@ -1,21 +1,21 @@ -----BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIUXUCvBB5U6rYQyAEu5rApzjp3RQYwDQYJKoZIhvcNAQEL -BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDcyMzE3NTUyM1oXDTI2MDcy -MzE3NTUyM1owFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEA67HYsBPB865zJS8TDwUBgFSKqWgJ7dGTQh3aTlvamFED -5/kHnL7oTr3x/6Hylnajf0v4vGWmSok0/3SAcbpr/9l19/7zbpA1LLGzu8G909o5 -38Wl5sNbGvQIMK91KxbHRXlVMKoYTIL38cNdZvhzfb9m9Tew6vPmz4ABMPiwYS9T -R19lAPwmQYwce00NkKaQE5+6pzsPhnG/o/Ww9rBE370fidXn8jhqLSOEk+hbp3ju -KlxeSrVHAqlvTzlvSTZGRyxioRLDEMFT3ka1cyLo6HP3U7lj76mlJBibahE+ylL+ -z594fzHnfYPQaN5g13G9H2oxTg+VwwNtL1U737FNiwIDAQABo4GwMIGtMA8GA1Ud +MIIDZzCCAk+gAwIBAgIUPXdgRBlS4T18QnYJ/+yPV70GOEEwDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDcyMTIwNTYxOVoXDTI3MDcy +MTIwNTYxOVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAohtW1OHr/XIAlhxXq+vhvbosa/MvCptI8Pb1eJApnhYk +Zt3wGGMfjPPga4z+a7NSz5v2xD9qhHyMVNrlnt6becBCLm8Az3Q7zdpu6Cp+mEAc +VMLY/ttiPQfMKdj33aJxXZfqtFw++jm5kUCawW6OlvfcmZCVhMp5LQvDbVWULa5v +nsdzAoghf1RPZWyMXSme0vkfZaDN6LuLxhbXQOz9AVHnfX4eXvXO8UAhCV3xTsXU +KqkzzxPZX5Bt6/PEo1Nmp9YhmCYaLrljAr9ShTHdczfCPWJvGtYnSnbzCtapVffe +u/YK2l4uBWP6Nx0xjoXrrA3hM7qZdhinmmQsz870AQIDAQABo4GwMIGtMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGmMBYGA1UdJQEB/wQMMAoGCCsGAQUF BwMBMBcGA1UdEQEB/wQNMAuCCWxvY2FsaG9zdDA6BgorBgEEAYI3VAEBBCwMKkFT UC5ORVQgQ29yZSBIVFRQUyBkZXZlbG9wbWVudCBjZXJ0aWZpY2F0ZTAdBgNVHQ4E -FgQUg5xH/y5mh7lGgF+y+1sJC7ZMN9owDQYJKoZIhvcNAQELBQADggEBAK/gRk/L -5q4/xXXYW77WawygxpGmTgBLDHkiJViMnJ4VDk6q97/DMABIqCp3sv3FNP9sOssG -ypgmX4jYbyrLNwfvdtpVaiHAHvrTfAtrfHgG0EVM1DRUJ1e0/SRfYf1QTdVxEZv+ -3IM+0roYa8EtQq8BxSsAZz+zhNMoav8nXQVhR7+v5NI5vzT0TVncfXIYYYfLhllb -wcmh9iQuXMifj7WohOFE1XK4O6Bats/6V85ZSGDl3npEpYcgBwyxNQE5hKn/lG5b -3DDkpCTeoMZxAHLo39RzAy0WJTF1KPHQ2EzUa+MfoTNWNrhYSW3IqI3xfPzevSDx -BTBk4gS9MSt2Jj8= +FgQUndm3u54Kli+UWZSuG6zjDMf07r0wDQYJKoZIhvcNAQELBQADggEBAIx4ssZM +ET31rNiqhcArt0RP7Yxe59RxIPVWlsh0O3Bh/cT1Q5ESmSs9CA6jaVSkNhJQFF3x +qKz/PaG1an8f6YDTZfb1Eu1xL5E9t26GkjKovmOwZporaQm+d367sCK2Hab/5aJG +bqH23P5sbJQ+TogAf0Uykdq9rSx/5uwQBEv53tAHpSLOQXDWtNXo6AGNcyuouTgt +v/X15v4Gb9clgZpl3WXCvzOtEpaRSdf8dL76KKIiyClOzdvNP4/BpXxsYfAPU4hb +CesVElsCj5WckSkJ23gnTkzIAAeWjNnf+sOwaMgfsqh/XtKzYluV8MtbBljuOz0G +uaZPC0VV2qRwbAE= -----END CERTIFICATE----- diff --git a/eng/common/testproxy/dotnet-devcert.pfx b/eng/common/testproxy/dotnet-devcert.pfx index 93a5617aea60..5737c6c29cf5 100644 Binary files a/eng/common/testproxy/dotnet-devcert.pfx and b/eng/common/testproxy/dotnet-devcert.pfx differ diff --git a/eng/common/testproxy/test-proxy-tool.yml b/eng/common/testproxy/test-proxy-tool.yml index e71b17639a3d..73924d096cc0 100644 --- a/eng/common/testproxy/test-proxy-tool.yml +++ b/eng/common/testproxy/test-proxy-tool.yml @@ -8,8 +8,10 @@ parameters: proxyUrl: 'http://localhost:5000' steps: - - pwsh: | - ${{ parameters.templateRoot }}/eng/common/scripts/trust-proxy-certificate.ps1 + - task: PowerShell@2 + inputs: + pwsh: true + filePath: ${{ parameters.templateRoot }}/eng/common/scripts/trust-proxy-certificate.ps1 displayName: 'Language Specific Certificate Trust' condition: and(succeeded(), ${{ parameters.condition }}) @@ -22,71 +24,32 @@ steps: arguments: '-TargetVersion "${{ parameters.targetVersion }}"' pwsh: true - - pwsh: | - $standardVersion = "${{ parameters.templateRoot }}/eng/common/testproxy/target_version.txt" - $overrideVersion = "${{ parameters.templateRoot }}/eng/target_proxy_version.txt" - - $version = $(Get-Content $standardVersion -Raw).Trim() - - if (Test-Path $overrideVersion) { - $version = $(Get-Content $overrideVersion -Raw).Trim() - } - - Write-Host "Installing test-proxy version $version" - - $invocation = @" - dotnet tool install azure.sdk.tools.testproxy ` - --tool-path $(Build.BinariesDirectory)/test-proxy ` - --add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json ` - --version $version - "@ - Write-Host $invocation - - dotnet tool install azure.sdk.tools.testproxy ` - --tool-path $(Build.BinariesDirectory)/test-proxy ` - --add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json ` - --version $version - displayName: "Install test-proxy" + - task: PowerShell@2 + inputs: + filePath: '${{ parameters.templateRoot }}/eng/common/scripts/Install-TestProxy.ps1' + arguments: > + -TemplateRoot "${{ parameters.templateRoot }}" + -BinariesDirectory $(Build.BinariesDirectory) + -RunProxy $${{ parameters.runProxy }} + pwsh: true + displayName: "Install and configure test-proxy" condition: and(succeeded(), ${{ parameters.condition }}) - - pwsh: | - Write-Host "Prepending path with the test proxy tool install location: '$(Build.BinariesDirectory)/test-proxy'" - Write-Host "##vso[task.prependpath]$(Build.BinariesDirectory)/test-proxy" - displayName: "Prepend path with test-proxy tool install location" - - ${{ if eq(parameters.runProxy, 'true') }}: - - pwsh: | - Write-Host "Setting ASPNETCORE_Kestrel__Certificates__Default__Path to '${{ parameters.templateRoot }}/eng/common/testproxy/dotnet-devcert.pfx'" - Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Path]${{ parameters.templateRoot }}/eng/common/testproxy/dotnet-devcert.pfx" - Write-Host "Setting ASPNETCORE_Kestrel__Certificates__Default__Password to 'password'" - Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Password]password" - Write-Host "Setting PROXY_MANUAL_START to 'true'" - Write-Host "##vso[task.setvariable variable=PROXY_MANUAL_START]true" - displayName: 'Configure Kestrel and PROXY_MANUAL_START Variables' - condition: and(succeeded(), ${{ parameters.condition }}) - - - pwsh: | - $invocation = @" - Start-Process $(Build.BinariesDirectory)/test-proxy/test-proxy.exe - -ArgumentList `"start -u --storage-location ${{ parameters.rootFolder }} -- --urls ${{ parameters.proxyUrl }}`" - -NoNewWindow -PassThru -RedirectStandardOutput ${{ parameters.rootFolder }}/test-proxy.log - -RedirectStandardError ${{ parameters.rootFolder }}/test-proxy-error.log - "@ - Write-Host $invocation - - $Process = Start-Process $(Build.BinariesDirectory)/test-proxy/test-proxy.exe ` - -ArgumentList "start -u --storage-location ${{ parameters.rootFolder }} -- --urls ${{ parameters.proxyUrl }}" ` - -NoNewWindow -PassThru -RedirectStandardOutput ${{ parameters.rootFolder }}/test-proxy.log ` - -RedirectStandardError ${{ parameters.rootFolder }}/test-proxy-error.log - - Write-Host "Setting PROXY_PID to $($Process.Id)" - Write-Host "##vso[task.setvariable variable=PROXY_PID]$($Process.Id)" - displayName: 'Run the testproxy - windows' + - task: PowerShell@2 + inputs: + filePath: '${{ parameters.templateRoot }}/eng/common/scripts/Start-TestProxy.ps1' + arguments: > + -RootFolder ${{ parameters.rootFolder }} + -ProxyUrl ${{ parameters.proxyUrl }} + -BinariesDirectory $(Build.BinariesDirectory) + pwsh: true + displayName: 'Run test-proxy - Windows' condition: and(succeeded(), eq(variables['Agent.OS'],'Windows_NT'), ${{ parameters.condition }}) env: DOTNET_ROLL_FORWARD: 'Major' - # nohup does NOT continue beyond the current session if you use it within powershell + # nohup does NOT continue beyond the current session if you use it within PowerShell - bash: | if [[ "$(uname)" == "Darwin" ]]; then export DOTNET_ROOT="$HOME/.dotnet" @@ -97,25 +60,17 @@ steps: echo "Setting PROXY_PID to $(cat $(Build.SourcesDirectory)/test-proxy.pid)" echo "##vso[task.setvariable variable=PROXY_PID]$(cat $(Build.SourcesDirectory)/test-proxy.pid)" - displayName: "Run the testproxy - linux/mac" + displayName: "Run test-proxy - Linux/Mac" condition: and(succeeded(), ne(variables['Agent.OS'],'Windows_NT'), ${{ parameters.condition }}) workingDirectory: "${{ parameters.rootFolder }}" env: DOTNET_ROLL_FORWARD: 'Major' - - pwsh: | - for ($i = 0; $i -lt 10; $i++) { - try { - Write-Host "Invoke-WebRequest -Uri `"${{ parameters.proxyUrl }}/Admin/IsAlive`" | Out-Null" - Invoke-WebRequest -Uri "${{ parameters.proxyUrl }}/Admin/IsAlive" | Out-Null - Write-Host "Successfully connected to the test proxy on port 5000." - exit 0 - } catch { - Write-Warning "Failed to successfully connect to test proxy. Retrying..." - Start-Sleep 6 - } - } - Write-Error "Could not connect to test proxy." - exit 1 - displayName: Test Proxy IsAlive + - task: PowerShell@2 + inputs: + filePath: '${{ parameters.templateRoot }}/eng/common/scripts/Test-TestProxyIsAlive.ps1' + arguments: > + -ProxyUrl ${{ parameters.proxyUrl }} + pwsh: true + displayName: "Test Proxy IsAlive" condition: and(succeeded(), ${{ parameters.condition }}) diff --git a/eng/common/tsp-client/package-lock.json b/eng/common/tsp-client/package-lock.json index f0d729273161..2a1a76c7de2c 100644 --- a/eng/common/tsp-client/package-lock.json +++ b/eng/common/tsp-client/package-lock.json @@ -5,30 +5,33 @@ "packages": { "": { "dependencies": { - "@azure-tools/typespec-client-generator-cli": "0.32.1" + "@azure-tools/typespec-client-generator-cli": "0.33.1" }, "engines": { - "node": ">=20.19.0" + "node": ">=22.13.0" } }, "node_modules/@azure-tools/typespec-autorest": { - "version": "0.67.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.67.0.tgz", - "integrity": "sha512-RP0TZB46tnYGfN5FKaaXDP5/rDff0PEERKz4epoYsm4RmXeRDYXVcOjw7DXLbcgFpMLTLBf/w/5dqJZBx03KpQ==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.70.0.tgz", + "integrity": "sha512-OaxLkgMcuOXAbaqTNpezmFF24jtkiIH1+2PBwAeRo3ZG7C1r7Hf8xZwCK6KVtBEgMbqnrd5eCqxsPl1zy3y9/Q==", "license": "MIT", + "dependencies": { + "yaml": "^2.8.3" + }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.67.0", - "@azure-tools/typespec-azure-resource-manager": "^0.67.0", - "@azure-tools/typespec-client-generator-core": "^0.67.0", - "@typespec/compiler": "^1.11.0", - "@typespec/http": "^1.11.0", - "@typespec/openapi": "^1.11.0", - "@typespec/rest": "^0.81.0", - "@typespec/versioning": "^0.81.0", - "@typespec/xml": "^0.81.0" + "@azure-tools/typespec-azure-core": "^0.70.0", + "@azure-tools/typespec-azure-resource-manager": "^0.70.0", + "@azure-tools/typespec-client-generator-core": "^0.70.0", + "@typespec/compiler": "^1.14.0", + "@typespec/http": "^1.14.0", + "@typespec/openapi": "^1.14.0", + "@typespec/rest": "^0.84.0", + "@typespec/versioning": "^0.84.0", + "@typespec/xml": "^0.84.0" }, "peerDependenciesMeta": { "@typespec/xml": { @@ -37,54 +40,56 @@ } }, "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.67.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.67.0.tgz", - "integrity": "sha512-6DO/fOlVihMlPG0oDXrgURf5MNF4iBzPx5SMA5aaFDx/fW6MjiD+TN9Yy9O+l9mVNh1XaEMjhjA8/lmnHZ/U0g==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.70.0.tgz", + "integrity": "sha512-8MojHWRtTLKycJJ98IMoXX/5b9tTo3F0d3Iu20OKoCsORnSDG2NfjOWHJVW63oxA2t8VTlqC6J8BDcnRihygQQ==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0", - "@typespec/http": "^1.11.0", - "@typespec/rest": "^0.81.0" + "@typespec/compiler": "^1.14.0", + "@typespec/http": "^1.14.0", + "@typespec/rest": "^0.84.0" } }, "node_modules/@azure-tools/typespec-azure-resource-manager": { - "version": "0.67.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.67.0.tgz", - "integrity": "sha512-NFE1O4zlpo6Y+Lkh3XCo59g+7r141+oBomYib1LncbbpqoGDakHvBH4sLelt9ZCMnYAxlKGbjXrO9E6jd53P2Q==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.70.0.tgz", + "integrity": "sha512-hVrbbsOhU3EQ2yQTppCqsGQwY/HcVZPOINtFkoUo+PUVBmCFXyqLkTO4jvUbsp/LvJEwoQ8aEA8Y35f7VWT5uw==", "license": "MIT", "peer": true, "dependencies": { - "change-case": "~5.4.4", + "change-case": "^5.4.4", "pluralize": "^8.0.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.67.0", - "@typespec/compiler": "^1.11.0", - "@typespec/http": "^1.11.0", - "@typespec/openapi": "^1.11.0", - "@typespec/rest": "^0.81.0", - "@typespec/versioning": "^0.81.0" + "@azure-tools/typespec-azure-core": "^0.70.0", + "@typespec/compiler": "^1.14.0", + "@typespec/http": "^1.14.0", + "@typespec/openapi": "^1.14.0", + "@typespec/rest": "^0.84.0", + "@typespec/versioning": "^0.84.0" } }, "node_modules/@azure-tools/typespec-client-generator-cli": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-cli/-/typespec-client-generator-cli-0.32.1.tgz", - "integrity": "sha512-BlPUKR3kJm/zTqwEX6zHAJyeEbpBd9pjZwKmODOj1OH38PYs8clUtoyuecQzvYuAJPDA2goIJdiO94uozSFJOQ==", + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-cli/-/typespec-client-generator-cli-0.33.1.tgz", + "integrity": "sha512-FOISyeqMVMJTL9PWPE7wO7mEFVF62I+GGLA9h92jVUEXHW0PDczbmBq33sW7Wpr0ubMBQQbqSicEXTGgy3q0rA==", "license": "MIT", "dependencies": { "@azure-tools/typespec-autorest": ">=0.53.0 <1.0.0", "@azure/core-rest-pipeline": "^1.12.0", + "@types/shell-quote": "^1.7.5", "@types/yargs": "^17.0.32", "chalk": "^5.3.0", "dotenv": "^16.4.5", "prompt-sync": "^4.2.0", + "shell-quote": "^1.8.3", "simple-git": "^3.20.0", "yaml": "^2.3.1", "yargs": "^17.2.1" @@ -100,48 +105,48 @@ } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.67.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.67.1.tgz", - "integrity": "sha512-Bh7M1KSrgBOMeueK+YiJiaZ+uo3119mNIcbHgU8006CSToDHSTeIM7rndUmCSn+leAKonpXhQ6eElOWj0teBWA==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.70.0.tgz", + "integrity": "sha512-8yxOYJfID3wp3FLQYNIa3kbmR5YLWjYtpB+i4u66quHTTQWWANHV1/o9f8xymAf+8fO9jbLo5tw1JerumxISWg==", "license": "MIT", "peer": true, "dependencies": { - "change-case": "~5.4.4", + "change-case": "^5.4.4", "pluralize": "^8.0.0", - "yaml": "~2.8.2" + "yaml": "^2.8.3" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.67.0", - "@typespec/compiler": "^1.11.0", - "@typespec/events": "^0.81.0", - "@typespec/http": "^1.11.0", - "@typespec/openapi": "^1.11.0", - "@typespec/rest": "^0.81.0", - "@typespec/sse": "^0.81.0", - "@typespec/streams": "^0.81.0", - "@typespec/versioning": "^0.81.0", - "@typespec/xml": "^0.81.0" + "@azure-tools/typespec-azure-core": "^0.70.0", + "@typespec/compiler": "^1.14.0", + "@typespec/events": "^0.84.0", + "@typespec/http": "^1.14.0", + "@typespec/openapi": "^1.14.0", + "@typespec/rest": "^0.84.0", + "@typespec/sse": "^0.84.0", + "@typespec/streams": "^0.84.0", + "@typespec/versioning": "^0.84.0", + "@typespec/xml": "^0.84.0" } }, "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } }, "node_modules/@azure/core-auth": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.11.0.tgz", + "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -149,13 +154,13 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", - "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", + "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -167,25 +172,25 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@azure/core-tracing": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.4.0.tgz", + "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@azure/core-util": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.14.0.tgz", + "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -193,30 +198,30 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@azure/logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.4.0.tgz", + "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==", "license": "MIT", "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "license": "MIT", "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -225,9 +230,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "license": "MIT", "peer": true, "engines": { @@ -235,29 +240,29 @@ } }, "node_modules/@inquirer/ansi": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz", - "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.7.tgz", + "integrity": "sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==", "license": "MIT", "peer": true, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" } }, "node_modules/@inquirer/checkbox": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.3.tgz", - "integrity": "sha512-+G7I8CT+EHv/hasNfUl3P37DVoMoZfpA+2FXmM54dA8MxYle1YqucxbacxHalw1iAFSdKNEDTGNV7F+j1Ldqcg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.1.tgz", + "integrity": "sha512-b6xmA/VlTe0ZgDQHDui+Nav470u7u49nRd8/iuhOcQPO9Ch7lGuogydhi2VOmNlZ+zXcM8IcPuNSwQcdJaF/kw==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/core": "^11.1.8", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5" + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -269,17 +274,17 @@ } }, "node_modules/@inquirer/confirm": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.11.tgz", - "integrity": "sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", + "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/core": "^11.1.8", - "@inquirer/type": "^4.0.5" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -291,22 +296,22 @@ } }, "node_modules/@inquirer/core": { - "version": "11.1.8", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.8.tgz", - "integrity": "sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.2.1.tgz", + "integrity": "sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5", + "@inquirer/ansi": "^2.0.7", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7", "cli-width": "^4.1.0", "fast-wrap-ansi": "^0.2.0", "mute-stream": "^3.0.0", "signal-exit": "^4.1.0" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -318,18 +323,18 @@ } }, "node_modules/@inquirer/editor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.1.0.tgz", - "integrity": "sha512-6wlkYl65Qfayy48gPCfU4D7li6KCAGN79mLXa/tYHZH99OfZ820yY+HA+DgE88r8YwwgeuY6PQgNqMeK6LuMmw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.2.2.tgz", + "integrity": "sha512-ZRVd/oD+sYsUd5zVm0NflqEzlqfYCyHNsqkHl2oWXEUHs12tCbcSFi+wVFEvD8+LGRaMUsVrE7qeo6lSG/S1Vg==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/core": "^11.1.8", - "@inquirer/external-editor": "^3.0.0", - "@inquirer/type": "^4.0.5" + "@inquirer/core": "^11.2.1", + "@inquirer/external-editor": "^3.0.3", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -341,17 +346,17 @@ } }, "node_modules/@inquirer/expand": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.12.tgz", - "integrity": "sha512-vOfrB33b7YIZfDauXS8vNNz2Z86FozTZLIt7e+7/dCaPJ1RXZsHCuI9TlcERzEUq57vkM+UdnBgxP0rFd23JYQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.1.tgz", + "integrity": "sha512-YmQpenjbFSHAK3sOd44puHh3V1KXXr+JiNpUztoSQ4drLh2rTVzTap/YtlAVu/5xavifIlBfNEzJ/neZJ1a/1g==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/core": "^11.1.8", - "@inquirer/type": "^4.0.5" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -363,9 +368,9 @@ } }, "node_modules/@inquirer/external-editor": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.0.tgz", - "integrity": "sha512-lDSwMgg+M5rq6JKBYaJwSX6T9e/HK2qqZ1oxmOwn4AQoJE5D+7TumsxLGC02PWS//rkIVqbZv3XA3ejsc9FYvg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-6thf5I8q7lZwzGLAxPaaGEREEkZ3nyePPDQ1oyobblxmEE8mqTLguScP7pDjUTAibiyb4hfXl+qjUEJ+di/aNA==", "license": "MIT", "peer": true, "dependencies": { @@ -373,7 +378,7 @@ "iconv-lite": "^0.7.2" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -385,27 +390,27 @@ } }, "node_modules/@inquirer/figures": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz", - "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.7.tgz", + "integrity": "sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==", "license": "MIT", "peer": true, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" } }, "node_modules/@inquirer/input": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.11.tgz", - "integrity": "sha512-twUWidn4ocPO8qi6fRM7tNWt7W1FOnOZqQ+/+PsfLUacMR5rFLDPK9ql0nBPwxi0oELbo8T5NhRs8B2+qQEqFQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.2.tgz", + "integrity": "sha512-9K/DDBSQpOyZSkt6sOVP9Vo0TR7atX2kuILsUu0x3wVcVbe97lJwIJKMLdMw25tDYuXl/qp6erT0Xs1rfmcfZg==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/core": "^11.1.8", - "@inquirer/type": "^4.0.5" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -417,17 +422,17 @@ } }, "node_modules/@inquirer/number": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.11.tgz", - "integrity": "sha512-Vscmim9TCksQsfjPtka/JwPUcbLhqWYrgfPf1cHrCm24X/F2joFwnageD50yMKsaX14oNGOyKf/RNXAFkNjWpA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.1.1.tgz", + "integrity": "sha512-XF4IXAbPnGPgw0wsbC/i2tPcyfdZgDpUlhsqU0SfT4IRIGWha6Xm9VRgN5yYxJq+jnyXlfXI/nQ3ulfk0iEICA==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/core": "^11.1.8", - "@inquirer/type": "^4.0.5" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -439,18 +444,18 @@ } }, "node_modules/@inquirer/password": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.11.tgz", - "integrity": "sha512-9KZFeRaNHIcejtPb0wN4ddFc7EvobVoAFa049eS3LrDZFxI8O7xUXiITEOinBzkZFAIwY5V4yzQae/QfO9cbbg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.1.1.tgz", + "integrity": "sha512-3XBfF7DAsp5qeDsvN5Rd1HmbNokVvEQoUM0QLrRcybC9nX96w3Pbmu7qUsb3IT3J3jBvs2+mTXaKHOUsgHMLzg==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/core": "^11.1.8", - "@inquirer/type": "^4.0.5" + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -462,25 +467,25 @@ } }, "node_modules/@inquirer/prompts": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.4.1.tgz", - "integrity": "sha512-AH5xPQ997K7e0F0vulPlteIHke2awMkFi8F0dBemrDfmvtPmHJo82mdHbONC4F/t8d1NHwrbI5cGVI+RbLWdoQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.5.2.tgz", + "integrity": "sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/checkbox": "^5.1.3", - "@inquirer/confirm": "^6.0.11", - "@inquirer/editor": "^5.1.0", - "@inquirer/expand": "^5.0.12", - "@inquirer/input": "^5.0.11", - "@inquirer/number": "^4.0.11", - "@inquirer/password": "^5.0.11", - "@inquirer/rawlist": "^5.2.7", - "@inquirer/search": "^4.1.7", - "@inquirer/select": "^5.1.3" + "@inquirer/checkbox": "^5.2.1", + "@inquirer/confirm": "^6.1.1", + "@inquirer/editor": "^5.2.2", + "@inquirer/expand": "^5.1.1", + "@inquirer/input": "^5.1.2", + "@inquirer/number": "^4.1.1", + "@inquirer/password": "^5.1.1", + "@inquirer/rawlist": "^5.3.1", + "@inquirer/search": "^4.2.1", + "@inquirer/select": "^5.2.1" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -492,17 +497,17 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.7.tgz", - "integrity": "sha512-AqRMiD9+uE1lskDPrdqHwrV/EUmxKEBLX44SR7uxK3vD2413AmVfE5EQaPeNzYf5Pq5SitHJDYUFVF0poIr09w==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.1.tgz", + "integrity": "sha512-QqdTqQddL3qPX/PPrjobpsO25NZ4dWXgTLenrR445L2ptLEYE6Z+PD5c5CNDJNx4ugRgELAIpSIJxZaO2jJ2Og==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/core": "^11.1.8", - "@inquirer/type": "^4.0.5" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -514,18 +519,18 @@ } }, "node_modules/@inquirer/search": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.7.tgz", - "integrity": "sha512-1y7+0N65AWk5RdlXH/Kn13txf3IjIQ7OEfhCEkDTU+h5wKMLq8DUF3P6z+/kLSxDGDtQT1dRBWEUC3o/VvImsQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.2.1.tgz", + "integrity": "sha512-xJj8QWKRSrfKoBIITLZK61dD3zwo0Rz11fgDImku30/Oe81zMdIdGgrLY2h6RkJ+KZ/GhNYIRMKnH/62qBTA5g==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/core": "^11.1.8", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5" + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -537,19 +542,19 @@ } }, "node_modules/@inquirer/select": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.3.tgz", - "integrity": "sha512-zYyqWgGQi3NhBcNq4Isc5rB3oEdQEh1Q/EcAnOW0FK4MpnXWkvSBYgA4cYrTM4A9UB573omouZbnL9JJ74Mq3A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.1.tgz", + "integrity": "sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==", "license": "MIT", "peer": true, "dependencies": { - "@inquirer/ansi": "^2.0.5", - "@inquirer/core": "^11.1.8", - "@inquirer/figures": "^2.0.5", - "@inquirer/type": "^4.0.5" + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -561,13 +566,13 @@ } }, "node_modules/@inquirer/type": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz", - "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.7.tgz", + "integrity": "sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==", "license": "MIT", "peer": true, "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -606,44 +611,6 @@ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "license": "MIT" }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/@simple-git/args-pathspec": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", @@ -659,18 +626,11 @@ "@simple-git/args-pathspec": "^1.0.3" } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@types/shell-quote": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@types/shell-quote/-/shell-quote-1.7.5.tgz", + "integrity": "sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==", + "license": "MIT" }, "node_modules/@types/yargs": { "version": "17.0.35", @@ -688,36 +648,35 @@ "license": "MIT" }, "node_modules/@typespec/compiler": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.11.0.tgz", - "integrity": "sha512-4vuWtoepc4rYJ81K+P7xn2ByXIRhBM40rfzAGnpagNuGSVHuKEC6lqJqs3ePvhCpnxiYAC8XWpaOi+BEDzyhnQ==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.14.0.tgz", + "integrity": "sha512-RRN0LGVDlonG/IbB2b4mvRjdCo6LywwB9/J8lOp6UaH7vtaFnKe5FL+rpxhof4rXx/zI/4OWnQO6c01bTCz4/Q==", "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "~7.29.0", - "@inquirer/prompts": "^8.3.0", - "ajv": "~8.18.0", - "change-case": "~5.4.4", + "@babel/code-frame": "^7.29.0", + "@inquirer/prompts": "^8.4.1", + "ajv": "^8.18.0", + "change-case": "^5.4.4", "env-paths": "^4.0.0", - "globby": "~16.1.1", "is-unicode-supported": "^2.1.0", - "mustache": "~4.2.0", - "picocolors": "~1.1.1", - "prettier": "~3.8.1", + "mustache": "^4.2.0", + "picocolors": "^1.1.1", + "prettier": "^3.8.1", "semver": "^7.7.4", - "tar": "^7.5.11", - "temporal-polyfill": "^0.3.2", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.12", - "yaml": "~2.8.2", - "yargs": "~18.0.0" + "tar": "^7.5.13", + "temporal-polyfill": "^1.0.1", + "vscode-languageserver": "^10.0.0", + "vscode-languageserver-textdocument": "^1.0.12", + "yaml": "^2.8.3", + "yargs": "^18.0.0" }, "bin": { "tsp": "cmd/tsp.js", "tsp-server": "cmd/tsp-server.js" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@typespec/compiler/node_modules/ansi-regex": { @@ -849,30 +808,30 @@ } }, "node_modules/@typespec/events": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.81.0.tgz", - "integrity": "sha512-ee9QSBL+k6ccPlbJICZzaGt4iC1nTIl+J9sELY9yJNISvOvUEzY5MU8c7HaISB10cUESRJW+oaLWwyc8XjwHng==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.84.0.tgz", + "integrity": "sha512-UroDIu6t6Z+cOLyX8I+GJWhSFmYGrp1L93F7ZVt0Ypmj0ndmC9YYa4cpeEyS5PDDIC8u49WfCIwfGegxt4rPVQ==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0" + "@typespec/compiler": "^1.14.0" } }, "node_modules/@typespec/http": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.11.0.tgz", - "integrity": "sha512-/DOkN2+MUZyLdmqYmSMZDjxikJTOuNxikTeOwG2fVOibnu8e6S1jzPAuN/mn6YyQBKeBCItMPmUOXIj61Wy8Bg==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.14.0.tgz", + "integrity": "sha512-W+heCzu8K63AVcoX8MachVWaRxSAMFWOI1yBTc2Kq8QHaJeDiLL5JbU8VfTZ4tL/6EoGSdKfIT5ZNRW7oVCzhg==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0", - "@typespec/streams": "^0.81.0" + "@typespec/compiler": "^1.14.0", + "@typespec/streams": "^0.84.0" }, "peerDependenciesMeta": { "@typespec/streams": { @@ -881,66 +840,66 @@ } }, "node_modules/@typespec/openapi": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.11.0.tgz", - "integrity": "sha512-xUQrHExKBh0XSP4cn+HcondDXjHJM5HCq2Xfy9tB1QflsFh5uP1JJt1+67g73VmHlhZVSUDcoFrnU95pfjyubg==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.14.0.tgz", + "integrity": "sha512-KL7kImPhCXRmxpHVt1k7TWaa4bb3NbSeUx2rxyxeq7lYZFllI6/NYRCTOI/5JOrbElWmmSxrajU9K9IAKI6PkQ==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0", - "@typespec/http": "^1.11.0" + "@typespec/compiler": "^1.14.0", + "@typespec/http": "^1.14.0" } }, "node_modules/@typespec/rest": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.81.0.tgz", - "integrity": "sha512-qQXZRKEvq5aNlDFEUqBiiXXPIFyr/+PWgBY0kIrnhyZzMjfUqPInkB12QgXpVp2O2Wm3jmETJD45SaLHTCYBbg==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.84.0.tgz", + "integrity": "sha512-9s5dDfRoHRPdtbVvkBasUx/RnMvwWMTuXRieSQDEji4gWGgxVu4Zt4MiEEKSfQrkMr3Aw0QjRCSxBxjMCHIOmA==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0", - "@typespec/http": "^1.11.0" + "@typespec/compiler": "^1.14.0", + "@typespec/http": "^1.14.0" } }, "node_modules/@typespec/sse": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.81.0.tgz", - "integrity": "sha512-VinoeN+5ClKlGXf77fWayAQna8SaYtvEBhnLR8t8FdvmMsL6ce1LghR2kAL3ARbNXfwMZRmQiq+ajKKebDLIng==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.84.0.tgz", + "integrity": "sha512-9joNgVisRCWDFfV1d79iTAuR1W/6r+AKJrKUfcjsaTrq5A8OWW3v5TTsfxbHAZArn7n2WxQkqhNGgNyc8LjEng==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0", - "@typespec/events": "^0.81.0", - "@typespec/http": "^1.11.0", - "@typespec/streams": "^0.81.0" + "@typespec/compiler": "^1.14.0", + "@typespec/events": "^0.84.0", + "@typespec/http": "^1.14.0", + "@typespec/streams": "^0.84.0" } }, "node_modules/@typespec/streams": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.81.0.tgz", - "integrity": "sha512-IIEKq18aqAtM65f8ZLs3Kzua97wjkr8fTehqPs/Q4neWo2UkDJp64LfA37iXJzaku8xMFSwXdVu4EW8wo+KV8w==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.84.0.tgz", + "integrity": "sha512-SDneR8+zY+ueOpzg9yJtttfDe/ikB99JgddZSXKPwiDPlAIEeEvI8auipcYfB58EEOB21h8Oq0tEm8HqiAAWdQ==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0" + "@typespec/compiler": "^1.14.0" } }, "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.5.tgz", - "integrity": "sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.7.tgz", + "integrity": "sha512-JVUD8X2tfDMWjcjLs4yVxxVrS8yR5vnh386GAXT9Qj79nBxxXSaHFQZg5FweLmT8HlPQ3kii6noUB+Z9RN7DvQ==", "license": "MIT", "dependencies": { "http-proxy-agent": "^7.0.0", @@ -948,33 +907,33 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" } }, "node_modules/@typespec/versioning": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.81.0.tgz", - "integrity": "sha512-5bha4t64xA85zLY8VGm/6jNd2kwPHzjPq/dlCUjtgGfGXv2R6Ow/YIukqhqZnwnIgNAIlZ7nguekRMRx+2oO2w==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.84.0.tgz", + "integrity": "sha512-ZoDasTDj4z0mgFK+0cJL2+7DduCaTjvICHL2nQ/RBWc7nLgObaIYCjvXLno8WneDXnpxCAr7larN4/nlHEv9fg==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0" + "@typespec/compiler": "^1.14.0" } }, "node_modules/@typespec/xml": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.81.0.tgz", - "integrity": "sha512-4docnAcV1a8gE4c4TmYuirZf2PEzS4xHUH4QjHFU6hk6J2M6OMU6YG4iSq9tmlUzQ/2DraVcWNO/fsG8Lt383A==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.84.0.tgz", + "integrity": "sha512-3x0spgIrr4u3azkYaOxrlumtjoqPiUnJ/G5RwGBmUCAeE5F413MHf/AeIkmZ2ULT1gY3myabfZp8bOijTbMk7A==", "license": "MIT", "peer": true, "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.11.0" + "@typespec/compiler": "^1.14.0" } }, "node_modules/agent-base": { @@ -987,9 +946,9 @@ } }, "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", "peer": true, "dependencies": { @@ -1027,19 +986,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", @@ -1060,9 +1006,9 @@ "peer": true }, "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz", + "integrity": "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==", "license": "MIT", "peer": true }, @@ -1206,23 +1152,6 @@ "license": "MIT", "peer": true }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/fast-string-truncated-width": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", @@ -1241,9 +1170,9 @@ } }, "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "funding": [ { "type": "github", @@ -1258,38 +1187,15 @@ "peer": true }, "node_modules/fast-wrap-ansi": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", - "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", "license": "MIT", "peer": true, "dependencies": { "fast-string-width": "^3.0.2" } }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "license": "ISC", - "peer": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1300,9 +1206,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", - "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", "license": "MIT", "peer": true, "engines": { @@ -1312,40 +1218,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz", - "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.5", - "is-path-inside": "^4.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -1373,9 +1245,9 @@ } }, "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", "license": "MIT", "peer": true, "dependencies": { @@ -1389,26 +1261,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -1418,42 +1270,6 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-safe-filename": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", @@ -1494,30 +1310,6 @@ "license": "MIT", "peer": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", @@ -1574,19 +1366,6 @@ "license": "ISC", "peer": true }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -1598,9 +1377,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.5.tgz", + "integrity": "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==", "license": "MIT", "peer": true, "bin": { @@ -1622,27 +1401,6 @@ "strip-ansi": "^5.0.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -1662,41 +1420,6 @@ "node": ">=0.10.0" } }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", - "peer": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -1705,9 +1428,9 @@ "peer": true }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "license": "ISC", "peer": true, "bin": { @@ -1717,6 +1440,18 @@ "node": ">=10" } }, + "node_modules/shell-quote": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz", + "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -1747,19 +1482,6 @@ "url": "https://github.com/steveukx/git-js?sponsor=1" } }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -1808,9 +1530,9 @@ } }, "node_modules/tar": { - "version": "7.5.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", - "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "version": "7.5.21", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.21.tgz", + "integrity": "sha512-XdhtCvlMywwxpCW8YEq3lOXBJpUPTR2OHHcwLPO3HwsJqOHa2Ok/oJ7ruGzp+JrKoRPVCzJwAdEjqLW/vNRPHA==", "license": "BlueOak-1.0.0", "peer": true, "dependencies": { @@ -1825,34 +1547,29 @@ } }, "node_modules/temporal-polyfill": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.2.tgz", - "integrity": "sha512-TzHthD/heRK947GNiSu3Y5gSPpeUDH34+LESnfsq8bqpFhsB79HFBX8+Z834IVX68P3EUyRPZK5bL/1fh437Eg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-1.0.1.tgz", + "integrity": "sha512-N2SoI9olnW7BUsU8RosDphZQl9s+WJ8O7PoJMFCr/e5/1rFkVI4GNOWaSeySG+UoP04foPYsnLWbJmbXOiShZg==", "license": "MIT", "peer": true, "dependencies": { - "temporal-spec": "0.3.1" + "temporal-spec": "1.0.0", + "temporal-utils": "1.0.1" } }, "node_modules/temporal-spec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.1.tgz", - "integrity": "sha512-B4TUhezh9knfSIMwt7RVggApDRJZo73uZdj8AacL2mZ8RP5KtLianh2MXxL06GN9ESYiIsiuoLQhgVfwe55Yhw==", - "license": "ISC", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-1.0.0.tgz", + "integrity": "sha512-00Ahj1e1ifaERTMOIIGpOCdOo9IEk2m6GGSMedsn9a2SIsGLdOTbmME1Htv6IM82b6VHrzSUTIVc7YHy6hdhFQ==", + "license": "Apache-2.0", "peer": true }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/temporal-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/temporal-utils/-/temporal-utils-1.0.1.tgz", + "integrity": "sha512-HAixuesxFQIUaQk3ptX2jhfO/FsOkgVkDDMawvp6n/fkB1q6BKfs3lURw9I+pK/2e2e/q/vrLrxmeqauBoyGMQ==", "license": "MIT", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } + "peer": true }, "node_modules/tslib": { "version": "2.8.1", @@ -1860,23 +1577,10 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/unicorn-magic": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", - "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.1.tgz", + "integrity": "sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==", "license": "MIT", "peer": true, "engines": { @@ -1884,27 +1588,27 @@ } }, "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.1.0.tgz", + "integrity": "sha512-9gEWpXkYGXoqG7pBnE8O8hx/yP7+Aabn4+peQ3KDicQv6qunHSWyLTud3OF0w4S2+HfDD+5HqYKiXQW9HAU6mA==", "license": "MIT", "peer": true, "dependencies": { - "vscode-languageserver-protocol": "3.17.5" + "vscode-languageserver-protocol": "3.18.2" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.2.tgz", + "integrity": "sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==", "license": "MIT", "peer": true, "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" + "vscode-jsonrpc": "9.0.1", + "vscode-languageserver-types": "3.18.0" } }, "node_modules/vscode-languageserver-textdocument": { @@ -1915,9 +1619,9 @@ "peer": true }, "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz", + "integrity": "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==", "license": "MIT", "peer": true }, @@ -1979,9 +1683,9 @@ } }, "node_modules/yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -1994,9 +1698,9 @@ } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "license": "MIT", "dependencies": { "cliui": "^8.0.1", diff --git a/eng/common/tsp-client/package.json b/eng/common/tsp-client/package.json index 5e79f394a12e..a3d5b73acc98 100644 --- a/eng/common/tsp-client/package.json +++ b/eng/common/tsp-client/package.json @@ -1,8 +1,8 @@ { "dependencies": { - "@azure-tools/typespec-client-generator-cli": "0.32.1" + "@azure-tools/typespec-client-generator-cli": "0.33.1" }, "engines": { - "node": ">=20.19.0" + "node": ">=22.13.0" } } diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json index d07deeb3aa31..b0a4afb90509 100644 --- a/eng/emitter-package-lock.json +++ b/eng/emitter-package-lock.json @@ -6,58 +6,62 @@ "": { "name": "dist/src/index.js", "dependencies": { - "@azure-tools/typespec-python": "0.63.1" + "@azure-tools/typespec-python": "0.63.5" }, "devDependencies": { - "@azure-tools/openai-typespec": "1.20.1", - "@azure-tools/typespec-autorest": "~0.69.1", - "@azure-tools/typespec-azure-core": "~0.69.0", - "@azure-tools/typespec-azure-resource-manager": "~0.69.1", - "@azure-tools/typespec-azure-rulesets": "~0.69.1", - "@azure-tools/typespec-client-generator-core": "~0.69.0", - "@azure-tools/typespec-liftr-base": "0.14.0", - "@typespec/compiler": "^1.13.0", - "@typespec/events": "~0.83.0", - "@typespec/http": "^1.13.0", - "@typespec/http-client-python": "^0.32.0", - "@typespec/openapi": "^1.13.0", - "@typespec/openapi3": "1.13.0", - "@typespec/rest": "~0.83.0", - "@typespec/sse": "~0.83.0", - "@typespec/streams": "~0.83.0", - "@typespec/versioning": "~0.83.0", - "@typespec/xml": "~0.83.0" + "@azure-tools/openai-typespec": "1.25.0", + "@azure-tools/typespec-autorest": "~0.71.0", + "@azure-tools/typespec-azure-core": "~0.71.0", + "@azure-tools/typespec-azure-portal-core": "~0.71.0", + "@azure-tools/typespec-azure-resource-manager": "~0.71.0", + "@azure-tools/typespec-azure-rulesets": "~0.71.0", + "@azure-tools/typespec-client-generator-core": "~0.71.2", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@typespec/compiler": "^1.15.0", + "@typespec/events": "~0.85.0", + "@typespec/http": "^1.15.0", + "@typespec/http-client-python": "^0.36.0", + "@typespec/openapi": "^1.15.0", + "@typespec/openapi3": "^1.15.0", + "@typespec/rest": "~0.85.0", + "@typespec/sse": "~0.85.0", + "@typespec/streams": "~0.85.0", + "@typespec/versioning": "~0.85.0", + "@typespec/xml": "~0.85.0" } }, "node_modules/@azure-tools/openai-typespec": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/@azure-tools/openai-typespec/-/openai-typespec-1.20.1.tgz", - "integrity": "sha512-9pXpSrRyvslAi3Wrwz5uIqoZ20xwWDpDEuuU+MjlAWJIFdv6FR5QnWJCT8xz74yLYLxITaY3UVO2KKNTxT6Vpw==", + "version": "1.25.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/openai-typespec/-/openai-typespec-1.25.0.tgz", + "integrity": "sha1-ed6GUv9Y+v95/dfs3CR+Az1DaZ0=", "dev": true, "license": "MIT", "peerDependencies": { - "@typespec/http": "^1.13.0", - "@typespec/openapi": "^1.13.0" + "@typespec/http": "^1.14.0", + "@typespec/openapi": "^1.14.0" } }, "node_modules/@azure-tools/typespec-autorest": { - "version": "0.69.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.69.1.tgz", - "integrity": "sha512-nbAsTagr4pyBO0ajlRnE5TW4tAXrYKFYSoWD+8bevXpe23bkVIJkDUJCZPSgWE7CBf3kxfw53lAb70a50oJmRA==", + "version": "0.71.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-autorest/-/typespec-autorest-0.71.0.tgz", + "integrity": "sha1-RFb9WR9/0pZaHjt7hxCTvDo3Rlc=", "license": "MIT", + "dependencies": { + "yaml": "^2.8.3" + }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.69.0", - "@azure-tools/typespec-azure-resource-manager": "^0.69.1", - "@azure-tools/typespec-client-generator-core": "^0.69.0", - "@typespec/compiler": "^1.13.0", - "@typespec/http": "^1.13.0", - "@typespec/openapi": "^1.13.0", - "@typespec/rest": "^0.83.0", - "@typespec/versioning": "^0.83.0", - "@typespec/xml": "^0.83.0" + "@azure-tools/typespec-azure-core": "^0.71.0", + "@azure-tools/typespec-azure-resource-manager": "^0.71.0", + "@azure-tools/typespec-client-generator-core": "^0.71.0", + "@typespec/compiler": "^1.15.0", + "@typespec/http": "^1.15.0", + "@typespec/openapi": "^1.15.0", + "@typespec/rest": "^0.85.0", + "@typespec/versioning": "^0.85.0", + "@typespec/xml": "^0.85.0" }, "peerDependenciesMeta": { "@typespec/xml": { @@ -66,23 +70,34 @@ } }, "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.69.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.69.0.tgz", - "integrity": "sha512-UNdPb/DgMvXqwWk9hb54QOAumCJ6u6GGy+bj3RIIT1Sht6FR9rIn8AQ/UQ7WtrhbJBoqvQo5dxtS565a9/VRZw==", + "version": "0.71.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.71.0.tgz", + "integrity": "sha1-OndNkxsckNGPmzgPEgcZW+SG6K4=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0", - "@typespec/http": "^1.13.0", - "@typespec/rest": "^0.83.0" + "@typespec/compiler": "^1.15.0", + "@typespec/http": "^1.15.0", + "@typespec/rest": "^0.85.0" + } + }, + "node_modules/@azure-tools/typespec-azure-portal-core": { + "version": "0.71.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-azure-portal-core/-/typespec-azure-portal-core-0.71.0.tgz", + "integrity": "sha1-pDAGyH370lREwb8cc53vSmwSfvM=", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@azure-tools/typespec-azure-resource-manager": "^0.71.0", + "@typespec/compiler": "^1.15.0" } }, "node_modules/@azure-tools/typespec-azure-resource-manager": { - "version": "0.69.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.69.1.tgz", - "integrity": "sha512-NF7fqmPwaQbywcxGhH+v9qPYtIrPRR5MncXmeml6Kf9WLeqQj0rJt76KZCsZ8zwj58ZVbTNFPKcjsTQ00yQupA==", + "version": "0.71.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.71.0.tgz", + "integrity": "sha1-yIlakkA/ScZ83103yBZb1NS0vG4=", "license": "MIT", "dependencies": { "change-case": "^5.4.4", @@ -92,33 +107,33 @@ "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.69.0", - "@typespec/compiler": "^1.13.0", - "@typespec/http": "^1.13.0", - "@typespec/openapi": "^1.13.0", - "@typespec/rest": "^0.83.0", - "@typespec/versioning": "^0.83.0" + "@azure-tools/typespec-azure-core": "^0.71.0", + "@typespec/compiler": "^1.15.0", + "@typespec/http": "^1.15.0", + "@typespec/openapi": "^1.15.0", + "@typespec/rest": "^0.85.0", + "@typespec/versioning": "^0.85.0" } }, "node_modules/@azure-tools/typespec-azure-rulesets": { - "version": "0.69.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.69.1.tgz", - "integrity": "sha512-vRvO8MoO4dwHdOKCFUB0IZkwf5AFGW92PP+48GKDYSNVFA7mwKVlbAlRa0rU6yURsUppAT6BPEurtau3FR+N0Q==", + "version": "0.71.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.71.0.tgz", + "integrity": "sha1-om2dE6CDZXh48GWtwV7PMDhWGlg=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.69.0", - "@azure-tools/typespec-azure-resource-manager": "^0.69.1", - "@azure-tools/typespec-client-generator-core": "^0.69.0", - "@typespec/compiler": "^1.13.0" + "@azure-tools/typespec-azure-core": "^0.71.0", + "@azure-tools/typespec-azure-resource-manager": "^0.71.0", + "@azure-tools/typespec-client-generator-core": "^0.71.0", + "@typespec/compiler": "^1.15.0" } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.69.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.69.0.tgz", - "integrity": "sha512-ro8zzOeiN/74r0wM19R77gzLtbfjIFgKgr1Rusii/vhCfJIoVC7IcqLxhbJl0RVkjyhRFKt4GCRAw4iurnrDnw==", + "version": "0.71.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.71.2.tgz", + "integrity": "sha1-iAiQErwq2e8JIHO1qRMVbM/2CaE=", "license": "MIT", "dependencies": { "change-case": "^5.4.4", @@ -129,104 +144,58 @@ "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.69.0", - "@typespec/compiler": "^1.13.0", - "@typespec/events": "^0.83.0", - "@typespec/http": "^1.13.0", - "@typespec/openapi": "^1.13.0", - "@typespec/rest": "^0.83.0", - "@typespec/sse": "^0.83.0", - "@typespec/streams": "^0.83.0", - "@typespec/versioning": "^0.83.0", - "@typespec/xml": "^0.83.0" + "@azure-tools/typespec-azure-core": "^0.71.0", + "@typespec/compiler": "^1.15.0", + "@typespec/events": "^0.85.0", + "@typespec/http": "^1.15.0", + "@typespec/openapi": "^1.15.0", + "@typespec/rest": "^0.85.0", + "@typespec/sse": "^0.85.0", + "@typespec/streams": "^0.85.0", + "@typespec/versioning": "^0.85.0", + "@typespec/xml": "^0.85.0" } }, "node_modules/@azure-tools/typespec-liftr-base": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-liftr-base/-/typespec-liftr-base-0.14.0.tgz", - "integrity": "sha512-q9pEaOiIaE2VF+BsnaDG98zrj0sZ7/8AD8aBrwXtHbzH+id3sWprl8rRF0qagDSVchslfrHcGFhXs2bM6Hie0g==", + "version": "0.13.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-liftr-base/-/typespec-liftr-base-0.13.0.tgz", + "integrity": "sha1-vSGud1SYlpiPGU7ybeXyWL/Zxw8=", "dev": true }, "node_modules/@azure-tools/typespec-python": { - "version": "0.63.1", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-python/-/typespec-python-0.63.1.tgz", - "integrity": "sha512-+hRzFg+pE4nGu0kko8TFcwW7Wc9irQe1QNhfu5jJj8OmMbk4idYXWKh+yo+25HUJ54Eu6L4/vgX8RzYGAfJogQ==", + "version": "0.63.5", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@azure-tools/typespec-python/-/typespec-python-0.63.5.tgz", + "integrity": "sha1-gtmEeyQk6+cLgDdmq5L+wIOoFE4=", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@typespec/http-client-python": "^0.31.1", - "semver": "^7.7.4", - "tsx": "^4.21.0" + "@typespec/http-client-python": ">=0.36.0 <1.0.0", + "semver": "^7.7.4" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-autorest": "^0.69.0", - "@azure-tools/typespec-azure-core": "^0.69.0", - "@azure-tools/typespec-azure-resource-manager": "^0.69.0", - "@azure-tools/typespec-azure-rulesets": "^0.69.0", - "@azure-tools/typespec-client-generator-core": "^0.69.0", - "@typespec/compiler": "^1.13.0", - "@typespec/events": "^0.83.0", - "@typespec/http": "^1.13.0", - "@typespec/openapi": "^1.13.0", - "@typespec/rest": "^0.83.0", - "@typespec/sse": "^0.83.0", - "@typespec/streams": "^0.83.0", - "@typespec/versioning": "^0.83.0", - "@typespec/xml": "^0.83.0" - } - }, - "node_modules/@azure-tools/typespec-python/node_modules/@typespec/http-client-python": { - "version": "0.31.1", - "resolved": "https://registry.npmjs.org/@typespec/http-client-python/-/http-client-python-0.31.1.tgz", - "integrity": "sha512-69lB3EzV/eVprES14ud6hDf6EgIuPu/Q/lhkCEzDZ9qNH5Q7ntScSweWDp71uoT56vpyl2rr41Zjb+FixQhS2g==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "js-yaml": "~4.1.0", - "marked": "^15.0.6", - "pyodide": "0.26.2", - "semver": "~7.6.2", - "tsx": "^4.21.0" - }, - "engines": { - "node": ">=22.0.0" - }, - "peerDependencies": { - "@azure-tools/typespec-autorest": ">=0.69.0 <1.0.0", - "@azure-tools/typespec-azure-core": ">=0.69.0 <1.0.0", - "@azure-tools/typespec-azure-resource-manager": ">=0.69.0 <1.0.0", - "@azure-tools/typespec-azure-rulesets": ">=0.69.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.69.0 <1.0.0", - "@typespec/compiler": "^1.13.0", - "@typespec/events": ">=0.83.0 <1.0.0", - "@typespec/http": "^1.13.0", - "@typespec/openapi": "^1.13.0", - "@typespec/rest": ">=0.83.0 <1.0.0", - "@typespec/sse": ">=0.83.0 <1.0.0", - "@typespec/streams": ">=0.83.0 <1.0.0", - "@typespec/versioning": ">=0.83.0 <1.0.0", - "@typespec/xml": ">=0.83.0 <1.0.0" - } - }, - "node_modules/@azure-tools/typespec-python/node_modules/@typespec/http-client-python/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@azure-tools/typespec-autorest": "^0.71.0", + "@azure-tools/typespec-azure-core": "^0.71.0", + "@azure-tools/typespec-azure-resource-manager": "^0.71.0", + "@azure-tools/typespec-azure-rulesets": "^0.71.0", + "@azure-tools/typespec-client-generator-core": "^0.71.1", + "@typespec/compiler": "^1.15.0", + "@typespec/events": "^0.85.0", + "@typespec/http": "^1.15.0", + "@typespec/openapi": "^1.15.0", + "@typespec/rest": "^0.85.0", + "@typespec/sse": "^0.85.0", + "@typespec/streams": "^0.85.0", + "@typespec/versioning": "^0.85.0", + "@typespec/xml": "^0.85.0" } }, "node_modules/@babel/code-frame": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha1-8vu/6ofESiFZDsUVt3iywm2IZuc=", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", @@ -239,17 +208,17 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha1-vYcITO0MeW7Ea9pJLeboPSnon8I=", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha1-v24QMDvPLnxoaXX6Uvk37Cco2Lw=", "cpu": [ "ppc64" ], @@ -263,9 +232,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha1-LYTs5qTiaE2SvibuE9QnV9gxw4E=", "cpu": [ "arm" ], @@ -279,9 +248,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha1-DGJGvI0sTRcqrC2z+xGQ1yvWVQQ=", "cpu": [ "arm64" ], @@ -295,9 +264,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha1-/DjU1jWNjcHPU/CfdYn+Q262SAE=", "cpu": [ "x64" ], @@ -311,9 +280,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha1-+Dr+6sHX2sAcei/QErPkUaBZH8w=", "cpu": [ "arm64" ], @@ -327,9 +296,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha1-UQFHwFWnlViNu+FP1rG4rQovMN4=", "cpu": [ "x64" ], @@ -343,9 +312,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha1-CTuSAOzwsRW6Tl4kinSFycX4vV4=", "cpu": [ "arm64" ], @@ -359,9 +328,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha1-C+Irbfkl0hPoQeqHEjr134Cw+vc=", "cpu": [ "x64" ], @@ -375,9 +344,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha1-vrEq1yuE9y0oSIzBuO6ffrFB11M=", "cpu": [ "arm" ], @@ -391,9 +360,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha1-G9vGUc2pupmVxT7ZxxzqplCUdi0=", "cpu": [ "arm64" ], @@ -407,9 +376,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha1-uB+dVVKbRcIGpGoTghSxqmh5aWs=", "cpu": [ "ia32" ], @@ -423,9 +392,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha1-WYZnJBoEyZt27W75QKxQA4xBn5g=", "cpu": [ "loong64" ], @@ -439,9 +408,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha1-HFHrnOqQP1PZe1rzsYQdtw9Vlso=", "cpu": [ "mips64el" ], @@ -455,9 +424,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha1-Y91h8XzrMagSJ/QT/qyKcbwsUfI=", "cpu": [ "ppc64" ], @@ -471,9 +440,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha1-N2Owj95c8lqx+suOd1Lt/kX7/Cc=", "cpu": [ "riscv64" ], @@ -487,9 +456,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha1-GhN/8pOoKQbrMXY4W9fo4OXPt8s=", "cpu": [ "s390x" ], @@ -503,9 +472,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha1-Jos2IRwUbKVPj+EsV4qNbviXlIU=", "cpu": [ "x64" ], @@ -519,9 +488,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha1-Ilca2VHWK7aszILY0frVyMGsC6E=", "cpu": [ "arm64" ], @@ -535,9 +504,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha1-QvzFcpfrCgyj9fxHUpH0waP3wN4=", "cpu": [ "x64" ], @@ -551,9 +520,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha1-nrMq8QSsPaz07coB9ZZmSqsMc+8=", "cpu": [ "arm64" ], @@ -567,9 +536,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha1-/r7SQC1giCJekfIPtM4lIq0KTv0=", "cpu": [ "x64" ], @@ -583,9 +552,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha1-hWQcPUZkKL+8zqXyHCaDZmP+9c4=", "cpu": [ "arm64" ], @@ -599,9 +568,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha1-pzb52JYkgQRfxMPlT1R58iyHD7Q=", "cpu": [ "x64" ], @@ -615,9 +584,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha1-7lq0D60YYgG2UqM/il6xSenkJTI=", "cpu": [ "arm64" ], @@ -631,9 +600,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha1-xA0optmaEn2mcR8q/XSxHLY7Bqc=", "cpu": [ "ia32" ], @@ -647,9 +616,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha1-shr/uATMFnwTPZX0WzodwTI7moc=", "cpu": [ "x64" ], @@ -664,8 +633,8 @@ }, "node_modules/@inquirer/ansi": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.7.tgz", - "integrity": "sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/ansi/-/ansi-2.0.7.tgz", + "integrity": "sha1-ht4igQysPtQG7BD41mAWgVuCJrQ=", "license": "MIT", "engines": { "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" @@ -673,8 +642,8 @@ }, "node_modules/@inquirer/checkbox": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.1.tgz", - "integrity": "sha512-b6xmA/VlTe0ZgDQHDui+Nav470u7u49nRd8/iuhOcQPO9Ch7lGuogydhi2VOmNlZ+zXcM8IcPuNSwQcdJaF/kw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/checkbox/-/checkbox-5.2.1.tgz", + "integrity": "sha1-fxSLMVOnds7iAgFbEPmphQaNGI0=", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.7", @@ -696,8 +665,8 @@ }, "node_modules/@inquirer/confirm": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", - "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/confirm/-/confirm-6.1.1.tgz", + "integrity": "sha1-nGp9ecYTKyr1f9t1dH8FYgTlU1Y=", "license": "MIT", "dependencies": { "@inquirer/core": "^11.2.1", @@ -717,8 +686,8 @@ }, "node_modules/@inquirer/core": { "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.2.1.tgz", - "integrity": "sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/core/-/core-11.2.1.tgz", + "integrity": "sha1-VMzY99R4UhQLYGbL131jssKxaP0=", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.7", @@ -743,8 +712,8 @@ }, "node_modules/@inquirer/editor": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.2.2.tgz", - "integrity": "sha512-ZRVd/oD+sYsUd5zVm0NflqEzlqfYCyHNsqkHl2oWXEUHs12tCbcSFi+wVFEvD8+LGRaMUsVrE7qeo6lSG/S1Vg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/editor/-/editor-5.2.2.tgz", + "integrity": "sha1-fHPi/A571MQM/TihgK5bvSTTK5A=", "license": "MIT", "dependencies": { "@inquirer/core": "^11.2.1", @@ -765,8 +734,8 @@ }, "node_modules/@inquirer/expand": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.1.tgz", - "integrity": "sha512-YmQpenjbFSHAK3sOd44puHh3V1KXXr+JiNpUztoSQ4drLh2rTVzTap/YtlAVu/5xavifIlBfNEzJ/neZJ1a/1g==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/expand/-/expand-5.1.1.tgz", + "integrity": "sha1-4q/qwkfZfdZO4YqoHpAr3R/g6nA=", "license": "MIT", "dependencies": { "@inquirer/core": "^11.2.1", @@ -786,8 +755,8 @@ }, "node_modules/@inquirer/external-editor": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-6thf5I8q7lZwzGLAxPaaGEREEkZ3nyePPDQ1oyobblxmEE8mqTLguScP7pDjUTAibiyb4hfXl+qjUEJ+di/aNA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha1-1553JULPjTQGQunavToep/WjAQQ=", "license": "MIT", "dependencies": { "chardet": "^2.1.1", @@ -807,8 +776,8 @@ }, "node_modules/@inquirer/figures": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.7.tgz", - "integrity": "sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/figures/-/figures-2.0.7.tgz", + "integrity": "sha1-9cxYQ3MqgTBNBqDbS1PMfb2hVUE=", "license": "MIT", "engines": { "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" @@ -816,8 +785,8 @@ }, "node_modules/@inquirer/input": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.2.tgz", - "integrity": "sha512-9K/DDBSQpOyZSkt6sOVP9Vo0TR7atX2kuILsUu0x3wVcVbe97lJwIJKMLdMw25tDYuXl/qp6erT0Xs1rfmcfZg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/input/-/input-5.1.2.tgz", + "integrity": "sha1-kwXLFw38OlMj5erIhalF583dXEs=", "license": "MIT", "dependencies": { "@inquirer/core": "^11.2.1", @@ -837,8 +806,8 @@ }, "node_modules/@inquirer/number": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.1.1.tgz", - "integrity": "sha512-XF4IXAbPnGPgw0wsbC/i2tPcyfdZgDpUlhsqU0SfT4IRIGWha6Xm9VRgN5yYxJq+jnyXlfXI/nQ3ulfk0iEICA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/number/-/number-4.1.1.tgz", + "integrity": "sha1-sTNmjY4OCZtBM6u5FSIVAeD/ddc=", "license": "MIT", "dependencies": { "@inquirer/core": "^11.2.1", @@ -858,8 +827,8 @@ }, "node_modules/@inquirer/password": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.1.1.tgz", - "integrity": "sha512-3XBfF7DAsp5qeDsvN5Rd1HmbNokVvEQoUM0QLrRcybC9nX96w3Pbmu7qUsb3IT3J3jBvs2+mTXaKHOUsgHMLzg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/password/-/password-5.1.1.tgz", + "integrity": "sha1-8h77YU2pyQUJUmL1F4H9KnIfzqw=", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.7", @@ -880,8 +849,8 @@ }, "node_modules/@inquirer/prompts": { "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.5.2.tgz", - "integrity": "sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/prompts/-/prompts-8.5.2.tgz", + "integrity": "sha1-CcATKtoru6lMkdNBEV4eQcs/FSU=", "license": "MIT", "dependencies": { "@inquirer/checkbox": "^5.2.1", @@ -909,8 +878,8 @@ }, "node_modules/@inquirer/rawlist": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.1.tgz", - "integrity": "sha512-QqdTqQddL3qPX/PPrjobpsO25NZ4dWXgTLenrR445L2ptLEYE6Z+PD5c5CNDJNx4ugRgELAIpSIJxZaO2jJ2Og==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/rawlist/-/rawlist-5.3.1.tgz", + "integrity": "sha1-Zva45qqC1HOZxDO4JiEo58Gk+c4=", "license": "MIT", "dependencies": { "@inquirer/core": "^11.2.1", @@ -930,8 +899,8 @@ }, "node_modules/@inquirer/search": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.2.1.tgz", - "integrity": "sha512-xJj8QWKRSrfKoBIITLZK61dD3zwo0Rz11fgDImku30/Oe81zMdIdGgrLY2h6RkJ+KZ/GhNYIRMKnH/62qBTA5g==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/search/-/search-4.2.1.tgz", + "integrity": "sha1-yPS3irP4Zv3wUD+sDNCMSmZhwR4=", "license": "MIT", "dependencies": { "@inquirer/core": "^11.2.1", @@ -952,8 +921,8 @@ }, "node_modules/@inquirer/select": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.1.tgz", - "integrity": "sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/select/-/select-5.2.1.tgz", + "integrity": "sha1-OgXnbljZ4bsJXpEsPnCTqgTNRgQ=", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.7", @@ -975,8 +944,8 @@ }, "node_modules/@inquirer/type": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.7.tgz", - "integrity": "sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@inquirer/type/-/type-4.0.7.tgz", + "integrity": "sha1-nG8NhX/mrVSaOpMjQ7ZOdqyzSxA=", "license": "MIT", "engines": { "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" @@ -992,8 +961,8 @@ }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha1-LVmuOrSzj7QnC/oj0w+OLobH/jI=", "license": "ISC", "dependencies": { "minipass": "^7.0.4" @@ -1003,9 +972,9 @@ } }, "node_modules/@scalar/helpers": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@scalar/helpers/-/helpers-0.8.2.tgz", - "integrity": "sha512-qNbqUjSB3S4Gr4A0oANcm5G1Ip+EqBxICYKhe9YzmnaBpbmW6shxqpiivApTvvuDf+uIhR3uMwWyVQbYcGLsxA==", + "version": "0.10.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@scalar/helpers/-/helpers-0.10.0.tgz", + "integrity": "sha1-5gOB/77DmwyyJ9C5kAywgY70tdw=", "dev": true, "license": "MIT", "engines": { @@ -1013,46 +982,61 @@ } }, "node_modules/@scalar/json-magic": { - "version": "0.12.16", - "resolved": "https://registry.npmjs.org/@scalar/json-magic/-/json-magic-0.12.16.tgz", - "integrity": "sha512-w8cDbZhHCzmIblWx92IVWoAXsbI4Fz3m++jiBANTSO1hgphF6UqEPQiCt3wnMPaxaanjMQxjS/iBk1UGXR2EGA==", + "version": "0.12.20", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@scalar/json-magic/-/json-magic-0.12.20.tgz", + "integrity": "sha1-t/mlyWeMCJAR2ge5uo0o/YpFkBc=", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.8.2", + "@scalar/helpers": "0.10.0", "pathe": "^2.0.3", - "yaml": "^2.8.3" + "yaml": "^2.9.0" }, "engines": { "node": ">=22" } }, "node_modules/@scalar/openapi-parser": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/@scalar/openapi-parser/-/openapi-parser-0.28.7.tgz", - "integrity": "sha512-E6beEdTsJxUStxOmY1knQvSNJq6LTiXOsRX2WTrfmU6d/kiATn6IKkAU0kXtAZkaYCGU4UCEmBFHCMmNKn0JLA==", + "version": "0.28.14", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@scalar/openapi-parser/-/openapi-parser-0.28.14.tgz", + "integrity": "sha1-QAGgiWkn+tiAG0sFzgiWqgrj5UM=", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.8.2", - "@scalar/json-magic": "0.12.16", - "@scalar/openapi-types": "0.9.1", - "@scalar/openapi-upgrader": "0.2.9", + "@scalar/helpers": "0.10.0", + "@scalar/json-magic": "0.13.0", + "@scalar/openapi-types": "0.9.4", + "@scalar/openapi-upgrader": "0.2.13", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "ajv-formats": "^3.0.1", "jsonpointer": "^5.0.1", "leven": "^4.0.0", - "yaml": "^2.8.3" + "yaml": "^2.9.0" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@scalar/openapi-parser/node_modules/@scalar/json-magic": { + "version": "0.13.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@scalar/json-magic/-/json-magic-0.13.0.tgz", + "integrity": "sha1-QlH1Rtq+SzOBmqiSCaSlFztQ0Pk=", + "dev": true, + "license": "MIT", + "dependencies": { + "@scalar/helpers": "0.10.0", + "pathe": "^2.0.3", + "yaml": "^2.9.0" }, "engines": { "node": ">=22" } }, "node_modules/@scalar/openapi-types": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.9.1.tgz", - "integrity": "sha512-gkGhSkxSzADaBiNg+ZAbJuwj+ZUmzP2Pg9CWZ7ZP+0fck2WjPeDDM7aAbouAm0aQQMF9xBjSPXSA9a/qTHYaTw==", + "version": "0.9.4", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@scalar/openapi-types/-/openapi-types-0.9.4.tgz", + "integrity": "sha1-N0XgXBvPDRKHHQGmUf2O9XMeVGc=", "dev": true, "license": "MIT", "engines": { @@ -1060,13 +1044,13 @@ } }, "node_modules/@scalar/openapi-upgrader": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@scalar/openapi-upgrader/-/openapi-upgrader-0.2.9.tgz", - "integrity": "sha512-D5b0rGLLZgmkO9mdW2j/ND1KBlH1u3RCpr87HPxv9P9ZSr6PtM5iLqFOJq0ACiaHjY2mikCrxgDmnUEhTzRpHQ==", + "version": "0.2.13", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@scalar/openapi-upgrader/-/openapi-upgrader-0.2.13.tgz", + "integrity": "sha1-4apXoO5+dR+XLFg+0ok9QTgUdb0=", "dev": true, "license": "MIT", "dependencies": { - "@scalar/openapi-types": "0.9.1" + "@scalar/openapi-types": "0.9.4" }, "engines": { "node": ">=22" @@ -1074,8 +1058,8 @@ }, "node_modules/@typespec/asset-emitter": { "version": "0.79.1", - "resolved": "https://registry.npmjs.org/@typespec/asset-emitter/-/asset-emitter-0.79.1.tgz", - "integrity": "sha512-53s3GLu5BwNkl7Itr/OizfhymTV2u7k5/cwjUOAt03AUDfiKlwbsp+iCIsq1vccJuoDOiXOceJOfL8rAf4/9LQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/asset-emitter/-/asset-emitter-0.79.1.tgz", + "integrity": "sha1-ustlnxj/oOyPs7Wkf44wS8qKImo=", "dev": true, "license": "MIT", "engines": { @@ -1086,9 +1070,9 @@ } }, "node_modules/@typespec/compiler": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.13.0.tgz", - "integrity": "sha512-DonoHiyAMx0UjSmssqTrFtya+v97wny1aHcTLU5QF2wFzLATtcwUU9hbPC+eXhepuTunMOCHf8yk3pEsH6PZYA==", + "version": "1.15.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/compiler/-/compiler-1.15.0.tgz", + "integrity": "sha1-3BWfZoiYvTkU/OnXjF9I5MHn3ec=", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", @@ -1099,11 +1083,11 @@ "is-unicode-supported": "^2.1.0", "mustache": "^4.2.0", "picocolors": "^1.1.1", - "prettier": "^3.8.1", + "prettier": "^3.9.5", "semver": "^7.7.4", - "tar": "^7.5.13", - "temporal-polyfill": "^0.3.2", - "vscode-languageserver": "^9.0.1", + "tar": "^7.5.21", + "temporal-polyfill": "^1.0.1", + "vscode-languageserver": "^10.0.0", "vscode-languageserver-textdocument": "^1.0.12", "yaml": "^2.8.3", "yargs": "^18.0.0" @@ -1117,28 +1101,28 @@ } }, "node_modules/@typespec/events": { - "version": "0.83.0", - "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.83.0.tgz", - "integrity": "sha512-3EP1EIjdLgwStgd2rGWaF/QqY7YRAt+DIYnnYG2VsdPwa8s2t6K6eJ9YJDXveeHImAkHs+cpFuwxnjKMl4hOyw==", + "version": "0.85.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/events/-/events-0.85.0.tgz", + "integrity": "sha1-TZtGfQwTcbcldDGg/rTUpzz2Was=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0" + "@typespec/compiler": "^1.15.0" } }, "node_modules/@typespec/http": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.13.0.tgz", - "integrity": "sha512-tf8XFddU6g1MZSAVCLC/0Xa4fNfUO0CcHe6PWpmC3bvUojxMnpRcERI2DdoRJ+aycB9Q+Z8wN8bJO3up6u+sCw==", + "version": "1.15.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/http/-/http-1.15.0.tgz", + "integrity": "sha1-OqvPNx2dM+UE2rk3fC+/t8tER04=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0", - "@typespec/streams": "^0.83.0" + "@typespec/compiler": "^1.15.0", + "@typespec/streams": "^0.85.0" }, "peerDependenciesMeta": { "@typespec/streams": { @@ -1147,14 +1131,13 @@ } }, "node_modules/@typespec/http-client-python": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@typespec/http-client-python/-/http-client-python-0.32.0.tgz", - "integrity": "sha512-O/awfKVCi1nVJbgUviv8Aw3uGXBDFYzI3AH9BH1v2cAuUkvx8uHmQ+6cj06xMvepKh5UHRoGtDLwHDXBi07y8Q==", - "dev": true, + "version": "0.36.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/http-client-python/-/http-client-python-0.36.0.tgz", + "integrity": "sha1-ppxvrPrcKI2xiDBoWYqYxZAGXrQ=", "hasInstallScript": true, "license": "MIT", "dependencies": { - "js-yaml": "~4.1.0", + "js-yaml": "^4.2.0", "marked": "^15.0.6", "pyodide": "0.26.2", "semver": "~7.6.2", @@ -1164,27 +1147,26 @@ "node": ">=22.0.0" }, "peerDependencies": { - "@azure-tools/typespec-autorest": ">=0.69.1 <1.0.0", - "@azure-tools/typespec-azure-core": ">=0.69.0 <1.0.0", - "@azure-tools/typespec-azure-resource-manager": ">=0.69.1 <1.0.0", - "@azure-tools/typespec-azure-rulesets": ">=0.69.1 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.69.0 <1.0.0", - "@typespec/compiler": "^1.13.0", - "@typespec/events": ">=0.83.0 <1.0.0", - "@typespec/http": "^1.13.0", - "@typespec/openapi": "^1.13.0", - "@typespec/rest": ">=0.83.0 <1.0.0", - "@typespec/sse": ">=0.83.0 <1.0.0", - "@typespec/streams": ">=0.83.0 <1.0.0", - "@typespec/versioning": ">=0.83.0 <1.0.0", - "@typespec/xml": ">=0.83.0 <1.0.0" + "@azure-tools/typespec-autorest": ">=0.71.0 <1.0.0", + "@azure-tools/typespec-azure-core": ">=0.71.0 <1.0.0", + "@azure-tools/typespec-azure-resource-manager": ">=0.71.0 <1.0.0", + "@azure-tools/typespec-azure-rulesets": ">=0.71.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.71.0 <1.0.0", + "@typespec/compiler": "^1.15.0", + "@typespec/events": ">=0.85.0 <1.0.0", + "@typespec/http": "^1.15.0", + "@typespec/openapi": "^1.15.0", + "@typespec/rest": ">=0.85.0 <1.0.0", + "@typespec/sse": ">=0.85.0 <1.0.0", + "@typespec/streams": ">=0.85.0 <1.0.0", + "@typespec/versioning": ">=0.85.0 <1.0.0", + "@typespec/xml": ">=0.85.0 <1.0.0" } }, "node_modules/@typespec/http-client-python/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/semver/-/semver-7.6.3.tgz", + "integrity": "sha1-mA97VVC8F1+03AlAMIVif56zMUM=", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1194,22 +1176,22 @@ } }, "node_modules/@typespec/openapi": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.13.0.tgz", - "integrity": "sha512-omPc9n+LM2WvjYwnIf31RCxmG17fFUOVLBRsWg4T1mbcsNCj4grnNP7Lwt+irIZCiKtmLKxq3ViE7jYixCkZ3g==", + "version": "1.15.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/openapi/-/openapi-1.15.0.tgz", + "integrity": "sha1-f7jb9Zwx/8+LWYZ9miF2ANsE1H4=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0", - "@typespec/http": "^1.13.0" + "@typespec/compiler": "^1.15.0", + "@typespec/http": "^1.15.0" } }, "node_modules/@typespec/openapi3": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi3/-/openapi3-1.13.0.tgz", - "integrity": "sha512-G6ayl30kXYVhJvL2/zFwtTdWnCt6N6jZWxs8rAwYiFlZfaG8R/dzjRgcap9Dr0v+6AyWmRwooxRKM3TLi5R/mg==", + "version": "1.15.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/openapi3/-/openapi3-1.15.0.tgz", + "integrity": "sha1-JZRyXNH0uTds6F8V2Cl6FI7Jhzc=", "dev": true, "license": "MIT", "dependencies": { @@ -1226,14 +1208,14 @@ "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0", - "@typespec/events": "^0.83.0", - "@typespec/http": "^1.13.0", - "@typespec/json-schema": "^1.13.0", - "@typespec/openapi": "^1.13.0", - "@typespec/sse": "^0.83.0", - "@typespec/streams": "^0.83.0", - "@typespec/versioning": "^0.83.0" + "@typespec/compiler": "^1.15.0", + "@typespec/events": "^0.85.0", + "@typespec/http": "^1.15.0", + "@typespec/json-schema": "^1.15.0", + "@typespec/openapi": "^1.15.0", + "@typespec/sse": "^0.85.0", + "@typespec/streams": "^0.85.0", + "@typespec/versioning": "^0.85.0" }, "peerDependenciesMeta": { "@typespec/events": { @@ -1257,73 +1239,73 @@ } }, "node_modules/@typespec/rest": { - "version": "0.83.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.83.0.tgz", - "integrity": "sha512-WMEwEe1kdaOdZ0c+ct5BVmTSBXkrPniUYDWCz3K52T4in2dNc7J6YGP6tL8bXgQz5B0CsP0VNO12N+UysQDsLw==", + "version": "0.85.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/rest/-/rest-0.85.0.tgz", + "integrity": "sha1-MpezFelVNp3C8V7zqiIGkCmOSig=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0", - "@typespec/http": "^1.13.0" + "@typespec/compiler": "^1.15.0", + "@typespec/http": "^1.15.0" } }, "node_modules/@typespec/sse": { - "version": "0.83.0", - "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.83.0.tgz", - "integrity": "sha512-04WNaju2rwBbcF5pG+HrKQtdcrmSGuTVziLHNA9XOqj1qM7Uon3+wo2g+ZZ3Z6tngfqQoTCPyDcRHqZtGRdNuw==", + "version": "0.85.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/sse/-/sse-0.85.0.tgz", + "integrity": "sha1-7Z+nl1EmgQOzVw0M7Kyt9BI62ME=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0", - "@typespec/events": "^0.83.0", - "@typespec/http": "^1.13.0", - "@typespec/streams": "^0.83.0" + "@typespec/compiler": "^1.15.0", + "@typespec/events": "^0.85.0", + "@typespec/http": "^1.15.0", + "@typespec/streams": "^0.85.0" } }, "node_modules/@typespec/streams": { - "version": "0.83.0", - "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.83.0.tgz", - "integrity": "sha512-wbO6sdH1Uf+UwjxxsWdHQkjJ3wwiYsAKI+L66qnDYVXAFe02sUdMKd0mxH5o9ipGXE52MZ+yvZ52vHAD+g3RFQ==", + "version": "0.85.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/streams/-/streams-0.85.0.tgz", + "integrity": "sha1-kpy9k/VI78G2x7vEPYBBaTSAJ5k=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0" + "@typespec/compiler": "^1.15.0" } }, "node_modules/@typespec/versioning": { - "version": "0.83.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.83.0.tgz", - "integrity": "sha512-nE66ta0ixpHB6FQpSzqnj8QnVfgFsxeK/4Xv+DxYx2nB/w18f6VjkF+hW+A/zs1tZIYvBZVbCNa/Rcr8zM6fhg==", + "version": "0.85.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/versioning/-/versioning-0.85.0.tgz", + "integrity": "sha1-QKPYE3Ekp2N3BF1WHYklWdQd/Rg=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0" + "@typespec/compiler": "^1.15.0" } }, "node_modules/@typespec/xml": { - "version": "0.83.0", - "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.83.0.tgz", - "integrity": "sha512-2/dtAD8jGPkIdwpQ1G1P+5+qdMPeafQiIKCd8NdAnOo0w9OZ59Io52jINm9HdN8+FcbOrqK8+B2N9rlPRj7PqA==", + "version": "0.85.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/@typespec/xml/-/xml-0.85.0.tgz", + "integrity": "sha1-uwCwqUDM38WdUrmj+nxFC1A4Bw4=", "license": "MIT", "engines": { "node": ">=22.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.13.0" + "@typespec/compiler": "^1.15.0" } }, "node_modules/ajv": { "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha1-MEs2Nq3Yi6fZNnYN1Q7OAG3qlfk=", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -1338,8 +1320,8 @@ }, "node_modules/ajv-draft-04": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha1-O2R2GyaLoLnmaPC0G6U/zgrXf8g=", "dev": true, "license": "MIT", "peerDependencies": { @@ -1353,8 +1335,8 @@ }, "node_modules/ajv-formats": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha1-PV3HYryhdnnDwup+kK1rdTIwlXg=", "dev": true, "license": "MIT", "dependencies": { @@ -1370,9 +1352,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "version": "6.3.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha1-JHyOe3ChpDsQzhTAIm/L9Y6IFdU=", "license": "MIT", "engines": { "node": ">=12" @@ -1383,8 +1365,8 @@ }, "node_modules/ansi-styles": { "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha1-wETV3MUhoHZBNHJZehrLHxA8QEE=", "license": "MIT", "engines": { "node": ">=12" @@ -1395,26 +1377,26 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=", "license": "Python-2.0" }, "node_modules/change-case": { "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha1-DVK1B9j7jyBDQ0MjgdGm17/5egI=", "license": "MIT" }, "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "version": "2.2.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/chardet/-/chardet-2.2.0.tgz", + "integrity": "sha1-AF1mTyy9SWGIjS4sMsWmnlnY7sQ=", "license": "MIT" }, "node_modules/chownr": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha1-mFXmTs0kCpzEJnzopKpdJKHaFeQ=", "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -1422,8 +1404,8 @@ }, "node_modules/cli-width": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha1-QtqsQdPCVO84rYrAN2chMBc2kcU=", "license": "ISC", "engines": { "node": ">= 12" @@ -1431,8 +1413,8 @@ }, "node_modules/cliui": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha1-b3iQ84b28feZU63B943sRvzC0pE=", "license": "ISC", "dependencies": { "string-width": "^7.2.0", @@ -1443,16 +1425,33 @@ "node": ">=20" } }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha1-tbuOIWXOJ11NQ0dt0nAK2Qkdttw=", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/emoji-regex": { "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha1-vz1uj3+P0ipl2XA0dbwBRzV6aw0=", "license": "MIT" }, "node_modules/env-paths": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", - "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha1-0LsfhKgdJUJYG/e36AhdBoOzkJc=", "license": "MIT", "dependencies": { "is-safe-filename": "^0.1.0" @@ -1465,9 +1464,9 @@ } }, "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "version": "0.28.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha1-D0O9G62VW3LSTiJh46vllXzPCBY=", "hasInstallScript": true, "license": "MIT", "bin": { @@ -1477,38 +1476,38 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" } }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha1-ARo/aYVroYnf+n3I/M6Z0qh5A+U=", "license": "MIT", "engines": { "node": ">=6" @@ -1516,29 +1515,29 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=", "license": "MIT" }, "node_modules/fast-string-truncated-width": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", - "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha1-I6/g2mfXUsoHJ1OPHmlndZcozkk=", "license": "MIT" }, "node_modules/fast-string-width": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", - "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha1-FturtJHOVYW17LZ1tlwWXXFojus=", "license": "MIT", "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "version": "3.1.5", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha1-YQ83QZoDAnBDDOzWjXTj1NlnJdA=", "funding": [ { "type": "github", @@ -1553,8 +1552,8 @@ }, "node_modules/fast-wrap-ansi": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", - "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha1-lelSoBRbzj9ZrVbhefhMSNQHKTU=", "license": "MIT", "dependencies": { "fast-string-width": "^3.0.2" @@ -1562,9 +1561,8 @@ }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=", "license": "MIT", "optional": true, "os": [ @@ -1576,8 +1574,8 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -1585,8 +1583,8 @@ }, "node_modules/get-east-asian-width": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha1-IWkA+R3xGossGYw+HZPWwDWndrk=", "license": "MIT", "engines": { "node": ">=18" @@ -1596,9 +1594,9 @@ } }, "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "version": "0.7.3", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha1-hO4S+WPn3lC8AaE+FgoHizsPQV8=", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -1613,8 +1611,8 @@ }, "node_modules/is-safe-filename": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", - "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/is-safe-filename/-/is-safe-filename-0.1.1.tgz", + "integrity": "sha1-+yLurQl8YUxHqmdN5deaFkilPmY=", "license": "MIT", "engines": { "node": ">=20" @@ -1625,8 +1623,8 @@ }, "node_modules/is-unicode-supported": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha1-CfCrDebTdE1I0mXruY9l0R8qmzo=", "license": "MIT", "engines": { "node": ">=18" @@ -1637,14 +1635,24 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.3.1", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha1-ASFsAB1n9I4s1WDXCMevIQkKOEg=", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -1655,14 +1663,14 @@ }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=", "license": "MIT" }, "node_modules/jsonpointer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha1-IRDgrwkA/TdGe1kH7NE6eIShtVk=", "dev": true, "license": "MIT", "engines": { @@ -1671,8 +1679,8 @@ }, "node_modules/leven": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-4.1.0.tgz", - "integrity": "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/leven/-/leven-4.1.0.tgz", + "integrity": "sha1-HjcVDhcR0YuxTjgKXHeZlSNacQ4=", "dev": true, "license": "MIT", "engines": { @@ -1684,8 +1692,8 @@ }, "node_modules/marked": { "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/marked/-/marked-15.0.12.tgz", + "integrity": "sha1-MHIsc0bhLQotAgermwxPAQLYbE4=", "license": "MIT", "bin": { "marked": "bin/marked.js" @@ -1696,8 +1704,8 @@ }, "node_modules/minipass": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha1-eTibTrG7LQA6m7qH1JLyvTe9xls=", "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" @@ -1705,8 +1713,8 @@ }, "node_modules/minizlib": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha1-atdsOo8QInybUdHJrI4wsn9aJRw=", "license": "MIT", "dependencies": { "minipass": "^7.1.2" @@ -1717,8 +1725,8 @@ }, "node_modules/mustache": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha1-5YkjJNYKEuycKnM1ntylKXK/b2Q=", "license": "MIT", "bin": { "mustache": "bin/mustache" @@ -1726,8 +1734,8 @@ }, "node_modules/mute-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", - "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha1-zYAU3SrLcuHpG7Z8dPABnmILotE=", "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" @@ -1735,30 +1743,30 @@ }, "node_modules/pathe": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha1-PsvsVUIWhbcKnahyss/z4cvtFxY=", "dev": true, "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha1-PTIa8+q5ObCDyPkpodEs2oHCa2s=", "license": "ISC" }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha1-Gm+hajjRKhkB4DIPoBcFHFOc47E=", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/prettier": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.4.tgz", - "integrity": "sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==", + "version": "3.9.6", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/prettier/-/prettier-3.9.6.tgz", + "integrity": "sha1-s+pRRlFdQPxT8YqmP3Tfqx4Q2/Y=", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -1772,8 +1780,8 @@ }, "node_modules/pyodide": { "version": "0.26.2", - "resolved": "https://registry.npmjs.org/pyodide/-/pyodide-0.26.2.tgz", - "integrity": "sha512-8VCRdFX83gBsWs6XP2rhG8HMaB+JaVyyav4q/EMzoV8fXH8HN6T5IISC92SNma6i1DRA3SVXA61S1rJcB8efgA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/pyodide/-/pyodide-0.26.2.tgz", + "integrity": "sha1-WuioUOm3m/O+O5CVPX98YkRpxxc=", "license": "Apache-2.0", "dependencies": { "ws": "^8.5.0" @@ -1784,8 +1792,8 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1793,14 +1801,14 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", "license": "MIT" }, "node_modules/semver": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", - "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", + "version": "7.8.5", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/semver/-/semver-7.8.5.tgz", + "integrity": "sha1-ObZGA33VDBT7RR5+TKxY7YuGP2k=", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1811,8 +1819,8 @@ }, "node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha1-lSGIwcvVRgcOLdIND0HArgUwywQ=", "license": "ISC", "engines": { "node": ">=14" @@ -1822,17 +1830,16 @@ } }, "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "version": "8.2.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/string-width/-/string-width-8.2.2.tgz", + "integrity": "sha1-cxBRZJPfV1dC/pivb66H2F1e0Kw=", "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1840,8 +1847,8 @@ }, "node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha1-0iomlSKDamJ6+NBLXD/Sx/o+MuM=", "license": "MIT", "dependencies": { "ansi-regex": "^6.2.2" @@ -1854,9 +1861,9 @@ } }, "node_modules/tar": { - "version": "7.5.16", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.16.tgz", - "integrity": "sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==", + "version": "7.5.22", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/tar/-/tar-7.5.22.tgz", + "integrity": "sha1-ppb5mBNucUh9w/hpqFu6LGeXG6k=", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -1870,24 +1877,31 @@ } }, "node_modules/temporal-polyfill": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.2.tgz", - "integrity": "sha512-TzHthD/heRK947GNiSu3Y5gSPpeUDH34+LESnfsq8bqpFhsB79HFBX8+Z834IVX68P3EUyRPZK5bL/1fh437Eg==", + "version": "1.0.4", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/temporal-polyfill/-/temporal-polyfill-1.0.4.tgz", + "integrity": "sha1-qKuWbLfBDwyUkKpStLZpuhgq7GQ=", "license": "MIT", "dependencies": { - "temporal-spec": "0.3.1" + "temporal-spec": "1.0.1", + "temporal-utils": "1.0.2" } }, "node_modules/temporal-spec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.1.tgz", - "integrity": "sha512-B4TUhezh9knfSIMwt7RVggApDRJZo73uZdj8AacL2mZ8RP5KtLianh2MXxL06GN9ESYiIsiuoLQhgVfwe55Yhw==", - "license": "ISC" + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/temporal-spec/-/temporal-spec-1.0.1.tgz", + "integrity": "sha1-VnnOLdAImGWv6A4Ki9IqkDPBZxc=", + "license": "Apache-2.0" + }, + "node_modules/temporal-utils": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/temporal-utils/-/temporal-utils-1.0.2.tgz", + "integrity": "sha1-qfJ7ZF/fUD5GnftN+MQh1pcHnb0=", + "license": "MIT" }, "node_modules/tsx": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.4.tgz", - "integrity": "sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==", + "version": "4.23.12", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/tsx/-/tsx-4.23.12.tgz", + "integrity": "sha1-OkkZWRzZueAAEbdeWWyKuNsjwJw=", "license": "MIT", "dependencies": { "esbuild": "~0.28.0" @@ -1903,52 +1917,52 @@ } }, "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "version": "9.0.1", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-9.0.1.tgz", + "integrity": "sha1-XoSKSt3wBLYzcVb3hYoAbgg4tPU=", "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "version": "10.1.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/vscode-languageserver/-/vscode-languageserver-10.1.0.tgz", + "integrity": "sha1-6IB0MTmF2kpsCPrCvr1zN5ykv8U=", "license": "MIT", "dependencies": { - "vscode-languageserver-protocol": "3.17.5" + "vscode-languageserver-protocol": "3.18.2" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "version": "3.18.2", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.2.tgz", + "integrity": "sha1-5/s25royvHumIiV623imEmJz3cU=", "license": "MIT", "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" + "vscode-jsonrpc": "9.0.1", + "vscode-languageserver-types": "3.18.0" } }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha1-RX7gQnGrOJmKCTxowjQvU/bkpjE=", "license": "MIT" }, "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "version": "3.18.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz", + "integrity": "sha1-EyMhIpYEg2urcQyXSH5s2vub17s=", "license": "MIT" }, "node_modules/wrap-ansi": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha1-lWgy3qlJQwbm0gnrhxZDu4c9fJg=", "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", @@ -1962,10 +1976,27 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha1-tbuOIWXOJ11NQ0dt0nAK2Qkdttw=", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "version": "8.21.3", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/ws/-/ws-8.21.3.tgz", + "integrity": "sha1-ZgtPrdtqPldchuB4EmkZlh9N5Pw=", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -1985,8 +2016,8 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=", "license": "ISC", "engines": { "node": ">=10" @@ -1994,8 +2025,8 @@ }, "node_modules/yallist": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha1-AOLeRDY57Q14/YfeDSdGn7z/tTM=", "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -2003,8 +2034,8 @@ }, "node_modules/yaml": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha1-eCdK/ZNZih391hMN9qVm3vy/mqQ=", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -2017,15 +2048,15 @@ } }, "node_modules/yargs": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "version": "18.1.0", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/yargs/-/yargs-18.1.0.tgz", + "integrity": "sha1-zX6YxwPvUWlbu/Bi7VjyjpQpG1Y=", "license": "MIT", "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "string-width": "^7.2.0", + "string-width": "^8.2.1", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" }, @@ -2035,8 +2066,8 @@ }, "node_modules/yargs-parser": { "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "resolved": "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha1-h7gglAUbBWdxc0bs0A/RSASzV8g=", "license": "ISC", "engines": { "node": "^20.19.0 || ^22.12.0 || >=23" diff --git a/eng/emitter-package.json b/eng/emitter-package.json index 9499f80c1d72..439657b6eaf7 100644 --- a/eng/emitter-package.json +++ b/eng/emitter-package.json @@ -1,26 +1,27 @@ { "name": "dist/src/index.js", "dependencies": { - "@azure-tools/typespec-python": "0.63.1" + "@azure-tools/typespec-python": "0.63.5" }, "devDependencies": { - "@typespec/compiler": "^1.13.0", - "@typespec/http": "^1.13.0", - "@typespec/rest": "~0.83.0", - "@typespec/versioning": "~0.83.0", - "@typespec/openapi": "^1.13.0", - "@typespec/events": "~0.83.0", - "@typespec/sse": "~0.83.0", - "@typespec/streams": "~0.83.0", - "@typespec/xml": "~0.83.0", - "@typespec/openapi3": "1.13.0", - "@typespec/http-client-python": "^0.32.0", - "@azure-tools/openai-typespec": "1.20.1", - "@azure-tools/typespec-autorest": "~0.69.1", - "@azure-tools/typespec-azure-core": "~0.69.0", - "@azure-tools/typespec-azure-resource-manager": "~0.69.1", - "@azure-tools/typespec-azure-rulesets": "~0.69.1", - "@azure-tools/typespec-client-generator-core": "~0.69.0", - "@azure-tools/typespec-liftr-base": "0.14.0" + "@typespec/compiler": "^1.15.0", + "@typespec/http": "^1.15.0", + "@typespec/rest": "~0.85.0", + "@typespec/versioning": "~0.85.0", + "@typespec/openapi": "^1.15.0", + "@typespec/events": "~0.85.0", + "@typespec/sse": "~0.85.0", + "@typespec/streams": "~0.85.0", + "@typespec/xml": "~0.85.0", + "@typespec/openapi3": "^1.15.0", + "@typespec/http-client-python": "^0.36.0", + "@azure-tools/typespec-autorest": "~0.71.0", + "@azure-tools/typespec-azure-core": "~0.71.0", + "@azure-tools/typespec-azure-resource-manager": "~0.71.0", + "@azure-tools/typespec-azure-rulesets": "~0.71.0", + "@azure-tools/typespec-client-generator-core": "~0.71.2", + "@azure-tools/typespec-azure-portal-core": "~0.71.0", + "@azure-tools/typespec-liftr-base": "0.13.0", + "@azure-tools/openai-typespec": "1.25.0" } } diff --git a/eng/pipelines/aggregate-reports.yml b/eng/pipelines/aggregate-reports.yml index 977266c10a77..90435cf1b19d 100644 --- a/eng/pipelines/aggregate-reports.yml +++ b/eng/pipelines/aggregate-reports.yml @@ -87,10 +87,7 @@ stages: displayName: 'Prep Environment' - template: /eng/common/pipelines/templates/steps/login-to-github.yml - parameters: - TokenOwners: - - azure - + - task: PythonScript@0 condition: succeededOrFailed() env: diff --git a/eng/pipelines/autorest_checks.yml b/eng/pipelines/autorest_checks.yml index 6a1352ce64c9..5a445378f63f 100644 --- a/eng/pipelines/autorest_checks.yml +++ b/eng/pipelines/autorest_checks.yml @@ -29,6 +29,7 @@ jobs: vmImage: 'ubuntu-22.04' steps: + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml - task: NodeTool@0 displayName: 'Install Node.js $(NodeVersion)' inputs: diff --git a/eng/pipelines/conda-update-pipeline.yml b/eng/pipelines/conda-update-pipeline.yml index 9b936df59519..83937704f074 100644 --- a/eng/pipelines/conda-update-pipeline.yml +++ b/eng/pipelines/conda-update-pipeline.yml @@ -125,3 +125,4 @@ extends: - [ ] After upload, delete the dummy libraries and make the new packages publicly available in Conda. - [ ] Create an AKA link for new release logs here: http://aka.ms/ BaseBranchName: main + AuthToken: '' \ No newline at end of file diff --git a/eng/pipelines/docindex.yml b/eng/pipelines/docindex.yml index a41dd18876da..cdf8408bcd06 100644 --- a/eng/pipelines/docindex.yml +++ b/eng/pipelines/docindex.yml @@ -116,6 +116,7 @@ jobs: TargetRepoName: $(DocRepoName) TargetRepoOwner: $(DocRepoOwner) WorkingDirectory: $(DocRepoLocation) + AuthToken: '' - task: AzureCLI@2 displayName: Queue Docs CI build for main @@ -200,7 +201,8 @@ jobs: WorkingDirectory: $(DocRepoLocation) ScriptDirectory: $(Build.SourcesDirectory)/eng/common/scripts PushArgs: -f - + AuthToken: '' + - task: AzureCLI@2 displayName: Queue Docs CI build for daily branch inputs: diff --git a/eng/pipelines/post-publish-emitter.yml b/eng/pipelines/post-publish-emitter.yml new file mode 100644 index 000000000000..53a6d0f0c4a7 --- /dev/null +++ b/eng/pipelines/post-publish-emitter.yml @@ -0,0 +1,112 @@ +# Updates the Python emitter package dependencies through the authenticated CFS feed, +# regenerates the lock file, and opens a draft pull request when files change. +trigger: none +pr: none + +variables: + NodeVersion: '24.x' + +extends: + template: /eng/pipelines/templates/stages/1es-redirect.yml + parameters: + stages: + - stage: UpdateEmitterPackage + displayName: Update emitter package + jobs: + - job: UpdateEmitterPackage + displayName: Update emitter package + timeoutInMinutes: 30 + pool: + name: azsdk-pool + image: ubuntu-24.04 + os: linux + steps: + - checkout: self + + - task: NodeTool@0 + displayName: Install Node.js $(NodeVersion) + inputs: + versionSpec: $(NodeVersion) + + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml + + # @typespec/http-client-python installs its Python generator during npm install, + # so lock-file generation also requires authenticated access to the Python CFS feed. + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + EnableTwineAuth: false + EnableUvAuth: false + + - script: npm install --global npm-check-updates @azure-tools/typespec-client-generator-cli + displayName: Install emitter update tools + + - task: PowerShell@2 + displayName: Update emitter package dependencies + inputs: + pwsh: true + targetType: inline + script: | + $ErrorActionPreference = 'Stop' + $packageJsonPath = '$(Build.SourcesDirectory)/eng/emitter-package.json' + $alignmentSources = [ordered]@{ + 'azure-rest-api-specs' = @{ + packageJsonUrl = 'https://github.com/Azure/azure-rest-api-specs/blob/main/package.json' + packages = @( + '@azure-tools/openai-typespec' + '@azure-tools/typespec-liftr-base' + ) + } + } + + Write-Host "Updating dependencies in $packageJsonPath" + ncu --packageFile $packageJsonPath --upgrade + if ($LASTEXITCODE) { + throw "npm-check-updates failed with exit code $LASTEXITCODE" + } + + $packageJson = Get-Content $packageJsonPath -Raw | ConvertFrom-Json -AsHashtable + + foreach ($sourceName in $alignmentSources.Keys | Sort-Object) { + $source = $alignmentSources[$sourceName] + $packageJsonUrl = $source.packageJsonUrl -replace '^https://github\.com/([^/]+)/([^/]+)/blob/([^/]+)/(.*)$', 'https://raw.githubusercontent.com/$1/$2/$3/$4' + Write-Host "Reading aligned package versions from $sourceName ($packageJsonUrl)" + $sourcePackageJson = Invoke-RestMethod -Uri $packageJsonUrl + + foreach ($packageName in $source.packages) { + $alignedVersion = $sourcePackageJson.dependencies.$packageName + if (-not $alignedVersion) { + $alignedVersion = $sourcePackageJson.devDependencies.$packageName + } + if (-not $alignedVersion) { + throw "Package '$packageName' was not found in dependencies or devDependencies at $packageJsonUrl" + } + + $targetSection = @('dependencies', 'devDependencies') | + Where-Object { $packageJson[$_].Contains($packageName) } | + Select-Object -First 1 + if (-not $targetSection) { + throw "Package '$packageName' from alignment source '$sourceName' was not found in $packageJsonPath" + } + + Write-Host "Aligning $packageName to $alignedVersion" + $packageJson[$targetSection][$packageName] = $alignedVersion + } + } + + $packageJson | ConvertTo-Json -Depth 100 | Set-Content $packageJsonPath + + - script: tsp-client generate-lock-file + displayName: Regenerate emitter package lock file + workingDirectory: $(Build.SourcesDirectory) + + - template: /eng/common/pipelines/templates/steps/create-pull-request.yml + parameters: + BaseBranchName: refs/heads/main + PRBranchName: automated/update-emitter-package-$(Build.BuildId) + PROwner: Azure + CommitMsg: '[Automation] Update emitter package dependencies' + PRTitle: '[Automation] Update emitter package dependencies' + PRBody: | + This automated PR updates the emitter package dependencies through the authenticated Azure SDK CFS feed and regenerates the lock file. + OpenAsDraft: true + AuthToken: '' diff --git a/eng/pipelines/pullrequest.yml b/eng/pipelines/pullrequest.yml index 723041485449..41a3275a0477 100644 --- a/eng/pipelines/pullrequest.yml +++ b/eng/pipelines/pullrequest.yml @@ -10,15 +10,21 @@ pr: paths: include: - "*" + exclude: + - .github/skills/azsdk-common-*/** parameters: - name: Service type: string default: auto + - name: SkipPrValidation + type: boolean + default: false extends: template: /eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: ${{ parameters.Service }} + SkipPrValidation: ${{ parameters.SkipPrValidation }} BuildTargetingString: "*" TestProxy: true TestTimeOutInMinutes: 180 diff --git a/eng/pipelines/templates/jobs/apireview-hub-job-python.yml b/eng/pipelines/templates/jobs/apireview-hub-job-python.yml new file mode 100644 index 000000000000..f851232e153e --- /dev/null +++ b/eng/pipelines/templates/jobs/apireview-hub-job-python.yml @@ -0,0 +1,76 @@ +# Python job wrapper for API Review Hub requests. This file owns Python-specific +# setup and delegates shared job boilerplate to the base API Review Hub job. +# The caller supplies the create/update orchestration steps. +parameters: + - name: poolName + type: string + default: 'azsdk-pool' + - name: imageOverride + type: string + default: 'ubuntu-24.04' + - name: repositoryOwner + type: string + default: 'Azure' + - name: toolRef + type: string + default: 'main' + - name: pythonVersion + type: string + default: '3.12' + - name: steps + type: stepList + default: [] + +jobs: +- template: /eng/common/pipelines/templates/jobs/apireview-hub-job-base.yml + parameters: + jobName: CreatePythonApiReviewArtifacts + displayName: 'Create Python API review artifacts' + poolName: ${{ parameters.poolName }} + imageOverride: ${{ parameters.imageOverride }} + sourceRepositoryFullName: ${{ format('{0}/azure-sdk-for-python', parameters.repositoryOwner) }} + sourceCheckoutDir: $(Pipeline.Workspace)/apireview/source + setupSteps: + - task: UsePythonVersion@0 + displayName: 'Use Python ${{ parameters.pythonVersion }}' + inputs: + versionSpec: ${{ parameters.pythonVersion }} + + # Install Python API review tooling once for the job. The base and target + # generation steps reuse this prepared environment. + - bash: | + set -Eeuo pipefail + + source_repo="$(ApiReviewSourceDir)" + tooling_dir="$(ApiReviewToolingDir)" + requirements_file="$source_repo/eng/apiview_reqs.txt" + azpysdk_package="$source_repo/eng/tools/azure-sdk-tools[build]" + + echo "Checking out Python API review tooling requirements from ${{ parameters.toolRef }}" + git -C "$source_repo" fetch --depth=1 origin "${{ parameters.toolRef }}" + git -C "$source_repo" checkout --force FETCH_HEAD + git -C "$source_repo" clean -ffd + + if [ ! -f "$requirements_file" ]; then + echo "Expected Python API review requirements file was not found at $requirements_file" >&2 + exit 1 + fi + + mkdir -p "$tooling_dir/eng/common/scripts" "$tooling_dir/eng/scripts" + cp "$source_repo/eng/common/scripts/Export-APIViewMarkdown.ps1" "$tooling_dir/eng/common/scripts/Export-APIViewMarkdown.ps1" + cp "$source_repo/eng/scripts/extract_apiview_metadata.py" "$tooling_dir/eng/scripts/extract_apiview_metadata.py" + + python -m pip install --upgrade pip + python -m pip install virtualenv + + echo "Installing Python API review requirements from $requirements_file" + python -m pip install -r "$requirements_file" --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" + + echo "Installing azpysdk tooling from ${{ parameters.toolRef }}" + python -m pip install "$azpysdk_package" + + echo "Installing setuptools runtime dependency for Python SDK common_tasks.py" + python -m pip install "setuptools<81" + PYTHONPATH="$source_repo/scripts/devops_tasks${PYTHONPATH:+:$PYTHONPATH}" python -c "import common_tasks; import pkg_resources; import azpysdk.main" + displayName: 'Install Python API review tooling' + steps: ${{ parameters.steps }} \ No newline at end of file diff --git a/eng/pipelines/templates/jobs/build-namereserve-package.yml b/eng/pipelines/templates/jobs/build-namereserve-package.yml index 9711b4cd5a63..d577671e5d79 100644 --- a/eng/pipelines/templates/jobs/build-namereserve-package.yml +++ b/eng/pipelines/templates/jobs/build-namereserve-package.yml @@ -2,9 +2,6 @@ parameters: - name: NameForReservation type: string default: 'auto' - - name: VersionForReservation - type: string - default: '0.0.0' jobs: - job: generate_namereserve_package @@ -18,6 +15,10 @@ jobs: inputs: versionSpec: '3.13' + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + EnableTwineAuth: false + - pwsh: | python -m pip install -r eng/ci_tools.txt displayName: Install Dependencies @@ -26,7 +27,7 @@ jobs: - pwsh: | python eng/scripts/discover_unpublished_packages.py ` --output-dir "$(Build.ArtifactStagingDirectory)" ` - --version "${{ parameters.VersionForReservation }}" + --version "0.0.0b1" name: generatePackages displayName: Discover and Generate Name Reservation Packages @@ -37,7 +38,7 @@ jobs: $PSNativeCommandUseErrorActionPreference = $true generate_namereserve_package ` - --package_version "${{ parameters.VersionForReservation }}" ` + --package_version "0.0.0b1" ` --output_dir "$(Build.ArtifactStagingDirectory)" ` "${{ parameters.NameForReservation }}" name: generatePackages diff --git a/eng/pipelines/templates/jobs/ci.tests.yml b/eng/pipelines/templates/jobs/ci.tests.yml index e64687eac48c..0ebecf3890a8 100644 --- a/eng/pipelines/templates/jobs/ci.tests.yml +++ b/eng/pipelines/templates/jobs/ci.tests.yml @@ -73,6 +73,23 @@ jobs: image: $(OSVmImage) os: ${{ parameters.OSName }} + templateContext: + # Compiled CodeQL is auto-injected by 1ES but is unsupported on macOS ARM64 + # (and the test jobs do not compile the extension). Mirror the Build_MacOS carve-out. + ${{ if eq(parameters.OSName, 'macOS') }}: + sdl: + codeql: + compiled: + enabled: false + justificationForDisabling: "Compiled language support is not available on macOS ARM64. See: https://eng.ms/docs/coreai/devdiv/one-engineering-system-1es/1es-docs/codeql/troubleshooting/onboarding/language-compiled#arm64-cpu-on-macos" + # See eng/common/pipelines/templates/steps/upload-llm-artifacts.yml for corresponding file copy step + outputs: + - output: pipelineArtifact + targetPath: '$(Build.ArtifactStagingDirectory)/llm-artifacts' + artifactName: "LLM Artifacts - $(System.JobName) - $(System.JobAttempt)" + condition: eq(variables['uploadLlmArtifacts'], 'true') + sbomEnabled: false + variables: - template: ../variables/globals.yml - name: InjectedPackages @@ -86,12 +103,13 @@ jobs: Write-Host "##vso[task.setvariable variable=DOTNET_ROOT]$dotnetroot" displayName: 'Set DOTNET_ROOT' - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: - TokenToUseForAuth: $(azuresdk-github-pat) - Paths: - - '**' + - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: + - checkout: self + - ${{ else }}: + - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml + parameters: + Paths: + - '**' - template: /eng/pipelines/templates/steps/download-package-artifacts.yml diff --git a/eng/pipelines/templates/jobs/ci.yml b/eng/pipelines/templates/jobs/ci.yml index 2f5e84415de1..baa49d9ceaff 100644 --- a/eng/pipelines/templates/jobs/ci.yml +++ b/eng/pipelines/templates/jobs/ci.yml @@ -61,10 +61,28 @@ parameters: - name: EnvVars type: object default: {} + - name: InstallMsRustToolchain + type: boolean + default: false + - name: MsRustWorkingDirectory + type: string + default: '' + - name: MsRustToolchainFeed + type: string + default: '' + - name: MsRustAdditionalTargets + type: string + default: '' jobs: - job: 'Build_Linux' - timeoutInMinutes: 90 + # Compiling a Rust extension for every architecture takes far longer than a + # pure-Python build, mostly because the Linux aarch64 wheel is built inside + # an emulated container. Packages without a Rust toolchain keep the default. + ${{ if parameters.InstallMsRustToolchain }}: + timeoutInMinutes: 240 + ${{ else }}: + timeoutInMinutes: 90 pool: name: $(LINUXPOOL) @@ -88,9 +106,16 @@ jobs: ArtifactSuffix: linux BuildTargetingString: ${{ parameters.BuildTargetingString }} ExcludePaths: ${{parameters.ExcludePaths}} + InstallMsRustToolchain: ${{ parameters.InstallMsRustToolchain }} + MsRustWorkingDirectory: ${{ parameters.MsRustWorkingDirectory }} + MsRustToolchainFeed: ${{ parameters.MsRustToolchainFeed }} + MsRustAdditionalTargets: ${{ parameters.MsRustAdditionalTargets }} - job: 'Build_Windows' - timeoutInMinutes: 90 + ${{ if parameters.InstallMsRustToolchain }}: + timeoutInMinutes: 240 + ${{ else }}: + timeoutInMinutes: 90 pool: name: $(WINDOWSPOOL) @@ -107,15 +132,29 @@ jobs: ArtifactSuffix: windows BuildTargetingString: ${{ parameters.BuildTargetingString }} ExcludePaths: ${{parameters.ExcludePaths}} + InstallMsRustToolchain: ${{ parameters.InstallMsRustToolchain }} + MsRustWorkingDirectory: ${{ parameters.MsRustWorkingDirectory }} + MsRustToolchainFeed: ${{ parameters.MsRustToolchainFeed }} + MsRustAdditionalTargets: ${{ parameters.MsRustAdditionalTargets }} - job: 'Build_MacOS' - timeoutInMinutes: 90 + ${{ if parameters.InstallMsRustToolchain }}: + timeoutInMinutes: 240 + ${{ else }}: + timeoutInMinutes: 90 pool: name: $(MACPOOL) vmImage: $(MACVMIMAGE) os: macOS + templateContext: + sdl: + codeql: + compiled: + enabled: false + justificationForDisabling: "Compiled language support is not available on macOS ARM64. See: https://eng.ms/docs/coreai/devdiv/one-engineering-system-1es/1es-docs/codeql/troubleshooting/onboarding/language-compiled#arm64-cpu-on-macos" + steps: - template: /eng/pipelines/templates/steps/build-package-artifacts.yml parameters: @@ -126,6 +165,10 @@ jobs: ArtifactSuffix: mac BuildTargetingString: ${{ parameters.BuildTargetingString }} ExcludePaths: ${{parameters.ExcludePaths}} + InstallMsRustToolchain: ${{ parameters.InstallMsRustToolchain }} + MsRustWorkingDirectory: ${{ parameters.MsRustWorkingDirectory }} + MsRustToolchainFeed: ${{ parameters.MsRustToolchainFeed }} + MsRustAdditionalTargets: ${{ parameters.MsRustAdditionalTargets }} - job: 'Build_Extended' displayName: Build Extended @@ -142,12 +185,13 @@ jobs: os: linux steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: - TokenToUseForAuth: $(azuresdk-github-pat) - Paths: - - '**' + - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: + - checkout: self + - ${{ else }}: + - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml + parameters: + Paths: + - '**' - template: /eng/pipelines/templates/steps/download-package-artifacts.yml @@ -181,12 +225,13 @@ jobs: os: linux steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: - TokenToUseForAuth: $(azuresdk-github-pat) - Paths: - - '**' + - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: + - checkout: self + - ${{ else }}: + - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml + parameters: + Paths: + - '**' - template: /eng/pipelines/templates/steps/download-package-artifacts.yml @@ -236,16 +281,6 @@ jobs: parameters: ContinueOnError: false - - template: /eng/common/pipelines/templates/steps/verify-links.yml - parameters: - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: - Directory: '' - Urls: (eng/common/scripts/get-markdown-files-from-changed-files.ps1) - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: - Directory: sdk/${{ parameters.ServiceDirectory }} - CheckLinkGuidance: $true - Condition: succeededOrFailed() - - task: DownloadPipelineArtifact@2 condition: succeededOrFailed() inputs: diff --git a/eng/pipelines/templates/jobs/live.tests.yml b/eng/pipelines/templates/jobs/live.tests.yml index f259636e0fa3..aa6543424629 100644 --- a/eng/pipelines/templates/jobs/live.tests.yml +++ b/eng/pipelines/templates/jobs/live.tests.yml @@ -107,12 +107,13 @@ jobs: container: $[ variables['Container'] ] steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: - TokenToUseForAuth: $(azuresdk-github-pat) - Paths: - - '**' + - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: + - checkout: self + - ${{ else }}: + - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml + parameters: + Paths: + - '**' - ${{ parameters.PreSteps }} @@ -148,6 +149,62 @@ jobs: Pool: $(Pool) ${{ insert }}: ${{ parameters.EnvVars }} + # This is a heuristic to detect compiled requirements in the service + # directory. If compiled requirements are found, install dependencies for + # and configure cibuildwheel. + - pwsh: | + $ErrorActionPreference = 'Stop' + $found = @() + foreach ($dir in "${{ parameters.ServiceDirectory }}".Split('|') | Where-Object { $_ }) { + $root = Join-Path "$(Build.SourcesDirectory)" "sdk" $dir.Trim() + if (-not (Test-Path $root)) { continue } + $found += Get-ChildItem -Path $root -Filter pyproject.toml -Recurse -ErrorAction SilentlyContinue ` + | Where-Object { (Get-Content $_.FullName -Raw) -match '(?m)^\[tool\.cibuildwheel\]' } + } + if ($found) { + $found | ForEach-Object { Write-Host "Found compiled package: $($_.Directory.Name)" } + Write-Host "##vso[task.setvariable variable=CIBUILDWHEEL_DEV_REQ]true" + } + else { + Write-Host "No [tool.cibuildwheel] packages under sdk/${{ parameters.ServiceDirectory }}; nothing to configure." + } + displayName: 'Check for compiled dev requirements' + + - pwsh: | + Write-Host "##vso[task.setvariable variable=CIBW_ARCHS]native" + Write-Host "##vso[task.setvariable variable=CIBW_SKIP]pp* *musllinux*" + Write-Host "##vso[task.setvariable variable=CIBW_TEST_SKIP]*" + # CIBW_ENVIRONMENT_PASS_LINUX, not CIBW_ENVIRONMENT: the latter would clobber the package's + # own [tool.cibuildwheel].environment (CFLAGS). PIP_INDEX_URL is set by the time the test step + # runs (use-python-version.yml, then auth-dev-feed.yml inside build-test.yml). + Write-Host "##vso[task.setvariable variable=CIBW_ENVIRONMENT_PASS_LINUX]PIP_INDEX_URL" + displayName: 'Configure cibuildwheel for dev requirement builds' + condition: and(succeeded(), eq(variables['CIBUILDWHEEL_DEV_REQ'], 'true')) + + # Windows has no cp310 interpreter on the agent and cibuildwheel fetches one from api.nuget.org, + # which is blocked. Pre-provision it from the Azure DevOps feed into the cibuildwheel cache. + # Mirrors steps/build-package-artifacts.yml, minus pythonarm64 (CIBW_ARCHS=native drops win_arm64). + - task: NuGetAuthenticate@1 + displayName: 'Authenticate to NuGet feed' + condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'), eq(variables['CIBUILDWHEEL_DEV_REQ'], 'true')) + + - pwsh: | + $ErrorActionPreference = 'Stop' + $feed = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json" + $version = "3.10.11" + $cache = Join-Path "$(Agent.TempDirectory)" "cibw-cache" + $nugetCpython = Join-Path $cache "nuget-cpython" + New-Item -ItemType Directory -Force -Path $nugetCpython | Out-Null + $nuget = (Get-Command nuget).Source + & $nuget install python -Version $version -Source $feed -OutputDirectory $nugetCpython + if ($LASTEXITCODE) { + Write-Error "Failed to download python $version" + exit 1 + } + Write-Host "##vso[task.setvariable variable=CIBW_CACHE_PATH]$cache" + displayName: 'Pre-provision CPython for cibuildwheel' + condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'), eq(variables['CIBUILDWHEEL_DEV_REQ'], 'true')) + - template: /eng/pipelines/templates/steps/build-test.yml parameters: ServiceDirectory: ${{ parameters.ServiceDirectory }} diff --git a/eng/pipelines/templates/stages/1es-redirect.yml b/eng/pipelines/templates/stages/1es-redirect.yml index dcd212abbcf7..e40adb4c54b0 100644 --- a/eng/pipelines/templates/stages/1es-redirect.yml +++ b/eng/pipelines/templates/stages/1es-redirect.yml @@ -19,6 +19,10 @@ parameters: - name: oneESTemplateTag type: string default: release +- name: EnableCompiledCodeql + type: boolean + default: false + extends: ${{ if and(parameters.Use1ESOfficial, eq(parameters.oneESTemplateTag, 'canary')) }}: @@ -36,7 +40,10 @@ extends: - 1ES.PT.Tag-refs/tags/canary settings: skipBuildTagsForGitHubPullRequests: true - networkIsolationPolicy: Permissive + networkIsolationPolicy: Permissive, CFSClean + ${{ if ne(variables['Build.DefinitionName'], 'python - core') }}: + featureFlags: + autoBaseline: false sdl: ${{ if and(eq(variables['Build.DefinitionName'], 'python - core'), eq(variables['Build.SourceBranchName'], 'main'), eq(variables['System.TeamProject'], 'internal')) }}: autobaseline: @@ -52,9 +59,16 @@ extends: enabled: false justificationForDisabling: "ESLint injected task has failures because it uses an old version of mkdirp. We should not fail for tools not controlled by the repo. See: https://dev.azure.com/azur 19 e-sdk/internal/_build/results?buildId=3556850" codeql: - compiled: - enabled: false - justificationForDisabling: "To reduce redundant CG runs across all our pipeline jobs we are disabling and only running in our main build job." + ${{ if eq(parameters.EnableCompiledCodeql, true) }}: + # "cpp" covers both C and C++ code. Language is specified because + # checkout happens after the injected "CodeQL Initialize" step + language: cpp,python + compiled: + enabled: true + ${{ else }}: + compiled: + enabled: false + justificationForDisabling: "To reduce redundant CG runs across all our pipeline jobs we are disabling and only running in our main build job." componentgovernance: enabled: false justificationForDisabling: "To reduce redundant CG runs across all our pipeline jobs we are disabling and only running in our main build job." diff --git a/eng/pipelines/templates/stages/archetype-conda-release.yml b/eng/pipelines/templates/stages/archetype-conda-release.yml index 9e1595db8d78..62008c98ab46 100644 --- a/eng/pipelines/templates/stages/archetype-conda-release.yml +++ b/eng/pipelines/templates/stages/archetype-conda-release.yml @@ -34,10 +34,16 @@ stages: runOnce: deploy: steps: - - task: UsePythonVersion@0 - inputs: + - template: /eng/pipelines/templates/steps/use-python-version.yml + parameters: versionSpec: '3.12' + # Authenticate to the Azure Artifacts feed before any pip install. + # Public feeds have upstream sources enabled and require authentication for passthrough to pypi.org. + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + EnableTwineAuth: false + - pwsh: | Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.ArtifactName}} -Filter "*.conda" workingDirectory: $(Pipeline.Workspace) diff --git a/eng/pipelines/templates/stages/archetype-python-release.yml b/eng/pipelines/templates/stages/archetype-python-release.yml index 389ac773c7a5..8a0ca4030d66 100644 --- a/eng/pipelines/templates/stages/archetype-python-release.yml +++ b/eng/pipelines/templates/stages/archetype-python-release.yml @@ -13,231 +13,224 @@ parameters: PackageSourceOverride: "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" stages: - - ${{if and(in(variables['Build.Reason'], 'Manual', ''), eq(variables['System.TeamProject'], 'internal'))}}: - - ${{ each artifact in parameters.Artifacts }}: - - stage: 'Release_${{artifact.safename}}' - displayName: 'Release: ${{artifact.name}}' - dependsOn: ${{parameters.DependsOn}} - variables: - - template: /eng/pipelines/templates/variables/image.yml - condition: and(succeeded(), ne(variables['SetDevVersion'], 'true'), ne(variables['Skip.Release'], 'true'), ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr')) - jobs: - - job: TagRepository - displayName: "Create release tag" - condition: and(succeeded(), ne(variables['Skip.TagRepository'], 'true')) - - pool: - image: ubuntu-24.04 - name: azsdk-pool - os: linux - - steps: - - checkout: self - - - download: current - artifact: ${{parameters.ArtifactName}} - timeoutInMinutes: 5 - + # Release stages are compiled for: + # * internal manual runs (existing behavior), and + # * internal post-merge CI on 'main' (auto-release). For auto-release, only the packages changed by a + # merged PR carrying the 'auto-release' label are released; each Release_* stage is gated at runtime + # on the ReleaseArtifact_ output produced by the shared AutoReleasePrepare stage below. + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), or(in(variables['Build.Reason'], 'Manual', ''), and(eq(variables['Build.Reason'], 'IndividualCI'), eq(variables['Build.SourceBranch'], 'refs/heads/main')))) }}: + + # Auto-release preparation runs only for post-merge CI on 'main'. The shared (eng/common) stage resolves + # the merged PR from Build.SourceVersion, requires the 'auto-release' label, maps the PR's changed files + # to releasable packages via this repo's package detection, and emits ReleaseArtifact_ outputs. + # It fails closed: any error or missing/unlabeled PR leaves every artifact marked 'false'. Python has no + # Signing stage, so DependsOn is overridden to the Build stage. + - ${{ if and(eq(variables['Build.Reason'], 'IndividualCI'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: + - template: /eng/common/pipelines/templates/stages/archetype-auto-release-prepare.yml + parameters: + DependsOn: + - ${{ parameters.DependsOn }} + Artifacts: ${{ parameters.Artifacts }} + Condition: and(succeeded(), ne(variables['SetDevVersion'], 'true'), ne(variables['Skip.Release'], 'true'), ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr')) + # Package detection installs azure-sdk-tools; set up Python and authenticate pip/uv to the + # internal feed first so the install does not fall back to (firewalled) public PyPI. + PreSteps: - task: UsePythonVersion@0 inputs: versionSpec: '3.12' - - template: /eng/pipelines/templates/steps/auth-dev-feed.yml parameters: DevFeedName: ${{ parameters.DevFeedName }} + EnableTwineAuth: false + EnablePipAuth: true + EnableUvAuth: true - - template: /eng/common/pipelines/templates/steps/retain-run.yml - - - template: /eng/common/pipelines/templates/steps/set-test-pipeline-version.yml - parameters: - PackageName: "azure-template" - ServiceDirectory: "template" - TestPipeline: ${{ parameters.TestPipeline }} - - - template: /eng/common/pipelines/templates/steps/verify-changelog.yml - parameters: - PackageName: ${{artifact.name}} - ServiceName: ${{parameters.ServiceDirectory}} - ForRelease: true - - - template: /eng/common/pipelines/templates/steps/verify-restapi-spec-location.yml - parameters: - PackageName: ${{artifact.name}} - ServiceDirectory: ${{parameters.ServiceDirectory}} - ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}} - - - script: | - python -m pip install "./eng/tools/azure-sdk-tools" - displayName: Install tool dependencies - - - task: PythonScript@0 - displayName: Verify Dependency Presence - condition: and(succeeded(), ne(variables['Skip.VerifyDependencies'], 'true')) - inputs: - scriptPath: 'scripts/devops_tasks/verify_dependencies_present.py' - arguments: '--package-name ${{ artifact.name }} --service ${{ parameters.ServiceDirectory }}' + - ${{ each artifact in parameters.Artifacts }}: + - stage: 'Release_${{artifact.safename}}' + displayName: 'Release: ${{artifact.name}}' + dependsOn: + - ${{ parameters.DependsOn }} + - ${{ if and(eq(variables['Build.Reason'], 'IndividualCI'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: + - AutoReleasePrepare + variables: + - template: /eng/pipelines/templates/variables/image.yml + - template: /eng/common/pipelines/templates/variables/api-review-break-glass.yml + # Auto-release CI: only release when the shared prepare stage flagged this artifact as changed. + # Manual runs: every declared artifact remains eligible (existing behavior). + ${{ if and(eq(variables['Build.Reason'], 'IndividualCI'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: + condition: and(succeeded(), eq(dependencies.AutoReleasePrepare.outputs['ResolveAutoReleasePackages.resolve.ReleaseArtifact_${{ artifact.safename }}'], 'true'), ne(variables['SetDevVersion'], 'true'), ne(variables['Skip.Release'], 'true'), ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr')) + ${{ else }}: + condition: and(succeeded(), ne(variables['SetDevVersion'], 'true'), ne(variables['Skip.Release'], 'true'), ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr')) + jobs: + - job: TagRepository + displayName: "Create release tag" + condition: and(succeeded(), ne(variables['Skip.TagRepository'], 'true')) - - task: PythonScript@0 - displayName: Verify CI enabled - condition: succeeded() - inputs: - scriptPath: 'scripts/devops_tasks/verify_ci_enabled.py' - arguments: '--package-name ${{ artifact.name }} --service ${{ parameters.ServiceDirectory }}' + pool: + image: ubuntu-24.04 + name: azsdk-pool + os: linux - - pwsh: | - Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} - workingDirectory: $(Pipeline.Workspace) - displayName: Output Visible Artifacts + steps: + - checkout: self - - template: /eng/common/pipelines/templates/steps/create-tags-and-git-release.yml - parameters: - ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} - PackageRepository: PyPI - ReleaseSha: $(Build.SourceVersion) - RepoId: Azure/azure-sdk-for-python - WorkingDirectory: $(System.DefaultWorkingDirectory) + - download: current + artifact: ${{parameters.ArtifactName}} + timeoutInMinutes: 5 - - ${{if ne(artifact.skipPublishPackage, 'true')}}: - - deployment: PublishPackage - displayName: "Publish to ${{ parameters.PublicFeed }}" - condition: and(succeeded(), ne(variables['Skip.PublishPackage'], 'true')) - environment: ${{ parameters.PublicPublishEnvironment }} - dependsOn: TagRepository + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.12' - templateContext: - type: releaseJob - isProduction: true - inputs: - - input: pipelineArtifact - artifactName: release_artifact - targetPath: $(Pipeline.Workspace)/release_artifact - - input: pipelineArtifact - artifactName: packages_extended - targetPath: $(Pipeline.Workspace)/packages_extended + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + DevFeedName: ${{ parameters.DevFeedName }} - pool: - image: ubuntu-24.04 - name: azsdk-pool - os: linux + - template: /eng/common/pipelines/templates/steps/retain-run.yml - strategy: - runOnce: - deploy: - steps: - - template: /eng/pipelines/templates/steps/auth-dev-feed.yml - parameters: - DevFeedName: ${{ parameters.DevFeedName }} - EnableTwineAuth: false - EnablePipAuth: true - EnableUvAuth: false - - - task: UsePythonVersion@0 - inputs: - versionSpec: '3.10' - - - script: | - python -m pip install -r $(Pipeline.Workspace)/release_artifact/release_requirements.txt - displayName: Install Release Dependencies - - - ${{ if eq(parameters.PublicFeed, 'PyPi') }}: - - pwsh: | - $esrpDirectory = "$(Pipeline.Workspace)/esrp-release/${{parameters.ArtifactName}}/${{artifact.name}}" - New-Item -ItemType Directory -Force -Path $esrpDirectory - - Get-ChildItem -Path "$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}" ` - | Where-Object { ($_.Name -like "*.tar.gz" -or $_.Name -like "*.whl") } ` - | Copy-Item -Destination $esrpDirectory - - Get-ChildItem $esrpDirectory - displayName: Isolate files for ESRP Publish - - - template: /eng/pipelines/templates/steps/esrp-publish.yml - parameters: - targetFolder: "$(Pipeline.Workspace)/esrp-release/${{parameters.ArtifactName}}/${{artifact.name}}" - - - ${{ if ne(parameters.PublicFeed, 'PyPi') }}: - - task: TwineAuthenticate@0 - displayName: 'Authenticate to feed: ${{parameters.PublicFeed}}' - inputs: - artifactFeeds: ${{parameters.PublicFeed}} - - - script: | - set -e - twine upload --repository ${{parameters.PublicFeed}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.whl - echo "Uploaded whl to devops feed" - twine upload --repository ${{parameters.PublicFeed}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.tar.gz - echo "Uploaded sdist to devops feed" - displayName: 'Publish package to feed: ${{parameters.PublicFeed}}' - - - task: TwineAuthenticate@0 - displayName: 'Authenticate to feed: ${{parameters.DevFeedName}}' - inputs: - artifactFeeds: ${{parameters.DevFeedName}} - - - script: | - set -e - twine upload --repository ${{parameters.DevFeedName}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.whl - echo "Uploaded whl to devops feed" - twine upload --repository ${{parameters.DevFeedName}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.tar.gz - echo "Uploaded sdist to devops feed" - displayName: 'Publish package to feed: ${{parameters.DevFeedName}}' - - - job: MarkPackageReleaseCompletion - displayName: "Mark package release completion" - dependsOn: PublishPackage + - template: /eng/common/pipelines/templates/steps/set-test-pipeline-version.yml + parameters: + PackageName: "azure-template" + ServiceDirectory: "template" + TestPipeline: ${{ parameters.TestPipeline }} - pool: - image: ubuntu-24.04 - name: azsdk-pool - os: linux + - template: /eng/common/pipelines/templates/steps/verify-changelog.yml + parameters: + PackageName: ${{artifact.name}} + ServiceName: ${{parameters.ServiceDirectory}} + ForRelease: true - steps: - - checkout: self + - template: /eng/common/pipelines/templates/steps/verify-restapi-spec-location.yml + parameters: + PackageName: ${{artifact.name}} + ServiceDirectory: ${{parameters.ServiceDirectory}} + ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}} - - download: current - artifact: ${{parameters.ArtifactName}} - timeoutInMinutes: 5 + - script: | + python -m pip install "./eng/tools/azure-sdk-tools" + displayName: Install tool dependencies - - template: /eng/pipelines/templates/steps/auth-dev-feed.yml - parameters: - DevFeedName: ${{ parameters.DevFeedName }} - EnableTwineAuth: false - EnablePipAuth: true - EnableUvAuth: false + - task: PythonScript@0 + displayName: Verify Dependency Presence + condition: and(succeeded(), ne(variables['Skip.VerifyDependencies'], 'true')) + inputs: + scriptPath: 'scripts/devops_tasks/verify_dependencies_present.py' + arguments: '--package-name ${{ artifact.name }} --service ${{ parameters.ServiceDirectory }}' - - task: UsePythonVersion@0 - inputs: - versionSpec: '3.10' + - task: PythonScript@0 + displayName: Verify CI enabled + condition: succeeded() + inputs: + scriptPath: 'scripts/devops_tasks/verify_ci_enabled.py' + arguments: '--package-name ${{ artifact.name }} --service ${{ parameters.ServiceDirectory }}' - - template: /eng/common/pipelines/templates/steps/mark-release-completion.yml - parameters: - ConfigFileDir: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo' - PackageArtifactName: ${{artifact.name}} + - pwsh: | + Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} + workingDirectory: $(Pipeline.Workspace) + displayName: Output Visible Artifacts - - template: /eng/common/pipelines/templates/steps/create-apireview.yml - parameters: - ArtifactPath: $(Pipeline.Workspace)/${{parameters.ArtifactName}} - Artifacts: ${{parameters.Artifacts}} - ConfigFileDir: $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo - MarkPackageAsShipped: true - ArtifactName: ${{parameters.ArtifactName}} - PackageName: ${{artifact.name}} - - - ${{if ne(artifact.skipPublishDocGithubIo, 'true')}}: - - job: PublishGitHubIODocs - displayName: Publish Docs to GitHubIO Blob Storage - condition: >- - and( - succeeded(), - ne(variables['Skip.PublishDocs'], 'true'), - ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr') - ) + - template: /eng/common/pipelines/templates/steps/create-tags-and-git-release.yml + parameters: + ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} + PackageRepository: PyPI + ReleaseSha: $(Build.SourceVersion) + RepoId: Azure/azure-sdk-for-python + WorkingDirectory: $(System.DefaultWorkingDirectory) + AuthToken: '' + + - ${{if ne(artifact.skipPublishPackage, 'true')}}: + - deployment: PublishPackage + displayName: "Publish to ${{ parameters.PublicFeed }}" + condition: and(succeeded(), ne(variables['Skip.PublishPackage'], 'true')) + environment: ${{ parameters.PublicPublishEnvironment }} + dependsOn: TagRepository + + templateContext: + type: releaseJob + isProduction: true + inputs: + - input: pipelineArtifact + artifactName: release_artifact + targetPath: $(Pipeline.Workspace)/release_artifact + - input: pipelineArtifact + artifactName: packages_extended + targetPath: $(Pipeline.Workspace)/packages_extended + + pool: + image: ubuntu-24.04 + name: azsdk-pool + os: linux + + strategy: + runOnce: + deploy: + steps: + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + DevFeedName: ${{ parameters.DevFeedName }} + EnableTwineAuth: false + EnablePipAuth: true + EnableUvAuth: false + + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.10' + + - script: | + python -m pip install -r $(Pipeline.Workspace)/release_artifact/release_requirements.txt + displayName: Install Release Dependencies + + - ${{ if eq(parameters.PublicFeed, 'PyPi') }}: + - pwsh: | + $esrpDirectory = "$(Pipeline.Workspace)/esrp-release/${{parameters.ArtifactName}}/${{artifact.name}}" + New-Item -ItemType Directory -Force -Path $esrpDirectory + + Get-ChildItem -Path "$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}" ` + | Where-Object { ($_.Name -like "*.tar.gz" -or $_.Name -like "*.whl") } ` + | Copy-Item -Destination $esrpDirectory + + Get-ChildItem $esrpDirectory + displayName: Isolate files for ESRP Publish + + - template: /eng/pipelines/templates/steps/esrp-publish.yml + parameters: + targetFolder: "$(Pipeline.Workspace)/esrp-release/${{parameters.ArtifactName}}/${{artifact.name}}" + + - ${{ if ne(parameters.PublicFeed, 'PyPi') }}: + - task: TwineAuthenticate@0 + displayName: 'Authenticate to feed: ${{parameters.PublicFeed}}' + inputs: + artifactFeeds: ${{parameters.PublicFeed}} + + - script: | + set -e + twine upload --repository ${{parameters.PublicFeed}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.whl + echo "Uploaded whl to devops feed" + twine upload --repository ${{parameters.PublicFeed}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.tar.gz + echo "Uploaded sdist to devops feed" + displayName: 'Publish package to feed: ${{parameters.PublicFeed}}' + + - task: TwineAuthenticate@0 + displayName: 'Authenticate to feed: ${{parameters.DevFeedName}}' + inputs: + artifactFeeds: ${{parameters.DevFeedName}} + + - script: | + set -e + twine upload --repository ${{parameters.DevFeedName}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.whl + echo "Uploaded whl to devops feed" + twine upload --repository ${{parameters.DevFeedName}} --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*.tar.gz + echo "Uploaded sdist to devops feed" + displayName: 'Publish package to feed: ${{parameters.DevFeedName}}' + + - job: MarkPackageReleaseCompletion + displayName: "Mark package release completion" dependsOn: PublishPackage pool: + image: ubuntu-24.04 name: azsdk-pool - image: windows-2022 - os: windows + os: linux steps: - checkout: self @@ -246,35 +239,119 @@ stages: artifact: ${{parameters.ArtifactName}} timeoutInMinutes: 5 - - download: current - artifact: ${{parameters.DocArtifact}} - timeoutInMinutes: 5 + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + DevFeedName: ${{ parameters.DevFeedName }} + EnableTwineAuth: false + EnablePipAuth: true + EnableUvAuth: false - - pwsh: | - if (Test-Path "$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}") { - Get-ChildItem -Recurse "$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}" - } - else { - New-Item -ItemType Directory -Force -Path "$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}" - } - workingDirectory: $(Pipeline.Workspace) - displayName: Output Visible Artifacts + - template: /eng/common/pipelines/templates/steps/mark-release-completion.yml + parameters: + ConfigFileDir: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo' + PackageArtifactName: ${{artifact.name}} - - template: /eng/common/pipelines/templates/steps/publish-blobs.yml + - template: /eng/common/pipelines/templates/steps/mark-package-released.yml parameters: - FolderForUpload: '$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}' - TargetLanguage: 'python' - ArtifactLocation: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}' - - - ${{if ne(artifact.skipPublishDocMs, 'true')}}: - - job: PublishDocs - displayName: Docs.MS Release - condition: >- - and( - succeeded(), - ne(variables['Skip.PublishDocs'], 'true'), - ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr') - ) + PackageInfoFiles: + - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{ artifact.name }}.json + RepoOwner: Azure + + - ${{if ne(artifact.skipPublishDocGithubIo, 'true')}}: + - job: PublishGitHubIODocs + displayName: Publish Docs to GitHubIO Blob Storage + condition: >- + and( + succeeded(), + ne(variables['Skip.PublishDocs'], 'true'), + ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr') + ) + dependsOn: PublishPackage + + pool: + name: azsdk-pool + image: windows-2022 + os: windows + + steps: + - checkout: self + + - download: current + artifact: ${{parameters.ArtifactName}} + timeoutInMinutes: 5 + + - download: current + artifact: ${{parameters.DocArtifact}} + timeoutInMinutes: 5 + + - pwsh: | + if (Test-Path "$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}") { + Get-ChildItem -Recurse "$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}" + } + else { + New-Item -ItemType Directory -Force -Path "$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}" + } + workingDirectory: $(Pipeline.Workspace) + displayName: Output Visible Artifacts + + - template: /eng/common/pipelines/templates/steps/publish-blobs.yml + parameters: + FolderForUpload: '$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}' + TargetLanguage: 'python' + ArtifactLocation: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}' + + - ${{if ne(artifact.skipPublishDocMs, 'true')}}: + - job: PublishDocs + displayName: Docs.MS Release + condition: >- + and( + succeeded(), + ne(variables['Skip.PublishDocs'], 'true'), + ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr') + ) + dependsOn: PublishPackage + + pool: + image: ubuntu-24.04 + name: azsdk-pool + os: linux + + steps: + - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml + parameters: + Paths: + - sdk/**/*.md + - .github/CODEOWNERS + + - download: current + + # py2docfx requires Python >= 3.12.x, match docs pipeline version specification + - task: UsePythonVersion@0 + displayName: 'Use Python 3.12.x' + inputs: + versionSpec: '3.12.x' + + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + DevFeedName: ${{ parameters.DevFeedName }} + + - template: /eng/pipelines/templates/steps/install-rex-validation-tool.yml + + - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml + parameters: + PackageInfoLocations: + - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json + WorkingDirectory: $(System.DefaultWorkingDirectory) + TargetDocRepoOwner: ${{parameters.TargetDocRepoOwner}} + TargetDocRepoName: ${{parameters.TargetDocRepoName}} + Language: 'python' + SparseCheckoutPaths: + - docs-ref-services/ + - metadata/ + + - job: UpdatePackageVersion + displayName: "Update Package Version" + condition: and(succeeded(), ne(variables['Skip.UpdatePackageVersion'], 'true')) dependsOn: PublishPackage pool: @@ -283,197 +360,155 @@ stages: os: linux steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - Paths: - - sdk/**/*.md - - .github/CODEOWNERS - - - download: current - - # py2docfx requires Python >= 3.12.x, match docs pipeline version specification + - checkout: self - task: UsePythonVersion@0 - displayName: 'Use Python 3.12.x' - inputs: - versionSpec: '3.12.x' - template: /eng/pipelines/templates/steps/auth-dev-feed.yml parameters: DevFeedName: ${{ parameters.DevFeedName }} - - template: /eng/pipelines/templates/steps/install-rex-validation-tool.yml + - script: | + python -m pip install "./eng/tools/azure-sdk-tools" + displayName: Install versioning tool dependencies - - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml + - pwsh: | + sdk_increment_version --package-name ${{ artifact.name }} --service ${{ parameters.ServiceDirectory }} + if (Test-Path component-detection-pip-report.json) { + Write-Host "Deleting component-detection-pip-report.json" + rm component-detection-pip-report.json + } + displayName: Increment package version + + - template: /eng/common/pipelines/templates/steps/create-pull-request.yml parameters: - PackageInfoLocations: - - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json - WorkingDirectory: $(System.DefaultWorkingDirectory) - TargetDocRepoOwner: ${{parameters.TargetDocRepoOwner}} - TargetDocRepoName: ${{parameters.TargetDocRepoName}} - Language: 'python' - SparseCheckoutPaths: - - docs-ref-services/ - - metadata/ - - - job: UpdatePackageVersion - displayName: "Update Package Version" - condition: and(succeeded(), ne(variables['Skip.UpdatePackageVersion'], 'true')) - dependsOn: PublishPackage + RepoName: azure-sdk-for-python + PRBranchName: increment-package-version-${{ parameters.ServiceDirectory }}-$(Build.BuildId) + CommitMsg: "Increment package version after release of ${{ artifact.name }}" + PRTitle: "Increment version for ${{ parameters.ServiceDirectory }} releases" + CloseAfterOpenForTesting: '${{ parameters.TestPipeline }}' + AuthToken: '' + + - ${{if and(eq(variables['Build.Reason'], 'Manual'), eq(variables['System.TeamProject'], 'internal'))}}: + - template: /eng/pipelines/templates/jobs/smoke.tests.yml + parameters: + Daily: false + ArtifactName: ${{ parameters.ArtifactName }} + Artifact: ${{ artifact }} + DevFeedName: ${{ parameters.DevFeedName }} + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - stage: Integration + dependsOn: ${{parameters.DependsOn}} + condition: succeededOrFailed('${{parameters.DependsOn}}') + jobs: + - job: PublishPackages + displayName: "Publish package to daily feed" + condition: or(eq(variables['SetDevVersion'], 'true'), and(eq(variables['Build.Reason'],'Schedule'), eq(variables['System.TeamProject'], 'internal'))) pool: image: ubuntu-24.04 name: azsdk-pool os: linux - steps: - - checkout: self + - download: current + artifact: ${{parameters.ArtifactName}} + timeoutInMinutes: 5 + - task: UsePythonVersion@0 - - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + - template: ../steps/auth-dev-feed.yml parameters: DevFeedName: ${{ parameters.DevFeedName }} - script: | - python -m pip install "./eng/tools/azure-sdk-tools" - displayName: Install versioning tool dependencies - + set -e + python -m pip install twine + displayName: Install Twine + + - ${{ each artifact in parameters.Artifacts }}: + - ${{if ne(artifact.skipPublishDevFeed, 'true')}}: + + - pwsh: | + # If BuildTargetingString is set, check whether this artifact matches any of the + # (possibly comma-separated) glob patterns before attempting to publish. + # This handles scoped builds where only a subset of packages are built. + $targetingString = $env:BUILDTARGETINGSTRING + if ($targetingString) { + $globs = $targetingString -split "," + $isTargeted = $globs | Where-Object { "${{artifact.name}}" -like $_.Trim() } + if (-not $isTargeted) { + Write-Host "Package '${{artifact.name}}' does not match BuildTargetingString '$targetingString'. Skipping integration publish." + exit 0 + } + } + + $fileCount = (Get-ChildItem $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} | ? {$_.Name -match "-[0-9]*.[0-9]*.[0-9]*a[0-9]*" } | Measure-Object).Count + + if ($fileCount -eq 0) { + Write-Host "No alpha packages for ${{artifact.name}} to publish." + exit 0 + } + + twine upload --repository $(DevFeedName) --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*-*a*.whl + echo "Uploaded whl to devops feed $(DevFeedName)" + twine upload --repository $(DevFeedName) --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*-*a*.tar.gz + echo "Uploaded sdist to devops feed $(DevFeedName)" + displayName: 'Publish ${{artifact.name}} alpha package' + + - job: PublishDocsToNightlyBranch + dependsOn: PublishPackages + condition: >- + and( + succeeded(), + or( + eq(variables['SetDevVersion'], 'true'), + and( + eq(variables['Build.Reason'],'Schedule'), + eq(variables['System.TeamProject'], 'internal') + ) + ), + ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr') + ) + pool: + image: ubuntu-24.04 + name: azsdk-pool + os: linux + steps: + - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml + parameters: + Paths: + - sdk/**/*.md + - .github/CODEOWNERS + - download: current - pwsh: | - sdk_increment_version --package-name ${{ artifact.name }} --service ${{ parameters.ServiceDirectory }} - if (Test-Path component-detection-pip-report.json) { - Write-Host "Deleting component-detection-pip-report.json" - rm component-detection-pip-report.json - } - displayName: Increment package version - - - template: /eng/common/pipelines/templates/steps/create-pull-request.yml + Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.ArtifactName}}/ + displayName: Show visible artifacts + + # py2docfx requires Python >= 3.11 + - task: UsePythonVersion@0 + displayName: 'Use Python 3.11' + inputs: + versionSpec: '3.11' + + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml parameters: - RepoName: azure-sdk-for-python - PRBranchName: increment-package-version-${{ parameters.ServiceDirectory }}-$(Build.BuildId) - CommitMsg: "Increment package version after release of ${{ artifact.name }}" - PRTitle: "Increment version for ${{ parameters.ServiceDirectory }} releases" - CloseAfterOpenForTesting: '${{ parameters.TestPipeline }}' - - - ${{if and(eq(variables['Build.Reason'], 'Manual'), eq(variables['System.TeamProject'], 'internal'))}}: - - template: /eng/pipelines/templates/jobs/smoke.tests.yml - parameters: - Daily: false - ArtifactName: ${{ parameters.ArtifactName }} - Artifact: ${{ artifact }} - DevFeedName: ${{ parameters.DevFeedName }} + DevFeedName: ${{ parameters.DevFeedName }} - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - stage: Integration - dependsOn: ${{parameters.DependsOn}} - condition: succeededOrFailed('${{parameters.DependsOn}}') - jobs: - - job: PublishPackages - displayName: "Publish package to daily feed" - condition: or(eq(variables['SetDevVersion'], 'true'), and(eq(variables['Build.Reason'],'Schedule'), eq(variables['System.TeamProject'], 'internal'))) - pool: - image: ubuntu-24.04 - name: azsdk-pool - os: linux - steps: - - download: current - artifact: ${{parameters.ArtifactName}} - timeoutInMinutes: 5 - - - task: UsePythonVersion@0 - - - template: ../steps/auth-dev-feed.yml - parameters: - DevFeedName: ${{ parameters.DevFeedName }} - - - script: | - set -e - python -m pip install twine - displayName: Install Twine - - - ${{ each artifact in parameters.Artifacts }}: - - ${{if ne(artifact.skipPublishDevFeed, 'true')}}: - - - pwsh: | - # If BuildTargetingString is set, check whether this artifact matches any of the - # (possibly comma-separated) glob patterns before attempting to publish. - # This handles scoped builds where only a subset of packages are built. - $targetingString = $env:BUILDTARGETINGSTRING - if ($targetingString) { - $globs = $targetingString -split "," - $isTargeted = $globs | Where-Object { "${{artifact.name}}" -like $_.Trim() } - if (-not $isTargeted) { - Write-Host "Package '${{artifact.name}}' does not match BuildTargetingString '$targetingString'. Skipping integration publish." - exit 0 - } - } - - $fileCount = (Get-ChildItem $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}} | ? {$_.Name -match "-[0-9]*.[0-9]*.[0-9]*a[0-9]*" } | Measure-Object).Count - - if ($fileCount -eq 0) { - Write-Host "No alpha packages for ${{artifact.name}} to publish." - exit 0 - } - - twine upload --repository $(DevFeedName) --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*-*a*.whl - echo "Uploaded whl to devops feed $(DevFeedName)" - twine upload --repository $(DevFeedName) --config-file $(PYPIRC_PATH) $(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}/*-*a*.tar.gz - echo "Uploaded sdist to devops feed $(DevFeedName)" - displayName: 'Publish ${{artifact.name}} alpha package' - - - job: PublishDocsToNightlyBranch - dependsOn: PublishPackages - condition: >- - and( - succeeded(), - or( - eq(variables['SetDevVersion'], 'true'), - and( - eq(variables['Build.Reason'],'Schedule'), - eq(variables['System.TeamProject'], 'internal') - ) - ), - ne(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-python-pr') - ) - pool: - image: ubuntu-24.04 - name: azsdk-pool - os: linux - steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - Paths: - - sdk/**/*.md - - .github/CODEOWNERS - - download: current - - pwsh: | - Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.ArtifactName}}/ - displayName: Show visible artifacts - - # py2docfx requires Python >= 3.11 - - task: UsePythonVersion@0 - displayName: 'Use Python 3.11' - inputs: - versionSpec: '3.11' - - - template: /eng/pipelines/templates/steps/auth-dev-feed.yml - parameters: - DevFeedName: ${{ parameters.DevFeedName }} - - - template: /eng/pipelines/templates/steps/install-rex-validation-tool.yml - - - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml - parameters: - PackageInfoLocations: - - ${{ each artifact in parameters.Artifacts }}: - - ${{if ne(artifact.skipPublishDocMs, 'true')}}: - - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json - WorkingDirectory: $(System.DefaultWorkingDirectory) - TargetDocRepoOwner: ${{parameters.TargetDocRepoOwner}} - TargetDocRepoName: ${{parameters.TargetDocRepoName}} - Language: 'python' - DailyDocsBuild: true - SparseCheckoutPaths: - - docs-ref-services/ - - metadata/ - PackageSourceOverride: ${{parameters.PackageSourceOverride}} - - - template: /eng/common/pipelines/templates/steps/docsms-ensure-validation.yml + - template: /eng/pipelines/templates/steps/install-rex-validation-tool.yml + + - template: /eng/common/pipelines/templates/steps/update-docsms-metadata.yml + parameters: + PackageInfoLocations: + - ${{ each artifact in parameters.Artifacts }}: + - ${{if ne(artifact.skipPublishDocMs, 'true')}}: + - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json + WorkingDirectory: $(System.DefaultWorkingDirectory) + TargetDocRepoOwner: ${{parameters.TargetDocRepoOwner}} + TargetDocRepoName: ${{parameters.TargetDocRepoName}} + Language: 'python' + DailyDocsBuild: true + SparseCheckoutPaths: + - docs-ref-services/ + - metadata/ + PackageSourceOverride: ${{parameters.PackageSourceOverride}} + + - template: /eng/common/pipelines/templates/steps/docsms-ensure-validation.yml diff --git a/eng/pipelines/templates/stages/archetype-sdk-client.yml b/eng/pipelines/templates/stages/archetype-sdk-client.yml index 83538625d656..f29e0fce8156 100644 --- a/eng/pipelines/templates/stages/archetype-sdk-client.yml +++ b/eng/pipelines/templates/stages/archetype-sdk-client.yml @@ -2,6 +2,9 @@ parameters: - name: ServiceDirectory type: string default: not-specified + - name: SkipPrValidation + type: boolean + default: false - name: Artifacts type: object default: [] @@ -78,16 +81,51 @@ parameters: - name: oneESTemplateTag type: string default: release + - name: EnableCompiledCodeql + type: boolean + default: false - name: EnvVars type: object default: {} + - name: InstallMsRustToolchain + type: boolean + default: false + - name: MsRustWorkingDirectory + type: string + default: '' + - name: MsRustToolchainFeed + type: string + default: '' + - name: MsRustAdditionalTargets + type: string + default: '' extends: template: /eng/pipelines/templates/stages/1es-redirect.yml parameters: oneESTemplateTag: ${{ parameters.oneESTemplateTag }} + EnableCompiledCodeql: ${{ parameters.EnableCompiledCodeql }} stages: + - ${{ if and(eq(parameters.SkipPrValidation, true), eq(variables['Build.Reason'], 'Manual')) }}: + - stage: NoOp + displayName: No-op + variables: + - template: /eng/pipelines/templates/variables/globals.yml + - template: /eng/pipelines/templates/variables/image.yml + jobs: + - job: NoOp + displayName: No-op + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + steps: + - checkout: none + - pwsh: Write-Host "PR validation skipped because SkipPrValidation was set to true for a manual run." + displayName: Skip PR validation + - stage: Build + condition: not(and(eq(${{ parameters.SkipPrValidation }}, true), eq(variables['Build.Reason'], 'Manual'))) jobs: - template: /eng/pipelines/templates/jobs/ci.yml parameters: @@ -106,6 +144,10 @@ extends: BuildDocs: ${{ parameters.BuildDocs }} DevFeedName: ${{ parameters.DevFeedName }} EnvVars: ${{ parameters.EnvVars }} + InstallMsRustToolchain: ${{ parameters.InstallMsRustToolchain }} + MsRustWorkingDirectory: ${{ parameters.MsRustWorkingDirectory }} + MsRustToolchainFeed: ${{ parameters.MsRustToolchainFeed }} + MsRustAdditionalTargets: ${{ parameters.MsRustAdditionalTargets }} MatrixConfigs: - ${{ each config in parameters.MatrixConfigs }}: - ${{ config }} @@ -117,9 +159,51 @@ extends: TestProxy: ${{ parameters.TestProxy }} GenerateApiReviewForManualOnly: ${{ parameters.GenerateApiReviewForManualOnly }} + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), or(in(variables['Build.Reason'], 'Manual', ''), and(eq(variables['Build.Reason'], 'IndividualCI'), eq(variables['Build.SourceBranch'], 'refs/heads/main')))) }}: + - job: CheckPackageApproval + displayName: Check Package Approval Status + dependsOn: + - Build_Extended + - Analyze + condition: >- + and( + in(dependencies.Build_Extended.result, 'Succeeded', 'SucceededWithIssues'), + or( + in(dependencies.Analyze.result, 'Succeeded', 'SucceededWithIssues'), + and( + eq(dependencies.Analyze.result, 'Skipped'), + eq(variables['Skip.Analyze'], 'true') + ) + ) + ) + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux + steps: + - checkout: self + fetchDepth: 1 + fetchTags: false + sparseCheckoutDirectories: | + eng/common + eng/scripts + + - download: current + artifact: packages_extended + + - template: /eng/common/pipelines/templates/steps/install-azsdk-cli.yml + + - template: /eng/common/pipelines/templates/steps/get-package-approval-status.yml + parameters: + PackageInfoFiles: + - ${{ each artifact in parameters.Artifacts }}: + - $(Pipeline.Workspace)/packages_extended/PackageInfo/${{ artifact.name }}.json + RepoOwner: Azure + variables: - template: /eng/pipelines/templates/variables/globals.yml - template: /eng/pipelines/templates/variables/image.yml + - template: /eng/common/pipelines/templates/variables/api-review-break-glass.yml - template: archetype-python-release.yml parameters: diff --git a/eng/pipelines/templates/stages/archetype-sdk-tests.yml b/eng/pipelines/templates/stages/archetype-sdk-tests.yml index 7e44a439d5cb..3eeebbd99369 100644 --- a/eng/pipelines/templates/stages/archetype-sdk-tests.yml +++ b/eng/pipelines/templates/stages/archetype-sdk-tests.yml @@ -14,6 +14,9 @@ parameters: - name: EnvVars type: object default: {} + - name: VariableGroups + type: object + default: [] - name: MaxParallel type: number default: 0 @@ -104,10 +107,13 @@ extends: stages: - ${{ each package in coalesce(parameters.Packages, split(parameters.BuildTargetingString, '|')) }}: - ${{ each cloud in parameters.CloudConfig }}: - - ${{ if or(contains(parameters.Clouds, cloud.key), and(contains(variables['Build.DefinitionName'], 'tests-weekly'), contains(parameters.SupportedClouds, cloud.key))) }}: + - ${{ if contains(parameters.Clouds, cloud.key) }}: - ${{ if not(contains(parameters.UnsupportedClouds, cloud.key)) }}: - stage: displayName: ${{ format('{0} {1} {2}', cloud.key, parameters.JobName, package) }} + variables: + - ${{ each group in parameters.VariableGroups }}: + - group: ${{ group }} dependsOn: [] jobs: - template: /eng/common/pipelines/templates/jobs/generate-job-matrix.yml @@ -162,10 +168,11 @@ extends: ServiceConnection: ${{ coalesce(cloud.value.ServiceConnection, lower(format('azure-sdk-tests-{0}', cloud.key))) }} SubscriptionConfigurationFilePaths: ${{ cloud.value.SubscriptionConfigurationFilePaths }} - - ${{ if contains(variables['Build.DefinitionName'], 'tests-weekly') }}: + # Analyze-weekly runs only on scheduled runs that start on a weekend (Sat/Sun, UTC). + - ${{ if eq(variables['Build.Reason'], 'Schedule') }}: - template: /eng/pipelines/templates/stages/python-analyze-weekly.yml parameters: - BuildTargetingString: ${{ parameters.BuildTargetingString }} + BuildTargetingString: ${{ package }} ServiceDirectory: ${{ parameters.ServiceDirectory }} JobName: ${{ parameters.JobName }} - + Condition: and(succeeded(), in(format('{0:ddd}', pipeline.startTime), 'Sat', 'Sun')) diff --git a/eng/pipelines/templates/stages/conda-sdk-client.yml b/eng/pipelines/templates/stages/conda-sdk-client.yml index 659c5a4d764b..18c92aebf9bf 100644 --- a/eng/pipelines/templates/stages/conda-sdk-client.yml +++ b/eng/pipelines/templates/stages/conda-sdk-client.yml @@ -251,7 +251,7 @@ extends: in_batch: true checkout: - package: msal - download_uri: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/download/msal/1.37.0/msal-1.37.0.tar.gz + download_uri: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/download/msal/1.38.0/msal-1.38.0.tar.gz - name: msal-extensions common_root: msal in_batch: true @@ -277,13 +277,13 @@ extends: service: storage checkout: - package: azure-storage-blob - version: 12.29.0 + version: 12.30.1 - package: azure-storage-queue - version: 12.16.0 + version: 12.17.0 - package: azure-storage-file-share - version: 12.25.0 + version: 12.26.0 - package: azure-storage-file-datalake - version: 12.24.0 + version: 12.25.0 - name: azure-ai-ml service: ml in_batch: ${{ parameters.release_azure_ai_ml }} @@ -291,7 +291,7 @@ extends: - conda-forge checkout: - package: azure-ai-ml - version: 1.33.0 + version: 1.34.1 - name: azure-ai-contentsafety common_root: azure service: contentsafety @@ -305,7 +305,7 @@ extends: in_batch: ${{ parameters.release_azure_ai_evaluation }} checkout: - package: azure-ai-evaluation - version: 1.16.9 + version: 1.18.3 - name: azure-ai-formrecognizer common_root: azure service: formrecognizer @@ -337,13 +337,13 @@ extends: in_batch: ${{ parameters.release_azure_ai_translation_document }} checkout: - package: azure-ai-translation-document - version: 1.1.0 + version: 2.0.0 - name: azure-ai-translation-text service: translation in_batch: ${{ parameters.release_azure_ai_translation_text }} checkout: - package: azure-ai-translation-text - version: 1.0.1 + version: 2.0.0 - name: azure-ai-vision common_root: azure/vision in_batch: ${{ parameters.release_azure_ai_vision }} @@ -356,13 +356,13 @@ extends: in_batch: ${{ parameters.release_azure_appconfiguration }} checkout: - package: azure-appconfiguration - version: 1.8.1 + version: 1.9.0 - name: azure-appconfiguration-provider service: appconfiguration in_batch: ${{ parameters.release_azure_appconfiguration_provider }} checkout: - package: azure-appconfiguration-provider - version: 2.4.0 + version: 2.5.0 - name: azure-communication service: communication common_root: azure/communication @@ -383,7 +383,7 @@ extends: - package: azure-communication-jobrouter version: 1.0.0 - package: azure-communication-callautomation - version: 1.5.0 + version: 1.6.0 - package: azure-communication-messages version: 1.1.0 - name: azure-confidentialledger @@ -403,7 +403,7 @@ extends: in_batch: ${{ parameters.release_azure_cosmos }} checkout: - package: azure-cosmos - version: 4.14.6 + version: 4.16.3 - name: azure-data-tables service: tables in_batch: ${{ parameters.release_azure_data_tables }} @@ -427,7 +427,7 @@ extends: in_batch: ${{ parameters.release_azure_eventgrid }} checkout: - package: azure-eventgrid - version: 4.22.0 + version: 4.22.1 - name: azure-eventhub service: eventhub common_root: azure/eventhub @@ -444,7 +444,7 @@ extends: in_batch: ${{ parameters.release_azure_iot_deviceupdate }} checkout: - package: azure-iot-deviceupdate - version: 1.0.0 + version: 1.1.0 - name: azure-keyvault service: keyvault common_root: azure/keyvault @@ -457,7 +457,7 @@ extends: - package: azure-keyvault-keys version: 4.11.1 - package: azure-keyvault-secrets - version: 4.11.0 + version: 4.11.2 - name: azure-messaging-webpubsubservice service: webpubsub in_batch: ${{ parameters.release_azure_messaging_webpubsubservice }} @@ -481,7 +481,7 @@ extends: in_batch: ${{ parameters.release_azure_monitor_opentelemetry }} checkout: - package: azure-monitor-opentelemetry - version: 1.8.8 + version: 1.8.9 - name: azure-monitor-query service: monitor in_batch: ${{ parameters.release_azure_monitor_query }} @@ -542,14 +542,14 @@ extends: in_batch: ${{ parameters.release_azure_ai_projects }} checkout: - package: azure-ai-projects - version: 2.1.0 + version: 2.5.0 - name: azure-ai-voicelive common_root: azure service: projects in_batch: ${{ parameters.release_azure_ai_voicelive }} checkout: - package: azure-ai-voicelive - version: 1.2.0 + version: 1.3.0 - name: azure-monitor-querymetrics common_root: azure service: querymetrics @@ -601,6 +601,8 @@ extends: checkout: - package: azure-mgmt-advisor version: 9.0.1 + - package: azure-mgmt-alertprocessingrules + version: 1.0.0 - package: azure-mgmt-alertsmanagement version: 1.0.1 - package: azure-mgmt-apicenter @@ -612,7 +614,7 @@ extends: - package: azure-mgmt-appconfiguration version: 5.0.0 - package: azure-mgmt-appcontainers - version: 4.0.0 + version: 5.0.0 - package: azure-mgmt-applicationinsights version: 4.1.0 - package: azure-mgmt-appplatform @@ -628,7 +630,7 @@ extends: - package: azure-mgmt-automanage version: 1.0.0 - package: azure-mgmt-automation - version: 1.0.1 + version: 2.0.0 - package: azure-mgmt-avs version: 10.0.0 - package: azure-mgmt-azurearcdata @@ -644,13 +646,15 @@ extends: - package: azure-mgmt-batchai version: 7.0.0 - package: azure-mgmt-billing - version: 7.0.0 + version: 8.0.0 - package: azure-mgmt-botservice version: 2.0.0 - package: azure-mgmt-carbonoptimization version: 1.0.0 - package: azure-mgmt-cdn - version: 13.1.1 + version: 14.0.0 + - package: azure-mgmt-certificateregistration + version: 1.0.0 - package: azure-mgmt-changeanalysis version: 1.0.0 - package: azure-mgmt-chaos @@ -660,53 +664,55 @@ extends: - package: azure-mgmt-commerce version: 6.0.1 - package: azure-mgmt-communication - version: 2.2.0 + version: 3.0.0 - package: azure-mgmt-compute - version: 38.0.0 + version: 38.3.0 - package: azure-mgmt-computefleet version: 1.0.0 - package: azure-mgmt-computelimit - version: 1.0.0 + version: 1.3.0 - package: azure-mgmt-computeschedule version: 1.1.0 - package: azure-mgmt-confidentialledger version: 1.0.1 - package: azure-mgmt-confluent version: 2.1.0 + - package: azure-mgmt-connectedcache + version: 1.0.0 - package: azure-mgmt-connectedvmware version: 1.0.0 - package: azure-mgmt-consumption - version: 10.0.0 + version: 11.0.0 - package: azure-mgmt-containerinstance version: 10.1.0 - package: azure-mgmt-containerregistry version: 15.0.0 - package: azure-mgmt-containerservice - version: 41.2.0 + version: 41.6.0 - package: azure-mgmt-containerservicefleet - version: 3.1.0 + version: 4.0.0 - package: azure-mgmt-cosmosdb - version: 9.8.0 + version: 10.0.0 - package: azure-mgmt-costmanagement - version: 4.0.1 + version: 5.0.0 - package: azure-mgmt-customproviders version: 1.0.1 - package: azure-mgmt-dashboard version: 2.0.0 - package: azure-mgmt-databox - version: 3.1.0 + version: 4.0.0 - package: azure-mgmt-databoxedge - version: 2.0.0 + version: 3.0.0 - package: azure-mgmt-databricks - version: 2.0.0 + version: 3.0.0 - package: azure-mgmt-datadog version: 2.1.0 - package: azure-mgmt-datafactory - version: 9.3.0 + version: 10.0.0 - package: azure-mgmt-datamigration version: 10.1.0 - package: azure-mgmt-dataprotection - version: 2.0.1 + version: 2.1.0 - package: azure-mgmt-datashare version: 1.0.1 - package: azure-mgmt-dellstorage @@ -733,20 +739,22 @@ extends: version: 9.0.0 - package: azure-mgmt-dnsresolver version: 1.1.0 + - package: azure-mgmt-domainregistration + version: 1.0.0 - package: azure-mgmt-durabletask version: 1.1.0 - package: azure-mgmt-dynatrace - version: 2.0.0 + version: 3.0.0 - package: azure-mgmt-edgeorder - version: 2.0.0 + version: 3.0.0 - package: azure-mgmt-elastic - version: 1.0.0 + version: 3.0.0 - package: azure-mgmt-elasticsan - version: 1.1.0 + version: 2.0.0 - package: azure-mgmt-eventgrid version: 10.4.0 - package: azure-mgmt-eventhub - version: 11.2.0 + version: 12.0.0 - package: azure-mgmt-extendedlocation version: 2.0.0 - package: azure-mgmt-fabric @@ -754,15 +762,19 @@ extends: - package: azure-mgmt-fluidrelay version: 1.0.0 - package: azure-mgmt-frontdoor - version: 1.2.0 + version: 2.0.0 - package: azure-mgmt-graphservices version: 1.0.0 + - package: azure-mgmt-guestconfig + version: 1.0.0 - package: azure-mgmt-hanaonazure version: 1.0.1 - package: azure-mgmt-hardwaresecuritymodules version: 1.0.0 - package: azure-mgmt-hdinsight version: 9.0.1 + - package: azure-mgmt-healthbot + version: 1.0.0 - package: azure-mgmt-healthcareapis version: 2.1.0 - package: azure-mgmt-healthdataaiservices @@ -774,11 +786,11 @@ extends: - package: azure-mgmt-hybridcontainerservice version: 1.0.0 - package: azure-mgmt-hybridkubernetes - version: 1.2.0 + version: 2.0.0 - package: azure-mgmt-hybridnetwork version: 2.0.0 - package: azure-mgmt-imagebuilder - version: 1.4.0 + version: 2.0.0 - package: azure-mgmt-informaticadatamanagement version: 1.0.0 - package: azure-mgmt-iotcentral @@ -797,8 +809,10 @@ extends: version: 3.1.0 - package: azure-mgmt-kubernetesconfiguration-extensions version: 1.0.0 + - package: azure-mgmt-kubernetesconfiguration-fluxconfigurations + version: 1.0.0 - package: azure-mgmt-kusto - version: 3.4.0 + version: 4.0.0 - package: azure-mgmt-labservices version: 2.0.0 - package: azure-mgmt-lambdatesthyperexecute @@ -806,7 +820,7 @@ extends: - package: azure-mgmt-loadtesting version: 1.0.0 - package: azure-mgmt-loganalytics - version: 13.1.1 + version: 14.0.0 - package: azure-mgmt-logic version: 10.0.0 - package: azure-mgmt-logz @@ -816,15 +830,17 @@ extends: - package: azure-mgmt-maintenance version: 2.1.0 - package: azure-mgmt-managednetworkfabric - version: 1.0.0 + version: 2.0.0 - package: azure-mgmt-managedservices version: 6.0.1 - package: azure-mgmt-managementgroups - version: 1.1.0 + version: 2.0.0 - package: azure-mgmt-managementpartner version: 1.0.1 - package: azure-mgmt-maps version: 2.1.0 + - package: azure-mgmt-marketplace + version: 1.0.0 - package: azure-mgmt-marketplaceordering version: 1.1.1 - package: azure-mgmt-media @@ -832,23 +848,27 @@ extends: - package: azure-mgmt-mobilenetwork version: 3.3.0 - package: azure-mgmt-mongocluster - version: 1.1.0 + version: 1.2.0 - package: azure-mgmt-mongodbatlas version: 1.0.0 - package: azure-mgmt-monitor version: 7.0.0 + - package: azure-mgmt-monitorworkspaces + version: 1.0.0 - package: azure-mgmt-msi version: 7.1.0 - package: azure-mgmt-neonpostgres version: 1.0.0 - package: azure-mgmt-netapp - version: 16.0.0 + version: 17.1.0 - package: azure-mgmt-network - version: 30.2.0 + version: 32.0.0 - package: azure-mgmt-networkanalytics version: 1.0.0 - package: azure-mgmt-networkcloud - version: 2.2.0 + version: 3.0.0 + - package: azure-mgmt-networkfunction + version: 1.0.0 - package: azure-mgmt-newrelicobservability version: 1.1.0 - package: azure-mgmt-nginx @@ -864,7 +884,7 @@ extends: - package: azure-mgmt-paloaltonetworksngfw version: 1.1.0 - package: azure-mgmt-peering - version: 1.0.1 + version: 2.0.0 - package: azure-mgmt-planetarycomputer version: 1.0.0 - package: azure-mgmt-playwright @@ -878,45 +898,57 @@ extends: - package: azure-mgmt-postgresqlflexibleservers version: 2.0.0 - package: azure-mgmt-powerbidedicated - version: 1.0.1 + version: 2.0.0 - package: azure-mgmt-privatedns - version: 1.2.0 + version: 2.0.0 + - package: azure-mgmt-prometheusrulegroups + version: 1.0.0 + - package: azure-mgmt-providerhub + version: 1.0.0 - package: azure-mgmt-purestorageblock version: 1.0.0 - package: azure-mgmt-purview version: 1.0.1 - package: azure-mgmt-qumulo - version: 2.0.0 + version: 3.0.0 - package: azure-mgmt-quota version: 3.0.1 - package: azure-mgmt-rdbms - version: 10.1.0 + version: 10.1.1 - package: azure-mgmt-recoveryservices - version: 4.0.1 + version: 4.2.0 - package: azure-mgmt-recoveryservicesbackup version: 10.0.0 - package: azure-mgmt-recoveryservicesdatareplication version: 1.0.0 - package: azure-mgmt-recoveryservicessiterecovery - version: 1.3.0 + version: 2.0.0 - package: azure-mgmt-redhatopenshift - version: 3.0.0 + version: 4.0.0 - package: azure-mgmt-redis version: 14.5.0 - package: azure-mgmt-redisenterprise version: 3.1.0 - package: azure-mgmt-relay - version: 1.1.1 + version: 2.0.0 - package: azure-mgmt-reservations - version: 2.3.0 + version: 3.0.0 - package: azure-mgmt-resource - version: 25.0.0 + version: 26.0.0 + - package: azure-mgmt-resource-databoundaries + version: 1.0.0 + - package: azure-mgmt-resource-deployments + version: 1.0.0 - package: azure-mgmt-resource-deploymentstacks version: 1.0.0 + - package: azure-mgmt-resource-subscriptions + version: 1.0.0 - package: azure-mgmt-resourceconnector version: 1.0.0 - package: azure-mgmt-resourcegraph version: 8.0.1 + - package: azure-mgmt-resourcehealth + version: 1.0.0 - package: azure-mgmt-resourcemover version: 1.1.0 - package: azure-mgmt-scvmm @@ -930,11 +962,11 @@ extends: - package: azure-mgmt-selfhelp version: 1.0.0 - package: azure-mgmt-serialconsole - version: 1.0.1 + version: 2.0.0 - package: azure-mgmt-servermanager version: 2.0.1 - package: azure-mgmt-servicebus - version: 9.0.0 + version: 10.0.0 - package: azure-mgmt-servicefabric version: 2.1.0 - package: azure-mgmt-servicefabricmanagedclusters @@ -950,23 +982,26 @@ extends: - package: azure-mgmt-sphere version: 1.0.0 - package: azure-mgmt-sql - version: 3.0.1 + checkout_path: sdk/sql + version: 4.0.0 + - package: azure-mgmt-sqlvirtualmachine + version: 1.0.0 - package: azure-mgmt-standbypool - version: 2.0.0 + version: 2.1.0 - package: azure-mgmt-storage - version: 25.0.0 + version: 25.1.0 - package: azure-mgmt-storageactions version: 1.0.0 - package: azure-mgmt-storagecache - version: 3.0.1 + version: 4.0.0 - package: azure-mgmt-storagediscovery version: 1.0.1 - package: azure-mgmt-storagemover - version: 3.0.0 + version: 3.1.0 - package: azure-mgmt-storagepool version: 1.0.0 - package: azure-mgmt-storagesync - version: 1.0.1 + version: 2.1.0 - package: azure-mgmt-streamanalytics version: 1.0.0 - package: azure-mgmt-subscription @@ -982,7 +1017,7 @@ extends: - package: azure-mgmt-voiceservices version: 1.0.0 - package: azure-mgmt-web - version: 11.0.0 + version: 11.0.1 - package: azure-mgmt-webpubsub version: 2.0.0 - package: azure-mgmt-workloads diff --git a/eng/pipelines/templates/stages/cosmos-sdk-client.yml b/eng/pipelines/templates/stages/cosmos-sdk-client.yml index 44044764e9f7..2cfb733d3caa 100644 --- a/eng/pipelines/templates/stages/cosmos-sdk-client.yml +++ b/eng/pipelines/templates/stages/cosmos-sdk-client.yml @@ -15,6 +15,15 @@ parameters: extends: template: /eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: + # azure-cosmos compiles a Rust extension with the Microsoft internal toolchain, + # so the build agents need msrustup and the toolchain named in the package's + # rust-toolchain.toml. + InstallMsRustToolchain: true + MsRustWorkingDirectory: $(Build.SourcesDirectory)/sdk/cosmos/azure-cosmos + # The Windows ARM64 wheel is cross-compiled from the x64 agent, so that target + # has to be present in the toolchain. Keep in sync with the win_arm64 override + # in the package's pyproject.toml. + MsRustAdditionalTargets: aarch64-pc-windows-msvc # Run only emulator tests in Emulator CI TestMarkArgument: cosmosEmulator ServiceDirectory: cosmos diff --git a/eng/pipelines/templates/stages/partner-release.yml b/eng/pipelines/templates/stages/partner-release.yml index 6caac7368e46..8bdaab18c641 100644 --- a/eng/pipelines/templates/stages/partner-release.yml +++ b/eng/pipelines/templates/stages/partner-release.yml @@ -83,5 +83,3 @@ extends: - template: /eng/pipelines/templates/steps/esrp-publish.yml parameters: targetFolder: $(Pipeline.Workspace)/esrp-release/ - owners: ${{ coalesce(variables['Build.RequestedForEmail'], 'azuresdk@microsoft.com') }} - approvers: ${{ coalesce(variables['Build.RequestedForEmail'], 'azuresdk@microsoft.com') }} diff --git a/eng/pipelines/templates/stages/publish-namereserve-package.yml b/eng/pipelines/templates/stages/publish-namereserve-package.yml index 1910beb86406..65b74ede3cdc 100644 --- a/eng/pipelines/templates/stages/publish-namereserve-package.yml +++ b/eng/pipelines/templates/stages/publish-namereserve-package.yml @@ -13,21 +13,17 @@ parameters: - name: NameForReservation type: string default: 'auto' - - name: VersionForReservation - type: string - default: '0.0.0' extends: template: /eng/pipelines/templates/stages/1es-redirect.yml parameters: stages: - stage: Build - displayName: 'Build ${{ parameters.NameForReservation }}==${{ parameters.VersionForReservation }}' + displayName: 'Build ${{ parameters.NameForReservation }}==0.0.0b1' jobs: - template: ../jobs/build-namereserve-package.yml parameters: NameForReservation: ${{ parameters.NameForReservation }} - VersionForReservation: ${{ parameters.VersionForReservation }} - stage: Publish displayName: 'Publish Name Reservation Package' diff --git a/eng/pipelines/templates/stages/python-analyze-weekly-standalone.yml b/eng/pipelines/templates/stages/python-analyze-weekly-standalone.yml index 10277b85fb3f..42b6c09b0e31 100644 --- a/eng/pipelines/templates/stages/python-analyze-weekly-standalone.yml +++ b/eng/pipelines/templates/stages/python-analyze-weekly-standalone.yml @@ -13,9 +13,10 @@ extends: template: /eng/pipelines/templates/stages/1es-redirect.yml parameters: stages: - - ${{ if contains(variables['Build.DefinitionName'], 'tests-weekly') }}: - - template: /eng/pipelines/templates/stages/python-analyze-weekly.yml - parameters: - ServiceDirectory: ${{ parameters.ServiceDirectory }} - BuildTargetingString: ${{ parameters.BuildTargetingString }} - JobName: ${{ parameters.JobName }} \ No newline at end of file + # Analyze-weekly runs only on scheduled runs that start on a weekend (Sat/Sun, UTC). + - template: /eng/pipelines/templates/stages/python-analyze-weekly.yml + parameters: + ServiceDirectory: ${{ parameters.ServiceDirectory }} + BuildTargetingString: ${{ parameters.BuildTargetingString }} + JobName: ${{ parameters.JobName }} + Condition: and(succeeded(), eq(variables['Build.Reason'], 'Schedule'), in(format('{0:ddd}', pipeline.startTime), 'Sat', 'Sun')) \ No newline at end of file diff --git a/eng/pipelines/templates/stages/python-analyze-weekly.yml b/eng/pipelines/templates/stages/python-analyze-weekly.yml index c0687f6d6a15..ed318e3a67db 100644 --- a/eng/pipelines/templates/stages/python-analyze-weekly.yml +++ b/eng/pipelines/templates/stages/python-analyze-weekly.yml @@ -2,19 +2,29 @@ parameters: - name: ServiceDirectory type: string default: '' + - name: DevFeedName + type: string + default: 'public/azure-sdk-for-python' - name: BuildTargetingString type: string default: 'azure-*' - name: JobName type: string default: 'Test' + - name: Condition + type: string + default: succeeded() stages: - stage: displayName: 'Analyze_${{ parameters.JobName }}' variables: - template: /eng/pipelines/templates/variables/image.yml + # Signals the analyze-weekly context to the Python tooling (see ci_tools.variables.in_analyze_weekly). + - name: AZURE_SDK_ANALYZE_WEEKLY + value: '1' dependsOn: [] + condition: ${{ parameters.Condition }} jobs: - job: 'Analyze' timeoutInMinutes: 90 @@ -29,9 +39,19 @@ stages: displayName: 'Use Python 3.10' inputs: versionSpec: '3.10' + + # Authenticate pip to the configured Azure DevOps feed before installs. + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + DevFeedName: ${{ parameters.DevFeedName }} + EnableTwineAuth: false + - script: | python -m pip install -r eng/ci_tools.txt displayName: 'Prep Environment' + + - template: /eng/common/pipelines/templates/steps/login-to-github.yml + - task: PythonScript@0 displayName: 'Run Pylint Next' continueOnError: true @@ -44,7 +64,7 @@ stages: --disablecov --filter-type="Omit_management" env: - GH_TOKEN: $(azuresdk-github-pat) + GH_TOKEN: $(GH_TOKEN) - task: PythonScript@0 displayName: 'Run MyPy Next' @@ -57,7 +77,7 @@ stages: --checks="next-mypy" --disablecov env: - GH_TOKEN: $(azuresdk-github-pat) + GH_TOKEN: $(GH_TOKEN) - task: PythonScript@0 displayName: 'Run Pyright Next' @@ -70,7 +90,7 @@ stages: --checks="next-pyright" --disablecov env: - GH_TOKEN: $(azuresdk-github-pat) + GH_TOKEN: $(GH_TOKEN) - script: | python -m pip install PyGithub>=1.59.0 @@ -86,7 +106,7 @@ stages: --service="${{ parameters.ServiceDirectory }}" --disablecov env: - GH_TOKEN: $(azuresdk-github-pat) + GH_TOKEN: $(GH_TOKEN) SYSTEM_ACCESSTOKEN: $(System.AccessToken) - task: UsePythonVersion@0 @@ -108,4 +128,4 @@ stages: --service="${{ parameters.ServiceDirectory }}" --checks="next-sphinx" env: - GH_TOKEN: $(azuresdk-github-pat) + GH_TOKEN: $(GH_TOKEN) diff --git a/eng/pipelines/templates/steps/analyze.yml b/eng/pipelines/templates/steps/analyze.yml index ef1b471cbbce..0fc44f36d0fb 100644 --- a/eng/pipelines/templates/steps/analyze.yml +++ b/eng/pipelines/templates/steps/analyze.yml @@ -144,11 +144,14 @@ steps: TestMarkArgument: ${{ parameters.TestMarkArgument }} AdditionalTestArgs: ${{ parameters.AdditionalTestArgs }} - - template: /eng/common/pipelines/templates/steps/create-apireview.yml + - template: /eng/common/pipelines/templates/steps/create-apiview-revision.yml parameters: Artifacts: ${{ parameters.Artifacts }} GenerateApiReviewForManualOnly: ${{ parameters.GenerateApiReviewForManualOnly }} ArtifactName: "packages_extended" + PackageInfoFiles: + - ${{ each artifact in parameters.Artifacts }}: + - $(Build.ArtifactStagingDirectory)/PackageInfo/${{ artifact.name }}.json - template: /eng/common/pipelines/templates/steps/detect-api-changes.yml parameters: diff --git a/eng/pipelines/templates/steps/build-conda-artifacts.yml b/eng/pipelines/templates/steps/build-conda-artifacts.yml index 57a0bb875375..2c142662ad1f 100644 --- a/eng/pipelines/templates/steps/build-conda-artifacts.yml +++ b/eng/pipelines/templates/steps/build-conda-artifacts.yml @@ -8,13 +8,24 @@ parameters: - name: Arguments type: string default: '' + - name: DevFeedName + type: string + default: 'public/azure-sdk-for-python' steps: - - task: UsePythonVersion@0 - displayName: 'Use Python $(PythonVersion)' - inputs: + # Sets a default PIP_INDEX_URL before UsePythonVersion@0 so the task's own pip + # auto-restore does not reach pypi.org under network isolation. + - template: /eng/pipelines/templates/steps/use-python-version.yml + parameters: versionSpec: $(PythonVersion) + # Authenticate to the Azure Artifacts feed before any pip install. + # Public feeds have upstream sources enabled and require authentication for passthrough to pypi.org. + - template: /eng/pipelines/templates/steps/auth-dev-feed.yml + parameters: + DevFeedName: ${{ parameters.DevFeedName }} + EnableTwineAuth: false + - pwsh: | $ErrorActionPreference = 'Stop' $PSNativeCommandUseErrorActionPreference = $true diff --git a/eng/pipelines/templates/steps/build-extended-artifacts.yml b/eng/pipelines/templates/steps/build-extended-artifacts.yml index ca145f873de5..7a815257582f 100644 --- a/eng/pipelines/templates/steps/build-extended-artifacts.yml +++ b/eng/pipelines/templates/steps/build-extended-artifacts.yml @@ -82,6 +82,12 @@ steps: ServiceDirectory: ${{ parameters.ServiceDirectory }} AdditionalTestArgs: '--wheel_dir="$(Build.ArtifactStagingDirectory)"' + - script: >- + python eng/scripts/save_package_api_hash.py + --artifact-staging-directory "$(Build.ArtifactStagingDirectory)" + --repo-root "$(Build.SourcesDirectory)" + displayName: 'Update package properties with API hashes' + - ${{ parameters.BeforePublishSteps }} - ${{ if eq(parameters.RunApiStubGen, 'true') }}: diff --git a/eng/pipelines/templates/steps/build-package-artifacts.yml b/eng/pipelines/templates/steps/build-package-artifacts.yml index a23eaab611d2..519b250f90c2 100644 --- a/eng/pipelines/templates/steps/build-package-artifacts.yml +++ b/eng/pipelines/templates/steps/build-package-artifacts.yml @@ -23,14 +23,32 @@ parameters: - name: ExcludePaths type: object default: [] + # Install the Microsoft internal Rust toolchain before building. Only needed by + # packages whose extension is compiled by msrustup. + - name: InstallMsRustToolchain + type: boolean + default: false + # Passed to RustInstaller as the directory holding rust-toolchain.toml. + - name: MsRustWorkingDirectory + type: string + default: '' + - name: MsRustToolchainFeed + type: string + default: '' + # Extra Rust target triples, installed only on Windows agents where the ARM64 + # wheel is cross-compiled from x64. + - name: MsRustAdditionalTargets + type: string + default: '' steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: - TokenToUseForAuth: $(azuresdk-github-pat) - Paths: - - '**' + - ${{ if endsWith(variables['Build.Repository.Name'], '-pr') }}: + - checkout: self + - ${{ else }}: + - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml + parameters: + Paths: + - '**' - task: UsePythonVersion@0 displayName: 'Use Python $(PythonVersion)' @@ -117,14 +135,107 @@ steps: displayName: 'Install QEMU Dependencies' condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) + - ${{ if parameters.InstallMsRustToolchain }}: + - template: /eng/pipelines/templates/steps/install-msrust-toolchain.yml + parameters: + # Only forwarded when a caller overrides it, so the default feed defined by + # the template stays the single source of truth. + ${{ if ne(parameters.MsRustToolchainFeed, '') }}: + ToolchainFeed: ${{ parameters.MsRustToolchainFeed }} + WorkingDirectory: ${{ parameters.MsRustWorkingDirectory }} + ${{ if eq(parameters.ArtifactSuffix, 'windows') }}: + AdditionalTargets: ${{ parameters.MsRustAdditionalTargets }} + Condition: and(succeeded(), or(eq(variables['ENABLE_EXTENSION_BUILD'], 'true'), eq('${{ parameters.ArtifactSuffix }}', 'linux'))) + + # Windows: cibuildwheel fetches CPython from api.nuget.org, which is blocked. + # Pre-provision the interpreters from the Azure DevOps NuGet feed into the + # cibuildwheel cache so it skips the blocked download. + - task: NuGetAuthenticate@1 + displayName: 'Authenticate to NuGet feed' + condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'), eq(variables['ENABLE_EXTENSION_BUILD'], 'true')) + + - pwsh: | + $ErrorActionPreference = 'Stop' + $feed = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json" + $version = "3.10.11" + $cache = Join-Path "$(Agent.TempDirectory)" "cibw-cache" + $nugetCpython = Join-Path $cache "nuget-cpython" + New-Item -ItemType Directory -Force -Path $nugetCpython | Out-Null + $nuget = (Get-Command nuget).Source + & $nuget install python -Version $version -Source $feed -OutputDirectory $nugetCpython + if ($LASTEXITCODE) { + Write-Error "Failed to download python $version" + exit 1 + } + & $nuget install pythonarm64 -Version $version -Source $feed -OutputDirectory $nugetCpython + if ($LASTEXITCODE) { + Write-Error "Failed to download pythonarm64 $version" + exit 1 + } + Write-Host "##vso[task.setvariable variable=CIBW_CACHE_PATH]$cache" + + # Cross-compiled ARM64 wheels need a directory of ARM64 import libraries. + # Packages that build Rust extensions point PYO3_CROSS_LIB_DIR at this, + # which is what tells maturin it is cross-compiling; see the win_arm64 + # override in the package's pyproject.toml. + $arm64Libs = Join-Path $nugetCpython "pythonarm64.$version\tools\libs" + if (-not (Test-Path $arm64Libs)) { + Write-Error "Expected ARM64 import libraries at $arm64Libs" + exit 1 + } + Write-Host "##vso[task.setvariable variable=PYTHON_ARM64_LIB_DIR]$arm64Libs" + displayName: 'Pre-provision CPython for cibuildwheel' + condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'), eq(variables['ENABLE_EXTENSION_BUILD'], 'true')) + + # Linux: forward PIP_INDEX_URL into the build container so pip fetches build + # dependencies from the Azure DevOps feed instead of PyPI. Using + # CIBW_ENVIRONMENT_PASS_LINUX (not CIBW_ENVIRONMENT) preserves the package's + # own [tool.cibuildwheel].environment (CFLAGS) setting. + # + # This variable REPLACES the package's own environment-pass list rather than + # merging with it, so it has to name every variable any package needs. The + # MSRUSTUP_* entries let packages that compile Rust bootstrap the internal + # toolchain inside the container. cibuildwheel silently skips names that are + # not set on the host, so listing them is a no-op elsewhere. + - pwsh: | + Write-Host "##vso[task.setvariable variable=CIBW_ENVIRONMENT_PASS_LINUX]PIP_INDEX_URL MSRUSTUP_ACCESS_TOKEN MSRUSTUP_PAT MSRUSTUP_FEED_URL CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_INDEX CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_TOKEN CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_CREDENTIAL_PROVIDER" + displayName: 'Forward PIP_INDEX_URL to cibuildwheel' + condition: and(succeeded(), or(eq(variables['ENABLE_EXTENSION_BUILD'], 'true'), eq('${{ parameters.ArtifactSuffix }}', 'linux'))) + - pwsh: | which python sdk_build -d "$(Build.ArtifactStagingDirectory)" "$(TargetingString)" --inactive --service="${{ parameters.ServiceDirectory }}" displayName: 'Generate Packages' condition: and(succeeded(), or(eq(variables['ENABLE_EXTENSION_BUILD'], 'true'), eq('${{ parameters.ArtifactSuffix }}', 'linux'))) - timeoutInMinutes: 80 + # Packages that compile a Rust extension build one wheel per architecture, + # and the Linux aarch64 wheel is compiled inside an emulated container, + # which takes roughly an hour on its own. The default is left alone for + # everything else. + ${{ if parameters.InstallMsRustToolchain }}: + timeoutInMinutes: 210 + ${{ else }}: + timeoutInMinutes: 80 env: CIBW_BUILD_VERBOSITY: 3 + # Set to DEBUG for extension builds so sdk_build streams cibuildwheel output + # live instead of buffering it until the command finishes. See the step that + # defines this variable in resolve-build-platforms.yml. + LOGLEVEL: $(SDK_BUILD_LOGLEVEL) + ${{ if parameters.InstallMsRustToolchain }}: + # Linux wheels are compiled inside a manylinux container that cibuildwheel + # starts, so the toolchain installed on the agent above is not visible to the + # compiler. The container installs msrustup itself and needs a credential for + # the toolchain feed, forwarded by the package's cibuildwheel environment-pass + # list. System.AccessToken is secret, so it is not exported to the environment + # unless it is mapped here explicitly. + MSRUSTUP_ACCESS_TOKEN: $(System.AccessToken) + MSRUSTUP_FEED_URL: $(MSRUSTUP_FEED_URL) + # Cargo credentials for the crates.io replacement feed. CargoAuthenticate + # sets these, but the token is secret and so is not placed in the + # environment unless it is mapped here. The container needs them because + # index.crates.io is not reachable from a build agent. + CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_TOKEN: $(CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_TOKEN) + CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_CREDENTIAL_PROVIDER: $(CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_CREDENTIAL_PROVIDER) - pwsh: | which python diff --git a/eng/pipelines/templates/steps/build-test.yml b/eng/pipelines/templates/steps/build-test.yml index fe3fdfe61305..6597389cd56d 100644 --- a/eng/pipelines/templates/steps/build-test.yml +++ b/eng/pipelines/templates/steps/build-test.yml @@ -186,6 +186,11 @@ steps: testRunTitle: '${{ parameters.ServiceDirectory }} ${{ parameters.CloudName }} $(Agent.JobName)' failTaskOnFailedTests: true + - template: /eng/common/pipelines/templates/steps/upload-llm-artifacts.yml + parameters: + TestResultsGlob: '*test*.xml' + SearchFolder: '$(Build.SourcesDirectory)/sdk' + - task: PublishCodeCoverageResults@2 displayName: 'Publish Code Coverage to DevOps' continueOnError: true diff --git a/eng/pipelines/templates/steps/create-apireview-hub-artifacts-python.yml b/eng/pipelines/templates/steps/create-apireview-hub-artifacts-python.yml new file mode 100644 index 000000000000..518815323753 --- /dev/null +++ b/eng/pipelines/templates/steps/create-apireview-hub-artifacts-python.yml @@ -0,0 +1,103 @@ +# Generate one Python API review artifact bundle for one ref. This template +# supplies Python-specific generation and delegates shared artifact validation +# and metadata writing to the base API Review Hub artifact template. +parameters: + - name: requestMode + type: string + - name: operationId + type: string + - name: packageName + type: string + - name: ref + type: string + - name: kind + type: string + - name: outputDir + type: string + - name: workingDir + type: string +steps: + - template: /eng/common/pipelines/templates/steps/create-apireview-hub-artifacts-base.yml + parameters: + requestMode: ${{ parameters.requestMode }} + operationId: ${{ parameters.operationId }} + packageName: ${{ parameters.packageName }} + ref: ${{ parameters.ref }} + kind: ${{ parameters.kind }} + outputDir: ${{ parameters.outputDir }} + workingDir: ${{ parameters.workingDir }} + sourceDir: $(ApiReviewSourceDir) + language: python + repositoryFullName: $(ApiReviewRepositoryFullName) + generationSteps: + - bash: | + set -Eeuo pipefail + + source_repo="$SOURCE_REPO" + tooling_dir="$TOOLING_DIR" + output_dir="$OUTPUT_DIR" + state_dir="$WORKING_DIR/state" + + mkdir -p "$source_repo" "$output_dir" "$state_dir" + + find_package_dir() { + local repo="$1" + local package_name="$2" + local matches + + matches=$(find "$repo/sdk" -mindepth 2 -maxdepth 2 -type d -name "$package_name" | sort) + if [ -z "$matches" ]; then + echo "Package '$package_name' was not found under sdk/*/." >&2 + return 1 + fi + + if [ "$(printf '%s\n' "$matches" | wc -l)" -ne 1 ]; then + echo "Package '$package_name' matched multiple directories:" >&2 + printf '%s\n' "$matches" >&2 + return 1 + fi + + printf '%s' "$matches" + } + + package_dir=$(find_package_dir "$source_repo" "$PACKAGE_NAME") + package_relative_path=$(realpath --relative-to="$source_repo" "$package_dir") + + echo "Generating $KIND API review artifact from $REF" + common_tasks_dir="$source_repo/scripts/devops_tasks" + if [ ! -f "$common_tasks_dir/common_tasks.py" ]; then + echo "Expected Python SDK common_tasks.py was not found at $common_tasks_dir/common_tasks.py" >&2 + exit 1 + fi + install -D "$tooling_dir/eng/common/scripts/Export-APIViewMarkdown.ps1" "$source_repo/eng/common/scripts/Export-APIViewMarkdown.ps1" + install -D "$tooling_dir/eng/scripts/extract_apiview_metadata.py" "$source_repo/eng/scripts/extract_apiview_metadata.py" + (cd "$source_repo" && PYTHONPATH="$common_tasks_dir${PYTHONPATH:+:$PYTHONPATH}" python -m azpysdk.main apistub --dest-dir "$package_dir" "$PACKAGE_NAME") + + if [ ! -f "$package_dir/api.md" ]; then + echo "Expected api.md was not generated at $package_dir/api.md" >&2 + exit 1 + fi + if [ ! -f "$package_dir/api.metadata.yml" ]; then + echo "Expected api.metadata.yml was not generated at $package_dir/api.metadata.yml" >&2 + exit 1 + fi + + cp "$package_dir/api.md" "$output_dir/api.md" + cp "$package_dir/api.metadata.yml" "$output_dir/api.metadata.yml" + + version=$(sed -n 's/^packageVersion:[[:space:]]*//p' "$package_dir/api.metadata.yml") + if [ -z "$version" ]; then + echo "Expected packageVersion was not found in $package_dir/api.metadata.yml" >&2 + exit 1 + fi + printf '%s' "$package_relative_path" > "$state_dir/package-relative-path.txt" + printf '%s' "$version" > "$state_dir/version.txt" + displayName: 'Generate ${{ parameters.kind }} Python API review bundle' + env: + SOURCE_REPO: $(ApiReviewSourceDir) + TOOLING_DIR: $(ApiReviewToolingDir) + OUTPUT_DIR: ${{ parameters.outputDir }} + WORKING_DIR: ${{ parameters.workingDir }} + PACKAGE_NAME: ${{ parameters.packageName }} + KIND: ${{ parameters.kind }} + REF: ${{ parameters.ref }} diff --git a/eng/pipelines/templates/steps/esrp-publish.yml b/eng/pipelines/templates/steps/esrp-publish.yml index 83516d370163..269c42c7e9cf 100644 --- a/eng/pipelines/templates/steps/esrp-publish.yml +++ b/eng/pipelines/templates/steps/esrp-publish.yml @@ -1,12 +1,6 @@ parameters: - name: targetFolder type: string - - name: owners - type: string - default: $(Build.RequestedForEmail) - - name: approvers - type: string - default: $(Build.RequestedForEmail) steps: - task: EsrpRelease@11 displayName: 'Publish to ESRP' @@ -20,7 +14,7 @@ steps: Intent: 'PackageDistribution' ContentType: 'PyPI' FolderLocation: ${{parameters.targetFolder}} - Owners: ${{parameters.owners}} - Approvers: ${{parameters.approvers}} + Owners: ${{ coalesce(variables['Build.RequestedForEmail'], 'azuresdk@microsoft.com') }} + Approvers: ${{ coalesce(variables['Build.RequestedForEmail'], 'azuresdk@microsoft.com') }} ServiceEndpointUrl: 'https://api.esrp.microsoft.com' MainPublisher: 'ESRPRELPACMANTEST' diff --git a/eng/pipelines/templates/steps/install-msrust-toolchain.yml b/eng/pipelines/templates/steps/install-msrust-toolchain.yml new file mode 100644 index 000000000000..ca109965195e --- /dev/null +++ b/eng/pipelines/templates/steps/install-msrust-toolchain.yml @@ -0,0 +1,147 @@ +parameters: + # NuGet feed in this ADO organization whose upstream is + # azure-feed://devdiv/DevDiv/Rust.Sdk@Release. System.AccessToken is scoped to + # this organization and cannot authenticate to DevDiv directly, so pointing + # RustInstaller at the DevDiv feed fails with HTTP 401. Going through a local + # feed lets the upstream do the cross-organization fetch instead. + # + # This feed is organization scoped rather than project scoped, so its URL has no + # project segment. The project scoped spelling + # (.../azure-sdk/internal/_packaging/...) returns 404. + # + # See https://aka.ms/rustinado. + - name: ToolchainFeed + type: string + default: 'https://pkgs.dev.azure.com/azure-sdk/_packaging/azure-sdk-for-rust-org-test/nuget/v3/index.json' + # Directory holding rust-toolchain.toml. The toolchain name is read from that + # file, and it lives beside the package rather than at the repository root, so + # this has to be set for the correct toolchain to be resolved. + - name: WorkingDirectory + type: string + default: '' + # Space separated target triples to acquire in addition to the host triple. + - name: AdditionalTargets + type: string + default: '' + # Azure Artifacts Cargo feed used to replace the crates-io source. Agents run + # under 1ES network isolation, which does not allow index.crates.io, so an + # unmodified cargo resolve fails with + # "Could not connect to server ... index.crates.io port 443". + # + # This is the same feed and spelling azure-sdk-for-rust uses. The "~force-auth" + # suffix is required for Cargo upstream sources, see + # https://learn.microsoft.com/azure/devops/artifacts/cargo/cargo-upstream-source. + - name: CratesIoFeed + type: string + default: 'sparse+https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-rust-public~force-auth/Cargo/index/' + # Registry name used in the cargo config. CargoAuthenticate derives the + # credential variables it exports from this name, so it has to match the + # [registries] key written below. + - name: CratesIoRegistryName + type: string + default: 'azure-sdk-for-rust-public' + # Applied to every step so callers can skip the install on jobs that will not + # build a binary wheel. + - name: Condition + type: string + default: succeeded() + +steps: + # Installs msrustup and the toolchain named by rust-toolchain.toml, and exports + # CARGO_HOME, MSRUSTUP_HOME, MSRUSTUP_TOOLCHAIN, RUST_VERSION, RUST_BIN_PATH and + # an updated PATH to later steps. This is what Windows and macOS agents compile + # with. Linux agents do not compile here, see the note on the next step. + - task: RustInstaller@1 + displayName: 'Install internal Rust toolchain' + condition: ${{ parameters.Condition }} + inputs: + ${{ if ne(parameters.ToolchainFeed, '') }}: + toolchainFeed: ${{ parameters.ToolchainFeed }} + ${{ if ne(parameters.WorkingDirectory, '') }}: + workingDirectory: ${{ parameters.WorkingDirectory }} + ${{ if ne(parameters.AdditionalTargets, '') }}: + additionalTargets: ${{ parameters.AdditionalTargets }} + + # RustInstaller only defines MSRUSTUP_FEED_URL when it was given a feed. Later + # steps reference $(MSRUSTUP_FEED_URL) to forward the feed into the cibuildwheel + # containers, and an undefined variable would be forwarded as the literal string + # "$(MSRUSTUP_FEED_URL)" and then used as a URL. Define it as empty instead, which + # the msrustup bootstrap treats as "use the default feed". + - pwsh: | + $feed = $env:MSRUSTUP_FEED_URL + if (-not $feed) { + Write-Host "MSRUSTUP_FEED_URL is not set, defining it as empty so the container falls back to the default feed." + $feed = '' + } + Write-Host "##vso[task.setvariable variable=MSRUSTUP_FEED_URL]$feed" + + Write-Host "Toolchain: $env:MSRUSTUP_TOOLCHAIN" + Write-Host "Version: $env:RUST_VERSION" + Write-Host "Bin path: $env:RUST_BIN_PATH" + displayName: 'Normalize Rust toolchain variables' + condition: ${{ parameters.Condition }} + + # Route crates.io through an Azure Artifacts feed. This mirrors the approach in + # eng/templates/config.toml.template and eng/pipelines/templates/steps/use-rust.yml + # in azure-sdk-for-rust, and is not optional: an agent that needs the internal + # toolchain is network isolated, so it cannot reach index.crates.io either. + # + # Written after RustInstaller because that task creates CARGO_HOME and sets the + # variable this step writes into. + - pwsh: | + $cargoHome = $env:CARGO_HOME + if (-not $cargoHome) { $cargoHome = [System.IO.Path]::Combine($HOME, '.cargo') } + New-Item -ItemType Directory -Force -Path $cargoHome | Out-Null + + $configPath = [System.IO.Path]::Combine($cargoHome, 'config.toml') + + # net.git-fetch-with-cli makes cargo shell out to git for git dependencies + # instead of using its built in libgit2 client, so those fetches pick up the + # agent's git configuration and credentials. + @' + [registries] + REGISTRY_NAME = { index = "CRATES_IO_FEED" } + + [source.crates-io] + replace-with = "REGISTRY_NAME" + + [net] + git-fetch-with-cli = true + '@ -replace 'CRATES_IO_FEED', '${{ parameters.CratesIoFeed }}' ` + -replace 'REGISTRY_NAME', '${{ parameters.CratesIoRegistryName }}' ` + | Set-Content -Path $configPath -Encoding utf8 + + Write-Host "Wrote cargo config to $configPath" + Get-Content $configPath + Write-Host "##vso[task.setvariable variable=CargoConfigPath]$configPath" + + # cibuildwheel builds Linux wheels inside a container that cannot see this + # config. Cargo honors registries..index from the environment, but it + # ignores source replacement set that way, so the container writes its own + # minimal config naming this registry and picks the index up from here. + # The variable name is derived from the registry name, which is therefore a + # fixed contract with the environment-pass list in the package's pyproject. + $indexVar = 'CARGO_REGISTRIES_' + ('${{ parameters.CratesIoRegistryName }}' -replace '-', '_').ToUpperInvariant() + '_INDEX' + Write-Host "Exporting $indexVar" + Write-Host "##vso[task.setvariable variable=$indexVar]${{ parameters.CratesIoFeed }}" + displayName: 'Configure cargo to use the Azure Artifacts feed' + condition: ${{ parameters.Condition }} + + # NuGetAuthenticate publishes an Azure Artifacts token as VSS_NUGET_ACCESSTOKEN. + # CargoAuthenticate normally reads System.AccessToken, which is empty for builds + # from forks, so the token from this task is handed to it below instead. See + # https://github.com/microsoft/azure-pipelines-tasks/issues/22421. + - task: NuGetAuthenticate@1 + displayName: 'Acquire an Azure Artifacts token' + condition: ${{ parameters.Condition }} + + # Parses the [registries] table and exports the + # CARGO_REGISTRIES__TOKEN and _CREDENTIAL_PROVIDER variables cargo + # needs to authenticate against the feed. + - task: CargoAuthenticate@0 + displayName: 'Authenticate cargo to the Azure Artifacts feed' + condition: ${{ parameters.Condition }} + inputs: + configFile: $(CargoConfigPath) + env: + SYSTEM_ACCESSTOKEN: $(VSS_NUGET_ACCESSTOKEN) diff --git a/eng/pipelines/templates/steps/resolve-build-platforms.yml b/eng/pipelines/templates/steps/resolve-build-platforms.yml index 43db2e725352..dd54f661c20a 100644 --- a/eng/pipelines/templates/steps/resolve-build-platforms.yml +++ b/eng/pipelines/templates/steps/resolve-build-platforms.yml @@ -6,13 +6,35 @@ parameters: steps: # when we merge pipeline v3, this check will change to examining the targeting string $(TargetingString) # as the generate-pr-diff call + resolution will be present in resolve-package-targeting.yml. - # until then, we simply check to see if we're targeting storage service directory + # until then, we simply check to see if we're targeting a service directory that owns a + # package with a compiled extension. - pwsh: | + # These packages ship a compiled extension, so a wheel is needed for every + # platform rather than a single pure-Python wheel built on Linux. + $binaryPackages = @("azure-storage-extensions", "azure-cosmos") + $packageProperties = Get-ChildItem -Recurse -Force "${{ parameters.PackagePropertiesFolder }}/*.json" ` | ForEach-Object { $_.Name.Replace(".json", "") } - if ($packageProperties -contains "azure-storage-extensions") { - Write-Host "Targeting storage, enabling extension build." + $targeted = @($packageProperties | Where-Object { $binaryPackages -contains $_ }) + + # sdk_build only streams subprocess output when its logger is at DEBUG, + # otherwise it buffers everything and replays it in a single record if the + # command fails. A cibuildwheel run takes many minutes, so buffering leaves + # the step silent and then collapses the whole build onto one timestamp. + # Stream extension builds, and leave everything else at the default level so + # the Linux job that builds every package stays readable. + $logLevel = "INFO" + + if ($targeted.Count -gt 0) { + Write-Host "Targeting binary package(s) $($targeted -join ', '), enabling extension build." Write-Host "##vso[task.setvariable variable=ENABLE_EXTENSION_BUILD]true" + $logLevel = "DEBUG" } + + # Always define this. It is consumed as $(SDK_BUILD_LOGLEVEL), and an + # undefined variable would reach sdk_build as the literal macro text and + # fail the logging setup. + Write-Host "sdk_build log level: $logLevel" + Write-Host "##vso[task.setvariable variable=SDK_BUILD_LOGLEVEL]$logLevel" displayName: Check extension package presence diff --git a/eng/pipelines/templates/steps/verify-autorest.yml b/eng/pipelines/templates/steps/verify-autorest.yml index ab52c69b6235..5fe8ff73d8c8 100644 --- a/eng/pipelines/templates/steps/verify-autorest.yml +++ b/eng/pipelines/templates/steps/verify-autorest.yml @@ -16,6 +16,7 @@ parameters: steps: - ${{if eq(parameters.VerifyAutorest, 'true')}}: + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml - template: /eng/common/pipelines/templates/steps/set-default-branch.yml - task: UsePythonVersion@0 @@ -46,3 +47,4 @@ steps: CommitMsg: "Regenerated code from nightly builds" PRTitle: "Automated autorest generation" PRBranchName: 'autorest-${{ parameters.ServiceDirectory }}' + AuthToken: '' diff --git a/eng/pipelines/templates/variables/image.yml b/eng/pipelines/templates/variables/image.yml index 7ec44a132731..274fe47cef83 100644 --- a/eng/pipelines/templates/variables/image.yml +++ b/eng/pipelines/templates/variables/image.yml @@ -15,7 +15,7 @@ variables: - name: WINDOWSVMIMAGE value: windows-2022 - name: MACVMIMAGE - value: macos-latest + value: macos-15-arm64 # Values required for pool.os field in 1es pipeline templates - name: LINUXOS @@ -25,4 +25,3 @@ variables: - name: MACOS value: macOS - diff --git a/eng/pipelines/tsp-spec-sync.yml b/eng/pipelines/tsp-spec-sync.yml index c49e96ab9192..e9abdbbf0dbb 100644 --- a/eng/pipelines/tsp-spec-sync.yml +++ b/eng/pipelines/tsp-spec-sync.yml @@ -13,6 +13,8 @@ extends: image: 'ubuntu-24.04' os: 'linux' steps: + - template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml + - task: UsePythonVersion@0 displayName: 'Set up Python' inputs: @@ -53,4 +55,5 @@ extends: Generated from workflow triggered by PR #$(System.PullRequest.PullRequestNumber). CommitMsg: 'Auto-update TSP client generated code' + AuthToken: '' diff --git a/eng/regression_test_tools.txt b/eng/regression_test_tools.txt index a0924f1aa22f..54f86e20e56f 100644 --- a/eng/regression_test_tools.txt +++ b/eng/regression_test_tools.txt @@ -20,7 +20,7 @@ readme-renderer[md]==25.0 json-delta==2.0 ConfigArgParse==1.7 six==1.14.0 -pyyaml==5.4.1 +pyyaml==6.0.2 packaging==23.1 Jinja2==3.1.2 diff --git a/eng/regression_tools.txt b/eng/regression_tools.txt index a5b8988137fe..04862f23660b 100644 --- a/eng/regression_tools.txt +++ b/eng/regression_tools.txt @@ -16,7 +16,7 @@ pytoml==0.1.21 json-delta==2.0 ConfigArgParse==1.7 six==1.14.0 -pyyaml==5.4.1 +pyyaml==6.0.2 pytest==7.3.1 pytest-cov==4.0.0 coverage==7.2.5 diff --git a/eng/scripts/dispatch_checks.py b/eng/scripts/dispatch_checks.py index df490a56cde3..459c9e7dde5a 100644 --- a/eng/scripts/dispatch_checks.py +++ b/eng/scripts/dispatch_checks.py @@ -16,7 +16,7 @@ from ci_tools.scenario.generation import build_whl_for_req, replace_dev_reqs from ci_tools.logging import configure_logging, logger from ci_tools.environment_exclusions import is_check_enabled, CHECK_DEFAULTS -from ci_tools.parsing import get_config_setting +from ci_tools.parsing import ParsedSetup, get_config_setting from devtools_testutils.proxy_startup import prepare_local_tool from packaging.requirements import Requirement @@ -77,6 +77,37 @@ def _normalize_newlines(text: str) -> str: return text.replace("\r\n", "\n").replace("\r", "\n") +def get_check_dest_dir( + package: str, check: str, dest_dir: Optional[str] +) -> Optional[str]: + if dest_dir and check == "apistub": + package_name = ParsedSetup.from_path(package).name + return os.path.join(dest_dir, package_name) + return dest_dir + + +async def _discard_oversized_line(stream: asyncio.StreamReader) -> None: + """Discard bytes up to and including the next newline (or EOF) without + capturing them. + + When a single line exceeds the reader's line-length limit, ``readuntil()`` + raises and leaves the buffered bytes in place -- so it would raise again on + the same bytes forever. Draining past the newline lets streaming resume with + the next line while never reading the oversized content into memory. + """ + while True: + try: + await stream.readuntil() + return + except asyncio.LimitOverrunError as ex: + # Still no newline within the limit; drop the buffered bytes and + # keep scanning for the newline that ends the oversized line. + await stream.readexactly(ex.consumed) + except asyncio.IncompleteReadError: + # Reached EOF before a newline; nothing left to drain. + return + + async def _tee_stream( proc: "asyncio.subprocess.Process", package: str, check: str ) -> tuple: @@ -101,7 +132,21 @@ async def _pump(stream: Optional[asyncio.StreamReader], sink: IO[str]) -> str: return "" chunks: List[str] = [] while True: - line_b = await stream.readline() + try: + line_b = await stream.readuntil() + except asyncio.LimitOverrunError: + # The line is larger than the stream limit. Don't read it -- + # log that it was too long, discard it, and keep going. The + # notice is emitted before draining so it appears promptly even + # if the oversized line takes a while to terminate. + notice = "streaming log line exceeded buffer limit, the line is dropped (see dispatch_checks.py)\n" + chunks.append(notice) + sink.write(prefix + notice) + sink.flush() + await _discard_oversized_line(stream) + continue + except asyncio.IncompleteReadError as ex: + line_b = ex.partial if not line_b: break line = line_b.decode(errors="replace") @@ -215,15 +260,17 @@ async def run_check( start = time.time() cmd = base_args + [check, "--isolate", package] if check == "apistub": - cmd += ["--install-deps"] + cmd += ["--install-deps", "--token-file"] if python_version: cmd += ["--python", python_version] if service: cmd += ["--service", service] if mark_arg: cmd += ["--mark_arg", mark_arg] - if dest_dir and check == "apistub": - cmd += ["--dest-dir", dest_dir] + if check == "apistub": + check_dest_dir = get_check_dest_dir(package, check, dest_dir) + if check_dest_dir: + cmd += ["--dest-dir", check_dest_dir] logger.info(f"[START {idx}/{total}] {check} :: {package}\nCMD: {' '.join(cmd)}") env = os.environ.copy() env["PROXY_URL"] = f"http://localhost:{proxy_port}" diff --git a/eng/scripts/extract_apiview_metadata.py b/eng/scripts/extract_apiview_metadata.py new file mode 100644 index 000000000000..8bf8db71de2d --- /dev/null +++ b/eng/scripts/extract_apiview_metadata.py @@ -0,0 +1,64 @@ +import argparse +import hashlib +import pathlib +import re +from typing import Dict, List + + +_METADATA_PATTERN = re.compile( + r"^# Package is parsed using apiview-stub-generator\(version:([^\)]+)\), Python version:\s*([^\s]+)\s*$" +) + + +def extract_metadata(api_markdown_path: pathlib.Path, package_version: str) -> Dict[str, str]: + with api_markdown_path.open(encoding="utf-8-sig", newline="") as api_markdown_file: + file_text = api_markdown_file.read() + line_ending = "\r\n" if "\r\n" in file_text else "\n" + lines = re.split(r"\r?\n", file_text) + + metadata: Dict[str, str] = {"packageVersion": package_version} + filtered: List[str] = [] + for line in lines: + match = _METADATA_PATTERN.match(line) + if match: + metadata["parserVersion"] = match.group(1) + metadata["pythonVersion"] = match.group(2) + else: + filtered.append(line) + + if filtered and filtered[0].startswith("```"): + body = filtered[1:] + while body and not body[0].strip(): + body.pop(0) + filtered = [filtered[0], *body] + else: + while filtered and not filtered[0].strip(): + filtered.pop(0) + + normalized_text = "\n".join(line.rstrip() for line in filtered) + metadata["apiMdSha256"] = hashlib.sha256(normalized_text.encode("utf-8")).hexdigest() + + api_markdown_path.write_text(line_ending.join(filtered), encoding="utf-8", newline="") + metadata_path = api_markdown_path.parent / "api.metadata.yml" + metadata_text = line_ending.join(f"{key}: {metadata[key]}" for key in sorted(metadata)) + line_ending + metadata_path.write_text(metadata_text, encoding="utf-8", newline="") + print(f"Updated markdown: {api_markdown_path}") + print(f"Generated metadata: {metadata_path}") + return metadata + + +def main() -> None: + parser = argparse.ArgumentParser(description="Extract Python APIView metadata from API markdown") + parser.add_argument("--api-markdown-path") + parser.add_argument("--output-path", default=".") + parser.add_argument("--package-version", required=True) + args = parser.parse_args() + + api_markdown_path = pathlib.Path(args.api_markdown_path) if args.api_markdown_path else pathlib.Path(args.output_path) / "api.md" + if not api_markdown_path.is_file(): + parser.error(f"API markdown file not found: {api_markdown_path}") + extract_metadata(api_markdown_path, args.package_version) + + +if __name__ == "__main__": + main() diff --git a/eng/scripts/save_package_api_hash.py b/eng/scripts/save_package_api_hash.py new file mode 100644 index 000000000000..7e2306f651da --- /dev/null +++ b/eng/scripts/save_package_api_hash.py @@ -0,0 +1,55 @@ +import argparse +import json +import pathlib +import subprocess + +import yaml + +from extract_apiview_metadata import extract_metadata + + +def update_package_info(metadata_path: pathlib.Path, package_info_path: pathlib.Path) -> None: + metadata = yaml.safe_load(metadata_path.read_text(encoding="utf-8-sig")) + api_hash = metadata.get("apiMdSha256") if isinstance(metadata, dict) else None + if not isinstance(api_hash, str) or not api_hash: + raise ValueError(f"apiMdSha256 was not found in {metadata_path}") + + package_info = json.loads(package_info_path.read_text(encoding="utf-8-sig")) + package_info["ApiHash"] = api_hash + package_info_path.write_text(json.dumps(package_info, indent=2) + "\n", encoding="utf-8") + print(f"Stored ApiHash in {package_info_path}") + + +def main() -> None: + parser = argparse.ArgumentParser(description="Add API markdown hashes to PackageInfo files") + parser.add_argument("--artifact-staging-directory", required=True) + parser.add_argument("--repo-root", required=True) + args = parser.parse_args() + + artifact_dir = pathlib.Path(args.artifact_staging_directory) + repo_root = pathlib.Path(args.repo_root) + package_info_dir = artifact_dir / "PackageInfo" + export_script = repo_root / "eng" / "common" / "scripts" / "Export-APIViewMarkdown.ps1" + + for package_info_path in package_info_dir.glob("*.json"): + package_info = json.loads(package_info_path.read_text(encoding="utf-8-sig")) + package_name = package_info["Name"] + package_artifact_dir = artifact_dir / package_name + token_file = package_artifact_dir / f"{package_name}_python.json" + # API stub generation intentionally omits management-plane packages, so they have no token file. + # Revisit this behavior if management-plane packages are included in API stub generation. + if not token_file.is_file(): + print(f"API token file was not found for {package_name}; skipping ApiHash update") + continue + + subprocess.run( + ["pwsh", str(export_script), "-TokenJsonPath", str(token_file), "-OutputPath", str(package_artifact_dir)], + check=True, + ) + extract_metadata(package_artifact_dir / "api.md", package_info["Version"]) + + update_package_info(package_artifact_dir / "api.metadata.yml", package_info_path) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/eng/scripts/seed-virtualenv-wheels.ps1 b/eng/scripts/seed-virtualenv-wheels.ps1 index 9215588e84d4..7935e735803a 100644 --- a/eng/scripts/seed-virtualenv-wheels.ps1 +++ b/eng/scripts/seed-virtualenv-wheels.ps1 @@ -27,8 +27,14 @@ param ( $attempts = 0 -# ensure these can be pulled down from pypi. -$env:PIP_EXTRA_INDEX_URL="https://pypi.python.org/simple" +# virtualenv --download shells out to pip, which reads PIP_INDEX_URL. Prefer whatever the pipeline +# already authenticated; only fall back to the public CFS feed when nothing is set. +if (-not $env:PIP_INDEX_URL) { + $env:PIP_INDEX_URL = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" + Write-Host "PIP_INDEX_URL was not set; defaulting to the public azure-sdk-for-python feed." +} else { + Write-Host "PIP_INDEX_URL is already set; preserving existing value." +} while ($attempts -lt 3) { virtualenv --download --reset-app-data ` diff --git a/eng/scripts/set_checks.py b/eng/scripts/set_checks.py index fc6144e11d97..f65a75ef6c7b 100644 --- a/eng/scripts/set_checks.py +++ b/eng/scripts/set_checks.py @@ -17,10 +17,15 @@ "sdist", "import_all", "latestdependency", - "mindependency", + # Testing mindependency is disabled for CFS onboarding. + # https://github.com/Azure/azure-sdk-for-python/issues/48346 + # "mindependency", "whl_no_aio", ] -PR_BUILD_SET = ["whl", "sdist", "mindependency"] + +# Testing mindependency is disabled for CFS onboarding. +# https://github.com/Azure/azure-sdk-for-python/issues/48346 +PR_BUILD_SET = ["whl", "sdist"] #, "mindependency"] def resolve_devops_variable(var_value: str) -> List[str]: diff --git a/eng/swagger_to_sdk_config.json b/eng/swagger_to_sdk_config.json index bc7643f8d33d..ec314e0a4aeb 100644 --- a/eng/swagger_to_sdk_config.json +++ b/eng/swagger_to_sdk_config.json @@ -26,9 +26,13 @@ "packageOptions": { "breakingChangeLabel": "CI-BreakingChange-Python", "breakingChangesLabel": "BreakingChange-Python-Sdk", + "sdkBreakingChangePatternFile": "doc/dev/mgmt/sdk-breaking-changes-guide.md", "updateChangelogContentScript": { "path": "./scripts/automation_sdk_update_changelog_content.ps1" }, + "getSdkChangesScript": { + "path": "./scripts/automation_sdk_get_changes.ps1" + }, "updateVersionScript": { "path": "./scripts/automation_sdk_update_version.ps1" }, diff --git a/eng/test_pylintrc b/eng/test_pylintrc index a7f72670d453..dd6e553090b6 100644 --- a/eng/test_pylintrc +++ b/eng/test_pylintrc @@ -24,7 +24,7 @@ load-plugins=pylint_guidelines_checker # too-many-public-methods: Test classes naturally have many test methods # bare-except: Test _setup/_teardown cleanup should not fail the test run # import-error: Namespace package resolution causes false positives for cross-library imports -disable=useless-object-inheritance,missing-docstring,locally-disabled,fixme,cyclic-import,too-many-arguments,invalid-name,duplicate-code,too-few-public-methods,consider-using-f-string,super-with-arguments,redefined-builtin,import-outside-toplevel,client-suffix-needed,unnecessary-dunder-call,unnecessary-ellipsis,client-paging-methods-use-list,consider-using-max-builtin,too-many-lines,possibly-used-before-assignment,do-not-hardcode-dedent,arguments-differ,signature-differs,deprecated-class,too-many-positional-arguments,missing-client-constructor-parameter-credential,missing-client-constructor-parameter-kwargs,unapproved-client-method-name-prefix,client-method-has-more-than-5-positional-arguments,client-method-missing-type-annotations,client-method-missing-kwargs,client-method-name-no-double-underscore,client-method-missing-tracing-decorator,client-method-missing-tracing-decorator-async,client-incorrect-naming-convention,specify-parameter-names-in-call,protected-access,name-too-long,missing-function-docstring,missing-class-docstring,missing-module-docstring,docstring-missing-param,docstring-missing-type,docstring-missing-return,docstring-missing-rtype,docstring-should-be-keyword,docstring-admonition-needs-newline,docstring-keyword-should-match-keyword-only,docstring-type-do-not-use-class,do-not-import-asyncio,config-missing-kwargs-in-policy,client-method-should-not-use-static-method,file-needs-copyright-header,async-client-bad-name,connection-string-should-not-be-constructor-param,package-name-incorrect,naming-mismatch,enum-must-be-uppercase,enum-must-inherit-case-insensitive-enum-meta,client-accepts-api-version-keyword,non-abstract-transport-import,delete-operation-wrong-return-type,networking-import-outside-azure-core-transport,no-raise-with-traceback,no-legacy-azure-core-http-response-import,do-not-import-legacy-six,no-typing-import-in-type-check,do-not-use-legacy-typing,do-not-log-raised-errors,invalid-use-of-overload,do-not-log-exceptions-if-not-debug,do-not-hardcode-connection-verify,singleton-comparison,attribute-defined-outside-init,unused-variable,too-many-public-methods,bare-except,import-error +disable=useless-object-inheritance,missing-docstring,locally-disabled,fixme,cyclic-import,too-many-arguments,invalid-name,duplicate-code,too-few-public-methods,consider-using-f-string,super-with-arguments,redefined-builtin,import-outside-toplevel,client-suffix-needed,unnecessary-dunder-call,unnecessary-ellipsis,client-paging-methods-use-list,consider-using-max-builtin,too-many-lines,possibly-used-before-assignment,do-not-hardcode-dedent,arguments-differ,signature-differs,deprecated-class,too-many-positional-arguments,missing-client-constructor-parameter-credential,missing-client-constructor-parameter-kwargs,unapproved-client-method-name-prefix,client-method-has-more-than-5-positional-arguments,client-method-missing-type-annotations,client-method-missing-kwargs,client-method-name-no-double-underscore,client-method-missing-tracing-decorator,client-method-missing-tracing-decorator-async,client-incorrect-naming-convention,specify-parameter-names-in-call,protected-access,name-too-long,missing-function-docstring,missing-class-docstring,missing-module-docstring,docstring-missing-param,docstring-missing-type,docstring-missing-return,docstring-missing-rtype,docstring-should-be-keyword,docstring-admonition-needs-newline,docstring-keyword-should-match-keyword-only,docstring-type-do-not-use-class,do-not-import-asyncio,config-missing-kwargs-in-policy,client-method-should-not-use-static-method,file-needs-copyright-header,async-client-bad-name,connection-string-should-not-be-constructor-param,package-name-incorrect,naming-mismatch,enum-must-be-uppercase,enum-must-inherit-case-insensitive-enum-meta,client-accepts-api-version-keyword,non-abstract-transport-import,delete-operation-wrong-return-type,networking-import-outside-azure-core-transport,no-raise-with-traceback,no-legacy-azure-core-http-response-import,do-not-import-legacy-six,no-typing-import-in-type-check,do-not-use-legacy-typing,do-not-log-raised-errors,invalid-use-of-overload,do-not-log-exceptions-if-not-debug,do-not-hardcode-connection-verify,singleton-comparison,attribute-defined-outside-init,unused-variable,too-many-public-methods,bare-except,import-error,no-cross-package-private-import [FORMAT] diff --git a/eng/tools/azure-sdk-tools/azpysdk/apistub.py b/eng/tools/azure-sdk-tools/azpysdk/apistub.py index e52e665f0fb7..0ff625e86ea7 100644 --- a/eng/tools/azure-sdk-tools/azpysdk/apistub.py +++ b/eng/tools/azure-sdk-tools/azpysdk/apistub.py @@ -13,6 +13,8 @@ from ci_tools.parsing import ParsedSetup REPO_ROOT = discover_repo_root() +AZURE_SDK_INDEX_URL = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" +PYPI_INDEX_URL = "https://pypi.org/simple/" def get_package_wheel_path(pkg_root: str) -> str: @@ -56,25 +58,24 @@ def register( p = subparsers.add_parser( "apistub", parents=parents, help="Run the apistub check to generate an API stub for a package" ) + p.add_argument( + "--token-file", + dest="token_file", + default=False, + action="store_true", + help="Generate only the raw APIView token file.", + ) p.add_argument( "--dest-dir", dest="dest_dir", default=None, - help="Destination directory for generated API stub token files.", + help="Destination directory for generated API stub files.", ) p.add_argument( - "--md", - dest="generate_md", - default=False, - action="store_true", - help="Generate api.md from the JSON token file using Export-APIViewMarkdown.ps1. Output directory for api.md is the same as the generated token file.", - ) - p.add_argument( - "--extract-metadata", - dest="extract_metadata", - default=False, - action="store_true", - help="Extract language-specific metadata from generated api.md into api.metadata.yml and remove metadata header from api.md.", + "--generate-from-pypi", + dest="generate_from_pypi", + default=None, + help="Generate the stub from this released PyPI version instead of local source code.", ) p.add_argument( "--install-deps", @@ -102,13 +103,50 @@ def ensure_apistub_dependencies(self, executable: str, package_dir: str, staging package_dir, ) + def download_pypi_wheel(self, executable: str, package_name: str, version: str, staging_directory: str) -> str: + """Download a released wheel from PyPI into the staging directory and return its path.""" + for index_url in (AZURE_SDK_INDEX_URL, PYPI_INDEX_URL): + logger.info(f"Downloading {package_name}=={version} from {index_url}.") + try: + self.run_venv_command( + executable, + [ + "-m", + "pip", + "download", + f"{package_name}=={version}", + "--no-deps", + "--only-binary=:all:", + f"--index-url={index_url}", + "-d", + staging_directory, + ], + cwd=staging_directory, + check=True, + additional_environment_settings={"PIP_EXTRA_INDEX_URL": ""}, + ) + break + except CalledProcessError as error: + if index_url == PYPI_INDEX_URL: + error_details = error.stderr or error.stdout or str(error) + logger.error( + f"Failed to download {package_name}=={version} from both package indexes: {error_details}" + ) + raise + logger.warning(f"Failed to download from the Azure SDK feed: {error}. Retrying from public PyPI.") + found_whl = find_whl(staging_directory, package_name, version) + if not found_whl: + raise FileNotFoundError( + f"No wheel found for package {package_name} version {version} after downloading from PyPI." + ) + return os.path.join(staging_directory, found_whl) + def run(self, args: argparse.Namespace) -> int: """Run the apistub check command.""" logger.info("Running apistub check...") - if getattr(args, "extract_metadata", False) and not getattr(args, "generate_md", False): - logger.error("--extract-metadata requires --md.") - return 1 + token_file = getattr(args, "token_file", False) + generate_markdown = not token_file set_envvar_defaults() targeted = self.get_targeted_directories(args) @@ -141,31 +179,33 @@ def run(self, args: argparse.Namespace) -> int: logger.error(f"Failed to install APIView dependencies: {e}") return getattr(e, "returncode", 1) - if not os.getenv("PREBUILT_WHEEL_DIR"): - create_package_and_install( - distribution_directory=staging_directory, - target_setup=package_dir, - skip_install=True, - cache_dir=None, - work_dir=staging_directory, - force_create=False, - package_type="wheel", - pre_download_disabled=False, - python_executable=executable, - ) + generate_from_pypi = getattr(args, "generate_from_pypi", None) + package_version = generate_from_pypi or parsed.version + + if generate_from_pypi: + pkg_path = self.download_pypi_wheel(executable, package_name, generate_from_pypi, staging_directory) + else: + if not os.getenv("PREBUILT_WHEEL_DIR"): + create_package_and_install( + distribution_directory=staging_directory, + target_setup=package_dir, + skip_install=True, + cache_dir=None, + work_dir=staging_directory, + force_create=False, + package_type="wheel", + pre_download_disabled=False, + python_executable=executable, + ) + pkg_path = get_package_wheel_path(package_dir) if install_deps: self.pip_freeze(executable) - pkg_path = get_package_wheel_path(package_dir) pkg_path = os.path.abspath(pkg_path) - dest_dir = getattr(args, "dest_dir", None) - if dest_dir: - out_token_path = os.path.abspath(dest_dir) - os.makedirs(out_token_path, exist_ok=True) - else: - out_token_path = os.path.abspath(staging_directory) + out_token_path = os.path.abspath(getattr(args, "dest_dir", None) or package_dir) + os.makedirs(out_token_path, exist_ok=True) cross_language_mapping_path = get_cross_language_mapping_path(package_dir) @@ -178,17 +218,23 @@ def run(self, args: argparse.Namespace) -> int: cmds.extend(["--out-path", out_token_path]) if cross_language_mapping_path: cmds.extend(["--mapping-path", cross_language_mapping_path]) - if getattr(args, "generate_md", False): + if generate_markdown: cmds.append("--skip-pylint") logger.info("Running apistub {}.".format(cmds)) try: self.run_venv_command(executable, cmds, cwd=staging_directory, check=True, immediately_dump=True) - if getattr(args, "generate_md", False): - token_json_path = os.path.join(out_token_path, f"{package_name}_python.json") + token_json_path = os.path.join(out_token_path, f"{package_name}_python.json") + if token_file: + if os.path.exists(token_json_path): + logger.info(f"Generated APIView token file: {token_json_path}") + else: + logger.error(f"Expected APIView token file was not generated: {token_json_path}") + results.append(1) + else: md_script = os.path.join(REPO_ROOT, "eng", "common", "scripts", "Export-APIViewMarkdown.ps1") - metadata_script = os.path.join(REPO_ROOT, "eng", "scripts", "Extract-APIViewMetadata-Python.ps1") + metadata_script = os.path.join(REPO_ROOT, "eng", "scripts", "extract_apiview_metadata.py") logger.info(f"Generating api.md for {package_name}") try: result = run( @@ -201,16 +247,22 @@ def run(self, args: argparse.Namespace) -> int: if result.stdout: logger.info(result.stdout) - if getattr(args, "extract_metadata", False): - logger.info(f"Extracting API metadata for {package_name}") - metadata_result = run( - ["pwsh", metadata_script, "-OutputPath", out_token_path], - check=True, - capture_output=True, - text=True, - ) - if metadata_result.stdout: - logger.info(metadata_result.stdout) + logger.info(f"Extracting API metadata for {package_name}") + metadata_result = run( + [ + executable, + metadata_script, + "--output-path", + out_token_path, + "--package-version", + package_version, + ], + check=True, + capture_output=True, + text=True, + ) + if metadata_result.stdout: + logger.info(metadata_result.stdout) except FileNotFoundError: logger.error("Failed to generate api.md: pwsh (PowerShell) is not installed or not on PATH.") results.append(1) diff --git a/eng/tools/azure-sdk-tools/azpysdk/breaking.py b/eng/tools/azure-sdk-tools/azpysdk/breaking.py index ea1e60edaced..83f289963cdd 100644 --- a/eng/tools/azure-sdk-tools/azpysdk/breaking.py +++ b/eng/tools/azure-sdk-tools/azpysdk/breaking.py @@ -84,6 +84,20 @@ def register( action="store_true", default=False, ) + p.add_argument( + "--use-apistub", + dest="use_apistub", + help="Build the code report from the apistub-generated api.md instead of importing the package.", + action="store_true", + default=False, + ) + p.add_argument( + "--debug", + dest="debug", + help="Keep the generated api.md and code_report.json files for easier debugging.", + action="store_true", + default=False, + ) def run(self, args: argparse.Namespace) -> int: """Run the breaking change check command.""" @@ -114,8 +128,15 @@ def run(self, args: argparse.Namespace) -> int: ) logger.info(f"Processing {package_name} for breaking check...") - # install dependencies - self.install_dev_reqs(executable, args, package_dir) + use_apistub = getattr(args, "use_apistub", False) + + # The apistub path builds the code report via static analysis (apistub generates + # api.md and it is converted to a report); the target package is never imported. + # So installing dev requirements and building/installing the package sdist is only + # needed for the default (import-based) path. Skip both in apistub mode. + if not use_apistub: + # install dependencies + self.install_dev_reqs(executable, args, package_dir) try: install_into_venv( @@ -130,17 +151,18 @@ def run(self, args: argparse.Namespace) -> int: results.append(1) continue - create_package_and_install( - distribution_directory=staging_directory, - target_setup=package_dir, - skip_install=False, - cache_dir=None, - work_dir=staging_directory, - force_create=False, - package_type="sdist", - pre_download_disabled=False, - python_executable=executable, - ) + if not use_apistub: + create_package_and_install( + distribution_directory=staging_directory, + target_setup=package_dir, + skip_install=False, + cache_dir=None, + work_dir=staging_directory, + force_create=False, + package_type="sdist", + pre_download_disabled=False, + python_executable=executable, + ) try: cmd = [ @@ -165,6 +187,10 @@ def run(self, args: argparse.Namespace) -> int: cmd.extend(["--target-report", args.target_report]) if getattr(args, "latest_pypi_version", False): cmd.append("--latest-pypi-version") + if getattr(args, "use_apistub", False): + cmd.append("--use-apistub") + if getattr(args, "debug", False): + cmd.append("--debug") check_call(cmd) except CalledProcessError as e: logger.error(f"Breaking check failed for {package_name}: {e}") @@ -199,6 +225,8 @@ def _run_from_reports(self, args: argparse.Namespace) -> int: ] if getattr(args, "changelog", False): cmd.append("--changelog") + if getattr(args, "use_apistub", False): + cmd.append("--use-apistub") try: check_call(cmd) diff --git a/eng/tools/azure-sdk-tools/azpysdk/mypy.py b/eng/tools/azure-sdk-tools/azpysdk/mypy.py index 98da0b9af088..2862e1f3f1bc 100644 --- a/eng/tools/azure-sdk-tools/azpysdk/mypy.py +++ b/eng/tools/azure-sdk-tools/azpysdk/mypy.py @@ -14,7 +14,7 @@ PYTHON_VERSION = "3.10" MYPY_VERSION = "1.19.1" -NEXT_MYPY_VERSION = "1.19.1" +NEXT_MYPY_VERSION = "2.1.0" ADDITIONAL_LOCKED_DEPENDENCIES = [ "types-chardet==5.0.4.6", "types-requests==2.31.0.6", diff --git a/eng/tools/azure-sdk-tools/azpysdk/pylint.py b/eng/tools/azure-sdk-tools/azpysdk/pylint.py index 843c7bf0a2c8..92255ad263a7 100644 --- a/eng/tools/azure-sdk-tools/azpysdk/pylint.py +++ b/eng/tools/azure-sdk-tools/azpysdk/pylint.py @@ -1,6 +1,7 @@ import argparse import os import sys +from pathlib import Path from typing import Optional, List from subprocess import CalledProcessError, check_call @@ -14,7 +15,42 @@ REPO_ROOT = discover_repo_root() PYLINT_VERSION = "4.0.4" -NEXT_PYLINT_VERSION = "4.0.4" +PYLINT_GUIDELINES_CHECKER_VERSION = "0.5.7" +NEXT_PYLINT_VERSION = "4.0.6" +NEXT_PYLINT_GUIDELINES_CHECKER_VERSION = "0.5.9" +# README snippet files can contain independent code blocks, so imports may be +# repeated or appear after executable statements when the blocks share a file. +SNIPPET_SAMPLE_IMPORT_DISABLES = ( + "reimported", + "wrong-import-position", + "wrong-import-order", + "ungrouped-imports", + "redefined-outer-name", +) + + +def get_snippet_aware_sample_pylint_commands(executable: str, rcfile: str, samples_dir: str) -> List[List[str]]: + """Build the normal sample command plus an exception for README snippet files.""" + regular_samples: List[str] = [] + snippet_samples: List[str] = [] + + for sample_file in sorted(Path(samples_dir).rglob("*.py")): + targets = snippet_samples if b"# [START" in sample_file.read_bytes() else regular_samples + targets.append(str(sample_file)) + + base_command = [ + executable, + "-m", + "pylint", + f"--rcfile={rcfile}", + "--output-format=parseable", + ] + commands = [] + if regular_samples: + commands.append(base_command + regular_samples) + if snippet_samples: + commands.append(base_command + [f"--disable={','.join(SNIPPET_SAMPLE_IMPORT_DISABLES)}"] + snippet_samples) + return commands class pylint(Check): @@ -64,12 +100,22 @@ def run(self, args: argparse.Namespace) -> int: # install dependencies self.install_dev_reqs(executable, args, package_dir) try: + if args.next: + # use latest version of azure-pylint-guidelines-checker for next pylint checks + cmds = [ + f"azure-pylint-guidelines-checker=={NEXT_PYLINT_GUIDELINES_CHECKER_VERSION}", + ] + else: + cmds = [ + f"azure-pylint-guidelines-checker=={PYLINT_GUIDELINES_CHECKER_VERSION}", + ] + cmds.append( + "--index-url=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" + ) + install_into_venv( executable, - [ - "azure-pylint-guidelines-checker==0.5.7", - "--index-url=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/", - ], + cmds, package_dir, ) except CalledProcessError as e: @@ -190,38 +236,19 @@ def run(self, args: argparse.Namespace) -> int: # Run samples with samples_pylintrc if os.path.exists(samples_dir): - try: - samples_rcfile = os.path.join(REPO_ROOT, "eng/samples_pylintrc") - logger.info( - [ - executable, - "-m", - "pylint", - "--rcfile={}".format(samples_rcfile), - "--output-format=parseable", - samples_dir, - ] - ) - results.append( - check_call( - [ - executable, - "-m", - "pylint", - "--rcfile={}".format(samples_rcfile), - "--output-format=parseable", - samples_dir, - ] + samples_rcfile = os.path.join(REPO_ROOT, "eng/samples_pylintrc") + for command in get_snippet_aware_sample_pylint_commands(executable, samples_rcfile, samples_dir): + try: + logger.info(command) + results.append(check_call(command)) + except CalledProcessError as e: + logger.error( + "{} samples exited with linting error {}. Please see this link for more information https://aka.ms/azsdk/python/pylint-guide".format( + package_name, e.returncode + ) ) - ) - except CalledProcessError as e: - logger.error( - "{} samples exited with linting error {}. Please see this link for more information https://aka.ms/azsdk/python/pylint-guide".format( - package_name, e.returncode - ) - ) - results.append(e.returncode) - package_failed = True + results.append(e.returncode) + package_failed = True if args.next and in_ci(): if package_failed: diff --git a/eng/tools/azure-sdk-tools/azpysdk/pyright.py b/eng/tools/azure-sdk-tools/azpysdk/pyright.py index db15774192ae..78dcd9790ce5 100644 --- a/eng/tools/azure-sdk-tools/azpysdk/pyright.py +++ b/eng/tools/azure-sdk-tools/azpysdk/pyright.py @@ -15,7 +15,7 @@ from ci_tools.logging import logger PYRIGHT_VERSION = "1.1.407" -NEXT_PYRIGHT_VERSION = "1.1.407" +NEXT_PYRIGHT_VERSION = "1.1.411" REPO_ROOT = discover_repo_root() diff --git a/eng/tools/azure-sdk-tools/ci_tools/build.py b/eng/tools/azure-sdk-tools/ci_tools/build.py index 26ac6fcfd15a..0987492a09ac 100644 --- a/eng/tools/azure-sdk-tools/ci_tools/build.py +++ b/eng/tools/azure-sdk-tools/ci_tools/build.py @@ -221,8 +221,17 @@ def create_package( setup_directory_or_file: str, dest_folder: str, enable_wheel: bool = True, enable_sdist: bool = True ): """ - Uses the invoking python executable to build a wheel and sdist file given a setup.py or setup.py directory. Outputs - into a distribution directory and defaults to the value of get_artifact_directory(). + Builds a wheel and/or sdist file given a setup.py, pyproject.toml, or directory containing either. + + For packages with compiled extensions (declared via `ext_modules`, or implied by a + [tool.cibuildwheel] table for backends that have no `ext_modules`): + - setup.py: uses cibuildwheel to build platform-specific wheels + - pyproject.toml: uses cibuildwheel to build platform-specific wheels (respects [tool.cibuildwheel] config) + + For pure Python packages: + - Uses python -m build + + Outputs into a distribution directory and defaults to get_artifact_directory(). """ dist = get_artifact_directory(dest_folder) @@ -230,40 +239,64 @@ def create_package( should_log_build_output = logger.getEffectiveLevel() <= logging.DEBUG + # `ext_modules` only covers setuptools `Extension` objects. Packages built by other + # backends (maturin/PyO3) compile native code but declare none, so honor an explicit + # [tool.cibuildwheel] table as well -- otherwise they are misrouted to `python -m build`, + # which yields an untagged wheel built against whatever toolchain the agent happens to have. + is_compiled = bool(setup_parsed.ext_modules) or setup_parsed.uses_cibuildwheel + if setup_parsed.is_pyproject: - # when building with pyproject, we will use `python -m build` to build the package - # -n argument will not use an isolated environment, which means the current environment must have all the dependencies of the package installed, to successfully - # pull in the dynamic `__version__` attribute. This is because setuptools is actually walking the __init__.py to get that attribute, which will fail - # if the imports within the setup.py don't work. Perhaps an isolated environment is better, pulling all the "dependencies" into the [build-system].requires list - - # given the additional requirements of the package, we should install them in the current environment before attempting to build the package - # we assume the presence of `wheel`, `build`, `setuptools>=61.0.0` - pip_output = get_pip_list_output(sys.executable) - necessary_install_requirements = [ - req for req in setup_parsed.requires if parse_require(req).name not in pip_output.keys() - ] - run_logged( - [sys.executable, "-m", "pip", "install", *necessary_install_requirements], - cwd=setup_parsed.folder, - check=False, - should_stream_to_console=should_log_build_output, - ) - run_logged( - [ - sys.executable, - "-m", - "build", - f"-n{'s' if enable_sdist else ''}{'w' if enable_wheel else ''}", - "-o", - dist, - ], - cwd=setup_parsed.folder, - check=True, - should_stream_to_console=should_log_build_output, - ) + # when building with pyproject, check if package has compiled extensions + if enable_wheel and is_compiled: + # Use cibuildwheel for compiled extensions (respects [tool.cibuildwheel] config) + run_logged( + [sys.executable, "-m", "cibuildwheel", "--output-dir", dist], + cwd=setup_parsed.folder, + check=True, + should_stream_to_console=should_log_build_output, + ) + if enable_sdist: + # Build sdist separately with python -m build + run_logged( + [sys.executable, "-m", "build", "-s", "-o", dist], + cwd=setup_parsed.folder, + check=True, + should_stream_to_console=should_log_build_output, + ) + else: + # Use python -m build for pure Python packages + # -n argument will not use an isolated environment, which means the current environment must have all the dependencies of the package installed, to successfully + # pull in the dynamic `__version__` attribute. This is because setuptools is actually walking the __init__.py to get that attribute, which will fail + # if the imports within the setup.py don't work. Perhaps an isolated environment is better, pulling all the "dependencies" into the [build-system].requires list + + # given the additional requirements of the package, we should install them in the current environment before attempting to build the package + # we assume the presence of `wheel`, `build`, `setuptools>=61.0.0` + pip_output = get_pip_list_output(sys.executable) + necessary_install_requirements = [ + req for req in setup_parsed.requires if parse_require(req).name not in pip_output.keys() + ] + run_logged( + [sys.executable, "-m", "pip", "install", *necessary_install_requirements], + cwd=setup_parsed.folder, + check=False, + should_stream_to_console=should_log_build_output, + ) + run_logged( + [ + sys.executable, + "-m", + "build", + f"-n{'s' if enable_sdist else ''}{'w' if enable_wheel else ''}", + "-o", + dist, + ], + cwd=setup_parsed.folder, + check=True, + should_stream_to_console=should_log_build_output, + ) else: if enable_wheel: - if setup_parsed.ext_modules: + if is_compiled: run_logged( [sys.executable, "-m", "cibuildwheel", "--output-dir", dist], cwd=setup_parsed.folder, diff --git a/eng/tools/azure-sdk-tools/ci_tools/conda/CondaConfiguration.py b/eng/tools/azure-sdk-tools/ci_tools/conda/CondaConfiguration.py index 08901e9e8a1d..b7c078fdd689 100644 --- a/eng/tools/azure-sdk-tools/ci_tools/conda/CondaConfiguration.py +++ b/eng/tools/azure-sdk-tools/ci_tools/conda/CondaConfiguration.py @@ -1,10 +1,7 @@ from typing import List, Any, Optional import os -import bs4 -import urllib3 from ci_tools.variables import str_to_bool -http = urllib3.PoolManager() # arguments: | # -c "${{ replace(convertToJson(parameters.CondaArtifacts), '"', '\"') }}" # -w "$(Build.SourcesDirectory)/conda/conda-recipes" @@ -48,22 +45,6 @@ # version: 12.7.0 -def get_package_sdist_url(package: str, version: str) -> str: - url = f"https://pypi.org/pypi/{package}/{version}/json" - response = http.request("GET", url) - - if response.status != 200: - raise RuntimeError(f"Failed to fetch metadata for {package}@{version} from PyPI.") - - data = response.json() - - for file_info in data.get("urls", []): - if file_info.get("packagetype") == "sdist": - return file_info["url"] - - raise ValueError(f"Unable to find a source distribution for {package}@{version}.") - - class CheckoutConfiguration: def __init__(self, raw_json: dict): # we should always have a package name @@ -77,10 +58,14 @@ def __init__(self, raw_json: dict): self.version = raw_json.get("version", None) self.download_uri = raw_json.get("download_uri", None) - if self.version and self.checkout_path is None: - self.download_uri = get_package_sdist_url(self.package, self.version) + # A package identified only by name + version is sourced from a package index rather than + # from a git checkout. Resolution is deferred to download time so that it can be performed + # by pip against PIP_INDEX_URL, rather than by a direct call to the public PyPI API here. + # Resolving eagerly would also force a network call for every configured package, including + # ones that are not part of the current batch. + self.from_package_index = bool(self.version and self.checkout_path is None) - if not self.checkout_path and not self.download_uri: + if not self.checkout_path and not self.download_uri and not self.from_package_index: raise ValueError( "When defining a checkout configuration, one must either have a valid PyPI download url" " (download_uri) or a path and version in the repo (checkout_path, version)." @@ -90,6 +75,8 @@ def __str__(self) -> str: if self.download_uri: return f"""- {self.package} downloaded from pypi {self.download_uri}""" + elif self.from_package_index: + return f"- {self.package}=={self.version} downloaded from the configured package index" else: return f"""- {self.checkout_path}/{self.package} from git @ {self.version}""" diff --git a/eng/tools/azure-sdk-tools/ci_tools/conda/conda_functions.py b/eng/tools/azure-sdk-tools/ci_tools/conda/conda_functions.py index e42c8b0c350c..df25a68627e3 100644 --- a/eng/tools/azure-sdk-tools/ci_tools/conda/conda_functions.py +++ b/eng/tools/azure-sdk-tools/ci_tools/conda/conda_functions.py @@ -17,6 +17,8 @@ import json import shlex import subprocess +import sys +import tempfile import urllib3 from shutil import rmtree @@ -267,7 +269,7 @@ def create_combined_sdist( environment_config, ) - if conda_build.checkout[0].download_uri: + if conda_build.checkout[0].download_uri or conda_build.checkout[0].from_package_index: # if we have a single dependency that is downloadable, it will be placed in final sdist location # by the get_package_source function. In that case, we just need to find it and return it if singular_dependency: @@ -378,6 +380,60 @@ def download_pypi_source(target_folder: str, target_uri: str) -> str: return file_name +def download_sdist_from_index(target_folder: str, package: str, version: str) -> str: + """ + Downloads the source distribution for a package from the configured package index. + + pip is used rather than a direct HTTP call so that PIP_INDEX_URL is honored. Under network + isolation that variable points at an authenticated Azure Artifacts (CFS) feed, and public + package hosts are unreachable. + """ + os.makedirs(target_folder, exist_ok=True) + + with tempfile.TemporaryDirectory() as download_staging: + check_call( + [ + sys.executable, + "-m", + "pip", + "download", + f"{package}=={version}", + "--no-deps", + "--no-binary", + ":all:", + "--dest", + download_staging, + ] + ) + + downloaded = [f for f in os.listdir(download_staging) if os.path.isfile(os.path.join(download_staging, f))] + + if not downloaded: + raise RuntimeError(f"pip did not produce a source distribution for {package}=={version}.") + + if len(downloaded) > 1: + raise RuntimeError( + f"Expected exactly one source distribution for {package}=={version}, got: {sorted(downloaded)}." + ) + + file_name = os.path.join(target_folder, downloaded[0]) + + if not os.path.exists(file_name): + shutil.move(os.path.join(download_staging, downloaded[0]), file_name) + + return file_name + + +def resolve_package_source(checkout_config: CheckoutConfiguration, target_folder: str) -> str: + """ + Places the source distribution for a checkout configuration into target_folder and returns its path. + """ + if checkout_config.download_uri: + return download_pypi_source(target_folder, checkout_config.download_uri) + + return download_sdist_from_index(target_folder, checkout_config.package, checkout_config.version) + + def get_package_source( checkout_config: CheckoutConfiguration, download_folder: str, @@ -388,14 +444,14 @@ def get_package_source( """ Retrieves the source code for a specific checkout_config. """ - if checkout_config.download_uri or checkout_config.version: + if checkout_config.download_uri or checkout_config.from_package_index: # if we have a single package, we can simply use the source distribution _as is_ rather than # repackaging it. so we download and move it directly to assembled if len(conda_build.checkout) == 1: - return download_pypi_source(output_folder, checkout_config.download_uri) + return resolve_package_source(checkout_config, output_folder) # in case of multiple external packages, we need to unzip the code into the same format as we do for a git clone else: - downloaded_zip = download_pypi_source(download_folder, checkout_config.download_uri) + downloaded_zip = resolve_package_source(checkout_config, download_folder) unzip_staging_folder = prep_directory(os.path.join(download_folder, checkout_config.package)) unzipped_staged = unzip_file_to_directory(downloaded_zip, unzip_staging_folder) assembly_location = prep_directory( diff --git a/eng/tools/azure-sdk-tools/ci_tools/functions.py b/eng/tools/azure-sdk-tools/ci_tools/functions.py index 417f6c1fe724..c2cc9cdcb216 100644 --- a/eng/tools/azure-sdk-tools/ci_tools/functions.py +++ b/eng/tools/azure-sdk-tools/ci_tools/functions.py @@ -182,15 +182,19 @@ def glob_packages(glob_string: str, target_root_dir: str) -> List[str]: collected_top_level_directories = [] for glob_string in individual_globs: - globbed = glob.glob(os.path.join(target_root_dir, glob_string, "setup.py"), recursive=True) + glob.glob( - os.path.join(target_root_dir, "sdk/*/", glob_string, "setup.py") + globbed = ( + glob.glob(os.path.join(target_root_dir, glob_string, "setup.py"), recursive=True) + + glob.glob(os.path.join(target_root_dir, "*/", glob_string, "setup.py")) + + glob.glob(os.path.join(target_root_dir, "sdk/*/", glob_string, "setup.py")) ) collected_top_level_directories.extend([os.path.dirname(p) for p in globbed]) # handle pyproject.toml separately, as we need to filter them by the presence of a `[project]` section for glob_string in individual_globs: - globbed = glob.glob(os.path.join(target_root_dir, glob_string, "pyproject.toml"), recursive=True) + glob.glob( - os.path.join(target_root_dir, "sdk/*/", glob_string, "pyproject.toml") + globbed = ( + glob.glob(os.path.join(target_root_dir, glob_string, "pyproject.toml"), recursive=True) + + glob.glob(os.path.join(target_root_dir, "*/", glob_string, "pyproject.toml")) + + glob.glob(os.path.join(target_root_dir, "sdk/*/", glob_string, "pyproject.toml")) ) for p in globbed: if get_pyproject(os.path.dirname(p)): diff --git a/eng/tools/azure-sdk-tools/ci_tools/parsing/parse_functions.py b/eng/tools/azure-sdk-tools/ci_tools/parsing/parse_functions.py index a8e112434323..3bfdefe151ad 100644 --- a/eng/tools/azure-sdk-tools/ci_tools/parsing/parse_functions.py +++ b/eng/tools/azure-sdk-tools/ci_tools/parsing/parse_functions.py @@ -309,6 +309,11 @@ def __init__( self.folder = os.path.dirname(self.setup_filename) + # Whether this package asks to be built by cibuildwheel. Checked in addition to + # `ext_modules` when routing builds, so that compiled packages using a non-setuptools + # backend (maturin/PyO3) are not mistaken for pure-Python ones. + self.uses_cibuildwheel = has_cibuildwheel_config(self.folder) + @classmethod def from_path(cls, parse_directory_or_file: str): """ @@ -703,6 +708,25 @@ def parse_pyproject( ext_modules = get_value_from_dict(toml_dict, "tool.setuptools.ext-modules", []) ext_modules = [Extension(**moduleArgDict) for moduleArgDict in ext_modules] + # Declaring ext-modules in [tool.setuptools.ext-modules] is still experimental in setuptools, and the + # abi3 / py_limited_api wheel tag cannot be expressed declaratively, so compiled-extension packages keep + # their Extension(...) definition in setup.py. When such a package also has a [project] table, pyproject + # wins over setup.py during parsing and the extension would otherwise go undetected, causing the build to + # be mis-routed to `python -m build` (pure-Python) instead of cibuildwheel. Fall back to setup.py here so + # the extension is still discovered. Guarded so a setup.py that cannot be parsed cannot regress packages + # that parse fine today. + if not ext_modules: + sibling_setup_py = os.path.join(package_directory, "setup.py") + if os.path.exists(sibling_setup_py): + try: + setup_py_result = parse_setup_py(sibling_setup_py) + ext_package = ext_package or setup_py_result[11] # ext_package + ext_modules = setup_py_result[12] # ext_modules + except Exception as e: # pragma: no cover - defensive, preserves prior behavior + logging.warning( + f"Found setup.py alongside {pyproject_filename} but could not parse it for ext_modules: {e}" + ) + # fmt: off return ( name, # str @@ -809,6 +833,23 @@ def parse_setup( return result +def has_cibuildwheel_config(folder: str) -> bool: + """ + Given a package folder, returns whether its pyproject.toml declares a [tool.cibuildwheel] table. + + A package that configures cibuildwheel is telling us it produces a compiled, platform-specific + wheel. This is a separate signal from `ext_modules`, which only covers setuptools `Extension` + objects: packages built by other backends (maturin/PyO3, for example) compile native code but + expose no `ext_modules` at all. + """ + pyproject_filename = os.path.join(folder, "pyproject.toml") + + if not os.path.exists(pyproject_filename): + return False + + return get_value_from_dict(get_pyproject_dict(pyproject_filename), "tool.cibuildwheel", None) is not None + + def get_pyproject_dict(pyproject_file: str) -> Dict[str, Any]: """ Given a pyproject.toml file, returns a dictionary of a target section. Defaults to `project` section. diff --git a/eng/tools/azure-sdk-tools/ci_tools/variables.py b/eng/tools/azure-sdk-tools/ci_tools/variables.py index 5732d3deb9f0..4c2960ea09bb 100644 --- a/eng/tools/azure-sdk-tools/ci_tools/variables.py +++ b/eng/tools/azure-sdk-tools/ci_tools/variables.py @@ -84,8 +84,12 @@ def in_public() -> int: def in_analyze_weekly() -> int: - # Returns 4 if the build originates from the tests-weekly analyze job + # Returns 4 if the build originates from the analyze-weekly job # 0 otherwise + # The analyze-weekly stage sets AZURE_SDK_ANALYZE_WEEKLY=1 (see python-analyze-weekly.yml). + if os.getenv("AZURE_SDK_ANALYZE_WEEKLY", "") == "1": + return 4 + # Fallback for pipelines still keyed on the 'tests-weekly' definition name (e.g. identity). if ( "tests-weekly" in os.getenv("SYSTEM_DEFINITIONNAME", "") and os.getenv("SYSTEM_STAGEDISPLAYNAME", "") == "Analyze_Test" @@ -102,7 +106,10 @@ def in_analyze_weekly() -> int: "VIRTUALENV_WHEEL": "0.45.1", "VIRTUALENV_PIP": "24.0", "VIRTUALENV_SETUPTOOLS": "75.3.2", - "PIP_EXTRA_INDEX_URL": "https://pypi.python.org/simple", + # Intentionally no PIP_EXTRA_INDEX_URL default. azpysdk.main already points PIP_INDEX_URL and + # UV_DEFAULT_INDEX at CFS_INDEX_URL when they are unset, and PipAuthenticate@1 supplies an + # authenticated value in CI. Adding an extra index here would duplicate that feed and would + # leak it into `--pypi` runs, which are meant to resolve from PyPI only. # I haven't spent much time looking to see if a variable exists when invoking uv run. there might be one already that we can depend # on for get_pip_command adjustment. "IN_UV": "1", diff --git a/eng/tools/azure-sdk-tools/devtools_testutils/aio/proxy_testcase_async.py b/eng/tools/azure-sdk-tools/devtools_testutils/aio/proxy_testcase_async.py index e6283441e823..419ae402e6df 100644 --- a/eng/tools/azure-sdk-tools/devtools_testutils/aio/proxy_testcase_async.py +++ b/eng/tools/azure-sdk-tools/devtools_testutils/aio/proxy_testcase_async.py @@ -11,21 +11,21 @@ from azure.core.pipeline.transport import AioHttpTransport try: - import httpx + import httpx2 - AsyncHTTPXTransport = httpx.AsyncHTTPTransport + AsyncHTTPX2Transport = httpx2.AsyncHTTPTransport except ImportError: - httpx = None - AsyncHTTPXTransport = None + httpx2 = None + AsyncHTTPX2Transport = None from ..helpers import is_live_and_not_recording, trim_kwargs_from_test_function from ..proxy_testcase import ( RecordedTransport, _transform_args, - _transform_httpx_args, + _transform_httpx2_args, get_test_id, start_record_or_playback, - restore_httpx_response_url, + restore_httpx2_response_url, stop_record_or_playback, ) @@ -38,8 +38,8 @@ def recorded_by_proxy_async(*transports): *transports: Which transport(s) to record. Pass one or more comma separated RecordedTransport enum values. - No args (default): Record AioHttpTransport.send calls (azure.core). - RecordedTransport.AZURE_CORE: Record AioHttpTransport.send calls. Same as the default above. - - RecordedTransport.HTTPX: Record AsyncHTTPXTransport.handle_async_request calls. - - RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX: Record both transports. + - RecordedTransport.HTTPX2: Record AsyncHTTPX2Transport.handle_async_request calls. + - RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX2: Record both transports. Usages: @@ -54,12 +54,12 @@ async def test(...): ... @recorded_by_proxy_async(RecordedTransport.AZURE_CORE) async def test(...): ... - # If your test uses httpx only for network calls - @recorded_by_proxy_async(RecordedTransport.HTTPX) + # If your test uses httpx2 only for network calls + @recorded_by_proxy_async(RecordedTransport.HTTPX2) async def test(...): ... - # If your test uses both azure.core and httpx for network calls - @recorded_by_proxy_async(RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX) + # If your test uses both azure.core and httpx2 for network calls + @recorded_by_proxy_async(RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX2) async def test(...): ... """ @@ -82,11 +82,11 @@ async def test(...): ... isinstance(transport, str) and transport == RecordedTransport.AZURE_CORE.value ): transport_list.append((AioHttpTransport, "send")) - elif transport == RecordedTransport.HTTPX or ( - isinstance(transport, str) and transport == RecordedTransport.HTTPX.value + elif transport == RecordedTransport.HTTPX2 or ( + isinstance(transport, str) and transport == RecordedTransport.HTTPX2.value ): - if AsyncHTTPXTransport is not None: - transport_list.append((AsyncHTTPXTransport, "handle_async_request")) + if AsyncHTTPX2Transport is not None: + transport_list.append((AsyncHTTPX2Transport, "handle_async_request")) # If still no transports, fall back to azure.core if not transport_list: @@ -110,12 +110,12 @@ async def record_wrap(*args, **kwargs): recording_id, variables = start_record_or_playback(test_id) # Build a wrapper factory so each patched method closes over its own original - def make_combined_call(original_transport_func, is_httpx=False): + def make_combined_call(original_transport_func, is_httpx2=False): async def combined_call(*call_args, **call_kwargs): - if is_httpx: - adjusted_args, adjusted_kwargs = _transform_httpx_args(recording_id, *call_args, **call_kwargs) + if is_httpx2: + adjusted_args, adjusted_kwargs = _transform_httpx2_args(recording_id, *call_args, **call_kwargs) result = await original_transport_func(*adjusted_args, **adjusted_kwargs) - restore_httpx_response_url(result) + restore_httpx2_response_url(result) else: adjusted_args, adjusted_kwargs = _transform_args(recording_id, *call_args, **call_kwargs) result = await original_transport_func(*adjusted_args, **adjusted_kwargs) @@ -136,11 +136,11 @@ async def combined_call(*call_args, **call_kwargs): # monkeypatch all requested transports for owner, name in transports: original = getattr(owner, name) - # Check if this is an httpx transport by comparing with httpx transport classes - is_httpx_transport = (AsyncHTTPXTransport is not None and owner is AsyncHTTPXTransport) or ( - httpx is not None and owner.__module__.startswith("httpx") + # Check if this is an httpx2 transport by comparing with httpx2 transport classes + is_httpx2_transport = (AsyncHTTPX2Transport is not None and owner is AsyncHTTPX2Transport) or ( + httpx2 is not None and owner.__module__.startswith("httpx2") ) - setattr(owner, name, make_combined_call(original, is_httpx=is_httpx_transport)) + setattr(owner, name, make_combined_call(original, is_httpx2=is_httpx2_transport)) originals.append((owner, name, original)) try: diff --git a/eng/tools/azure-sdk-tools/devtools_testutils/proxy_testcase.py b/eng/tools/azure-sdk-tools/devtools_testutils/proxy_testcase.py index a4e109d6f685..fee1d6516e12 100644 --- a/eng/tools/azure-sdk-tools/devtools_testutils/proxy_testcase.py +++ b/eng/tools/azure-sdk-tools/devtools_testutils/proxy_testcase.py @@ -19,14 +19,15 @@ pass try: - import httpx + import httpx2 + + HTTPX2Transport = httpx2.HTTPTransport + AsyncHTTPX2Transport = httpx2.AsyncHTTPTransport - HTTPXTransport = httpx.HTTPTransport - AsyncHTTPXTransport = httpx.AsyncHTTPTransport except ImportError: - httpx = None - HTTPXTransport = None - AsyncHTTPXTransport = None + httpx2 = None + HTTPX2Transport = None + AsyncHTTPX2Transport = None from .config import PROXY_URL from .helpers import ( @@ -56,7 +57,7 @@ class RecordedTransport(str, Enum): """Enum for specifying which transports to record in the test proxy.""" AZURE_CORE = "azure_core" - HTTPX = "httpx" + HTTPX2 = "httpx2" def get_recording_assets(test_id: str) -> Optional[str]: @@ -176,8 +177,8 @@ def transform_request(request: "HttpRequest", recording_id: str) -> None: request.url = updated_target -def transform_httpx_request(request, recording_id: str) -> None: - """Transform an httpx.Request to route through the test proxy.""" +def transform_httpx2_request(request, recording_id: str) -> None: + """Transform an httpx2.Request to route through the test proxy.""" parsed_result = url_parse.urlparse(str(request.url)) # Store original upstream URI @@ -190,10 +191,10 @@ def transform_httpx_request(request, recording_id: str) -> None: # Rewrite URL to proxy updated_target = parsed_result._replace(**get_proxy_netloc()).geturl() - request.url = httpx.URL(updated_target) + request.url = type(request.url)(updated_target) -def restore_httpx_response_url(response) -> None: +def restore_httpx2_response_url(response) -> None: """Restore the response's request URL to the original upstream target.""" try: parsed_resp = url_parse.urlparse(str(response.request.url)) @@ -203,7 +204,7 @@ def restore_httpx_response_url(response) -> None: original_target = parsed_resp._replace( scheme=upstream_uri.scheme or parsed_resp.scheme, netloc=upstream_uri.netloc ).geturl() - response.request.url = httpx.URL(original_target) + response.request.url = type(response.request.url)(original_target) except Exception: # Best-effort restore; don't fail the call if something goes wrong pass @@ -220,14 +221,14 @@ def _transform_args(recording_id: str, *call_args, **call_kwargs): return tuple(copied_positional_args), call_kwargs -def _transform_httpx_args(recording_id: str, *call_args, **call_kwargs): - """Transform httpx transport call arguments to route through the test proxy. +def _transform_httpx2_args(recording_id: str, *call_args, **call_kwargs): + """Transform httpx2 transport call arguments to route through the test proxy. Used by both sync and async decorators. """ copied_positional_args = list(call_args) request = copied_positional_args[1] - transform_httpx_request(request, recording_id) + transform_httpx2_request(request, recording_id) return tuple(copied_positional_args), call_kwargs @@ -239,8 +240,8 @@ def recorded_by_proxy(*transports): *transports: Which transport(s) to record. Pass one or more comma separated RecordedTransport enum values. - No args (default): Record RequestsTransport.send calls (azure.core). - RecordedTransport.AZURE_CORE: Record RequestsTransport.send calls. Same as the default above. - - RecordedTransport.HTTPX: Record HTTPXTransport.handle_request calls. - - RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX: Record both transports. + - RecordedTransport.HTTPX2: Record HTTPX2Transport.handle_request calls. + - RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX2: Record both transports. Usages: from devtools_testutils import recorded_by_proxy, RecordedTransport @@ -253,12 +254,12 @@ def test(...): ... @recorded_by_proxy(RecordedTransport.AZURE_CORE) def test(...): ... - # If your test uses httpx only for network calls - @recorded_by_proxy(RecordedTransport.HTTPX) + # If your test uses httpx2 only for network calls + @recorded_by_proxy(RecordedTransport.HTTPX2) def test(...): ... - # If your test uses both azure.core and httpx for network calls - @recorded_by_proxy(RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX) + # If your test uses both azure.core and httpx2 for network calls + @recorded_by_proxy(RecordedTransport.AZURE_CORE, RecordedTransport.HTTPX2) def test(...): ... """ @@ -281,11 +282,11 @@ def test(...): ... isinstance(transport, str) and transport == RecordedTransport.AZURE_CORE.value ): transport_list.append((RequestsTransport, "send")) - elif transport == RecordedTransport.HTTPX or ( - isinstance(transport, str) and transport == RecordedTransport.HTTPX.value + elif transport == RecordedTransport.HTTPX2 or ( + isinstance(transport, str) and transport == RecordedTransport.HTTPX2.value ): - if HTTPXTransport is not None: - transport_list.append((HTTPXTransport, "handle_request")) + if HTTPX2Transport is not None: + transport_list.append((HTTPX2Transport, "handle_request")) # If still no transports, fall back to azure.core if not transport_list: @@ -309,12 +310,12 @@ def record_wrap(*args, **kwargs): recording_id, variables = start_record_or_playback(test_id) # Build a wrapper factory so each patched method closes over its own original - def make_combined_call(original_transport_func, is_httpx=False): + def make_combined_call(original_transport_func, is_httpx2=False): def combined_call(*call_args, **call_kwargs): - if is_httpx: - adjusted_args, adjusted_kwargs = _transform_httpx_args(recording_id, *call_args, **call_kwargs) + if is_httpx2: + adjusted_args, adjusted_kwargs = _transform_httpx2_args(recording_id, *call_args, **call_kwargs) result = original_transport_func(*adjusted_args, **adjusted_kwargs) - restore_httpx_response_url(result) + restore_httpx2_response_url(result) else: adjusted_args, adjusted_kwargs = _transform_args(recording_id, *call_args, **call_kwargs) result = original_transport_func(*adjusted_args, **adjusted_kwargs) @@ -335,13 +336,13 @@ def combined_call(*call_args, **call_kwargs): # monkeypatch all requested transports for owner, name in transports: original = getattr(owner, name) - # Check if this is an httpx transport by comparing with httpx transport classes - is_httpx_transport = ( - (HTTPXTransport is not None and owner is HTTPXTransport) - or (AsyncHTTPXTransport is not None and owner is AsyncHTTPXTransport) - or (httpx is not None and owner.__module__.startswith("httpx")) + # Check if this is an httpx2 transport by comparing with httpx2 transport classes + is_httpx2_transport = ( + (HTTPX2Transport is not None and owner is HTTPX2Transport) + or (AsyncHTTPX2Transport is not None and owner is AsyncHTTPX2Transport) + or (httpx2 is not None and owner.__module__.startswith("httpx2")) ) - setattr(owner, name, make_combined_call(original, is_httpx=is_httpx_transport)) + setattr(owner, name, make_combined_call(original, is_httpx2=is_httpx2_transport)) originals.append((owner, name, original)) try: diff --git a/eng/tools/azure-sdk-tools/gh_tools/vnext_issue_creator.py b/eng/tools/azure-sdk-tools/gh_tools/vnext_issue_creator.py index 66f0f1e08779..6396e1cadca2 100644 --- a/eng/tools/azure-sdk-tools/gh_tools/vnext_issue_creator.py +++ b/eng/tools/azure-sdk-tools/gh_tools/vnext_issue_creator.py @@ -5,7 +5,7 @@ # This script is used to create issues for client libraries failing the vnext of mypy, pyright, and pylint. from __future__ import annotations -from typing import Optional +from typing import Optional, TYPE_CHECKING import sys import os @@ -20,11 +20,46 @@ from github import Github, Auth, GithubException from ci_tools.variables import discover_repo_root +from ci_tools.parsing import ParsedSetup +from ci_tools.functions import is_package_active + +if TYPE_CHECKING: + from github.Repository import Repository logging.getLogger().setLevel(logging.INFO) CHECK_TYPE = Literal["mypy", "pylint", "pyright", "sphinx"] +# The automation that files vnext issues has run under different identities over time +# (the `azure-sdk` user account and the `azure-sdk-automation[bot]` GitHub App). We match +# issues from any known automation creator so existing issues are correctly found and +# de-duplicated regardless of which identity created them. Filtering by creator (rather +# than title alone) avoids ever editing/closing an issue a human happened to open. +VNEXT_ISSUE_CREATORS = ["azure-sdk", "azure-sdk-automation[bot]"] + + +def find_vnext_issues(repo: "Repository", check_type: CHECK_TYPE, package_name: str) -> list: + """Return all open vnext issues for the given package and check_type, across every + known automation creator identity, sorted oldest-first (by issue number).""" + matches = [ + issue + for issue in repo.get_issues(state="open", labels=[check_type]) + if issue.title.split("needs")[0].strip() == package_name and issue.user.login in VNEXT_ISSUE_CREATORS + ] + return sorted(matches, key=lambda issue: issue.number) + + +def is_package_deprecated(package_dir: str) -> bool: + """Returns True if the package is deprecated/inactive (e.g. carries the + 'Development Status :: 7 - Inactive' classifier). Deprecated packages should + not have vnext issues created against them.""" + try: + parsed = ParsedSetup.from_path(package_dir) + except Exception as e: # pragma: no cover - defensive + logging.warning(f"Unable to parse metadata for {package_dir} to determine deprecation status: {e}") + return False + return not is_package_active(parsed) + def get_version_running(check_type: CHECK_TYPE) -> str: commands = [sys.executable, "-m", check_type, "--version"] @@ -148,14 +183,20 @@ def create_vnext_issue(package_dir: str, check_type: CHECK_TYPE, check_version: package_path = pathlib.Path(package_dir) package_name = package_path.name service_directory = package_path.parent.name + + # Deprecated/inactive packages should never have vnext issues created against them. + if is_package_deprecated(package_dir): + logging.info(f"Package {package_name} is deprecated/inactive. Skipping vnext issue creation for {check_type}.") + close_vnext_issue(package_name, check_type) + return + auth = Auth.Token(os.environ["GH_TOKEN"]) g = Github(auth=auth) today = datetime.date.today() repo = g.get_repo("Azure/azure-sdk-for-python") - issues = repo.get_issues(state="open", labels=[check_type], creator="azure-sdk") - vnext_issue = [issue for issue in issues if issue.title.split("needs")[0].strip() == package_name] + vnext_issue = find_vnext_issues(repo, check_type, package_name) version = check_version or get_version_running(check_type) build_link = get_build_link(check_type) @@ -219,7 +260,13 @@ def create_vnext_issue(package_dir: str, check_type: CHECK_TYPE, check_version: labels = [] assignees = [] - vnext_issue[0].edit( + # Update the most recent issue and close any older duplicates so we converge on a single issue. + primary_issue = vnext_issue[-1] + for duplicate in vnext_issue[:-1]: + logging.info(f"Closing duplicate vnext issue #{duplicate.number} for {package_name} ({check_type}).") + duplicate.edit(state="closed") + + primary_issue.edit( title=title, body=template, ) @@ -227,7 +274,7 @@ def create_vnext_issue(package_dir: str, check_type: CHECK_TYPE, check_version: # Assign codeowners individually with error handling for assignee in assignees: try: - vnext_issue[0].add_to_assignees(assignee) + primary_issue.add_to_assignees(assignee) logging.info(f"Assigned {assignee} to issue for {package_name}") except GithubException as e: logging.warning(f"Failed to assign {assignee} to issue for {package_name}: {e}") @@ -241,8 +288,7 @@ def close_vnext_issue(package_name: str, check_type: CHECK_TYPE) -> None: repo = g.get_repo("Azure/azure-sdk-for-python") - issues = repo.get_issues(state="open", labels=[check_type], creator="azure-sdk") - vnext_issue = [issue for issue in issues if issue.title.split("needs")[0].strip() == package_name] - if vnext_issue: - logging.info(f"{package_name} passes {check_type}. Closing existing GH issue #{vnext_issue[0].number}...") - vnext_issue[0].edit(state="closed") + vnext_issues = find_vnext_issues(repo, check_type, package_name) + for issue in vnext_issues: + logging.info(f"{package_name} passes {check_type}. Closing existing GH issue #{issue.number}...") + issue.edit(state="closed") diff --git a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py index cc8be5522ea5..df8b86cf806b 100644 --- a/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py +++ b/eng/tools/azure-sdk-tools/packaging_tools/package_utils.py @@ -1,6 +1,7 @@ import re import sys import os +import json from packaging.version import Version import ast import shutil @@ -23,6 +24,12 @@ _LOGGER = logging.getLogger(__name__) +PREVIEW_API_STABLE_VERSION_WARNING = ( + "WARNING: Stable SDK version {sdk_version} is used with preview API version {api_version}. " + "If this is expected, delete this line; otherwise, check this PR." +) +PREVIEW_API_STABLE_VERSION_WARNING_PREFIX = "WARNING: Stable SDK version " + # prefolder: "sdk/compute"; name: "azure-mgmt-compute" def create_package(prefolder, name): @@ -33,7 +40,7 @@ def create_package(prefolder, name): @return_origin_path def change_log_new(package_folder: str, lastest_pypi_version: bool) -> str: os.chdir(package_folder) - cmd = "azpysdk breaking . --changelog" + cmd = "azpysdk breaking . --changelog --use-apistub " if lastest_pypi_version: cmd += " --latest-pypi-version" try: @@ -55,9 +62,19 @@ def change_log_new(package_folder: str, lastest_pypi_version: bool) -> str: def get_version_info(package_name: str, tag_is_stable: bool = False) -> Tuple[str, str]: from pypi_tools.pypi import PyPIClient + SDK_VERSIONS_WITH_CHANGELOG_ISSUE = {} + SKIP_SDK_VERSIONS = {"azure-mgmt-datatransfer": "1.0.0b1"} # could be removed after new SDK version released + try: - client = PyPIClient() - ordered_versions = client.get_ordered_versions(package_name) + client = PyPIClient(force_pypi=True) + # Ignore 0.0.0 placeholder releases, including prereleases like 0.0.0b1 via base_version. + ordered_versions = [ + v + for v in client.get_ordered_versions(package_name) + if v.base_version != "0.0.0" and str(v) != SKIP_SDK_VERSIONS.get(package_name) + ] + if not ordered_versions: + return "", "" last_release = ordered_versions[-1] stable_releases = [x for x in ordered_versions if not x.is_prerelease] last_stable_version = str(stable_releases[-1] if stable_releases else "") @@ -69,10 +86,9 @@ def get_version_info(package_name: str, tag_is_stable: bool = False) -> Tuple[st # temporary logic to always get latest version from pypi for specific packages whose latest stable version # is not updated for a long time and has some issue in changelog generation. # This is a workaround before we have a better solution to determine the version for changelog generation. - sdks_with_changelog_issue = {"azure-mgmt-sql": "3.0.1"} - if package_name in sdks_with_changelog_issue and ( - last_version == sdks_with_changelog_issue[package_name] - or last_stable_version == sdks_with_changelog_issue[package_name] + if package_name in SDK_VERSIONS_WITH_CHANGELOG_ISSUE and ( + last_version == SDK_VERSIONS_WITH_CHANGELOG_ISSUE[package_name] + or last_stable_version == SDK_VERSIONS_WITH_CHANGELOG_ISSUE[package_name] ): _LOGGER.info( f"Package {package_name} has changelog generation issue with version {last_version}, fallback to get latest version from pypi" @@ -85,10 +101,6 @@ def get_version_info(package_name: str, tag_is_stable: bool = False) -> Tuple[st last_version = "" last_stable_version = "" - # Ignore 0.0.0 when it appears on PyPI as a placeholder or name-reservation version. - if last_version and Version(last_version).base_version == "0.0.0": - return "", "" - return last_version, last_stable_version @@ -233,7 +245,7 @@ def check_file_with_packaging_tool(self): toml_data = toml.load(fd) if "packaging" not in toml_data: toml_data["packaging"] = {} - if title and not toml_data["packaging"].get("title"): + if title: toml_data["packaging"]["title"] = title toml_data["packaging"]["is_stable"] = is_stable with open(pyproject_toml, "wb") as fd: @@ -349,12 +361,87 @@ def check_pyproject_toml(self): _LOGGER.info("Updated pyproject.toml with required azure-sdk-build configurations") + def check_preview_api_version(self): + metadata_path = self.package_path / "_metadata.json" + if not metadata_path.exists(): + return + + try: + with open(metadata_path, "r") as file: + metadata = json.load(file) + except Exception as e: + _LOGGER.info(f"Failed to parse {metadata_path}: {e}") + return + + api_versions = [] + api_version = metadata.get("apiVersion") + if isinstance(api_version, str): + api_versions.append(api_version) + + api_versions_map = metadata.get("apiVersions") + if isinstance(api_versions_map, dict): + api_versions.extend(str(value) for value in api_versions_map.values()) + + preview_api_version = next((version for version in api_versions if "preview" in version.lower()), "") + if not preview_api_version: + return + + version_files = list((self.package_path / "azure" / "mgmt").glob("**/_version.py")) + if not version_files: + _LOGGER.info(f"Can not find _version.py under {self.package_path / 'azure' / 'mgmt'}") + return + + try: + with open(version_files[0], "r") as file: + tree = ast.parse(file.read()) + except Exception as e: + _LOGGER.info(f"Failed to parse {version_files[0]}: {e}") + return + + sdk_version = "" + for node in ast.walk(tree): + if isinstance(node, ast.Assign): + for target in node.targets: + if isinstance(target, ast.Name) and target.id == "VERSION" and isinstance(node.value, ast.Constant): + sdk_version = str(node.value.value) + break + + if not sdk_version or "b" in sdk_version.lower(): + return + + warning = PREVIEW_API_STABLE_VERSION_WARNING.format( + sdk_version=sdk_version, + api_version=preview_api_version, + ) + + changelog_path = self.package_path / "CHANGELOG.md" + if not changelog_path.exists(): + _LOGGER.info(f"{changelog_path} does not exist.") + return + + def add_warning_to_changelog(content: List[str]): + if any(line.startswith(PREVIEW_API_STABLE_VERSION_WARNING_PREFIX) for line in content): + return + for i, line in enumerate(content): + if re.match(r"^## \d+\.\d+\.\d+(?:b\d+)?\s+\(", line): + insert_at = i + 1 + if insert_at < len(content) and not content[insert_at].strip(): + insert_at += 1 + content.insert(insert_at, f"{warning}\n\n") + _LOGGER.warning( + f"Added preview API/stable SDK version warning to {changelog_path} for SDK version {sdk_version}" + ) + break + + modify_file(str(changelog_path), add_warning_to_changelog) + def run(self): self.check_file_with_packaging_tool() self.check_pprint_name() self.check_sdk_readme() self.check_dev_requirement() self.check_pyproject_toml() + self.check_preview_api_version() def check_file(package_path: Path): diff --git a/eng/tools/azure-sdk-tools/packaging_tools/sdk_changelog.py b/eng/tools/azure-sdk-tools/packaging_tools/sdk_changelog.py index 14899f7d72fe..0f634e3f8588 100644 --- a/eng/tools/azure-sdk-tools/packaging_tools/sdk_changelog.py +++ b/eng/tools/azure-sdk-tools/packaging_tools/sdk_changelog.py @@ -1,13 +1,15 @@ import argparse from functools import partial +import json import logging import multiprocessing import os from pathlib import Path +import re import sys import time -from typing import Any +from typing import Any, Optional from .package_utils import ( change_log_generate, extract_breaking_change, @@ -38,6 +40,122 @@ def is_arm_sdk(package_name: str) -> bool: return package_name.startswith("azure-mgmt-") +# CHANGELOG.md is embedded into the package long_description (see setup.py template), so an +# unbounded changelog bloats the PyPI metadata. Trimming uses a high-water/low-water pattern: +# trimming is *triggered* when the file exceeds CHANGELOG_SIZE_LIMIT_BYTES, but when it runs the +# file is cut down toward CHANGELOG_TRIM_TARGET_BYTES (half the limit). Trimming to a lower +# target leaves headroom so the file does not immediately exceed the limit again on the next +# release, avoiding a churny re-trim of the CHANGELOG on almost every generation. At least +# CHANGELOG_MIN_KEEP_ENTRIES newest entries are always retained for usefulness (unless even that +# many entries would exceed the hard size limit, in which case as many as fit are kept). +CHANGELOG_SIZE_LIMIT_BYTES = 128 * 1024 +CHANGELOG_TRIM_TARGET_BYTES = CHANGELOG_SIZE_LIMIT_BYTES // 2 +CHANGELOG_MIN_KEEP_ENTRIES = 4 +_TRIM_NOTE_PREFIX = "> Changelog entries prior to" +_VERSION_HEADER_RE = re.compile(r"^##\s+\d+\.\d+") + + +def trim_changelog_if_needed( + package_path: Path, + size_limit: int = CHANGELOG_SIZE_LIMIT_BYTES, + trim_target: Optional[int] = None, +) -> bool: + """Drop the oldest CHANGELOG.md entries when the file grows too large. + + The CHANGELOG is concatenated into the package ``long_description`` uploaded to PyPI, so it + must not grow without bound. Trimming is triggered when ``CHANGELOG.md`` exceeds + ``size_limit`` bytes; when it runs, the file is cut down toward ``trim_target`` bytes + (defaults to half of ``size_limit``) by keeping the ``# Release History`` header plus the + newest version entries, removing older entries completely, and appending a note pointing to + PyPI for the full history. Cutting toward the lower target (rather than just under the limit) + leaves headroom so the file does not immediately exceed the limit again on the next release. + + At least ``CHANGELOG_MIN_KEEP_ENTRIES`` newest entries are always kept for usefulness, even if + that exceeds ``trim_target`` -- unless keeping that many would exceed the hard ``size_limit``, + in which case only as many newest entries as fit under ``size_limit`` are kept (at least one). + + Returns True if the file was trimmed, False otherwise. + """ + changelog_path = package_path / "CHANGELOG.md" + if not changelog_path.exists(): + return False + # Use the normalized (LF) UTF-8 byte length rather than stat().st_size: on Windows the file + # is stored with CRLF line endings, so st_size would over-count relative to the LF content the + # pipeline (Linux) actually ships, causing inconsistent trigger behavior across platforms. + if len(changelog_path.read_text(encoding="utf-8").encode("utf-8")) <= size_limit: + return False + + if trim_target is None: + trim_target = size_limit // 2 + + package_name = package_path.name + trimmed = False + + def byte_len(lines: list[str]) -> int: + return sum(len(line.encode("utf-8")) for line in lines) + + def trim_proc(content: list[str]): + nonlocal trimmed + version_indices = [i for i, line in enumerate(content) if _VERSION_HEADER_RE.match(line)] + # main() inserts 0.0.0 as an unreleased placeholder; keep it, but don't use it as the + # cutoff version in the trim note. + trimmable_version_indices = [i for i in version_indices if content[i].split()[1] != "0.0.0"] + # Nothing to trim if there is at most one entry. Return before mutating content so an + # existing trim note is preserved on this no-op path (modify_file always writes content + # back). The note is appended after all version headers and never matches the version + # header regex, so its presence does not affect version_indices. + if len(trimmable_version_indices) < 2: + return + + # Remove any previous trim note so repeated runs don't accumulate duplicates. It lives + # after all version headers, so version_indices computed above stay valid. + content[:] = [line for line in content if not line.startswith(_TRIM_NOTE_PREFIX)] + + # Boundaries of each version section; the header (before the first entry) is always kept. + n = len(trimmable_version_indices) + bounds = trimmable_version_indices + [len(content)] + header_bytes = byte_len(content[: trimmable_version_indices[0]]) + seg_bytes = [byte_len(content[bounds[j] : bounds[j + 1]]) for j in range(n)] + # Reserve room for the note line so the trimmed file stays under the target/limit. + note_reserve = 256 + + # Keep the newest entries whose cumulative size fits under the target (always keep >= 1). + keep_count = 1 + total = header_bytes + seg_bytes[0] + for j in range(1, n): + if total + seg_bytes[j] + note_reserve > trim_target: + break + total += seg_bytes[j] + keep_count = j + 1 + + # Always keep at least CHANGELOG_MIN_KEEP_ENTRIES for usefulness, even past the target... + keep_count = min(n, max(keep_count, CHANGELOG_MIN_KEEP_ENTRIES)) + # ...but never exceed the hard size limit: drop the oldest kept entries until it fits. + while keep_count > 1 and header_bytes + sum(seg_bytes[:keep_count]) + note_reserve > size_limit: + keep_count -= 1 + + # Everything already fits (should not happen once the file is over the limit, but guard). + if keep_count >= n: + return + + oldest_kept = content[trimmable_version_indices[keep_count - 1]].split()[1] + note = ( + f"{_TRIM_NOTE_PREFIX} {oldest_kept} were removed to reduce file size. " + f"See https://pypi.org/project/{package_name}/{oldest_kept}/ for the older history.\n" + ) + del content[trimmable_version_indices[keep_count] :] + # Ensure a blank line separates the last kept entry from the note. + if content and content[-1].strip(): + content.append("\n") + content.append(note) + trimmed = True + + modify_file(str(changelog_path), trim_proc) + if trimmed: + _LOGGER.info(f"Trimmed CHANGELOG.md for {package_name} down to under {trim_target} bytes.") + return trimmed + + def execute_func_with_timeout(func, timeout: int = 900) -> Any: """Execute function with timeout. @@ -121,7 +239,21 @@ def log_failed_message(message: str, enable_log_error: bool): _LOGGER.warning(message) -def main(package_path: Path, *, enable_changelog: bool = True, package_result: dict = {}, timeout: int = 900): +def main( + package_path: Path, + *, + enable_changelog: bool = True, + package_result: dict = {}, + timeout: int = 900, + output_json: Optional[Path] = None, +): + """Generate SDK changes for a package. + + By default the generated changelog is written into ``CHANGELOG.md``. When + ``output_json`` is provided, run in SDK change detector mode instead: write + {"changes": ..., "hasBreakingChange": ...} to that + file and do NOT modify ``CHANGELOG.md``. + """ package_name = package_path.name # When package_result is provided, it means this function is called in pipeline and we should not log error @@ -142,6 +274,19 @@ def main(package_path: Path, *, enable_changelog: bool = True, package_result: d _LOGGER.info(f"[PACKAGE]({package_name})[CHANGELOG]:{md_output}") + # SDK change detector mode: write JSON result and skip editing CHANGELOG.md + if output_json is not None: + result = { + "changes": md_output, + "hasBreakingChange": "Breaking Changes" in md_output, + } + output_json = Path(output_json) + output_json.parent.mkdir(parents=True, exist_ok=True) + with open(output_json, "w", encoding="utf-8") as f: + json.dump(result, f, indent=2) + _LOGGER.info(f"[PACKAGE]({package_name})[SDK CHANGES] written to {output_json}: {json.dumps(result)}") + return + # edit CHANGELOG.md with generated content version_line = "## 0.0.0 (UnReleased)\n\n" @@ -174,6 +319,9 @@ def edit_changelog_proc(content: list[str]): modify_file(str(package_path / "CHANGELOG.md"), edit_changelog_proc) + # Keep CHANGELOG.md from growing unbounded, since it is embedded into the PyPI long_description. + trim_changelog_if_needed(package_path) + except Exception as e: log_failed_message(f"Fail to generate changelog for {package_name}: {str(e)}", enable_log_error) else: @@ -200,6 +348,16 @@ def generate_main(): required=True, help="Absolute path to the package directory (e.g. c:/azure-sdk-for-python/sdk//).", ) + parser.add_argument( + "--output-json", + required=False, + default=None, + help=( + "Path to a JSON output file. When provided, run in SDK change detector mode: " + 'generate the SDK changes, write {"changes": ..., "hasBreakingChange": ...} to this ' + "file and do NOT modify CHANGELOG.md. When omitted, update CHANGELOG.md as usual." + ), + ) parser.add_argument( "--timeout", type=int, @@ -221,7 +379,8 @@ def generate_main(): if not package_path.is_absolute(): raise ValueError("--package-path must be an absolute path") - main(package_path, timeout=args.timeout) + output_json = Path(args.output_json) if args.output_json else None + main(package_path, timeout=args.timeout, output_json=output_json) if __name__ == "__main__": diff --git a/eng/tools/azure-sdk-tools/packaging_tools/sdk_generator.py b/eng/tools/azure-sdk-tools/packaging_tools/sdk_generator.py index cb5c824a8dff..ab215cf27f44 100644 --- a/eng/tools/azure-sdk-tools/packaging_tools/sdk_generator.py +++ b/eng/tools/azure-sdk-tools/packaging_tools/sdk_generator.py @@ -335,11 +335,7 @@ def main(generate_input, generate_output): cmds = [ "azpysdk", "apistub", - "--md", - "--extract-metadata", package_name, - "--dest-dir", - package_path.absolute().as_posix(), ] _LOGGER.info(f"generate apiview file for package {package_name}") check_call( diff --git a/eng/tools/azure-sdk-tools/pypi_tools/pypi.py b/eng/tools/azure-sdk-tools/pypi_tools/pypi.py index 274abc7de9dc..5af8eda8d717 100644 --- a/eng/tools/azure-sdk-tools/pypi_tools/pypi.py +++ b/eng/tools/azure-sdk-tools/pypi_tools/pypi.py @@ -20,15 +20,19 @@ class PyPIClient: By default, reads ``PIP_INDEX_URL`` to decide the backend: * If the URL contains ``pkgs.dev.azure.com`` → Azure Artifacts REST API. * Otherwise → PyPI JSON API (``https://pypi.org``). + + Pass ``force_pypi=True`` to ignore ``PIP_INDEX_URL`` and select the PyPI + JSON backend. Requests use ``host`` (public PyPI by default), so an + explicitly supplied host is still honored. """ - def __init__(self, host="https://pypi.org"): + def __init__(self, host="https://pypi.org", force_pypi=False): index_url = os.environ.get("PIP_INDEX_URL", "") # Lazy import to avoid circular deps at module level. from pypi_tools.azdo import parse_pip_index_url, AzureArtifactsClient - azdo_cfg = parse_pip_index_url(index_url) if index_url else None + azdo_cfg = None if force_pypi else (parse_pip_index_url(index_url) if index_url else None) if azdo_cfg is not None: self._backend = "azdo" diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-containerservice-41.4.0b1-CHANGELOG.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-containerservice-41.4.0b1-CHANGELOG.md new file mode 100644 index 000000000000..98cdb5283a41 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-containerservice-41.4.0b1-CHANGELOG.md @@ -0,0 +1,2506 @@ +# Release History + +## 41.4.0b1 (2026-06-04) + +### Features Added + + - Client `ContainerServiceClient` added operation group `maintenance_windows` + - Model `ContainerServiceNetworkProfile` added property `bastion_profile` + - Added model `BastionProfile` + - Added enum `BastionSku` + - Added model `MaintenanceWindowResource` + - Added model `MaintenanceWindowResourceProperties` + - Added enum `ResourceProvisioningState` + - Added operation group `MaintenanceWindowsOperations` + +## 41.3.0 (2026-06-03) + +### Features Added + + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `ManagedClusterAzureMonitorProfileMetrics` added property `control_plane` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added model `ManagedClusterAzureMonitorProfileMetricsControlPlane` + - Added operation group `IdentityBindingsOperations` + +## 41.3.0b1 (2026-05-18) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `vm_skus` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Model `AgentPoolNetworkProfile` added property `node_public_ip_prefix_i_ds` + - Model `AgentPoolNetworkProfile` added property `secondary_network_interfaces` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfileProperties` added property `components_by_releases` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `GPUProfile` added property `nvidia` + - Model `KubeletConfig` added property `seccomp_default` + - Model `KubeletConfig` added property `kube_reserved` + - Model `KubeletConfig` added property `hard_eviction_threshold` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `eviction_policy` + - Model `MachineProperties` added property `billing` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `MachineProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `prepared_image_specification_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_metrics` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_logs_and_traces` + - Model `ManagedClusterAzureMonitorProfileMetrics` added property `control_plane` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterManagedOutboundIPProfile` added property `count_i_pv6` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_ip_prefixes` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_i_ps` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterProperties` added property `creation_data` + - Model `ManagedClusterProperties` added property `enable_fips` + - Model `ManagedClusterProperties` added property `enable_namespace_resources` + - Model `ManagedClusterProperties` added property `scheduler_profile` + - Model `ManagedClusterProperties` added property `health_monitor_profile` + - Model `ManagedClusterProperties` added property `control_plane_scaling_profile` + - Model `ManagedClusterProperties` added property `node_disruption_profile` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfile` added property `service_account_image_pull_profile` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `OutboundType` added member `MANAGED_NAT_GATEWAY_V2` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `TransitEncryptionType` added member `M_TLS` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AddonAutoscaling` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolNetworkInterface` + - Added enum `AgentPoolNetworkInterfaceType` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added enum `ContainerNetworkLogs` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `ControlPlaneScalingSize` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added model `HardEvictionThreshold` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubeReserved` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerProperties` + - Added model `MachineBillingProfile` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineSecurityProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterAzureMonitorProfileMetricsControlPlane` + - Added model `ManagedClusterControlPlaneScalingProfile` + - Added model `ManagedClusterHealthMonitorProfile` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + - Added model `ManagedClusterNATGatewayProfileOutboundIPs` + - Added model `ManagedClusterNATGatewayProfileOutboundIpPrefixes` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotProperties` + - Added enum `ManagementMode` + - Added model `MeshMembership` + - Added model `MeshMembershipPrivateConnectProfile` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added enum `MigStrategy` + - Added enum `Mode` + - Added model `NetworkProfileForSnapshot` + - Added enum `NodeDisruptionPolicy` + - Added model `NodeDisruptionProfile` + - Added model `NodeImageVersion` + - Added model `NvidiaGPUProfile` + - Added model `OperationStatusResult` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added model `PreparedImageSpecificationProfile` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceSku` + - Added model `ResourceSkuCapabilities` + - Added model `ResourceSkuCapacity` + - Added enum `ResourceSkuCapacityScaleType` + - Added model `ResourceSkuCosts` + - Added model `ResourceSkuLocationInfo` + - Added model `ResourceSkuRestrictionInfo` + - Added model `ResourceSkuRestrictions` + - Added enum `ResourceSkuRestrictionsReasonCode` + - Added enum `ResourceSkuRestrictionsType` + - Added model `ResourceSkuZoneDetails` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added model `ServiceAccountImagePullProfile` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added parameter `ignore_pod_disruption_budget` in method `begin_delete` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + - Added operation group `VmSkusOperations` + +## 41.2.0 (2026-05-09) + +### Features Added + + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Enum `OSSKU` added member `AZURE_CONTAINER_LINUX` + - Added model `AgentPoolArtifactStreamingProfile` + +## 41.2.0b1 (2026-04-24) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `vm_skus` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfileProperties` added property `components_by_releases` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `GPUProfile` added property `nvidia` + - Model `KubeletConfig` added property `seccomp_default` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `eviction_policy` + - Model `MachineProperties` added property `billing` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `MachineProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `prepared_image_specification_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_metrics` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_logs_and_traces` + - Model `ManagedClusterAzureMonitorProfileMetrics` added property `control_plane` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterManagedOutboundIPProfile` added property `count_i_pv6` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_ip_prefixes` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_i_ps` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterProperties` added property `creation_data` + - Model `ManagedClusterProperties` added property `enable_namespace_resources` + - Model `ManagedClusterProperties` added property `scheduler_profile` + - Model `ManagedClusterProperties` added property `health_monitor_profile` + - Model `ManagedClusterProperties` added property `control_plane_scaling_profile` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfile` added property `service_account_image_pull_profile` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterStorageProfileDiskCSIDriver` added property `version` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `OutboundType` added member `MANAGED_NAT_GATEWAY_V2` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `TransitEncryptionType` added member `M_TLS` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AddonAutoscaling` + - Added model `AgentPoolArtifactStreamingProfile` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added enum `ContainerNetworkLogs` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `ControlPlaneScalingSize` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerProperties` + - Added model `MachineBillingProfile` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineSecurityProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterAzureMonitorProfileMetricsControlPlane` + - Added model `ManagedClusterControlPlaneScalingProfile` + - Added model `ManagedClusterHealthMonitorProfile` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + - Added model `ManagedClusterNATGatewayProfileOutboundIPs` + - Added model `ManagedClusterNATGatewayProfileOutboundIpPrefixes` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotProperties` + - Added enum `ManagementMode` + - Added model `MeshMembership` + - Added model `MeshMembershipPrivateConnectProfile` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added enum `MigStrategy` + - Added enum `Mode` + - Added model `NetworkProfileForSnapshot` + - Added model `NodeImageVersion` + - Added model `NvidiaGPUProfile` + - Added model `OperationStatusResult` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added model `PreparedImageSpecificationProfile` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceSku` + - Added model `ResourceSkuCapabilities` + - Added model `ResourceSkuCapacity` + - Added enum `ResourceSkuCapacityScaleType` + - Added model `ResourceSkuCosts` + - Added model `ResourceSkuLocationInfo` + - Added model `ResourceSkuRestrictionInfo` + - Added model `ResourceSkuRestrictions` + - Added enum `ResourceSkuRestrictionsReasonCode` + - Added enum `ResourceSkuRestrictionsType` + - Added model `ResourceSkuZoneDetails` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added model `ServiceAccountImagePullProfile` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added parameter `ignore_pod_disruption_budget` in method `begin_delete` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + - Added operation group `VmSkusOperations` + +## 41.1.0 (2026-04-20) + +### Features Added + + - Model `ManagedClusterAzureMonitorProfile` added property `app_monitoring` + - Model `ManagedClusterIngressProfile` added property `gateway_api` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `gateway_api_implementations` + - Model `ManagedClusterProperties` added property `hosted_system_profile` + - Enum `OSSKU` added member `WINDOWS2025` + - Added enum `GatewayAPIIstioEnabled` + - Added model `ManagedClusterAppRoutingIstio` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoring` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation` + - Added model `ManagedClusterHostedSystemProfile` + - Added model `ManagedClusterIngressProfileGatewayConfiguration` + - Added model `ManagedClusterWebAppRoutingGatewayAPIImplementations` + - Added enum `ManagedGatewayType` + +## 41.1.0b1 (2026-03-30) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `vm_skus` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_customization_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfileProperties` added property `components_by_releases` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `GPUProfile` added property `nvidia` + - Model `KubeletConfig` added property `seccomp_default` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `eviction_policy` + - Model `MachineProperties` added property `billing` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `MachineProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `node_customization_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_customization_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfile` added property `app_monitoring` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterIngressProfile` added property `gateway_api` + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `gateway_api_implementations` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterManagedOutboundIPProfile` added property `count_i_pv6` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_ip_prefixes` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_i_ps` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterProperties` added property `creation_data` + - Model `ManagedClusterProperties` added property `enable_namespace_resources` + - Model `ManagedClusterProperties` added property `scheduler_profile` + - Model `ManagedClusterProperties` added property `hosted_system_profile` + - Model `ManagedClusterProperties` added property `health_monitor_profile` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfile` added property `service_account_image_pull_profile` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterStorageProfileDiskCSIDriver` added property `version` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `WINDOWS2025` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `OutboundType` added member `MANAGED_NAT_GATEWAY_V2` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `TransitEncryptionType` added member `M_TLS` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AddonAutoscaling` + - Added model `AgentPoolArtifactStreamingProfile` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added enum `ContainerNetworkLogs` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added enum `GatewayAPIIstioEnabled` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerProperties` + - Added model `MachineBillingProfile` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineSecurityProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAppRoutingIstio` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoring` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogs` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterHealthMonitorProfile` + - Added model `ManagedClusterHostedSystemProfile` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + - Added model `ManagedClusterIngressProfileGatewayConfiguration` + - Added model `ManagedClusterNATGatewayProfileOutboundIPs` + - Added model `ManagedClusterNATGatewayProfileOutboundIpPrefixes` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotProperties` + - Added model `ManagedClusterWebAppRoutingGatewayAPIImplementations` + - Added enum `ManagedGatewayType` + - Added enum `ManagementMode` + - Added model `MeshMembership` + - Added model `MeshMembershipPrivateConnectProfile` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added enum `MigStrategy` + - Added enum `Mode` + - Added model `NetworkProfileForSnapshot` + - Added model `NodeCustomizationProfile` + - Added model `NodeImageVersion` + - Added model `NvidiaGPUProfile` + - Added model `OperationStatusResult` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceSku` + - Added model `ResourceSkuCapabilities` + - Added model `ResourceSkuCapacity` + - Added enum `ResourceSkuCapacityScaleType` + - Added model `ResourceSkuCosts` + - Added model `ResourceSkuLocationInfo` + - Added model `ResourceSkuRestrictionInfo` + - Added model `ResourceSkuRestrictions` + - Added enum `ResourceSkuRestrictionsReasonCode` + - Added enum `ResourceSkuRestrictionsType` + - Added model `ResourceSkuZoneDetails` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added model `ServiceAccountImagePullProfile` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added parameter `ignore_pod_disruption_budget` in method `begin_delete` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + - Added operation group `VmSkusOperations` + +## 41.0.0 (2026-03-17) + +### Features Added + + - Client `ContainerServiceClient` added method `send_request` + - Model `AdvancedNetworking` added property `performance` + - Model `AdvancedNetworkingSecurity` added property `transit_encryption` + - Model `AgentPool` added property `properties` + - Model `AgentPool` added property `system_data` + - Model `AgentPoolUpgradeProfile` added property `system_data` + - Model `IstioComponents` added property `proxy_redirection_mechanism` + - Model `Machine` added property `system_data` + - Model `ManagedClusterAccessProfile` added property `properties` + - Model `ManagedClusterHTTPProxyConfig` added property `enabled` + - Model `ManagedClusterUpgradeProfile` added property `system_data` + - Model `OperationValue` added property `display` + - Model `PrivateEndpointConnection` added property `system_data` + - Model `RunCommandResult` added property `properties` + - Added enum `AccelerationMode` + - Added model `AccessProfile` + - Added model `AdvancedNetworkingPerformance` + - Added model `AdvancedNetworkingSecurityTransitEncryption` + - Added model `AgentPoolManagedClusterAgentPoolProfileProperties` + - Added model `CommandResultProperties` + - Added model `OperationValueDisplay` + - Added enum `ProxyRedirectionMechanism` + - Added enum `TransitEncryptionType` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Renamed enum `IpFamily` to `IPFamily` + - Model `AgentPool` moved instance variables `e_tag`, `count`, `vm_size`, `os_disk_size_gb`, `os_disk_type`, `kubelet_disk_type`, `workload_runtime`, `message_of_the_day`, `vnet_subnet_id`, `pod_subnet_id`, `pod_ip_allocation_mode`, `max_pods`, `os_type`, `os_sku`, `max_count`, `min_count`, `enable_auto_scaling`, `scale_down_mode`, `type_properties_type`, `mode`, `orchestrator_version`, `current_orchestrator_version`, `node_image_version`, `upgrade_settings`, `provisioning_state`, `power_state`, `availability_zones`, `enable_node_public_ip`, `node_public_ip_prefix_id`, `scale_set_priority`, `scale_set_eviction_policy`, `spot_max_price`, `tags`, `node_labels`, `node_taints`, `proximity_placement_group_id`, `kubelet_config`, `linux_os_config`, `enable_encryption_at_host`, `enable_ultra_ssd`, `enable_fips`, `gpu_instance_profile`, `creation_data`, `capacity_reservation_group_id`, `host_group_id`, `network_profile`, `windows_profile`, `security_profile`, `gpu_profile`, `gateway_profile`, `virtual_machines_profile`, `virtual_machine_nodes_status`, `status` and `local_dns_profile` under property `properties` + - Model `ManagedClusterAccessProfile` moved instance variable `kube_config` under property `properties` + - Model `OperationValue` moved instance variables `operation`, `resource`, `description` and `provider` under property `display` + - Model `RunCommandResult` moved instance variables `provisioning_state`, `exit_code`, `started_at`, `finished_at`, `logs` and `reason` under property `properties` + - Model `KubernetesVersionListResult` renamed its instance variable `values` to `values_property` + - Method `AgentPoolsOperations.begin_create_or_update` replaced positional_or_keyword parameters `if_match`/`if_none_match` with keyword_only parameters `etag`/`match_condition` + - Method `AgentPoolsOperations.begin_delete` changed its parameter `ignore_pod_disruption_budget` from `positional_or_keyword` to `keyword_only` + - Method `AgentPoolsOperations.begin_delete` replaced positional_or_keyword parameter `if_match` with keyword_only parameters `etag`/`match_condition` + - Method `ManagedClustersOperations.begin_create_or_update` replaced positional_or_keyword parameters `if_match`/`if_none_match` with keyword_only parameters `etag`/`match_condition` + - Method `ManagedClustersOperations.begin_delete` deleted or renamed its parameter `if_match` of kind `positional_or_keyword` + - Method `ManagedClustersOperations.begin_update_tags` replaced positional_or_keyword parameter `if_match` with keyword_only parameters `etag`/`match_condition` + - Method `ManagedClustersOperations.list_cluster_admin_credentials` changed its parameter `server_fqdn` from `positional_or_keyword` to `keyword_only` + - Method `ManagedClustersOperations.list_cluster_monitoring_user_credentials` changed its parameter `server_fqdn` from `positional_or_keyword` to `keyword_only` + - Method `ManagedClustersOperations.list_cluster_user_credentials` changed its parameter `server_fqdn`/`format` from `positional_or_keyword` to `keyword_only` + +### Other Changes + + - Deleted model `MeshRevisionProfileList`/`MeshUpgradeProfileList`/`OutboundEnvironmentEndpointCollection`/`SubResource` which actually were not used by SDK users + +## 41.0.0b3 (2025-12-22) + +### Features Added + + - Added model `MachineSecurityProfile` + +### Breaking Changes + + - Model `AgentPoolUpgradeSettings` deleted or renamed its instance variable `min_surge` + +## 40.2.0 (2025-11-24) + +### Features Added + + - Enum `OSSKU` added member `UBUNTU2404` + +## 41.0.0b2 (2025-11-17) + +### Features Added + + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Enum `Mode` added member `NFTABLES` + - Enum `WorkloadRuntime` added member `KATA_VM_ISOLATION` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + +## 40.1.0 (2025-10-31) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_namespaces` + - Model `AgentPool` added property `local_dns_profile` + - Model `IstioEgressGateway` added property `name` + - Model `IstioEgressGateway` added property `namespace` + - Model `IstioEgressGateway` added property `gateway_configuration_name` + - Model `ManagedClusterAgentPoolProfile` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `local_dns_profile` + - Enum `WorkloadRuntime` added member `KATA_VM_ISOLATION` + - Added enum `AdoptionPolicy` + - Added enum `DeletePolicy` + - Added enum `LocalDNSForwardDestination` + - Added enum `LocalDNSForwardPolicy` + - Added enum `LocalDNSMode` + - Added model `LocalDNSOverride` + - Added model `LocalDNSProfile` + - Added enum `LocalDNSProtocol` + - Added enum `LocalDNSQueryLogging` + - Added enum `LocalDNSServeStale` + - Added enum `LocalDNSState` + - Added model `ManagedNamespace` + - Added model `ManagedNamespaceListResult` + - Added model `NamespaceProperties` + - Added enum `NamespaceProvisioningState` + - Added model `NetworkPolicies` + - Added enum `PolicyRule` + - Added model `ResourceQuota` + - Added operation group `ManagedNamespacesOperations` + +## 41.0.0b1 (2025-10-24) + +### Features Added + + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `managed_namespaces` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Model `AdvancedNetworking` added property `performance` + - Model `AdvancedNetworkingSecurity` added property `transit_encryption` + - Model `AgentPool` added property `upgrade_strategy` + - Model `AgentPool` added property `upgrade_settings_blue_green` + - Model `AgentPool` added property `node_initialization_taints` + - Model `AgentPool` added property `artifact_streaming_profile` + - Model `AgentPool` added property `local_dns_profile` + - Model `AgentPool` added property `node_customization_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfile` added property `components_by_releases` + - Model `AgentPoolUpgradeProfile` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `min_surge` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `IstioComponents` added property `proxy_redirection_mechanism` + - Model `IstioEgressGateway` added property `name` + - Model `IstioEgressGateway` added property `namespace` + - Model `IstioEgressGateway` added property `gateway_configuration_name` + - Model `KubeletConfig` added property `seccomp_default` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `ManagedCluster` added property `creation_data` + - Model `ManagedCluster` added property `enable_namespace_resources` + - Model `ManagedCluster` added property `scheduler_profile` + - Model `ManagedCluster` added property `hosted_system_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `node_customization_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_customization_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfile` added property `app_monitoring` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterHTTPProxyConfig` added property `enabled` + - Model `ManagedClusterIngressProfile` added property `gateway_api` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterStorageProfileDiskCSIDriver` added property `version` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `UBUNTU2404` + - Enum `OSSKU` added member `WINDOWS2025` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AccelerationMode` + - Added enum `AddonAutoscaling` + - Added enum `AdoptionPolicy` + - Added model `AdvancedNetworkingPerformance` + - Added model `AdvancedNetworkingSecurityTransitEncryption` + - Added model `AgentPoolArtifactStreamingProfile` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `DeletePolicy` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsList` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added enum `IPFamily` + - Added model `IdentityBinding` + - Added model `IdentityBindingListResult` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorListResult` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerListResult` + - Added enum `LocalDNSForwardDestination` + - Added enum `LocalDNSForwardPolicy` + - Added enum `LocalDNSMode` + - Added model `LocalDNSOverride` + - Added model `LocalDNSProfile` + - Added enum `LocalDNSProtocol` + - Added enum `LocalDNSQueryLogging` + - Added enum `LocalDNSServeStale` + - Added enum `LocalDNSState` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoring` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogs` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterHostedSystemProfile` + - Added model `ManagedClusterIngressProfileGatewayConfiguration` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotListResult` + - Added enum `ManagedGatewayType` + - Added model `ManagedNamespace` + - Added model `ManagedNamespaceListResult` + - Added model `MeshMembership` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added model `MeshMembershipsListResult` + - Added enum `Mode` + - Added model `NamespaceProperties` + - Added enum `NamespaceProvisioningState` + - Added model `NetworkPolicies` + - Added model `NetworkProfileForSnapshot` + - Added model `NodeCustomizationProfile` + - Added model `NodeImageVersion` + - Added model `NodeImageVersionsListResult` + - Added model `OperationStatusResult` + - Added model `OperationStatusResultList` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added enum `PolicyRule` + - Added enum `ProxyRedirectionMechanism` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceQuota` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsList` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added enum `TransitEncryptionType` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `ManagedNamespacesOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + +### Breaking Changes + + - Deleted or renamed model `IpFamily` + +## 40.0.0 (2025-10-10) + +### Features Added + + - Model `ContainerServiceClient` added parameter `cloud_setting` in method `__init__` + - Model `AdvancedNetworkingSecurity` added property `advanced_network_policies` + - Model `AgentPoolSecurityProfile` added property `ssh_access` + - Added enum `AdvancedNetworkPolicies` + - Added enum `AgentPoolSSHAccess` + +### Breaking Changes + + - Deleted or renamed model `CloudErrorBody` + +## 39.1.0 (2025-08-20) + +### Features Added + + - Model `ManagedCluster` added property `kind` + - Enum `ManagedClusterSKUName` added member `AUTOMATIC` + - Enum `OSSKU` added member `AZURE_LINUX3` + +## 39.0.0 (2025-07-21) + +### Features Added + + - Added enum `IpFamily` + +### Breaking Changes + + - This package now only targets the latest Api-Version available on Azure and removes APIs of other Api-Version. After this change, the package can have much smaller size. If your application requires a specific and non-latest Api-Version, it's recommended to pin this package to the previous released version; If your application always only use latest Api-Version, please ignore this change. + - Deleted or renamed client operation group `ContainerServiceClient.container_service` + - Deleted or renamed client operation group `ContainerServiceClient.managed_namespaces` + - Deleted or renamed client operation group `ContainerServiceClient.operation_status_result` + - Deleted or renamed client operation group `ContainerServiceClient.managed_cluster_snapshots` + - Deleted or renamed client operation group `ContainerServiceClient.load_balancers` + - Model `AdvancedNetworkingSecurity` deleted or renamed its instance variable `advanced_network_policies` + - Model `AdvancedNetworkingSecurity` deleted or renamed its instance variable `transit_encryption` + - Model `AgentPool` deleted or renamed its instance variable `enable_custom_ca_trust` + - Model `AgentPool` deleted or renamed its instance variable `node_initialization_taints` + - Model `AgentPool` deleted or renamed its instance variable `artifact_streaming_profile` + - Model `AgentPool` deleted or renamed its instance variable `local_dns_profile` + - Deleted or renamed enum value `AgentPoolMode.MACHINES` + - Deleted or renamed enum value `AgentPoolMode.MANAGED_SYSTEM` + - Model `AgentPoolSecurityProfile` deleted or renamed its instance variable `ssh_access` + - Model `AgentPoolUpgradeProfile` deleted or renamed its instance variable `components_by_releases` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` deleted or renamed its instance variable `is_out_of_support` + - Model `AgentPoolUpgradeSettings` deleted or renamed its instance variable `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` deleted or renamed its instance variable `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` deleted or renamed its instance variable `kube_proxy_config` + - Model `GPUProfile` deleted or renamed its instance variable `driver_type` + - Model `IstioEgressGateway` deleted or renamed its instance variable `name` + - Model `IstioEgressGateway` deleted or renamed its instance variable `namespace` + - Model `IstioEgressGateway` deleted or renamed its instance variable `gateway_configuration_name` + - Model `KubeletConfig` deleted or renamed its instance variable `seccomp_default` + - Model `MachineNetworkProperties` deleted or renamed its instance variable `vnet_subnet_id` + - Model `MachineNetworkProperties` deleted or renamed its instance variable `pod_subnet_id` + - Model `MachineNetworkProperties` deleted or renamed its instance variable `enable_node_public_ip` + - Model `MachineNetworkProperties` deleted or renamed its instance variable `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` deleted or renamed its instance variable `node_public_ip_tags` + - Model `MachineProperties` deleted or renamed its instance variable `hardware` + - Model `MachineProperties` deleted or renamed its instance variable `operating_system` + - Model `MachineProperties` deleted or renamed its instance variable `kubernetes` + - Model `MachineProperties` deleted or renamed its instance variable `mode` + - Model `MachineProperties` deleted or renamed its instance variable `security` + - Model `MachineProperties` deleted or renamed its instance variable `priority` + - Model `MachineProperties` deleted or renamed its instance variable `node_image_version` + - Model `MachineProperties` deleted or renamed its instance variable `provisioning_state` + - Model `MachineProperties` deleted or renamed its instance variable `tags` + - Model `MachineProperties` deleted or renamed its instance variable `e_tag` + - Model `MachineProperties` deleted or renamed its instance variable `status` + - Model `ManagedCluster` deleted or renamed its instance variable `kind` + - Model `ManagedCluster` deleted or renamed its instance variable `creation_data` + - Model `ManagedCluster` deleted or renamed its instance variable `enable_namespace_resources` + - Model `ManagedCluster` deleted or renamed its instance variable `scheduler_profile` + - Model `ManagedClusterAgentPoolProfile` deleted or renamed its instance variable `enable_custom_ca_trust` + - Model `ManagedClusterAgentPoolProfile` deleted or renamed its instance variable `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` deleted or renamed its instance variable `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` deleted or renamed its instance variable `local_dns_profile` + - Model `ManagedClusterAgentPoolProfileProperties` deleted or renamed its instance variable `enable_custom_ca_trust` + - Model `ManagedClusterAgentPoolProfileProperties` deleted or renamed its instance variable `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` deleted or renamed its instance variable `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` deleted or renamed its instance variable `local_dns_profile` + - Model `ManagedClusterAzureMonitorProfile` deleted or renamed its instance variable `container_insights` + - Model `ManagedClusterAzureMonitorProfile` deleted or renamed its instance variable `app_monitoring` + - Model `ManagedClusterHTTPProxyConfig` deleted or renamed its instance variable `effective_no_proxy` + - Model `ManagedClusterHTTPProxyConfig` deleted or renamed its instance variable `enabled` + - Model `ManagedClusterLoadBalancerProfile` deleted or renamed its instance variable `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterPoolUpgradeProfile` deleted or renamed its instance variable `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` deleted or renamed its instance variable `is_out_of_support` + - Deleted or renamed enum value `ManagedClusterSKUName.AUTOMATIC` + - Model `ManagedClusterSecurityProfile` deleted or renamed its instance variable `image_integrity` + - Model `ManagedClusterSecurityProfile` deleted or renamed its instance variable `node_restriction` + - Model `ManagedClusterSecurityProfileDefender` deleted or renamed its instance variable `security_gating` + - Model `ManagedClusterStorageProfileDiskCSIDriver` deleted or renamed its instance variable `version` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` deleted or renamed its instance variable `addon_autoscaling` + - Deleted or renamed enum value `OSSKU.MARINER` + - Deleted or renamed enum value `OSSKU.UBUNTU2404` + - Deleted or renamed enum value `OSSKU.WINDOWS_ANNUAL` + - Deleted or renamed enum value `PublicNetworkAccess.SECURED_BY_PERIMETER` + - Model `ScaleProfile` deleted or renamed its instance variable `autoscale` + - Deleted or renamed enum value `SnapshotType.MANAGED_CLUSTER` + - Deleted or renamed enum value `WorkloadRuntime.KATA_MSHV_VM_ISOLATION` + - Deleted or renamed model `AddonAutoscaling` + - Deleted or renamed model `AdoptionPolicy` + - Deleted or renamed model `AdvancedNetworkPolicies` + - Deleted or renamed model `AdvancedNetworkingSecurityTransitEncryption` + - Deleted or renamed model `AgentPoolArtifactStreamingProfile` + - Deleted or renamed model `AgentPoolSSHAccess` + - Deleted or renamed model `AutoScaleProfile` + - Deleted or renamed model `ClusterServiceLoadBalancerHealthProbeMode` + - Deleted or renamed model `Component` + - Deleted or renamed model `ComponentsByRelease` + - Deleted or renamed model `ContainerServiceNetworkProfileKubeProxyConfig` + - Deleted or renamed model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Deleted or renamed model `DeletePolicy` + - Deleted or renamed model `DriftAction` + - Deleted or renamed model `DriverType` + - Deleted or renamed model `GuardrailsAvailableVersion` + - Deleted or renamed model `GuardrailsAvailableVersionsList` + - Deleted or renamed model `GuardrailsAvailableVersionsProperties` + - Deleted or renamed model `GuardrailsSupport` + - Deleted or renamed model `IPFamily` + - Deleted or renamed model `IpvsScheduler` + - Deleted or renamed model `LabelSelector` + - Deleted or renamed model `LabelSelectorRequirement` + - Deleted or renamed model `LoadBalancer` + - Deleted or renamed model `LocalDNSForwardDestination` + - Deleted or renamed model `LocalDNSForwardPolicy` + - Deleted or renamed model `LocalDNSMode` + - Deleted or renamed model `LocalDNSOverride` + - Deleted or renamed model `LocalDNSProfile` + - Deleted or renamed model `LocalDNSProtocol` + - Deleted or renamed model `LocalDNSQueryLogging` + - Deleted or renamed model `LocalDNSServeStale` + - Deleted or renamed model `LocalDNSState` + - Deleted or renamed model `MachineHardwareProfile` + - Deleted or renamed model `MachineKubernetesProfile` + - Deleted or renamed model `MachineOSProfile` + - Deleted or renamed model `MachineOSProfileLinuxProfile` + - Deleted or renamed model `MachineStatus` + - Deleted or renamed model `ManagedClusterAzureMonitorProfileAppMonitoring` + - Deleted or renamed model `ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation` + - Deleted or renamed model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogs` + - Deleted or renamed model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Deleted or renamed model `ManagedClusterAzureMonitorProfileContainerInsights` + - Deleted or renamed model `ManagedClusterPropertiesForSnapshot` + - Deleted or renamed model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Deleted or renamed model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Deleted or renamed model `ManagedClusterSecurityProfileImageIntegrity` + - Deleted or renamed model `ManagedClusterSecurityProfileNodeRestriction` + - Deleted or renamed model `ManagedClusterSnapshot` + - Deleted or renamed model `ManagedNamespace` + - Deleted or renamed model `Mode` + - Deleted or renamed model `NamespaceProperties` + - Deleted or renamed model `NamespaceProvisioningState` + - Deleted or renamed model `NetworkPolicies` + - Deleted or renamed model `NetworkProfileForSnapshot` + - Deleted or renamed model `NodeImageVersion` + - Deleted or renamed model `OperationStatusResult` + - Deleted or renamed model `OperationStatusResultList` + - Deleted or renamed model `Operator` + - Deleted or renamed model `PodLinkLocalAccess` + - Deleted or renamed model `PolicyRule` + - Deleted or renamed model `RebalanceLoadBalancersRequestBody` + - Deleted or renamed model `ResourceQuota` + - Deleted or renamed model `SafeguardsAvailableVersion` + - Deleted or renamed model `SafeguardsAvailableVersionsList` + - Deleted or renamed model `SafeguardsAvailableVersionsProperties` + - Deleted or renamed model `SafeguardsSupport` + - Deleted or renamed model `SchedulerConfigMode` + - Deleted or renamed model `SchedulerInstanceProfile` + - Deleted or renamed model `SchedulerProfile` + - Deleted or renamed model `SchedulerProfileSchedulerInstanceProfiles` + - Deleted or renamed model `SeccompDefault` + - Deleted or renamed model `TransitEncryptionType` + - Deleted or renamed model `VmState` + - Deleted or renamed method `MachinesOperations.begin_create_or_update` + - Method `ManagedClustersOperations.begin_delete` deleted or renamed its parameter `ignore_pod_disruption_budget` of kind `positional_or_keyword` + - Deleted or renamed method `ManagedClustersOperations.begin_rebalance_load_balancers` + - Deleted or renamed method `ManagedClustersOperations.get_guardrails_versions` + - Deleted or renamed method `ManagedClustersOperations.get_safeguards_versions` + - Deleted or renamed method `ManagedClustersOperations.list_guardrails_versions` + - Deleted or renamed method `ManagedClustersOperations.list_safeguards_versions` + - Deleted or renamed operation group `ContainerServiceOperations` + - Deleted or renamed operation group `LoadBalancersOperations` + - Deleted or renamed operation group `ManagedClusterSnapshotsOperations` + - Deleted or renamed operation group `ManagedNamespacesOperations` + - Deleted or renamed operation group `OperationStatusResultOperations` + +## 38.0.0 (2025-07-15) + +### Features Added + + - Added operation MachinesOperations.begin_create_or_update + - Added operation ManagedClustersOperations.begin_rebalance_load_balancers + - Added operation ManagedClustersOperations.get_guardrails_versions + - Added operation ManagedClustersOperations.get_safeguards_versions + - Added operation ManagedClustersOperations.list_guardrails_versions + - Added operation ManagedClustersOperations.list_safeguards_versions + - Model AdvancedNetworkingSecurity has a new parameter advanced_network_policies + - Model AdvancedNetworkingSecurity has a new parameter transit_encryption + - Model AgentPool has a new parameter artifact_streaming_profile + - Model AgentPool has a new parameter enable_custom_ca_trust + - Model AgentPool has a new parameter local_dns_profile + - Model AgentPool has a new parameter node_initialization_taints + - Model AgentPoolSecurityProfile has a new parameter ssh_access + - Model AgentPoolUpgradeProfile has a new parameter components_by_releases + - Model AgentPoolUpgradeProfilePropertiesUpgradesItem has a new parameter is_out_of_support + - Model AgentPoolUpgradeSettings has a new parameter max_blocked_nodes + - Model ContainerServiceNetworkProfile has a new parameter kube_proxy_config + - Model ContainerServiceNetworkProfile has a new parameter pod_link_local_access + - Model GPUProfile has a new parameter driver_type + - Model IstioEgressGateway has a new parameter gateway_configuration_name + - Model IstioEgressGateway has a new parameter namespace + - Model KubeletConfig has a new parameter seccomp_default + - Model MachineNetworkProperties has a new parameter enable_node_public_ip + - Model MachineNetworkProperties has a new parameter node_public_ip_prefix_id + - Model MachineNetworkProperties has a new parameter node_public_ip_tags + - Model MachineNetworkProperties has a new parameter pod_subnet_id + - Model MachineNetworkProperties has a new parameter vnet_subnet_id + - Model MachineProperties has a new parameter e_tag + - Model MachineProperties has a new parameter hardware + - Model MachineProperties has a new parameter kubernetes + - Model MachineProperties has a new parameter mode + - Model MachineProperties has a new parameter node_image_version + - Model MachineProperties has a new parameter operating_system + - Model MachineProperties has a new parameter priority + - Model MachineProperties has a new parameter provisioning_state + - Model MachineProperties has a new parameter security + - Model MachineProperties has a new parameter status + - Model MachineProperties has a new parameter tags + - Model ManagedCluster has a new parameter ai_toolchain_operator_profile + - Model ManagedCluster has a new parameter creation_data + - Model ManagedCluster has a new parameter enable_namespace_resources + - Model ManagedCluster has a new parameter kind + - Model ManagedCluster has a new parameter node_provisioning_profile + - Model ManagedCluster has a new parameter scheduler_profile + - Model ManagedClusterAgentPoolProfile has a new parameter artifact_streaming_profile + - Model ManagedClusterAgentPoolProfile has a new parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfile has a new parameter local_dns_profile + - Model ManagedClusterAgentPoolProfile has a new parameter node_initialization_taints + - Model ManagedClusterAgentPoolProfileProperties has a new parameter artifact_streaming_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfileProperties has a new parameter local_dns_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter node_initialization_taints + - Model ManagedClusterAzureMonitorProfile has a new parameter app_monitoring + - Model ManagedClusterAzureMonitorProfile has a new parameter container_insights + - Model ManagedClusterHTTPProxyConfig has a new parameter effective_no_proxy + - Model ManagedClusterHTTPProxyConfig has a new parameter enabled + - Model ManagedClusterLoadBalancerProfile has a new parameter cluster_service_load_balancer_health_probe_mode + - Model ManagedClusterPoolUpgradeProfile has a new parameter components_by_releases + - Model ManagedClusterPoolUpgradeProfileUpgradesItem has a new parameter is_out_of_support + - Model ManagedClusterSecurityProfile has a new parameter image_integrity + - Model ManagedClusterSecurityProfile has a new parameter node_restriction + - Model ManagedClusterSecurityProfileDefender has a new parameter security_gating + - Model ManagedClusterStorageProfileDiskCSIDriver has a new parameter version + - Model ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler has a new parameter addon_autoscaling + - Model NamespaceProperties has a new parameter portal_fqdn + - Model ScaleProfile has a new parameter autoscale + - Operation ManagedClustersOperations.begin_delete has a new optional parameter ignore_pod_disruption_budget + +### Breaking Changes + + - Model IstioEgressGateway has a new required parameter name + +## 37.0.0 (2025-06-11) + +### Features Added + + - Added operation group ManagedNamespacesOperations + - Model AgentPool has a new parameter gateway_profile + - Model AgentPool has a new parameter pod_ip_allocation_mode + - Model AgentPool has a new parameter status + - Model AgentPool has a new parameter virtual_machine_nodes_status + - Model AgentPool has a new parameter virtual_machines_profile + - Model ContainerServiceNetworkProfile has a new parameter static_egress_gateway_profile + - Model Machine has a new parameter zones + - Model ManagedCluster has a new parameter status + - Model ManagedClusterAgentPoolProfile has a new parameter gateway_profile + - Model ManagedClusterAgentPoolProfile has a new parameter pod_ip_allocation_mode + - Model ManagedClusterAgentPoolProfile has a new parameter status + - Model ManagedClusterAgentPoolProfile has a new parameter virtual_machine_nodes_status + - Model ManagedClusterAgentPoolProfile has a new parameter virtual_machines_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter gateway_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter pod_ip_allocation_mode + - Model ManagedClusterAgentPoolProfileProperties has a new parameter status + - Model ManagedClusterAgentPoolProfileProperties has a new parameter virtual_machine_nodes_status + - Model ManagedClusterAgentPoolProfileProperties has a new parameter virtual_machines_profile + - Model ManagedClusterNodeProvisioningProfile has a new parameter default_node_pools + +### Breaking Changes + + - Model ScaleProfile no longer has parameter autoscale + - Removed operation group NamespacesOperations + +## 36.0.0 (2025-05-15) + +### Features Added + + - Added operation group NamespacesOperations + - Model AgentPoolUpgradeSettings has a new parameter max_unavailable + - Model AgentPoolUpgradeSettings has a new parameter undrainable_node_behavior + - Model AutoScaleProfile has a new parameter size + - Model ManagedClusterAPIServerAccessProfile has a new parameter enable_vnet_integration + - Model ManagedClusterAPIServerAccessProfile has a new parameter subnet_id + - Model ManualScaleProfile has a new parameter size + +### Breaking Changes + + - Model AutoScaleProfile no longer has parameter os_disk_size_gb + - Model AutoScaleProfile no longer has parameter os_disk_type + - Model AutoScaleProfile no longer has parameter sizes + - Model ManagedCluster no longer has parameter enable_pod_security_policy + - Model ManualScaleProfile no longer has parameter os_disk_size_gb + - Model ManualScaleProfile no longer has parameter os_disk_type + - Model ManualScaleProfile no longer has parameter sizes + +## 35.0.0 (2025-04-14) + +### Features Added + + - Model ManagedClusterIngressProfileWebAppRouting has a new parameter nginx + +### Breaking Changes + + - Model LoadBalancer no longer has parameter name_properties_name + - Operation LoadBalancersOperations.create_or_update has a new required parameter parameters + - Operation LoadBalancersOperations.create_or_update no longer has parameter allow_service_placement + - Operation LoadBalancersOperations.create_or_update no longer has parameter name + - Operation LoadBalancersOperations.create_or_update no longer has parameter node_selector + - Operation LoadBalancersOperations.create_or_update no longer has parameter primary_agent_pool_name + - Operation LoadBalancersOperations.create_or_update no longer has parameter service_label_selector + - Operation LoadBalancersOperations.create_or_update no longer has parameter service_namespace_selector + +## 34.2.0 (2025-03-18) + +### Features Added + + - Added operation group ContainerServiceOperations + - Added operation group LoadBalancersOperations + - Added operation group ManagedClusterSnapshotsOperations + - Added operation group OperationStatusResultOperations + - Model AgentPool has a new parameter gpu_profile + - Model ManagedCluster has a new parameter bootstrap_profile + - Model ManagedClusterAgentPoolProfile has a new parameter gpu_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter gpu_profile + - Model ManagedClusterSecurityProfile has a new parameter custom_ca_trust_certificates + +## 34.1.0 (2025-02-19) + +### Features Added + + - Model AgentPool has a new parameter message_of_the_day + - Model ManagedClusterAgentPoolProfile has a new parameter message_of_the_day + - Model ManagedClusterAgentPoolProfileProperties has a new parameter message_of_the_day + +## 34.0.0 (2025-01-20) + +### Features Added + + - Added operation ContainerServicesOperations.begin_create_or_update + - Added operation ContainerServicesOperations.begin_delete + - Added operation ContainerServicesOperations.get + - Added operation ContainerServicesOperations.list + - Added operation ContainerServicesOperations.list_by_resource_group + - Model NetworkProfile has a new parameter peer_vnet_id + - Model OpenShiftManagedClusterMasterPoolProfile has a new parameter name + - Model OpenShiftManagedClusterMasterPoolProfile has a new parameter os_type + +### Breaking Changes + + - Removed subfolders of some unused Api-Versions for smaller package size. If your application requires a specific and non-latest Api-Version, it's recommended to pin this package to the previous released version; If your application always only use latest Api-Version, please ignore this change. + - Model BaseManagedCluster no longer has parameter power_state + - Model Components1Q1Og48SchemasManagedclusterAllof1 no longer has parameter azure_portal_fqdn + - Model Components1Q1Og48SchemasManagedclusterAllof1 no longer has parameter disable_local_accounts + - Model Components1Q1Og48SchemasManagedclusterAllof1 no longer has parameter fqdn_subdomain + - Model Components1Q1Og48SchemasManagedclusterAllof1 no longer has parameter http_proxy_config + - Model Components1Q1Og48SchemasManagedclusterAllof1 no longer has parameter private_link_resources + - Model NetworkProfile no longer has parameter management_subnet_cidr + - Model OpenShiftManagedCluster no longer has parameter refresh_cluster + - Model OpenShiftManagedClusterMasterPoolProfile no longer has parameter api_properties + - Removed operation ContainerServicesOperations.list_orchestrators + - Removed operation group FleetMembersOperations + - Removed operation group FleetsOperations + - Removed operation group LoadBalancersOperations + - Removed operation group ManagedClusterSnapshotsOperations + - Removed operation group OperationStatusResultOperations + +## 33.0.0 (2024-11-08) + +### Features Added + + - Model AdvancedNetworking has a new parameter enabled + - Model AdvancedNetworkingSecurity has a new parameter enabled + - Model AgentPool has a new parameter e_tag + - Model ContainerServiceNetworkProfile has a new parameter advanced_networking + - Model ManagedCluster has a new parameter e_tag + - Model ManagedCluster has a new parameter node_resource_group_profile + - Model ManagedClusterAgentPoolProfile has a new parameter e_tag + - Model ManagedClusterAgentPoolProfileProperties has a new parameter e_tag + - Operation AgentPoolsOperations.begin_create_or_update has a new optional parameter if_match + - Operation AgentPoolsOperations.begin_create_or_update has a new optional parameter if_none_match + - Operation AgentPoolsOperations.begin_delete has a new optional parameter if_match + - Operation ManagedClustersOperations.begin_create_or_update has a new optional parameter if_match + - Operation ManagedClustersOperations.begin_create_or_update has a new optional parameter if_none_match + - Operation ManagedClustersOperations.begin_delete has a new optional parameter if_match + - Operation ManagedClustersOperations.begin_update_tags has a new optional parameter if_match + +### Breaking Changes + + - Model AdvancedNetworkingObservability no longer has parameter tls_management + - Model AdvancedNetworkingSecurity no longer has parameter fqdn_policy + +## 32.1.0 (2024-10-11) + +### Features Added + + - Model AgentPoolGPUProfile has a new parameter driver_type + - Operation AgentPoolsOperations.begin_delete has a new optional parameter ignore_pod_disruption_budget + +## 32.0.0 (2024-09-12) + +### Features Added + + - Added operation AgentPoolsOperations.begin_delete_machines + - Model AdvancedNetworking has a new parameter security + - Model AdvancedNetworkingObservability has a new parameter tls_management + - Model AgentPool has a new parameter security_profile + - Model ManagedClusterAgentPoolProfile has a new parameter security_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter security_profile + +### Breaking Changes + + - Model AgentPoolSecurityProfile no longer has parameter ssh_access + +## 31.0.0 (2024-07-18) + +### Features Added + + - Added operation group LoadBalancersOperations + - Model ManagedClusterAzureMonitorProfileAppMonitoring has a new parameter auto_instrumentation + - Model ManagedClusterAzureMonitorProfileAppMonitoring has a new parameter open_telemetry_logs + - Model ManagedClusterAzureMonitorProfileAppMonitoring has a new parameter open_telemetry_metrics + - Model ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics has a new parameter port + - Model ManagedClusterAzureMonitorProfileContainerInsights has a new parameter disable_custom_metrics + - Model ManagedClusterAzureMonitorProfileContainerInsights has a new parameter disable_prometheus_metrics_scraping + - Model ManagedClusterAzureMonitorProfileContainerInsights has a new parameter syslog_port + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter daemonset_eviction_for_empty_nodes + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter daemonset_eviction_for_occupied_nodes + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter ignore_daemonsets_utilization + - Model ScaleProfile has a new parameter autoscale + +### Breaking Changes + + - Model ManagedClusterAzureMonitorProfileAppMonitoring no longer has parameter enabled + - Model ManagedClusterAzureMonitorProfileContainerInsights no longer has parameter windows_host_logs + - Removed operation ManagedClustersOperations.get_os_options + +## 30.0.0 (2024-04-22) + +### Features Added + + - Model AgentPool has a new parameter windows_profile + - Model KubernetesVersion has a new parameter is_default + - Model ManagedCluster has a new parameter metrics_profile + - Model ManagedClusterAgentPoolProfile has a new parameter windows_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter windows_profile + +### Breaking Changes + + - Model IstioEgressGateway no longer has parameter node_selector + +## 29.1.0 (2024-02-20) + +### Features Added + + - Model AgentPoolSecurityProfile has a new parameter enable_secure_boot + - Model AgentPoolSecurityProfile has a new parameter enable_vtpm + - Model ManagedCluster has a new parameter ingress_profile + +## 29.0.0 (2024-01-22) + +### Breaking Changes + + - Model AgentPool no longer has parameter artifact_streaming_profile + - Model AgentPool no longer has parameter enable_custom_ca_trust + - Model AgentPool no longer has parameter gpu_profile + - Model AgentPool no longer has parameter message_of_the_day + - Model AgentPool no longer has parameter node_initialization_taints + - Model AgentPool no longer has parameter security_profile + - Model AgentPool no longer has parameter virtual_machine_nodes_status + - Model AgentPool no longer has parameter virtual_machines_profile + - Model AgentPool no longer has parameter windows_profile + - Model ContainerServiceNetworkProfile no longer has parameter kube_proxy_config + - Model ContainerServiceNetworkProfile no longer has parameter monitoring + - Model ManagedCluster no longer has parameter ai_toolchain_operator_profile + - Model ManagedCluster no longer has parameter creation_data + - Model ManagedCluster no longer has parameter enable_namespace_resources + - Model ManagedCluster no longer has parameter guardrails_profile + - Model ManagedCluster no longer has parameter ingress_profile + - Model ManagedCluster no longer has parameter metrics_profile + - Model ManagedCluster no longer has parameter node_provisioning_profile + - Model ManagedCluster no longer has parameter node_resource_group_profile + - Model ManagedClusterAPIServerAccessProfile no longer has parameter enable_vnet_integration + - Model ManagedClusterAPIServerAccessProfile no longer has parameter subnet_id + - Model ManagedClusterAgentPoolProfile no longer has parameter artifact_streaming_profile + - Model ManagedClusterAgentPoolProfile no longer has parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfile no longer has parameter gpu_profile + - Model ManagedClusterAgentPoolProfile no longer has parameter message_of_the_day + - Model ManagedClusterAgentPoolProfile no longer has parameter node_initialization_taints + - Model ManagedClusterAgentPoolProfile no longer has parameter security_profile + - Model ManagedClusterAgentPoolProfile no longer has parameter virtual_machine_nodes_status + - Model ManagedClusterAgentPoolProfile no longer has parameter virtual_machines_profile + - Model ManagedClusterAgentPoolProfile no longer has parameter windows_profile + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter artifact_streaming_profile + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter gpu_profile + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter message_of_the_day + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter node_initialization_taints + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter security_profile + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter virtual_machine_nodes_status + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter virtual_machines_profile + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter windows_profile + - Model ManagedClusterAzureMonitorProfile no longer has parameter logs + - Model ManagedClusterAzureMonitorProfileMetrics no longer has parameter app_monitoring_open_telemetry_metrics + - Model ManagedClusterHTTPProxyConfig no longer has parameter effective_no_proxy + - Model ManagedClusterPropertiesAutoScalerProfile no longer has parameter daemonset_eviction_for_empty_nodes + - Model ManagedClusterPropertiesAutoScalerProfile no longer has parameter daemonset_eviction_for_occupied_nodes + - Model ManagedClusterPropertiesAutoScalerProfile no longer has parameter ignore_daemonsets_utilization + - Model ManagedClusterSecurityProfile no longer has parameter custom_ca_trust_certificates + - Model ManagedClusterSecurityProfile no longer has parameter image_integrity + - Model ManagedClusterSecurityProfile no longer has parameter node_restriction + - Model ManagedClusterStorageProfileDiskCSIDriver no longer has parameter version + - Model ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler no longer has parameter addon_autoscaling + - Operation AgentPoolsOperations.begin_delete no longer has parameter ignore_pod_disruption_budget + - Operation ManagedClustersOperations.begin_delete no longer has parameter ignore_pod_disruption_budget + - Removed operation AgentPoolsOperations.begin_delete_machines + - Removed operation ManagedClustersOperations.get_guardrails_versions + - Removed operation ManagedClustersOperations.list_guardrails_versions + +## 28.0.0 (2023-11-20) + +### Features Added + + - Added operation AgentPoolsOperations.begin_delete_machines + - Added operation ManagedClustersOperations.get_guardrails_versions + - Added operation ManagedClustersOperations.list_guardrails_versions + - Added operation group OperationStatusResultOperations + - Model AgentPool has a new parameter artifact_streaming_profile + - Model AgentPool has a new parameter capacity_reservation_group_id + - Model AgentPool has a new parameter enable_custom_ca_trust + - Model AgentPool has a new parameter gpu_profile + - Model AgentPool has a new parameter message_of_the_day + - Model AgentPool has a new parameter network_profile + - Model AgentPool has a new parameter node_initialization_taints + - Model AgentPool has a new parameter security_profile + - Model AgentPool has a new parameter virtual_machine_nodes_status + - Model AgentPool has a new parameter virtual_machines_profile + - Model AgentPool has a new parameter windows_profile + - Model AgentPoolUpgradeSettings has a new parameter node_soak_duration_in_minutes + - Model ContainerServiceNetworkProfile has a new parameter kube_proxy_config + - Model ContainerServiceNetworkProfile has a new parameter monitoring + - Model ManagedCluster has a new parameter ai_toolchain_operator_profile + - Model ManagedCluster has a new parameter creation_data + - Model ManagedCluster has a new parameter enable_namespace_resources + - Model ManagedCluster has a new parameter guardrails_profile + - Model ManagedCluster has a new parameter ingress_profile + - Model ManagedCluster has a new parameter metrics_profile + - Model ManagedCluster has a new parameter node_provisioning_profile + - Model ManagedCluster has a new parameter node_resource_group_profile + - Model ManagedClusterAPIServerAccessProfile has a new parameter enable_vnet_integration + - Model ManagedClusterAPIServerAccessProfile has a new parameter subnet_id + - Model ManagedClusterAgentPoolProfile has a new parameter artifact_streaming_profile + - Model ManagedClusterAgentPoolProfile has a new parameter capacity_reservation_group_id + - Model ManagedClusterAgentPoolProfile has a new parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfile has a new parameter gpu_profile + - Model ManagedClusterAgentPoolProfile has a new parameter message_of_the_day + - Model ManagedClusterAgentPoolProfile has a new parameter network_profile + - Model ManagedClusterAgentPoolProfile has a new parameter node_initialization_taints + - Model ManagedClusterAgentPoolProfile has a new parameter security_profile + - Model ManagedClusterAgentPoolProfile has a new parameter virtual_machine_nodes_status + - Model ManagedClusterAgentPoolProfile has a new parameter virtual_machines_profile + - Model ManagedClusterAgentPoolProfile has a new parameter windows_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter artifact_streaming_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter capacity_reservation_group_id + - Model ManagedClusterAgentPoolProfileProperties has a new parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfileProperties has a new parameter gpu_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter message_of_the_day + - Model ManagedClusterAgentPoolProfileProperties has a new parameter network_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter node_initialization_taints + - Model ManagedClusterAgentPoolProfileProperties has a new parameter security_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter virtual_machine_nodes_status + - Model ManagedClusterAgentPoolProfileProperties has a new parameter virtual_machines_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter windows_profile + - Model ManagedClusterAzureMonitorProfile has a new parameter logs + - Model ManagedClusterAzureMonitorProfileMetrics has a new parameter app_monitoring_open_telemetry_metrics + - Model ManagedClusterHTTPProxyConfig has a new parameter effective_no_proxy + - Model ManagedClusterLoadBalancerProfile has a new parameter backend_pool_type + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter daemonset_eviction_for_empty_nodes + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter daemonset_eviction_for_occupied_nodes + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter ignore_daemonsets_utilization + - Model ManagedClusterSecurityProfile has a new parameter custom_ca_trust_certificates + - Model ManagedClusterSecurityProfile has a new parameter image_integrity + - Model ManagedClusterSecurityProfile has a new parameter node_restriction + - Model ManagedClusterStorageProfileDiskCSIDriver has a new parameter version + - Model ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler has a new parameter addon_autoscaling + - Operation AgentPoolsOperations.begin_delete has a new optional parameter ignore_pod_disruption_budget + - Operation ManagedClustersOperations.begin_delete has a new optional parameter ignore_pod_disruption_budget + +### Breaking Changes + + - Renamed operation TrustedAccessRoleBindingsOperations.create_or_update to TrustedAccessRoleBindingsOperations.begin_create_or_update + - Renamed operation TrustedAccessRoleBindingsOperations.delete to TrustedAccessRoleBindingsOperations.begin_delete + +## 27.0.0 (2023-10-23) + +### Features Added + + - Added operation ManagedClustersOperations.get_mesh_revision_profile + - Added operation ManagedClustersOperations.get_mesh_upgrade_profile + - Added operation ManagedClustersOperations.list_mesh_revision_profiles + - Added operation ManagedClustersOperations.list_mesh_upgrade_profiles + - Added operation group MachinesOperations + - Model IstioComponents has a new parameter egress_gateways + - Model ManagedCluster has a new parameter resource_uid + - Model ManagedCluster has a new parameter service_mesh_profile + - Model ManagedClusterIngressProfileWebAppRouting has a new parameter dns_zone_resource_ids + +### Breaking Changes + + - Model ManagedClusterIngressProfileWebAppRouting no longer has parameter dns_zone_resource_id + +## 26.0.0 (2023-08-18) + +### Features Added + + - Model IstioServiceMesh has a new parameter certificate_authority + - Model IstioServiceMesh has a new parameter revisions + - Model ManagedCluster has a new parameter upgrade_settings + - Model UpgradeOverrideSettings has a new parameter force_upgrade + +### Breaking Changes + + - Model UpgradeOverrideSettings no longer has parameter control_plane_overrides + +## 25.0.0 (2023-07-26) + +### Features Added + + - Model AgentPoolUpgradeSettings has a new parameter drain_timeout_in_minutes + - Model ManagedClusterIdentity has a new parameter delegated_resources + +### Breaking Changes + + - Model AgentPool no longer has parameter capacity_reservation_group_id + - Model AgentPool no longer has parameter enable_custom_ca_trust + - Model AgentPool no longer has parameter message_of_the_day + - Model AgentPool no longer has parameter network_profile + - Model AgentPool no longer has parameter windows_profile + - Model ContainerServiceNetworkProfile no longer has parameter kube_proxy_config + - Model ContainerServiceNetworkProfile no longer has parameter monitoring + - Model ManagedCluster no longer has parameter creation_data + - Model ManagedCluster no longer has parameter enable_namespace_resources + - Model ManagedCluster no longer has parameter guardrails_profile + - Model ManagedCluster no longer has parameter ingress_profile + - Model ManagedCluster no longer has parameter node_resource_group_profile + - Model ManagedCluster no longer has parameter service_mesh_profile + - Model ManagedCluster no longer has parameter upgrade_settings + - Model ManagedClusterAPIServerAccessProfile no longer has parameter enable_vnet_integration + - Model ManagedClusterAPIServerAccessProfile no longer has parameter subnet_id + - Model ManagedClusterAgentPoolProfile no longer has parameter capacity_reservation_group_id + - Model ManagedClusterAgentPoolProfile no longer has parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfile no longer has parameter message_of_the_day + - Model ManagedClusterAgentPoolProfile no longer has parameter network_profile + - Model ManagedClusterAgentPoolProfile no longer has parameter windows_profile + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter capacity_reservation_group_id + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter message_of_the_day + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter network_profile + - Model ManagedClusterAgentPoolProfileProperties no longer has parameter windows_profile + - Model ManagedClusterHTTPProxyConfig no longer has parameter effective_no_proxy + - Model ManagedClusterLoadBalancerProfile no longer has parameter backend_pool_type + - Model ManagedClusterSecurityProfile no longer has parameter custom_ca_trust_certificates + - Model ManagedClusterSecurityProfile no longer has parameter node_restriction + - Model ManagedClusterStorageProfileDiskCSIDriver no longer has parameter version + - Model ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler no longer has parameter controlled_values + - Model ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler no longer has parameter update_mode + - Operation AgentPoolsOperations.begin_delete no longer has parameter ignore_pod_disruption_budget + - Operation ManagedClustersOperations.begin_delete no longer has parameter ignore_pod_disruption_budget + +## 24.0.0 (2023-06-21) + +### Features Added + + - Model ContainerServiceNetworkProfile has a new parameter monitoring + - Model OrchestratorProfile has a new parameter is_preview + +### Breaking Changes + + - Removed operation ContainerServicesOperations.begin_create_or_update + - Removed operation ContainerServicesOperations.begin_delete + - Removed operation ContainerServicesOperations.get + - Removed operation ContainerServicesOperations.list + - Removed operation ContainerServicesOperations.list_by_resource_group + +## 23.0.0 (2023-05-16) + +### Breaking Changes + + - Model ContainerServiceNetworkProfile no longer has parameter docker_bridge_cidr + +## 22.1.0 (2023-04-19) + +### Features Added + + - Added operation ManagedClustersOperations.list_kubernetes_versions + - Model ManagedCluster has a new parameter support_plan + +## 22.0.0 (2023-03-23) + +### Features Added + + - Model ContainerServiceNetworkProfile has a new parameter network_dataplane + - Model ManagedCluster has a new parameter service_mesh_profile + - Model ManagedClusterIngressProfileWebAppRouting has a new parameter identity + +### Breaking Changes + + - Model ContainerServiceNetworkProfile no longer has parameter ebpf_dataplane + +## 21.2.0 (2023-02-20) + +### Features Added + + - Model ManagedCluster has a new parameter upgrade_settings + +## 21.1.0 (2022-12-30) + +### Features Added + + - Model ManagedCluster has a new parameter node_resource_group_profile + +## 21.0.0 (2022-12-15) + +### Features Added + + - Model MaintenanceConfiguration has a new parameter maintenance_window + - Model ManagedClusterAutoUpgradeProfile has a new parameter node_os_upgrade_channel + +### Breaking Changes + + - Renamed operation AgentPoolsOperations.abort_latest_operation to AgentPoolsOperations.begin_abort_latest_operation + - Renamed operation ManagedClustersOperations.abort_latest_operation to ManagedClustersOperations.begin_abort_latest_operation + +## 20.7.0 (2022-11-09) + +### Features Added + + - Add new api-version `2022-09-02-preview` for operation group `fleets` + +## 20.6.0 (2022-10-25) + +### Features Added + + - Model AgentPoolNetworkProfile has a new parameter allowed_host_ports + - Model AgentPoolNetworkProfile has a new parameter application_security_groups + - Model ContainerServiceNetworkProfile has a new parameter ebpf_dataplane + - Model ManagedClusterSecurityProfile has a new parameter custom_ca_trust_certificates + +## 20.5.0 (2022-10-18) + +### Features Added + + - Model AgentPool has a new parameter network_profile + - Model ManagedClusterAgentPoolProfile has a new parameter network_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter network_profile + +## 20.4.0 (2022-09-20) + +### Features Added + + - Model AgentPool has a new parameter windows_profile + - Model ContainerServiceNetworkProfile has a new parameter kube_proxy_config + - Model ManagedCluster has a new parameter guardrails_profile + - Model ManagedClusterAgentPoolProfile has a new parameter windows_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter windows_profile + - Model ManagedClusterLoadBalancerProfile has a new parameter backend_pool_type + +## 20.3.0 (2022-08-26) + +### Features Added + + - Added operation AgentPoolsOperations.abort_latest_operation + - Added operation ManagedClustersOperations.abort_latest_operation + - Model ManagedCluster has a new parameter azure_monitor_profile + - Model ManagedClusterSecurityProfile has a new parameter image_cleaner + - Model ManagedClusterWorkloadAutoScalerProfile has a new parameter vertical_pod_autoscaler + +## 20.2.0 (2022-07-25) + +**Features** + + - Add a new api-version `2022-06-01` + +## 20.1.0 (2022-07-21) + +**Features** + + - Added operation group FleetMembersOperations + - Added operation group FleetsOperations + - Model ManagedClusterSecurityProfile has a new parameter node_restriction + +## 20.0.0 (2022-06-09) + +**Features** + + - Model AzureKeyVaultKms has a new parameter key_vault_network_access + - Model AzureKeyVaultKms has a new parameter key_vault_resource_id + - Model ManagedCluster has a new parameter workload_auto_scaler_profile + - Model ManagedClusterSecurityProfile has a new parameter defender + - Model ManagedClusterStorageProfile has a new parameter blob_csi_driver + +**Breaking changes** + + - Model ManagedClusterSecurityProfile no longer has parameter azure_defender + +## 19.1.0 (2022-05-13) + +**Features** + + - Added operation group TrustedAccessRoleBindingsOperations + - Added operation group TrustedAccessRolesOperations + - Model AgentPool has a new parameter enable_custom_ca_trust + - Model ContainerServiceNetworkProfile has a new parameter network_plugin_mode + - Model ManagedCluster has a new parameter storage_profile + - Model ManagedClusterAPIServerAccessProfile has a new parameter enable_vnet_integration + - Model ManagedClusterAPIServerAccessProfile has a new parameter subnet_id + - Model ManagedClusterAgentPoolProfile has a new parameter enable_custom_ca_trust + - Model ManagedClusterAgentPoolProfileProperties has a new parameter enable_custom_ca_trust + - Model NetworkProfileForSnapshot has a new parameter network_plugin_mode + +## 19.0.0 (2022-04-15) + +**Features** + + - Added operation ManagedClustersOperations.begin_rotate_service_account_signing_keys + - Model AgentPool has a new parameter current_orchestrator_version + - Model ManagedCluster has a new parameter creation_data + - Model ManagedCluster has a new parameter ingress_profile + - Model ManagedClusterAgentPoolProfile has a new parameter current_orchestrator_version + - Model ManagedClusterAgentPoolProfileProperties has a new parameter current_orchestrator_version + - Model ManagedClusterHTTPProxyConfig has a new parameter effective_no_proxy + - Model ManagedClusterSecurityProfile has a new parameter workload_identity + +**Breaking changes** + + - Model Resource no longer has parameter location + - Model Resource no longer has parameter tags + - Operation AgentPoolsOperations.begin_delete has a new parameter ignore_pod_disruption_budget + - Operation ManagedClustersOperations.begin_delete has a new parameter ignore_pod_disruption_budget + +## 18.0.0 (2022-03-23) + +**Features** + + - Added operation group ManagedClusterSnapshotsOperations + - Model ManagedCluster has a new parameter system_data + - Model ManagedClusterAccessProfile has a new parameter system_data + - Model ManagedClusterSecurityProfile has a new parameter azure_key_vault_kms + - Model Resource has a new parameter system_data + +**Breaking changes** + + - Operation ManagedClustersOperations.list_cluster_admin_credentials has a new signature + - Operation ManagedClustersOperations.list_cluster_user_credentials has a new signature + +## 17.0.0 (2022-02-21) + +**Features** + + - Model AgentPool has a new parameter capacity_reservation_group_id + - Model AgentPool has a new parameter host_group_id + - Model AgentPool has a new parameter message_of_the_day + - Model ManagedCluster has a new parameter current_kubernetes_version + - Model ManagedCluster has a new parameter enable_namespace_resources + - Model ManagedCluster has a new parameter oidc_issuer_profile + - Model ManagedClusterAgentPoolProfile has a new parameter capacity_reservation_group_id + - Model ManagedClusterAgentPoolProfile has a new parameter host_group_id + - Model ManagedClusterAgentPoolProfile has a new parameter message_of_the_day + - Model ManagedClusterAgentPoolProfileProperties has a new parameter capacity_reservation_group_id + - Model ManagedClusterAgentPoolProfileProperties has a new parameter host_group_id + - Model ManagedClusterAgentPoolProfileProperties has a new parameter message_of_the_day + +**Breaking changes** + + - Operation ManagedClustersOperations.list_cluster_admin_credentials has a new signature + +## 16.4.0 (2021-11-25) + +**Features** + + - Model ContainerServiceNetworkProfile has a new parameter service_cidrs + - Model ContainerServiceNetworkProfile has a new parameter pod_cidrs + - Model ContainerServiceNetworkProfile has a new parameter ip_families + - Model ManagedClusterLoadBalancerProfileManagedOutboundIPs has a new parameter count_ipv6 + +## 16.3.0 (2021-10-18) + +**Features** + + - Model ManagedClusterWindowsProfile has a new parameter gmsa_profile + - Model Snapshot has a new parameter vm_size + - Model Snapshot has a new parameter os_type + - Model Snapshot has a new parameter os_sku + - Model Snapshot has a new parameter kubernetes_version + - Model Snapshot has a new parameter node_image_version + - Model Snapshot has a new parameter enable_fips + +## 16.2.0 (2021-09-09) + +**Features** + + - Model ManagedClusterAgentPoolProfileProperties has a new parameter creation_data + - Model ManagedClusterAgentPoolProfileProperties has a new parameter workload_runtime + - Model ManagedClusterLoadBalancerProfile has a new parameter enable_multiple_standard_load_balancers + - Model ManagedClusterAgentPoolProfile has a new parameter creation_data + - Model ManagedClusterAgentPoolProfile has a new parameter workload_runtime + - Model ManagedCluster has a new parameter public_network_access + - Model ManagedClusterAPIServerAccessProfile has a new parameter disable_run_command + - Model AgentPool has a new parameter creation_data + - Model AgentPool has a new parameter workload_runtime + - Added operation group SnapshotsOperations + +## 16.1.0 (2021-08-06) + +**Features** + + - Model ManagedClusterAgentPoolProfile has a new parameter scale_down_mode + - Model ContainerServiceNetworkProfile has a new parameter nat_gateway_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter scale_down_mode + - Model ManagedCluster has a new parameter security_profile + - Model AgentPool has a new parameter scale_down_mode + +## 16.0.0 (2021-06-17) + +**Features** + + - Model ManagedClusterAgentPoolProfile has a new parameter enable_ultra_ssd + - Model ManagedClusterAPIServerAccessProfile has a new parameter enable_private_cluster_public_fqdn + - Model AgentPool has a new parameter enable_ultra_ssd + - Model ManagedClusterAgentPoolProfileProperties has a new parameter enable_ultra_ssd + - Added operation ManagedClustersOperations.list_outbound_network_dependencies_endpoints + +**Breaking changes** + + - Operation ManagedClustersOperations.list_cluster_admin_credentials has a new signature + - Operation ManagedClustersOperations.list_cluster_monitoring_user_credentials has a new signature + - Operation ManagedClustersOperations.list_cluster_user_credentials has a new signature + +## 15.1.0 (2021-04-07) + +**Features** + + - Model Components1Q1Og48SchemasManagedclusterAllof1 has a new parameter private_link_resources + - Model Components1Q1Og48SchemasManagedclusterAllof1 has a new parameter disable_local_accounts + - Model Components1Q1Og48SchemasManagedclusterAllof1 has a new parameter http_proxy_config + - Model ManagedClusterPodIdentity has a new parameter binding_selector + - Model ManagedClusterAgentPoolProfileProperties has a new parameter gpu_instance_profile + - Model ManagedClusterAgentPoolProfileProperties has a new parameter enable_fips + - Model ManagedClusterAgentPoolProfileProperties has a new parameter os_sku + - Model AgentPool has a new parameter gpu_instance_profile + - Model AgentPool has a new parameter enable_fips + - Model AgentPool has a new parameter os_sku + - Model ManagedCluster has a new parameter extended_location + - Model ManagedCluster has a new parameter private_link_resources + - Model ManagedCluster has a new parameter disable_local_accounts + - Model ManagedCluster has a new parameter http_proxy_config + - Model ManagedClusterAgentPoolProfile has a new parameter gpu_instance_profile + - Model ManagedClusterAgentPoolProfile has a new parameter enable_fips + - Model ManagedClusterAgentPoolProfile has a new parameter os_sku + - Model ManagedClusterWindowsProfile has a new parameter enable_csi_proxy + - Added operation ManagedClustersOperations.get_command_result + - Added operation ManagedClustersOperations.begin_run_command + - Added operation ManagedClustersOperations.get_os_options + +## 15.0.0 (2021-03-03) + +**Features** + + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter max_node_provision_time + - Model ManagedClusterPodIdentityProfile has a new parameter allow_network_plugin_kubenet + - Model KubeletConfig has a new parameter container_log_max_size_mb + - Model KubeletConfig has a new parameter pod_max_pids + - Model KubeletConfig has a new parameter container_log_max_files + - Model SysctlConfig has a new parameter net_core_rmem_default + - Model SysctlConfig has a new parameter net_core_wmem_default + - Model Components1Q1Og48SchemasManagedclusterAllof1 has a new parameter azure_portal_fqdn + - Model Components1Q1Og48SchemasManagedclusterAllof1 has a new parameter fqdn_subdomain + - Model ManagedCluster has a new parameter azure_portal_fqdn + - Model ManagedCluster has a new parameter fqdn_subdomain + - Model ManagedClusterAgentPoolProfile has a new parameter kubelet_disk_type + - Model ManagedClusterAgentPoolProfile has a new parameter enable_encryption_at_host + - Model ManagedClusterAgentPoolProfile has a new parameter node_public_ip_prefix_id + - Model ManagedClusterAgentPoolProfileProperties has a new parameter kubelet_disk_type + - Model ManagedClusterAgentPoolProfileProperties has a new parameter enable_encryption_at_host + - Model ManagedClusterAgentPoolProfileProperties has a new parameter node_public_ip_prefix_id + - Model AgentPool has a new parameter kubelet_disk_type + - Model AgentPool has a new parameter enable_encryption_at_host + - Model AgentPool has a new parameter node_public_ip_prefix_id + - Added operation group MaintenanceConfigurationsOperations + +**Breaking changes** + + - Model SysctlConfig no longer has parameter net_ipv4_tcp_rmem + - Model SysctlConfig no longer has parameter net_ipv4_tcp_wmem + +## 14.0.0 (2020-11-23) + +**Features** + + - Model ManagedCluster has a new parameter pod_identity_profile + - Model ManagedCluster has a new parameter auto_upgrade_profile + - Model ManagedClusterAgentPoolProfile has a new parameter linux_os_config + - Model ManagedClusterAgentPoolProfile has a new parameter kubelet_config + - Model ManagedClusterAgentPoolProfile has a new parameter pod_subnet_id + - Model ManagedClusterAgentPoolProfileProperties has a new parameter linux_os_config + - Model ManagedClusterAgentPoolProfileProperties has a new parameter kubelet_config + - Model ManagedClusterAgentPoolProfileProperties has a new parameter pod_subnet_id + - Model ManagedClusterAPIServerAccessProfile has a new parameter private_dns_zone + - Model AgentPool has a new parameter linux_os_config + - Model AgentPool has a new parameter kubelet_config + - Model AgentPool has a new parameter pod_subnet_id + +## 14.0.0b1 (2020-10-23) + +This is beta preview version. +For detailed changelog please refer to equivalent stable version 9.4.0 (https://pypi.org/project/azure-mgmt-containerservice/9.4.0/) + +This version uses a next-generation code generator that introduces important breaking changes, but also important new features (like unified authentication and async programming). + +**General breaking changes** + +- Credential system has been completly revamped: + + - `azure.common.credentials` or `msrestazure.azure_active_directory` instances are no longer supported, use the `azure-identity` classes instead: https://pypi.org/project/azure-identity/ + - `credentials` parameter has been renamed `credential` + +- The `config` attribute no longer exists on a client, configuration should be passed as kwarg. Example: `MyClient(credential, subscription_id, enable_logging=True)`. For a complete set of + supported options, see the [parameters accept in init documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) +- You can't import a `version` module anymore, use `__version__` instead +- Operations that used to return a `msrest.polling.LROPoller` now returns a `azure.core.polling.LROPoller` and are prefixed with `begin_`. +- Exceptions tree have been simplified and most exceptions are now `azure.core.exceptions.HttpResponseError` (`CloudError` has been removed). +- Most of the operation kwarg have changed. Some of the most noticeable: + + - `raw` has been removed. Equivalent feature can be found using `cls`, a callback that will give access to internal HTTP response for advanced user + - For a complete set of supported options, see the [parameters accept in Request documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) + +**General new features** + +- Type annotations support using `typing`. SDKs are mypy ready. +- This client has now stable and official support for async. Check the `aio` namespace of your package to find the async client. +- This client now support natively tracing library like OpenCensus or OpenTelemetry. See this [tracing quickstart](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core-tracing-opentelemetry) for an overview. + + +## 9.4.0 (2020-09-11) + +**Features** + + - Model ManagedClusterAgentPoolProfile has a new parameter power_state + - Model ManagedClusterAgentPoolProfile has a new parameter os_disk_type + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter max_empty_bulk_delete + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter skip_nodes_with_local_storage + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter max_total_unready_percentage + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter ok_total_unready_count + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter expander + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter skip_nodes_with_system_pods + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter new_pod_scale_up_delay + - Model AgentPool has a new parameter power_state + - Model AgentPool has a new parameter os_disk_type + - Model ManagedClusterAgentPoolProfileProperties has a new parameter power_state + - Model ManagedClusterAgentPoolProfileProperties has a new parameter os_disk_type + - Model ManagedCluster has a new parameter power_state + - Added operation ManagedClustersOperations.start + - Added operation ManagedClustersOperations.stop + - Added operation group ResolvePrivateLinkServiceIdOperations + - Added operation group PrivateLinkResourcesOperations + +## 9.3.0 (2020-08-24) + +**Features** + + - Model ManagedClusterWindowsProfile has a new parameter license_type + - Added operation ManagedClustersOperations.upgrade_node_image_version + +## 9.2.0 (2020-06-24) + +**Features** + + - Model ManagedClusterIdentity has a new parameter user_assigned_identities + - Model ManagedClusterAADProfile has a new parameter enable_azure_rbac + - Model ManagedClusterAgentPoolProfile has a new parameter proximity_placement_group_id + - Model ManagedClusterAgentPoolProfileProperties has a new parameter proximity_placement_group_id + - Model AgentPool has a new parameter proximity_placement_group_id + - Added operation group PrivateEndpointConnectionsOperations + +## 9.1.0 (2020-06-03) + +**Features** + + - Model AgentPool has a new parameter node_image_version + - Model AgentPool has a new parameter upgrade_settings + - Model AgentPoolUpgradeProfile has a new parameter latest_node_image_version + - Model ManagedClusterAgentPoolProfile has a new parameter node_image_version + - Model ManagedClusterAgentPoolProfile has a new parameter upgrade_settings + - Model ManagedClusterAgentPoolProfileProperties has a new parameter node_image_version + - Model ManagedClusterAgentPoolProfileProperties has a new parameter upgrade_settings + +## 9.0.1 (2020-04-09) + +**Bugfixes** + + - Switch field type to string to avoid unmarshal errors + +## 9.0.0 (2020-03-24) + +**Features** + + - Model ManagedClusterAgentPoolProfile has a new parameter mode + - Model ManagedCluster has a new parameter sku + - Model OpenShiftManagedCluster has a new parameter refresh_cluster + - Model ManagedClusterAADProfile has a new parameter admin_group_object_ids + - Model ManagedClusterAADProfile has a new parameter managed + - Model ManagedClusterAgentPoolProfileProperties has a new parameter mode + - Model OpenShiftManagedClusterMasterPoolProfile has a new parameter api_properties + - Model ManagedClusterPropertiesAutoScalerProfile has a new parameter balance_similar_node_groups + - Model NetworkProfile has a new parameter management_subnet_cidr + - Model AgentPool has a new parameter mode + +**Breaking changes** + + - Model OpenShiftManagedClusterMasterPoolProfile no longer has parameter name + - Model OpenShiftManagedClusterMasterPoolProfile no longer has parameter os_type + - Model NetworkProfile no longer has parameter peer_vnet_id + +## 8.3.0 (2020-02-14) + +**Features** + + - Model ManagedCluster has a new parameter auto_scaler_profile + - Model ManagedClusterAgentPoolProfile has a new parameter spot_max_price + - Model AgentPool has a new parameter spot_max_price + - Model ManagedClusterAgentPoolProfileProperties has a new parameter spot_max_price + - Model ContainerServiceNetworkProfile has a new parameter network_mode + - Added operation ManagedClustersOperations.list_cluster_monitoring_user_credentials + +## 8.2.0 (2020-01-07) + +**Features** + + - Model ManagedCluster has a new parameter disk_encryption_set_id + +## 8.1.0 (2019-12-16) + +**Features** + + - Model ContainerServiceNetworkProfile has a new parameter + outbound_type + - Model ManagedClusterAgentPoolProfile has a new parameter + node_labels + - Model ManagedClusterAgentPoolProfile has a new parameter tags + - Model ManagedCluster has a new parameter identity_profile + - Model ManagedClusterLoadBalancerProfile has a new parameter + idle_timeout_in_minutes + - Model ManagedClusterLoadBalancerProfile has a new parameter + allocated_outbound_ports + - Model AgentPool has a new parameter node_labels + - Model AgentPool has a new parameter tags + - Model ManagedClusterAddonProfile has a new parameter identity + - Model ManagedClusterAgentPoolProfileProperties has a new parameter + node_labels + - Model ManagedClusterAgentPoolProfileProperties has a new parameter + tags + +## 8.0.0 (2019-10-24) + +**Features** + + - Model OpenShiftManagedCluster has a new parameter monitor_profile + - Model ManagedCluster has a new parameter private_fqdn + - Added operation + ManagedClustersOperations.rotate_cluster_certificates + +**Breaking changes** + + - Operation AgentPoolsOperations.get_available_agent_pool_versions + has a new signature + +## 7.0.0 (2019-08-30) + +**Features** + + - Model ContainerServiceNetworkProfile has a new parameter + load_balancer_profile + - Model ManagedCluster has a new parameter + api_server_access_profile + +**Breaking changes** + + - Model ManagedCluster no longer has parameter + api_server_authorized_ip_ranges + +## 6.0.0 (2019-06-20) + +**Features** + + - Model ManagedClusterAgentPoolProfile has a new parameter + enable_node_public_ip + - Model ManagedClusterAgentPoolProfile has a new parameter + scale_set_eviction_policy + - Model ManagedClusterAgentPoolProfile has a new parameter + node_taints + - Model ManagedClusterAgentPoolProfile has a new parameter + scale_set_priority + - Model AgentPool has a new parameter enable_node_public_ip + - Model AgentPool has a new parameter scale_set_eviction_policy + - Model AgentPool has a new parameter node_taints + - Model AgentPool has a new parameter scale_set_priority + - Model ManagedClusterAgentPoolProfileProperties has a new parameter + enable_node_public_ip + - Model ManagedClusterAgentPoolProfileProperties has a new parameter + scale_set_eviction_policy + - Model ManagedClusterAgentPoolProfileProperties has a new parameter + node_taints + - Model ManagedClusterAgentPoolProfileProperties has a new parameter + scale_set_priority + - Added operation + AgentPoolsOperations.get_available_agent_pool_versions + - Added operation AgentPoolsOperations.get_upgrade_profile + +**General Breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes if you were importing from the v20xx_yy_zz +API folders. In summary, some modules were incorrectly +visible/importable and have been renamed. This fixed several issues +caused by usage of classes that were not supposed to be used in the +first place. + + - ContainerServiceManagementClient cannot be imported from + `azure.mgmt.containerservice.v20xx_yy_zz.container_service_management_client` + anymore (import from `azure.mgmt.containerservice.v20xx_yy_zz` + works like before) + - ContainerServiceManagementClientConfiguration import has been moved + from + `azure.mgmt.containerservice.v20xx_yy_zz.container_service_management_client` + to `azure.mgmt.containerservice.v20xx_yy_zz` + - A model `MyClass` from a "models" sub-module cannot be imported + anymore using + `azure.mgmt.containerservice.v20xx_yy_zz.models.my_class` + (import from `azure.mgmt.containerservice.v20xx_yy_zz.models` + works like before) + - An operation class `MyClassOperations` from an `operations` + sub-module cannot be imported anymore using + `azure.mgmt.containerservice.v20xx_yy_zz.operations.my_class_operations` + (import from + `azure.mgmt.containerservice.v20xx_yy_zz.operations` works like + before) + +Last but not least, HTTP connection pooling is now enabled by default. +You should always use a client as a context manager, or call close(), or +use no more than one client per process. + +## 5.3.0 (2019-05-03) + +**Features** + + - Model OrchestratorProfile has a new parameter is_preview + - Model OrchestratorVersionProfile has a new parameter is_preview + - Model ContainerServiceNetworkProfile has a new parameter + load_balancer_sku + - Model ManagedCluster has a new parameter identity + - Model ManagedCluster has a new parameter max_agent_pools + - Model ManagedCluster has a new parameter windows_profile + +## 5.2.0 (2019-04-30) + +**Features** + + - OpenShift is now using a GA api version + - Model OpenShiftManagedCluster has a new parameter cluster_version + - Model NetworkProfile has a new parameter vnet_id + +## 5.1.0 (2019-04-08) + +**Features** + + - Model OpenShiftManagedClusterAADIdentityProvider has a new parameter + customer_admin_group_id + +## 5.0.0 (2019-03-19) + +**Features** + + - Model ManagedClusterAgentPoolProfile has a new parameter min_count + - Model ManagedClusterAgentPoolProfile has a new parameter + availability_zones + - Model ManagedClusterAgentPoolProfile has a new parameter type + - Model ManagedClusterAgentPoolProfile has a new parameter + enable_auto_scaling + - Model ManagedClusterAgentPoolProfile has a new parameter max_count + - Model ManagedClusterAgentPoolProfile has a new parameter + provisioning_state + - Model ManagedClusterAgentPoolProfile has a new parameter + orchestrator_version + - Model ManagedCluster has a new parameter + api_server_authorized_ip_ranges + - Model ManagedCluster has a new parameter + enable_pod_security_policy + - Added operation group AgentPoolsOperations + +**Breaking changes** + + - Parameter count of model ManagedClusterAgentPoolProfile is now + required + - Model ManagedClusterAgentPoolProfile no longer has parameter + storage_profile + +## 4.4.0 (2019-01-09) + +**Features** + + - Added operation + ManagedClustersOperations.reset_service_principal_profile + - Added operation ManagedClustersOperations.reset_aad_profile + +## 4.3.0 (2018-12-13) + +**Features** + + - Support for Azure Profiles + - OpenShift ManagedCluster (preview) + +This package also adds Preview version of ManagedCluster (AKS +2018-08-01-preview), this includes the following breaking changes and +features, if you optin for this new API version: + +**Features** + + - Model ManagedClusterAgentPoolProfile has a new parameter type + - Model ManagedClusterAgentPoolProfile has a new parameter max_count + - Model ManagedClusterAgentPoolProfile has a new parameter + enable_auto_scaling + - Model ManagedClusterAgentPoolProfile has a new parameter min_count + +**Breaking changes** + + - Parameter count of model ManagedClusterAgentPoolProfile is now + required + - Model ManagedClusterAgentPoolProfile no longer has parameter + storage_profile + +**Note** + + - azure-mgmt-nspkg is not installed anymore on Python 3 (PEP420-based + namespace package) + +## 4.2.2 (2018-08-09) + +**Bugfixes** + + - Fix invalid definition of CredentialResult + +## 4.2.1 (2018-08-08) + +**Bugfixes** + + - Fix some invalid regexp + - Fix invalid definition of CredentialResult + +## 4.2.0 (2018-07-30) + +**Features** + + - Add managed_clusters.list_cluster_admin_credentials + - Add managed_clusters.list_cluster_user_credentials + - Add managed_clusters.update_tags + +**Bugfixes** + + - Fix incorrect JSON description of ManagedCluster class + +## 4.1.0 (2018-06-13) + +**Features** + + - Add node_resource_group attribute to some models + +## 4.0.0 (2018-05-25) + +**Features** + + - Added operation ManagedClustersOperations.get_access_profile + - Updated VM sizes + - Client class can be used as a context manager to keep the underlying + HTTP session open for performance + +**General Breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes. + + - Model signatures now use only keyword-argument syntax. All + positional arguments must be re-written as keyword-arguments. To + keep auto-completion in most cases, models are now generated for + Python 2 and Python 3. Python 3 uses the "*" syntax for + keyword-only arguments. + - Enum types now use the "str" mixin (class AzureEnum(str, Enum)) to + improve the behavior when unrecognized enum values are encountered. + While this is not a breaking change, the distinctions are important, + and are documented here: + At a glance: + - "is" should not be used at all. + - "format" will return the string value, where "%s" string + formatting will return `NameOfEnum.stringvalue`. Format syntax + should be prefered. + - New Long Running Operation: + - Return type changes from + `msrestazure.azure_operation.AzureOperationPoller` to + `msrest.polling.LROPoller`. External API is the same. + - Return type is now **always** a `msrest.polling.LROPoller`, + regardless of the optional parameters used. + - The behavior has changed when using `raw=True`. Instead of + returning the initial call result as `ClientRawResponse`, + without polling, now this returns an LROPoller. After polling, + the final resource will be returned as a `ClientRawResponse`. + - New `polling` parameter. The default behavior is + `Polling=True` which will poll using ARM algorithm. When + `Polling=False`, the response of the initial call will be + returned without polling. + - `polling` parameter accepts instances of subclasses of + `msrest.polling.PollingMethod`. + - `add_done_callback` will no longer raise if called after + polling is finished, but will instead execute the callback right + away. + +**Bugfixes** + + - Compatibility of the sdist with wheel 0.31.0 + +## 3.0.1 (2018-01-25) + +**Bugfixes** + + - Fix incorrect mapping in OrchestratorVersionProfileListResult + +## 3.0.0 (2017-12-13) + + - Flattened ManagedCluster so there is no separate properties object + - Added get_access_profiles operation to managed clusters + +## 2.0.0 (2017-10-XX) + +**Features** + + - Managed clusters + +**Breaking changes** + + - VM is now require for master profile (recommended default: + standard_d2_v2) + +## 1.0.0 (2017-08-08) + + - Initial Release extracted from azure-mgmt-compute 2.1.0 diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-containerservice-41.4.0b1-CHANGELOG.trimmed.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-containerservice-41.4.0b1-CHANGELOG.trimmed.md new file mode 100644 index 000000000000..80af043c4f73 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-containerservice-41.4.0b1-CHANGELOG.trimmed.md @@ -0,0 +1,1054 @@ +# Release History + +## 41.4.0b1 (2026-06-04) + +### Features Added + + - Client `ContainerServiceClient` added operation group `maintenance_windows` + - Model `ContainerServiceNetworkProfile` added property `bastion_profile` + - Added model `BastionProfile` + - Added enum `BastionSku` + - Added model `MaintenanceWindowResource` + - Added model `MaintenanceWindowResourceProperties` + - Added enum `ResourceProvisioningState` + - Added operation group `MaintenanceWindowsOperations` + +## 41.3.0 (2026-06-03) + +### Features Added + + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `ManagedClusterAzureMonitorProfileMetrics` added property `control_plane` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added model `ManagedClusterAzureMonitorProfileMetricsControlPlane` + - Added operation group `IdentityBindingsOperations` + +## 41.3.0b1 (2026-05-18) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `vm_skus` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Model `AgentPoolNetworkProfile` added property `node_public_ip_prefix_i_ds` + - Model `AgentPoolNetworkProfile` added property `secondary_network_interfaces` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfileProperties` added property `components_by_releases` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `GPUProfile` added property `nvidia` + - Model `KubeletConfig` added property `seccomp_default` + - Model `KubeletConfig` added property `kube_reserved` + - Model `KubeletConfig` added property `hard_eviction_threshold` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `eviction_policy` + - Model `MachineProperties` added property `billing` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `MachineProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `prepared_image_specification_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_metrics` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_logs_and_traces` + - Model `ManagedClusterAzureMonitorProfileMetrics` added property `control_plane` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterManagedOutboundIPProfile` added property `count_i_pv6` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_ip_prefixes` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_i_ps` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterProperties` added property `creation_data` + - Model `ManagedClusterProperties` added property `enable_fips` + - Model `ManagedClusterProperties` added property `enable_namespace_resources` + - Model `ManagedClusterProperties` added property `scheduler_profile` + - Model `ManagedClusterProperties` added property `health_monitor_profile` + - Model `ManagedClusterProperties` added property `control_plane_scaling_profile` + - Model `ManagedClusterProperties` added property `node_disruption_profile` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfile` added property `service_account_image_pull_profile` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `OutboundType` added member `MANAGED_NAT_GATEWAY_V2` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `TransitEncryptionType` added member `M_TLS` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AddonAutoscaling` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolNetworkInterface` + - Added enum `AgentPoolNetworkInterfaceType` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added enum `ContainerNetworkLogs` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `ControlPlaneScalingSize` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added model `HardEvictionThreshold` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubeReserved` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerProperties` + - Added model `MachineBillingProfile` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineSecurityProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterAzureMonitorProfileMetricsControlPlane` + - Added model `ManagedClusterControlPlaneScalingProfile` + - Added model `ManagedClusterHealthMonitorProfile` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + - Added model `ManagedClusterNATGatewayProfileOutboundIPs` + - Added model `ManagedClusterNATGatewayProfileOutboundIpPrefixes` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotProperties` + - Added enum `ManagementMode` + - Added model `MeshMembership` + - Added model `MeshMembershipPrivateConnectProfile` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added enum `MigStrategy` + - Added enum `Mode` + - Added model `NetworkProfileForSnapshot` + - Added enum `NodeDisruptionPolicy` + - Added model `NodeDisruptionProfile` + - Added model `NodeImageVersion` + - Added model `NvidiaGPUProfile` + - Added model `OperationStatusResult` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added model `PreparedImageSpecificationProfile` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceSku` + - Added model `ResourceSkuCapabilities` + - Added model `ResourceSkuCapacity` + - Added enum `ResourceSkuCapacityScaleType` + - Added model `ResourceSkuCosts` + - Added model `ResourceSkuLocationInfo` + - Added model `ResourceSkuRestrictionInfo` + - Added model `ResourceSkuRestrictions` + - Added enum `ResourceSkuRestrictionsReasonCode` + - Added enum `ResourceSkuRestrictionsType` + - Added model `ResourceSkuZoneDetails` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added model `ServiceAccountImagePullProfile` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added parameter `ignore_pod_disruption_budget` in method `begin_delete` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + - Added operation group `VmSkusOperations` + +## 41.2.0 (2026-05-09) + +### Features Added + + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Enum `OSSKU` added member `AZURE_CONTAINER_LINUX` + - Added model `AgentPoolArtifactStreamingProfile` + +## 41.2.0b1 (2026-04-24) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `vm_skus` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfileProperties` added property `components_by_releases` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `GPUProfile` added property `nvidia` + - Model `KubeletConfig` added property `seccomp_default` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `eviction_policy` + - Model `MachineProperties` added property `billing` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `MachineProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `prepared_image_specification_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `prepared_image_specification_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_metrics` + - Model `ManagedClusterAzureMonitorProfileAppMonitoring` added property `open_telemetry_logs_and_traces` + - Model `ManagedClusterAzureMonitorProfileMetrics` added property `control_plane` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterManagedOutboundIPProfile` added property `count_i_pv6` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_ip_prefixes` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_i_ps` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterProperties` added property `creation_data` + - Model `ManagedClusterProperties` added property `enable_namespace_resources` + - Model `ManagedClusterProperties` added property `scheduler_profile` + - Model `ManagedClusterProperties` added property `health_monitor_profile` + - Model `ManagedClusterProperties` added property `control_plane_scaling_profile` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfile` added property `service_account_image_pull_profile` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterStorageProfileDiskCSIDriver` added property `version` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `OutboundType` added member `MANAGED_NAT_GATEWAY_V2` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `TransitEncryptionType` added member `M_TLS` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AddonAutoscaling` + - Added model `AgentPoolArtifactStreamingProfile` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added enum `ContainerNetworkLogs` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `ControlPlaneScalingSize` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerProperties` + - Added model `MachineBillingProfile` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineSecurityProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterAzureMonitorProfileMetricsControlPlane` + - Added model `ManagedClusterControlPlaneScalingProfile` + - Added model `ManagedClusterHealthMonitorProfile` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + - Added model `ManagedClusterNATGatewayProfileOutboundIPs` + - Added model `ManagedClusterNATGatewayProfileOutboundIpPrefixes` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotProperties` + - Added enum `ManagementMode` + - Added model `MeshMembership` + - Added model `MeshMembershipPrivateConnectProfile` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added enum `MigStrategy` + - Added enum `Mode` + - Added model `NetworkProfileForSnapshot` + - Added model `NodeImageVersion` + - Added model `NvidiaGPUProfile` + - Added model `OperationStatusResult` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added model `PreparedImageSpecificationProfile` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceSku` + - Added model `ResourceSkuCapabilities` + - Added model `ResourceSkuCapacity` + - Added enum `ResourceSkuCapacityScaleType` + - Added model `ResourceSkuCosts` + - Added model `ResourceSkuLocationInfo` + - Added model `ResourceSkuRestrictionInfo` + - Added model `ResourceSkuRestrictions` + - Added enum `ResourceSkuRestrictionsReasonCode` + - Added enum `ResourceSkuRestrictionsType` + - Added model `ResourceSkuZoneDetails` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added model `ServiceAccountImagePullProfile` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added parameter `ignore_pod_disruption_budget` in method `begin_delete` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + - Added operation group `VmSkusOperations` + +## 41.1.0 (2026-04-20) + +### Features Added + + - Model `ManagedClusterAzureMonitorProfile` added property `app_monitoring` + - Model `ManagedClusterIngressProfile` added property `gateway_api` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `gateway_api_implementations` + - Model `ManagedClusterProperties` added property `hosted_system_profile` + - Enum `OSSKU` added member `WINDOWS2025` + - Added enum `GatewayAPIIstioEnabled` + - Added model `ManagedClusterAppRoutingIstio` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoring` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation` + - Added model `ManagedClusterHostedSystemProfile` + - Added model `ManagedClusterIngressProfileGatewayConfiguration` + - Added model `ManagedClusterWebAppRoutingGatewayAPIImplementations` + - Added enum `ManagedGatewayType` + +## 41.1.0b1 (2026-03-30) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `vm_skus` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `AgentPoolManagedClusterAgentPoolProfileProperties` added property `node_customization_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfileProperties` added property `components_by_releases` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `GPUProfile` added property `nvidia` + - Model `KubeletConfig` added property `seccomp_default` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `eviction_policy` + - Model `MachineProperties` added property `billing` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `MachineProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `node_customization_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `enable_os_disk_full_caching` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_customization_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfile` added property `app_monitoring` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterIngressProfile` added property `gateway_api` + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `gateway_api_implementations` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterManagedOutboundIPProfile` added property `count_i_pv6` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_ip_prefixes` + - Model `ManagedClusterNATGatewayProfile` added property `outbound_i_ps` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterProperties` added property `creation_data` + - Model `ManagedClusterProperties` added property `enable_namespace_resources` + - Model `ManagedClusterProperties` added property `scheduler_profile` + - Model `ManagedClusterProperties` added property `hosted_system_profile` + - Model `ManagedClusterProperties` added property `health_monitor_profile` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfile` added property `service_account_image_pull_profile` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterStorageProfileDiskCSIDriver` added property `version` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `WINDOWS2025` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `OutboundType` added member `MANAGED_NAT_GATEWAY_V2` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `TransitEncryptionType` added member `M_TLS` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AddonAutoscaling` + - Added model `AgentPoolArtifactStreamingProfile` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added enum `ContainerNetworkLogs` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added enum `GatewayAPIIstioEnabled` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerProperties` + - Added model `MachineBillingProfile` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineSecurityProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAppRoutingIstio` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoring` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogs` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterHealthMonitorProfile` + - Added model `ManagedClusterHostedSystemProfile` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + - Added model `ManagedClusterIngressProfileGatewayConfiguration` + - Added model `ManagedClusterNATGatewayProfileOutboundIPs` + - Added model `ManagedClusterNATGatewayProfileOutboundIpPrefixes` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotProperties` + - Added model `ManagedClusterWebAppRoutingGatewayAPIImplementations` + - Added enum `ManagedGatewayType` + - Added enum `ManagementMode` + - Added model `MeshMembership` + - Added model `MeshMembershipPrivateConnectProfile` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added enum `MigStrategy` + - Added enum `Mode` + - Added model `NetworkProfileForSnapshot` + - Added model `NodeCustomizationProfile` + - Added model `NodeImageVersion` + - Added model `NvidiaGPUProfile` + - Added model `OperationStatusResult` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceSku` + - Added model `ResourceSkuCapabilities` + - Added model `ResourceSkuCapacity` + - Added enum `ResourceSkuCapacityScaleType` + - Added model `ResourceSkuCosts` + - Added model `ResourceSkuLocationInfo` + - Added model `ResourceSkuRestrictionInfo` + - Added model `ResourceSkuRestrictions` + - Added enum `ResourceSkuRestrictionsReasonCode` + - Added enum `ResourceSkuRestrictionsType` + - Added model `ResourceSkuZoneDetails` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added model `ServiceAccountImagePullProfile` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added parameter `ignore_pod_disruption_budget` in method `begin_delete` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + - Added operation group `VmSkusOperations` + +## 41.0.0 (2026-03-17) + +### Features Added + + - Client `ContainerServiceClient` added method `send_request` + - Model `AdvancedNetworking` added property `performance` + - Model `AdvancedNetworkingSecurity` added property `transit_encryption` + - Model `AgentPool` added property `properties` + - Model `AgentPool` added property `system_data` + - Model `AgentPoolUpgradeProfile` added property `system_data` + - Model `IstioComponents` added property `proxy_redirection_mechanism` + - Model `Machine` added property `system_data` + - Model `ManagedClusterAccessProfile` added property `properties` + - Model `ManagedClusterHTTPProxyConfig` added property `enabled` + - Model `ManagedClusterUpgradeProfile` added property `system_data` + - Model `OperationValue` added property `display` + - Model `PrivateEndpointConnection` added property `system_data` + - Model `RunCommandResult` added property `properties` + - Added enum `AccelerationMode` + - Added model `AccessProfile` + - Added model `AdvancedNetworkingPerformance` + - Added model `AdvancedNetworkingSecurityTransitEncryption` + - Added model `AgentPoolManagedClusterAgentPoolProfileProperties` + - Added model `CommandResultProperties` + - Added model `OperationValueDisplay` + - Added enum `ProxyRedirectionMechanism` + - Added enum `TransitEncryptionType` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Renamed enum `IpFamily` to `IPFamily` + - Model `AgentPool` moved instance variables `e_tag`, `count`, `vm_size`, `os_disk_size_gb`, `os_disk_type`, `kubelet_disk_type`, `workload_runtime`, `message_of_the_day`, `vnet_subnet_id`, `pod_subnet_id`, `pod_ip_allocation_mode`, `max_pods`, `os_type`, `os_sku`, `max_count`, `min_count`, `enable_auto_scaling`, `scale_down_mode`, `type_properties_type`, `mode`, `orchestrator_version`, `current_orchestrator_version`, `node_image_version`, `upgrade_settings`, `provisioning_state`, `power_state`, `availability_zones`, `enable_node_public_ip`, `node_public_ip_prefix_id`, `scale_set_priority`, `scale_set_eviction_policy`, `spot_max_price`, `tags`, `node_labels`, `node_taints`, `proximity_placement_group_id`, `kubelet_config`, `linux_os_config`, `enable_encryption_at_host`, `enable_ultra_ssd`, `enable_fips`, `gpu_instance_profile`, `creation_data`, `capacity_reservation_group_id`, `host_group_id`, `network_profile`, `windows_profile`, `security_profile`, `gpu_profile`, `gateway_profile`, `virtual_machines_profile`, `virtual_machine_nodes_status`, `status` and `local_dns_profile` under property `properties` + - Model `ManagedClusterAccessProfile` moved instance variable `kube_config` under property `properties` + - Model `OperationValue` moved instance variables `operation`, `resource`, `description` and `provider` under property `display` + - Model `RunCommandResult` moved instance variables `provisioning_state`, `exit_code`, `started_at`, `finished_at`, `logs` and `reason` under property `properties` + - Model `KubernetesVersionListResult` renamed its instance variable `values` to `values_property` + - Method `AgentPoolsOperations.begin_create_or_update` replaced positional_or_keyword parameters `if_match`/`if_none_match` with keyword_only parameters `etag`/`match_condition` + - Method `AgentPoolsOperations.begin_delete` changed its parameter `ignore_pod_disruption_budget` from `positional_or_keyword` to `keyword_only` + - Method `AgentPoolsOperations.begin_delete` replaced positional_or_keyword parameter `if_match` with keyword_only parameters `etag`/`match_condition` + - Method `ManagedClustersOperations.begin_create_or_update` replaced positional_or_keyword parameters `if_match`/`if_none_match` with keyword_only parameters `etag`/`match_condition` + - Method `ManagedClustersOperations.begin_delete` deleted or renamed its parameter `if_match` of kind `positional_or_keyword` + - Method `ManagedClustersOperations.begin_update_tags` replaced positional_or_keyword parameter `if_match` with keyword_only parameters `etag`/`match_condition` + - Method `ManagedClustersOperations.list_cluster_admin_credentials` changed its parameter `server_fqdn` from `positional_or_keyword` to `keyword_only` + - Method `ManagedClustersOperations.list_cluster_monitoring_user_credentials` changed its parameter `server_fqdn` from `positional_or_keyword` to `keyword_only` + - Method `ManagedClustersOperations.list_cluster_user_credentials` changed its parameter `server_fqdn`/`format` from `positional_or_keyword` to `keyword_only` + +### Other Changes + + - Deleted model `MeshRevisionProfileList`/`MeshUpgradeProfileList`/`OutboundEnvironmentEndpointCollection`/`SubResource` which actually were not used by SDK users + +## 41.0.0b3 (2025-12-22) + +### Features Added + + - Added model `MachineSecurityProfile` + +### Breaking Changes + + - Model `AgentPoolUpgradeSettings` deleted or renamed its instance variable `min_surge` + +## 40.2.0 (2025-11-24) + +### Features Added + + - Enum `OSSKU` added member `UBUNTU2404` + +## 41.0.0b2 (2025-11-17) + +### Features Added + + - Model `ManagedClusterIngressProfile` added property `application_load_balancer` + - Model `ManagedClusterIngressProfileWebAppRouting` added property `default_domain` + - Enum `Mode` added member `NFTABLES` + - Enum `WorkloadRuntime` added member `KATA_VM_ISOLATION` + - Added model `ManagedClusterIngressDefaultDomainProfile` + - Added model `ManagedClusterIngressProfileApplicationLoadBalancer` + +## 40.1.0 (2025-10-31) + +### Features Added + + - Client `ContainerServiceClient` added operation group `managed_namespaces` + - Model `AgentPool` added property `local_dns_profile` + - Model `IstioEgressGateway` added property `name` + - Model `IstioEgressGateway` added property `namespace` + - Model `IstioEgressGateway` added property `gateway_configuration_name` + - Model `ManagedClusterAgentPoolProfile` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `local_dns_profile` + - Enum `WorkloadRuntime` added member `KATA_VM_ISOLATION` + - Added enum `AdoptionPolicy` + - Added enum `DeletePolicy` + - Added enum `LocalDNSForwardDestination` + - Added enum `LocalDNSForwardPolicy` + - Added enum `LocalDNSMode` + - Added model `LocalDNSOverride` + - Added model `LocalDNSProfile` + - Added enum `LocalDNSProtocol` + - Added enum `LocalDNSQueryLogging` + - Added enum `LocalDNSServeStale` + - Added enum `LocalDNSState` + - Added model `ManagedNamespace` + - Added model `ManagedNamespaceListResult` + - Added model `NamespaceProperties` + - Added enum `NamespaceProvisioningState` + - Added model `NetworkPolicies` + - Added enum `PolicyRule` + - Added model `ResourceQuota` + - Added operation group `ManagedNamespacesOperations` + +## 41.0.0b1 (2025-10-24) + +### Features Added + + - Client `ContainerServiceClient` added operation group `container_service` + - Client `ContainerServiceClient` added operation group `managed_namespaces` + - Client `ContainerServiceClient` added operation group `operation_status_result` + - Client `ContainerServiceClient` added operation group `managed_cluster_snapshots` + - Client `ContainerServiceClient` added operation group `load_balancers` + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Client `ContainerServiceClient` added operation group `jwt_authenticators` + - Client `ContainerServiceClient` added operation group `mesh_memberships` + - Model `AdvancedNetworking` added property `performance` + - Model `AdvancedNetworkingSecurity` added property `transit_encryption` + - Model `AgentPool` added property `upgrade_strategy` + - Model `AgentPool` added property `upgrade_settings_blue_green` + - Model `AgentPool` added property `node_initialization_taints` + - Model `AgentPool` added property `artifact_streaming_profile` + - Model `AgentPool` added property `local_dns_profile` + - Model `AgentPool` added property `node_customization_profile` + - Enum `AgentPoolMode` added member `MACHINES` + - Enum `AgentPoolMode` added member `MANAGED_SYSTEM` + - Enum `AgentPoolSSHAccess` added member `ENTRA_ID` + - Model `AgentPoolUpgradeProfile` added property `components_by_releases` + - Model `AgentPoolUpgradeProfile` added property `recently_used_versions` + - Model `AgentPoolUpgradeProfilePropertiesUpgradesItem` added property `is_out_of_support` + - Model `AgentPoolUpgradeSettings` added property `min_surge` + - Model `AgentPoolUpgradeSettings` added property `max_blocked_nodes` + - Model `ContainerServiceNetworkProfile` added property `pod_link_local_access` + - Model `ContainerServiceNetworkProfile` added property `kube_proxy_config` + - Model `GPUProfile` added property `driver_type` + - Model `IstioComponents` added property `proxy_redirection_mechanism` + - Model `IstioEgressGateway` added property `name` + - Model `IstioEgressGateway` added property `namespace` + - Model `IstioEgressGateway` added property `gateway_configuration_name` + - Model `KubeletConfig` added property `seccomp_default` + - Model `MachineNetworkProperties` added property `vnet_subnet_id` + - Model `MachineNetworkProperties` added property `pod_subnet_id` + - Model `MachineNetworkProperties` added property `enable_node_public_ip` + - Model `MachineNetworkProperties` added property `node_public_ip_prefix_id` + - Model `MachineNetworkProperties` added property `node_public_ip_tags` + - Model `MachineProperties` added property `hardware` + - Model `MachineProperties` added property `operating_system` + - Model `MachineProperties` added property `kubernetes` + - Model `MachineProperties` added property `mode` + - Model `MachineProperties` added property `security` + - Model `MachineProperties` added property `priority` + - Model `MachineProperties` added property `node_image_version` + - Model `MachineProperties` added property `provisioning_state` + - Model `MachineProperties` added property `tags` + - Model `MachineProperties` added property `e_tag` + - Model `MachineProperties` added property `status` + - Model `ManagedCluster` added property `creation_data` + - Model `ManagedCluster` added property `enable_namespace_resources` + - Model `ManagedCluster` added property `scheduler_profile` + - Model `ManagedCluster` added property `hosted_system_profile` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfile` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfile` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfile` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfile` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfile` added property `node_customization_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_strategy` + - Model `ManagedClusterAgentPoolProfileProperties` added property `upgrade_settings_blue_green` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_initialization_taints` + - Model `ManagedClusterAgentPoolProfileProperties` added property `artifact_streaming_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `local_dns_profile` + - Model `ManagedClusterAgentPoolProfileProperties` added property `node_customization_profile` + - Model `ManagedClusterAzureMonitorProfile` added property `container_insights` + - Model `ManagedClusterAzureMonitorProfile` added property `app_monitoring` + - Model `ManagedClusterHTTPProxyConfig` added property `effective_no_proxy` + - Model `ManagedClusterHTTPProxyConfig` added property `enabled` + - Model `ManagedClusterIngressProfile` added property `gateway_api` + - Model `ManagedClusterLoadBalancerProfile` added property `cluster_service_load_balancer_health_probe_mode` + - Model `ManagedClusterPoolUpgradeProfile` added property `components_by_releases` + - Model `ManagedClusterPoolUpgradeProfileUpgradesItem` added property `is_out_of_support` + - Model `ManagedClusterSecurityProfile` added property `kubernetes_resource_object_encryption_profile` + - Model `ManagedClusterSecurityProfile` added property `image_integrity` + - Model `ManagedClusterSecurityProfile` added property `node_restriction` + - Model `ManagedClusterSecurityProfileDefender` added property `security_gating` + - Model `ManagedClusterStorageProfileDiskCSIDriver` added property `version` + - Model `ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler` added property `addon_autoscaling` + - Enum `OSSKU` added member `FLATCAR` + - Enum `OSSKU` added member `MARINER` + - Enum `OSSKU` added member `UBUNTU2404` + - Enum `OSSKU` added member `WINDOWS2025` + - Enum `OSSKU` added member `WINDOWS_ANNUAL` + - Enum `PublicNetworkAccess` added member `SECURED_BY_PERIMETER` + - Model `ScaleProfile` added property `autoscale` + - Enum `SnapshotType` added member `MANAGED_CLUSTER` + - Enum `WorkloadRuntime` added member `KATA_MSHV_VM_ISOLATION` + - Added enum `AccelerationMode` + - Added enum `AddonAutoscaling` + - Added enum `AdoptionPolicy` + - Added model `AdvancedNetworkingPerformance` + - Added model `AdvancedNetworkingSecurityTransitEncryption` + - Added model `AgentPoolArtifactStreamingProfile` + - Added model `AgentPoolBlueGreenUpgradeSettings` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `AutoScaleProfile` + - Added enum `ClusterServiceLoadBalancerHealthProbeMode` + - Added model `Component` + - Added model `ComponentsByRelease` + - Added model `ContainerServiceNetworkProfileKubeProxyConfig` + - Added model `ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig` + - Added enum `DeletePolicy` + - Added enum `DriftAction` + - Added enum `DriverType` + - Added model `GuardrailsAvailableVersion` + - Added model `GuardrailsAvailableVersionsList` + - Added model `GuardrailsAvailableVersionsProperties` + - Added enum `GuardrailsSupport` + - Added enum `IPFamily` + - Added model `IdentityBinding` + - Added model `IdentityBindingListResult` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added enum `InfrastructureEncryption` + - Added enum `IpvsScheduler` + - Added model `JWTAuthenticator` + - Added model `JWTAuthenticatorClaimMappingExpression` + - Added model `JWTAuthenticatorClaimMappings` + - Added model `JWTAuthenticatorExtraClaimMappingExpression` + - Added model `JWTAuthenticatorIssuer` + - Added model `JWTAuthenticatorListResult` + - Added model `JWTAuthenticatorProperties` + - Added enum `JWTAuthenticatorProvisioningState` + - Added model `JWTAuthenticatorValidationRule` + - Added model `KubernetesResourceObjectEncryptionProfile` + - Added model `LabelSelector` + - Added model `LabelSelectorRequirement` + - Added model `LoadBalancer` + - Added model `LoadBalancerListResult` + - Added enum `LocalDNSForwardDestination` + - Added enum `LocalDNSForwardPolicy` + - Added enum `LocalDNSMode` + - Added model `LocalDNSOverride` + - Added model `LocalDNSProfile` + - Added enum `LocalDNSProtocol` + - Added enum `LocalDNSQueryLogging` + - Added enum `LocalDNSServeStale` + - Added enum `LocalDNSState` + - Added model `MachineHardwareProfile` + - Added model `MachineKubernetesProfile` + - Added model `MachineOSProfile` + - Added model `MachineOSProfileLinuxProfile` + - Added model `MachineStatus` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoring` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogs` + - Added model `ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics` + - Added model `ManagedClusterAzureMonitorProfileContainerInsights` + - Added model `ManagedClusterHostedSystemProfile` + - Added model `ManagedClusterIngressProfileGatewayConfiguration` + - Added model `ManagedClusterPropertiesForSnapshot` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGating` + - Added model `ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem` + - Added model `ManagedClusterSecurityProfileImageIntegrity` + - Added model `ManagedClusterSecurityProfileNodeRestriction` + - Added model `ManagedClusterSnapshot` + - Added model `ManagedClusterSnapshotListResult` + - Added enum `ManagedGatewayType` + - Added model `ManagedNamespace` + - Added model `ManagedNamespaceListResult` + - Added model `MeshMembership` + - Added model `MeshMembershipProperties` + - Added enum `MeshMembershipProvisioningState` + - Added model `MeshMembershipsListResult` + - Added enum `Mode` + - Added model `NamespaceProperties` + - Added enum `NamespaceProvisioningState` + - Added model `NetworkPolicies` + - Added model `NetworkProfileForSnapshot` + - Added model `NodeCustomizationProfile` + - Added model `NodeImageVersion` + - Added model `NodeImageVersionsListResult` + - Added model `OperationStatusResult` + - Added model `OperationStatusResultList` + - Added enum `Operator` + - Added enum `PodLinkLocalAccess` + - Added enum `PolicyRule` + - Added enum `ProxyRedirectionMechanism` + - Added model `RebalanceLoadBalancersRequestBody` + - Added model `ResourceQuota` + - Added model `SafeguardsAvailableVersion` + - Added model `SafeguardsAvailableVersionsList` + - Added model `SafeguardsAvailableVersionsProperties` + - Added enum `SafeguardsSupport` + - Added enum `SchedulerConfigMode` + - Added model `SchedulerInstanceProfile` + - Added model `SchedulerProfile` + - Added model `SchedulerProfileSchedulerInstanceProfiles` + - Added enum `SeccompDefault` + - Added enum `TransitEncryptionType` + - Added enum `UpgradeStrategy` + - Added enum `VmState` + - Operation group `AgentPoolsOperations` added method `begin_complete_upgrade` + - Operation group `MachinesOperations` added method `begin_create_or_update` + - Operation group `ManagedClustersOperations` added method `begin_rebalance_load_balancers` + - Operation group `ManagedClustersOperations` added method `get_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `get_safeguards_versions` + - Operation group `ManagedClustersOperations` added method `list_guardrails_versions` + - Operation group `ManagedClustersOperations` added method `list_safeguards_versions` + - Added operation group `ContainerServiceOperations` + - Added operation group `IdentityBindingsOperations` + - Added operation group `JWTAuthenticatorsOperations` + - Added operation group `LoadBalancersOperations` + - Added operation group `ManagedClusterSnapshotsOperations` + - Added operation group `ManagedNamespacesOperations` + - Added operation group `MeshMembershipsOperations` + - Added operation group `OperationStatusResultOperations` + +### Breaking Changes + + - Deleted or renamed model `IpFamily` + +## 40.0.0 (2025-10-10) + +### Features Added + + - Model `ContainerServiceClient` added parameter `cloud_setting` in method `__init__` + - Model `AdvancedNetworkingSecurity` added property `advanced_network_policies` + - Model `AgentPoolSecurityProfile` added property `ssh_access` + - Added enum `AdvancedNetworkPolicies` + - Added enum `AgentPoolSSHAccess` + +### Breaking Changes + + - Deleted or renamed model `CloudErrorBody` + +## 39.1.0 (2025-08-20) + +### Features Added + + - Model `ManagedCluster` added property `kind` + - Enum `ManagedClusterSKUName` added member `AUTOMATIC` + - Enum `OSSKU` added member `AZURE_LINUX3` + +> Changelog entries prior to 39.1.0 were removed to reduce file size. See https://pypi.org/project/azure-mgmt-containerservice/39.1.0/ for the older history. diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-cosmosdb-10.0.0b6-CHANGELOG.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-cosmosdb-10.0.0b6-CHANGELOG.md new file mode 100644 index 000000000000..57456bda55e8 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-cosmosdb-10.0.0b6-CHANGELOG.md @@ -0,0 +1,2240 @@ +# Release History + +## 10.0.0b6 (2026-05-06) + +### Features Added + + - Client `CosmosDBManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `CosmosDBManagementClient` added method `send_request` + - Client `CosmosDBManagementClient` added operation group `copy_jobs` + - Client `CosmosDBManagementClient` added operation group `garnet_clusters` + - Client `CosmosDBManagementClient` added operation group `mongo_mi_resources` + - Client `CosmosDBManagementClient` added operation group `fleet` + - Client `CosmosDBManagementClient` added operation group `fleet_analytics` + - Client `CosmosDBManagementClient` added operation group `fleetspace` + - Client `CosmosDBManagementClient` added operation group `fleetspace_account` + - Model `CassandraKeyspaceGetResults` added property `system_data` + - Model `CassandraTableGetResults` added property `system_data` + - Model `CassandraViewGetResults` added property `system_data` + - Model `ClientEncryptionKeyGetResults` added property `system_data` + - Model `ClusterResource` added property `system_data` + - Model `DataCenterResource` added property `system_data` + - Enum `DataTransferComponent` added member `BASE_COSMOS_DATA_TRANSFER_DATA_SOURCE_SINK` + - Model `DataTransferJobGetResults` added property `system_data` + - Model `GraphResourceGetResults` added property `system_data` + - Model `GremlinDatabaseGetResults` added property `system_data` + - Model `GremlinGraphGetResults` added property `system_data` + - Model `IndexingPolicy` added property `full_text_indexes` + - Model `LocationGetResult` added property `system_data` + - Model `MaterializedViewDefinition` added property `throughput_bucket_for_build` + - Model `MongoDBCollectionGetResults` added property `system_data` + - Model `MongoDBDatabaseGetResults` added property `system_data` + - Model `MongoRoleDefinitionGetResults` added property `system_data` + - Model `MongoUserDefinitionGetResults` added property `system_data` + - Model `NotebookWorkspace` added property `system_data` + - Model `Permission` added property `id` + - Model `PhysicalPartitionThroughputInfoResource` added property `target_throughput` + - Model `PrivateLinkResource` added property `system_data` + - Model `RestorableDatabaseAccountGetResult` added property `system_data` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `materialized_views` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `materialized_views_properties` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `full_text_policy` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `data_masking_policy` + - Model `ServiceResource` added property `system_data` + - Model `SqlContainerGetPropertiesResource` added property `materialized_views` + - Model `SqlContainerGetPropertiesResource` added property `materialized_views_properties` + - Model `SqlContainerGetPropertiesResource` added property `full_text_policy` + - Model `SqlContainerGetPropertiesResource` added property `data_masking_policy` + - Model `SqlContainerGetResults` added property `system_data` + - Model `SqlContainerResource` added property `materialized_views` + - Model `SqlContainerResource` added property `materialized_views_properties` + - Model `SqlContainerResource` added property `full_text_policy` + - Model `SqlContainerResource` added property `data_masking_policy` + - Model `SqlDatabaseGetResults` added property `system_data` + - Model `SqlRoleAssignmentGetResults` added property `system_data` + - Model `SqlRoleDefinitionGetResults` added property `system_data` + - Model `SqlStoredProcedureGetResults` added property `system_data` + - Model `SqlTriggerGetResults` added property `system_data` + - Model `SqlUserDefinedFunctionGetResults` added property `system_data` + - Enum `Status` added member `CREATING` + - Model `TableGetResults` added property `system_data` + - Model `ThroughputBucketResource` added property `is_default_bucket` + - Model `ThroughputSettingsGetResults` added property `system_data` + - Enum `VectorDataType` added member `FLOAT16` + - Model `VectorIndex` added property `quantization_byte_size` + - Model `VectorIndex` added property `indexing_search_list_size` + - Model `VectorIndex` added property `vector_index_shard_key` + - Added enum `AllocationState` + - Added model `AzureBlobContainer` + - Added model `AzureBlobSourceSinkDetails` + - Added model `BaseCopyJobProperties` + - Added model `BaseCopyJobTask` + - Added model `BlobToCassandraRUCopyJobProperties` + - Added model `BlobToCassandraRUCopyJobTask` + - Added model `CassandraRUToBlobCopyJobProperties` + - Added model `CassandraRUToBlobCopyJobTask` + - Added model `CassandraRUToCassandraRUCopyJobProperties` + - Added model `CassandraRUToCassandraRUCopyJobTask` + - Added model `CassandraRoleAssignmentResource` + - Added model `CassandraRoleAssignmentResourceProperties` + - Added model `CassandraRoleDefinitionResource` + - Added model `CassandraRoleDefinitionResourceProperties` + - Added model `CloudError` + - Added model `CopyJobGetResults` + - Added enum `CopyJobMode` + - Added model `CopyJobProperties` + - Added enum `CopyJobStatus` + - Added enum `CopyJobType` + - Added model `CosmosDBCassandraTable` + - Added model `CosmosDBMongoCollection` + - Added model `CosmosDBMongoVCoreCollection` + - Added model `CosmosDBNoSqlContainer` + - Added model `CosmosDBSourceSinkDetails` + - Added model `DataMaskingPolicy` + - Added model `DataMaskingPolicyExcludedPathsItem` + - Added model `DataMaskingPolicyIncludedPathsItem` + - Added model `FleetAnalyticsProperties` + - Added enum `FleetAnalyticsPropertiesStorageLocationType` + - Added model `FleetAnalyticsResource` + - Added model `FleetResource` + - Added model `FleetResourceProperties` + - Added model `FleetResourceUpdate` + - Added model `FleetspaceAccountProperties` + - Added model `FleetspaceAccountPropertiesGlobalDatabaseAccountProperties` + - Added model `FleetspaceAccountResource` + - Added model `FleetspaceProperties` + - Added enum `FleetspacePropertiesFleetspaceApiKind` + - Added enum `FleetspacePropertiesServiceTier` + - Added model `FleetspacePropertiesThroughputPoolConfiguration` + - Added model `FleetspaceResource` + - Added model `FleetspaceUpdate` + - Added model `FullTextIndexPath` + - Added model `FullTextPath` + - Added model `FullTextPolicy` + - Added enum `GarnetCacheProvisioningState` + - Added model `GarnetClusterResource` + - Added model `GarnetClusterResourcePatch` + - Added model `GarnetClusterResourcePatchProperties` + - Added model `GarnetClusterResourceProperties` + - Added model `GarnetClusterResourcePropertiesEndPointsItem` + - Added model `GremlinRoleAssignmentResource` + - Added model `GremlinRoleAssignmentResourceProperties` + - Added model `GremlinRoleDefinitionResource` + - Added model `GremlinRoleDefinitionResourceProperties` + - Added model `MaterializedViewDetails` + - Added model `MaterializedViewsProperties` + - Added model `MongoMIRoleAssignmentResource` + - Added model `MongoMIRoleAssignmentResourceProperties` + - Added model `MongoMIRoleDefinitionResource` + - Added model `MongoMIRoleDefinitionResourceProperties` + - Added model `MongoRUToMongoRUCopyJobProperties` + - Added model `MongoRUToMongoRUCopyJobTask` + - Added model `MongoRUToMongoVCoreCopyJobProperties` + - Added model `MongoRUToMongoVCoreCopyJobTask` + - Added model `MongoRoleDefinitionResource` + - Added model `MongoUserDefinitionResource` + - Added model `MongoVCoreSourceSinkDetails` + - Added model `NoSqlRUToNoSqlRUCopyJobProperties` + - Added model `NoSqlRUToNoSqlRUCopyJobTask` + - Added model `SqlRoleAssignmentResource` + - Added model `SqlRoleDefinitionResource` + - Operation group `CassandraResourcesOperations` added method `begin_create_update_cassandra_role_assignment` + - Operation group `CassandraResourcesOperations` added method `begin_create_update_cassandra_role_definition` + - Operation group `CassandraResourcesOperations` added method `begin_delete_cassandra_role_assignment` + - Operation group `CassandraResourcesOperations` added method `begin_delete_cassandra_role_definition` + - Operation group `CassandraResourcesOperations` added method `get_cassandra_role_assignment` + - Operation group `CassandraResourcesOperations` added method `get_cassandra_role_definition` + - Operation group `CassandraResourcesOperations` added method `list_cassandra_role_assignments` + - Operation group `CassandraResourcesOperations` added method `list_cassandra_role_definitions` + - Operation group `GremlinResourcesOperations` added method `begin_create_update_gremlin_role_assignment` + - Operation group `GremlinResourcesOperations` added method `begin_create_update_gremlin_role_definition` + - Operation group `GremlinResourcesOperations` added method `begin_delete_gremlin_role_assignment` + - Operation group `GremlinResourcesOperations` added method `begin_delete_gremlin_role_definition` + - Operation group `GremlinResourcesOperations` added method `get_gremlin_role_assignment` + - Operation group `GremlinResourcesOperations` added method `get_gremlin_role_definition` + - Operation group `GremlinResourcesOperations` added method `list_gremlin_role_assignments` + - Operation group `GremlinResourcesOperations` added method `list_gremlin_role_definitions` + - Added operation group `CopyJobsOperations` + - Added operation group `FleetAnalyticsOperations` + - Added operation group `FleetOperations` + - Added operation group `FleetspaceAccountOperations` + - Added operation group `FleetspaceOperations` + - Added operation group `GarnetClustersOperations` + - Added operation group `MongoMIResourcesOperations` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Model `CassandraKeyspaceCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraKeyspaceCreateUpdateProperties` + - Model `CassandraKeyspaceGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraKeyspaceGetProperties` + - Model `CassandraTableCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraTableCreateUpdateProperties` + - Model `CassandraTableGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraTableGetProperties` + - Model `CassandraViewCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraViewCreateUpdateProperties` + - Model `CassandraViewGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraViewGetProperties` + - Model `ChaosFaultResource` moved instance variable `action`, `region`, `database_name`, `container_name`, `provisioning_state` under property `properties` whose type is `ChaosFaultProperties` + - Model `ClientEncryptionKeyCreateUpdateParameters` moved instance variable `resource` under property `properties` whose type is `ClientEncryptionKeyCreateUpdateProperties` + - Model `ClientEncryptionKeyGetResults` moved instance variable `resource` under property `properties` whose type is `ClientEncryptionKeyGetProperties` + - Model `DataTransferJobGetResults` moved instance variable `job_name`, `source`, `destination`, `status`, `processed_count`, `total_count`, `last_updated_utc_time`, `worker_count`, `error`, `duration`, `mode` under property `properties` whose type is `DataTransferJobProperties` + - Model `DatabaseAccountCreateUpdateParameters` moved instance variable `consistency_policy`, `locations`, `ip_rules`, `is_virtual_network_filter_enabled`, `enable_automatic_failover`, `capabilities`, `virtual_network_rules`, `enable_multiple_write_locations`, `enable_cassandra_connector`, `connector_offer`, `disable_key_based_metadata_write_access`, `key_vault_key_uri`, `default_identity`, `public_network_access`, `enable_free_tier`, `api_properties`, `enable_analytical_storage`, `analytical_storage_configuration`, `create_mode`, `backup_policy`, `cors`, `network_acl_bypass`, `network_acl_bypass_resource_ids`, `diagnostic_log_settings`, `disable_local_auth`, `restore_parameters`, `capacity`, `capacity_mode`, `enable_materialized_views`, `keys_metadata`, `enable_partition_merge`, `enable_burst_capacity`, `minimal_tls_version`, `customer_managed_key_status`, `enable_priority_based_execution`, `default_priority_level`, `enable_per_region_per_partition_autoscale` under property `properties` whose type is `DatabaseAccountCreateUpdateProperties` + - Model `DatabaseAccountGetResults` moved instance variable `provisioning_state`, `document_endpoint`, `database_account_offer_type`, `ip_rules`, `is_virtual_network_filter_enabled`, `enable_automatic_failover`, `consistency_policy`, `capabilities`, `write_locations`, `read_locations`, `locations`, `failover_policies`, `virtual_network_rules`, `private_endpoint_connections`, `enable_multiple_write_locations`, `enable_cassandra_connector`, `connector_offer`, `disable_key_based_metadata_write_access`, `key_vault_key_uri`, `default_identity`, `public_network_access`, `enable_free_tier`, `api_properties`, `enable_analytical_storage`, `analytical_storage_configuration`, `instance_id`, `create_mode`, `restore_parameters`, `backup_policy`, `cors`, `network_acl_bypass`, `network_acl_bypass_resource_ids`, `diagnostic_log_settings`, `disable_local_auth`, `capacity`, `capacity_mode`, `capacity_mode_change_transition_state`, `enable_materialized_views`, `keys_metadata`, `enable_partition_merge`, `enable_burst_capacity`, `minimal_tls_version`, `customer_managed_key_status`, `enable_priority_based_execution`, `default_priority_level`, `enable_per_region_per_partition_autoscale` under property `properties` whose type is `DatabaseAccountGetProperties` + - Model `DatabaseAccountUpdateParameters` moved instance variable `consistency_policy`, `locations`, `ip_rules`, `is_virtual_network_filter_enabled`, `enable_automatic_failover`, `capabilities`, `virtual_network_rules`, `enable_multiple_write_locations`, `enable_cassandra_connector`, `connector_offer`, `disable_key_based_metadata_write_access`, `key_vault_key_uri`, `default_identity`, `public_network_access`, `enable_free_tier`, `api_properties`, `enable_analytical_storage`, `analytical_storage_configuration`, `backup_policy`, `cors`, `network_acl_bypass`, `network_acl_bypass_resource_ids`, `diagnostic_log_settings`, `disable_local_auth`, `capacity`, `capacity_mode`, `enable_materialized_views`, `keys_metadata`, `enable_partition_merge`, `enable_burst_capacity`, `minimal_tls_version`, `customer_managed_key_status`, `enable_priority_based_execution`, `default_priority_level`, `enable_per_region_per_partition_autoscale` under property `properties` whose type is `DatabaseAccountUpdateProperties` + - Model `GraphResourceCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `GraphResourceCreateUpdateProperties` + - Model `GraphResourceGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `GraphResourceGetProperties` + - Model `GremlinDatabaseCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinDatabaseCreateUpdateProperties` + - Model `GremlinDatabaseGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinDatabaseGetProperties` + - Model `GremlinGraphCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinGraphCreateUpdateProperties` + - Model `GremlinGraphGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinGraphGetProperties` + - Model `MongoDBCollectionCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBCollectionCreateUpdateProperties` + - Model `MongoDBCollectionGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBCollectionGetProperties` + - Model `MongoDBDatabaseCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBDatabaseCreateUpdateProperties` + - Model `MongoDBDatabaseGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBDatabaseGetProperties` + - Model `MongoIndexKeys` deleted or renamed its instance variable `keys` + - Model `MongoRoleDefinitionCreateUpdateParameters` moved instance variable `role_name`, `type`, `database_name`, `privileges`, `roles` under property `properties` whose type is `MongoRoleDefinitionResource` + - Model `MongoRoleDefinitionGetResults` moved instance variable `role_name`, `type_properties_type`, `database_name`, `privileges`, `roles` under property `properties` whose type is `MongoRoleDefinitionResource` + - Model `MongoUserDefinitionCreateUpdateParameters` moved instance variable `user_name`, `password`, `database_name`, `custom_data`, `roles`, `mechanisms` under property `properties` whose type is `MongoUserDefinitionResource` + - Model `MongoUserDefinitionGetResults` moved instance variable `user_name`, `password`, `database_name`, `custom_data`, `roles`, `mechanisms` under property `properties` whose type is `MongoUserDefinitionResource` + - Model `RedistributeThroughputParameters` moved instance variable `resource` under property `properties` whose type is `RedistributeThroughputProperties` + - Model `RestorableDatabaseAccountGetResult` moved instance variable `account_name`, `creation_time`, `oldest_restorable_time`, `deletion_time`, `api_type`, `restorable_locations` under property `properties` whose type is `RestorableDatabaseAccountProperties` + - Model `RestorableGremlinDatabaseGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableGremlinDatabaseProperties` + - Model `RestorableGremlinGraphGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableGremlinGraphProperties` + - Model `RestorableMongodbCollectionGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableMongodbCollectionProperties` + - Model `RestorableMongodbDatabaseGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableMongodbDatabaseProperties` + - Model `RestorableSqlContainerGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableSqlContainerProperties` + - Model `RestorableSqlDatabaseGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableSqlDatabaseProperties` + - Model `RestorableTableGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableTableProperties` + - Model `RetrieveThroughputParameters` moved instance variable `resource` under property `properties` whose type is `RetrieveThroughputProperties` + - Model `SqlContainerCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlContainerCreateUpdateProperties` + - Model `SqlContainerGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `SqlContainerGetProperties` + - Model `SqlDatabaseCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlDatabaseCreateUpdateProperties` + - Model `SqlDatabaseGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `SqlDatabaseGetProperties` + - Model `SqlRoleAssignmentCreateUpdateParameters` moved instance variable `role_definition_id`, `scope`, `principal_id` under property `properties` whose type is `SqlRoleAssignmentResource` + - Model `SqlRoleAssignmentGetResults` moved instance variable `role_definition_id`, `scope`, `principal_id` under property `properties` whose type is `SqlRoleAssignmentResource` + - Model `SqlRoleDefinitionCreateUpdateParameters` moved instance variable `role_name`, `type`, `assignable_scopes`, `permissions` under property `properties` whose type is `SqlRoleDefinitionResource` + - Model `SqlRoleDefinitionGetResults` moved instance variable `role_name`, `type_properties_type`, `assignable_scopes`, `permissions` under property `properties` whose type is `SqlRoleDefinitionResource` + - Model `SqlStoredProcedureCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlStoredProcedureCreateUpdateProperties` + - Model `SqlStoredProcedureGetResults` moved instance variable `resource` under property `properties` whose type is `SqlStoredProcedureGetProperties` + - Model `SqlTriggerCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlTriggerCreateUpdateProperties` + - Model `SqlTriggerGetResults` moved instance variable `resource` under property `properties` whose type is `SqlTriggerGetProperties` + - Model `SqlUserDefinedFunctionCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlUserDefinedFunctionCreateUpdateProperties` + - Model `SqlUserDefinedFunctionGetResults` moved instance variable `resource` under property `properties` whose type is `SqlUserDefinedFunctionGetProperties` + - Model `TableCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `TableCreateUpdateProperties` + - Model `TableGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `TableGetProperties` + - Model `ThroughputPoolAccountResource` moved instance variable `provisioning_state`, `account_resource_identifier`, `account_location`, `account_instance_id` under property `properties` whose type is `ThroughputPoolAccountProperties` + - Model `ThroughputPoolResource` moved instance variable `provisioning_state`, `max_throughput` under property `properties` whose type is `ThroughputPoolProperties` + - Model `ThroughputPoolUpdate` moved instance variable `provisioning_state`, `max_throughput` under property `properties` whose type is `ThroughputPoolProperties` + - Model `ThroughputSettingsGetResults` moved instance variable `resource` under property `properties` whose type is `ThroughputSettingsGetProperties` + - Model `ThroughputSettingsUpdateParameters` moved instance variable `resource` under property `properties` whose type is `ThroughputSettingsUpdateProperties` + - Deleted or renamed model `DataTransferServiceResource` + - Deleted or renamed model `ExtendedResourceProperties` + - Deleted or renamed model `GraphAPIComputeServiceResource` + - Deleted or renamed model `ManagedCassandraARMResourceProperties` + - Deleted or renamed model `MaterializedViewsBuilderServiceResource` + - Deleted or renamed model `NodeStatus` + - Deleted or renamed model `PermissionAutoGenerated` + - Deleted or renamed model `SqlDedicatedGatewayServiceResource` + - Deleted or renamed model `ThroughputPoolAccountCreateParameters` + - Method `CassandraClustersOperations.begin_deallocate` changed its parameter `x_ms_force_deallocate` from `positional_or_keyword` to `keyword_only` + - Method `RestorableGremlinGraphsOperations.list` changed its parameter `restorable_gremlin_database_rid`, `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + - Method `RestorableGremlinResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableMongodbCollectionsOperations.list` changed its parameter `restorable_mongodb_database_rid`, `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + - Method `RestorableMongodbResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableSqlContainersOperations.list` changed its parameter `restorable_sql_database_rid`, `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + - Method `RestorableSqlResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableTableResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableTablesOperations.list` changed its parameter `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + +### Other Changes + + - Deleted model `ChaosFaultListResponse`/`DataTransferJobFeedResults`/`ListBackups`/`ListClusters`/`ListCommands`/`ListDataCenters`/`PartitionUsagesResult`/`UsagesResult` which actually were not used by SDK users + +## 9.9.0 (2025-11-14) + +### Features Added + + - Model `CosmosDBManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `CosmosDBManagementClient` added operation group `fleet` + - Client `CosmosDBManagementClient` added operation group `fleetspace` + - Client `CosmosDBManagementClient` added operation group `fleetspace_account` + - Model `DatabaseAccountCreateUpdateParameters` added property `enable_priority_based_execution` + - Model `DatabaseAccountCreateUpdateParameters` added property `default_priority_level` + - Model `DatabaseAccountGetResults` added property `key_vault_key_uri_version` + - Model `DatabaseAccountGetResults` added property `enable_priority_based_execution` + - Model `DatabaseAccountGetResults` added property `default_priority_level` + - Model `DatabaseAccountUpdateParameters` added property `enable_priority_based_execution` + - Model `DatabaseAccountUpdateParameters` added property `default_priority_level` + - Model `IndexingPolicy` added property `full_text_indexes` + - Model `RestoreParameters` added property `source_backup_location` + - Enum `Status` added member `CANCELED` + - Enum `Status` added member `CREATING` + - Enum `Status` added member `FAILED` + - Enum `Status` added member `SUCCEEDED` + - Enum `Status` added member `UPDATING` + - Enum `VectorDataType` added member `FLOAT16` + - Model `VectorIndex` added property `quantization_byte_size` + - Model `VectorIndex` added property `indexing_search_list_size` + - Model `VectorIndex` added property `vector_index_shard_key` + - Added enum `DefaultPriorityLevel` + - Added model `ErrorDetailAutoGenerated` + - Added model `ErrorResponseAutoGenerated2` + - Added model `FleetListResult` + - Added model `FleetResource` + - Added model `FleetResourceUpdate` + - Added model `FleetspaceAccountListResult` + - Added model `FleetspaceAccountPropertiesGlobalDatabaseAccountProperties` + - Added model `FleetspaceAccountResource` + - Added model `FleetspaceListResult` + - Added enum `FleetspacePropertiesFleetspaceApiKind` + - Added enum `FleetspacePropertiesServiceTier` + - Added model `FleetspacePropertiesThroughputPoolConfiguration` + - Added model `FleetspaceResource` + - Added model `FleetspaceUpdate` + - Added model `FullTextIndexPath` + - Added model `ProxyResourceAutoGenerated` + - Added model `ResourceAutoGenerated` + - Added model `TrackedResource` + - Added operation group `FleetOperations` + - Added operation group `FleetspaceAccountOperations` + - Added operation group `FleetspaceOperations` + +## 9.8.0 (2025-05-07) + +### Features Added + + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `full_text_policy` + - Model `SqlContainerGetPropertiesResource` added property `full_text_policy` + - Model `SqlContainerResource` added property `full_text_policy` + - Added model `FullTextPath` + - Added model `FullTextPolicy` + +## 10.0.0b5 (2024-12-23) + +### Features Added + + - Model `CommandPostBody` added property `readwrite` + - Model `ErrorResponse` added property `error` + - Model `ErrorResponseAutoGenerated` added property `code` + - Model `ErrorResponseAutoGenerated` added property `message` + - Model `IndexingPolicy` added property `vector_indexes` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `vector_embedding_policy` + - Model `SqlContainerGetPropertiesResource` added property `vector_embedding_policy` + - Model `SqlContainerResource` added property `vector_embedding_policy` + - Model `ThroughputSettingsGetPropertiesResource` added property `throughput_buckets` + - Model `ThroughputSettingsResource` added property `throughput_buckets` + - Added model `CommandAsyncPostBody` + - Added enum `DistanceFunction` + - Added model `PermissionAutoGenerated` + - Added model `TableRoleAssignmentListResult` + - Added model `TableRoleAssignmentResource` + - Added model `TableRoleDefinitionListResult` + - Added model `TableRoleDefinitionResource` + - Added model `ThroughputBucketResource` + - Added enum `VectorDataType` + - Added model `VectorEmbedding` + - Added model `VectorEmbeddingPolicy` + - Added model `VectorIndex` + - Added enum `VectorIndexType` + - Operation group `TableResourcesOperations` added method `begin_create_update_table_role_assignment` + - Operation group `TableResourcesOperations` added method `begin_create_update_table_role_definition` + - Operation group `TableResourcesOperations` added method `begin_delete_table_role_assignment` + - Operation group `TableResourcesOperations` added method `begin_delete_table_role_definition` + - Operation group `TableResourcesOperations` added method `get_table_role_assignment` + - Operation group `TableResourcesOperations` added method `get_table_role_definition` + - Operation group `TableResourcesOperations` added method `list_table_role_assignments` + - Operation group `TableResourcesOperations` added method `list_table_role_definitions` + +### Breaking Changes + + - Model `CommandPostBody` deleted or renamed its instance variable `read_write` + - Model `ErrorResponse` deleted or renamed its instance variable `code` + - Model `ErrorResponse` deleted or renamed its instance variable `message` + - Model `ErrorResponseAutoGenerated` deleted or renamed its instance variable `error` + +## 9.7.0 (2024-11-18) + +### Features Added + + - Model `DatabaseAccountCreateUpdateParameters` added property `enable_per_region_per_partition_autoscale` + - Model `DatabaseAccountGetResults` added property `enable_per_region_per_partition_autoscale` + - Model `DatabaseAccountUpdateParameters` added property `enable_per_region_per_partition_autoscale` + - Model `IndexingPolicy` added property `vector_indexes` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `vector_embedding_policy` + - Model `SqlContainerGetPropertiesResource` added property `vector_embedding_policy` + - Model `SqlContainerResource` added property `vector_embedding_policy` + - Added enum `DistanceFunction` + - Added enum `VectorDataType` + - Added model `VectorEmbedding` + - Added model `VectorEmbeddingPolicy` + - Added model `VectorIndex` + - Added enum `VectorIndexType` + +## 10.0.0b4 (2024-09-23) + +### Features Added + + - Client `CosmosDBManagementClient` added operation group `network_security_perimeter_configurations` + - Client `CosmosDBManagementClient` added operation group `chaos_fault` + - Enum `DataTransferComponent` added member `COSMOS_DB_MONGO_V_CORE` + - Model `DatabaseAccountCreateUpdateParameters` added property `capacity_mode` + - Model `DatabaseAccountGetResults` added property `capacity_mode` + - Model `DatabaseAccountGetResults` added property `capacity_mode_change_transition_state` + - Model `DatabaseAccountUpdateParameters` added property `capacity_mode` + - Enum `ServerVersion` added member `FIVE0` + - Enum `ServerVersion` added member `SEVEN0` + - Enum `ServerVersion` added member `SIX0` + - Model `ServiceResourceCreateUpdateParameters` added parameter `properties` in method `__init__` + - Model `SqlDedicatedGatewayServiceResourceProperties` added property `dedicated_gateway_type` + - Added model `AccessRule` + - Added enum `AccessRuleDirection` + - Added model `AccessRuleProperties` + - Added model `AccessRulePropertiesSubscriptionsItem` + - Added enum `CapacityMode` + - Added model `CapacityModeChangeTransitionState` + - Added enum `CapacityModeTransitionStatus` + - Added model `ChaosFaultListResponse` + - Added model `ChaosFaultResource` + - Added model `CosmosMongoVCoreDataTransferDataSourceSink` + - Added model `DataTransferServiceResourceCreateUpdateProperties` + - Added enum `DedicatedGatewayType` + - Added model `GraphAPIComputeServiceResourceCreateUpdateProperties` + - Added enum `IssueType` + - Added model `MaterializedViewsBuilderServiceResourceCreateUpdateProperties` + - Added model `NetworkSecurityPerimeter` + - Added model `NetworkSecurityPerimeterConfiguration` + - Added model `NetworkSecurityPerimeterConfigurationListResult` + - Added model `NetworkSecurityPerimeterConfigurationProperties` + - Added enum `NetworkSecurityPerimeterConfigurationProvisioningState` + - Added model `NetworkSecurityProfile` + - Added model `ProvisioningIssue` + - Added model `ProvisioningIssueProperties` + - Added model `ResourceAssociation` + - Added enum `ResourceAssociationAccessMode` + - Added model `ServiceResourceCreateUpdateProperties` + - Added enum `Severity` + - Added model `SqlDedicatedGatewayServiceResourceCreateUpdateProperties` + - Added enum `SupportedActions` + - Added model `ChaosFaultOperations` + - Added model `NetworkSecurityPerimeterConfigurationsOperations` + +### Breaking Changes + + - Deleted or renamed client operation group `CosmosDBManagementClient.mongo_clusters` + - Deleted or renamed enum value `CreateMode.POINT_IN_TIME_RESTORE` + - Model `ServiceResourceCreateUpdateParameters` deleted or renamed its instance variable `instance_size` + - Model `ServiceResourceCreateUpdateParameters` deleted or renamed its instance variable `instance_count` + - Model `ServiceResourceCreateUpdateParameters` deleted or renamed its instance variable `service_type` + - Deleted or renamed model `CheckNameAvailabilityReason` + - Deleted or renamed model `CheckNameAvailabilityRequest` + - Deleted or renamed model `CheckNameAvailabilityResponse` + - Deleted or renamed model `ConnectionString` + - Deleted or renamed model `FirewallRule` + - Deleted or renamed model `ListConnectionStringsResult` + - Deleted or renamed model `MongoCluster` + - Deleted or renamed model `MongoClusterRestoreParameters` + - Deleted or renamed model `MongoClusterStatus` + - Deleted or renamed model `MongoClusterUpdate` + - Deleted or renamed model `NodeGroupProperties` + - Deleted or renamed model `NodeGroupSpec` + - Deleted or renamed model `NodeKind` + - Deleted or renamed model `ProvisioningState` + - Deleted or renamed model `MongoClustersOperations` + +## 9.6.0 (2024-09-18) + +### Features Added + + - Model `ResourceRestoreParameters` added property `restore_with_ttl_disabled` + - Model `RestoreParameters` added parameter `restore_with_ttl_disabled` in method `__init__` + - Model `RestoreParametersBase` added property `restore_with_ttl_disabled` + - Enum `ServerVersion` added member `SEVEN0` + - Added model `ErrorAdditionalInfo` + - Added model `ErrorDetail` + - Added model `ErrorResponseAutoGenerated` + +## 9.5.1 (2024-06-19) + +### Features Added + + - Model ServiceResourceCreateUpdateParameters has a new parameter properties + +### Breaking Changes + + - Model ServiceResourceCreateUpdateParameters no longer has parameter instance_count + - Model ServiceResourceCreateUpdateParameters no longer has parameter instance_size + - Model ServiceResourceCreateUpdateParameters no longer has parameter service_type + +### Bugs Fixed + + - Disable parameter flatten for Model ServiceResourceCreateUpdateParameters to avoid deserializatin + +## 9.5.0 (2024-05-20) + +### Features Added + + - Model ClusterResourceProperties has a new parameter azure_connection_method + - Model ClusterResourceProperties has a new parameter private_link_resource_id + - Model DataCenterResourceProperties has a new parameter private_endpoint_ip_address + - Model SqlDedicatedGatewayServiceResourceProperties has a new parameter dedicated_gateway_type + +## 10.0.0b3 (2024-03-18) + +### Features Added + + - Added operation DataTransferJobsOperations.complete + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_per_region_per_partition_autoscale + - Model DatabaseAccountGetResults has a new parameter enable_per_region_per_partition_autoscale + - Model DatabaseAccountUpdateParameters has a new parameter enable_per_region_per_partition_autoscale + - Model PrivateEndpointConnection has a new parameter system_data + - Model ProxyResource has a new parameter system_data + - Model Resource has a new parameter system_data + - Model ResourceRestoreParameters has a new parameter restore_with_ttl_disabled + - Model RestoreParameters has a new parameter restore_with_ttl_disabled + - Model RestoreParametersBase has a new parameter restore_with_ttl_disabled + +## 10.0.0b2 (2024-01-26) + +### Features Added + + - Added operation CassandraClustersOperations.begin_invoke_command_async + - Added operation CassandraClustersOperations.get_command_async + - Added operation CassandraClustersOperations.list_command + - Added operation group ThroughputPoolAccountOperations + - Added operation group ThroughputPoolAccountsOperations + - Added operation group ThroughputPoolOperations + - Added operation group ThroughputPoolsOperations + - Model BackupResource has a new parameter backup_expiry_timestamp + - Model BackupResource has a new parameter backup_id + - Model BackupResource has a new parameter backup_start_timestamp + - Model BackupResource has a new parameter backup_state + - Model BackupResource has a new parameter backup_stop_timestamp + - Model CassandraClusterDataCenterNodeItem has a new parameter is_latest_model + - Model ClusterResourceProperties has a new parameter auto_replicate + - Model ClusterResourceProperties has a new parameter azure_connection_method + - Model ClusterResourceProperties has a new parameter backup_schedules + - Model ClusterResourceProperties has a new parameter cluster_type + - Model ClusterResourceProperties has a new parameter extensions + - Model ClusterResourceProperties has a new parameter external_data_centers + - Model ClusterResourceProperties has a new parameter private_link_resource_id + - Model ClusterResourceProperties has a new parameter scheduled_event_strategy + - Model CommandPostBody has a new parameter read_write + - Model CosmosCassandraDataTransferDataSourceSink has a new parameter remote_account_name + - Model CosmosMongoDataTransferDataSourceSink has a new parameter remote_account_name + - Model CosmosSqlDataTransferDataSourceSink has a new parameter remote_account_name + - Model DataCenterResourceProperties has a new parameter private_endpoint_ip_address + - Model DataTransferJobGetResults has a new parameter duration + - Model DataTransferJobGetResults has a new parameter mode + - Model DataTransferJobProperties has a new parameter duration + - Model DataTransferJobProperties has a new parameter mode + - Model DatabaseAccountCreateUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountCreateUpdateParameters has a new parameter default_priority_level + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_priority_based_execution + - Model DatabaseAccountGetResults has a new parameter customer_managed_key_status + - Model DatabaseAccountGetResults has a new parameter default_priority_level + - Model DatabaseAccountGetResults has a new parameter enable_priority_based_execution + - Model DatabaseAccountUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountUpdateParameters has a new parameter default_priority_level + - Model DatabaseAccountUpdateParameters has a new parameter enable_priority_based_execution + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter computed_properties + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableTablePropertiesResource has a new parameter can_undelete + - Model RestorableTablePropertiesResource has a new parameter can_undelete_reason + - Model SqlContainerGetPropertiesResource has a new parameter computed_properties + - Model SqlContainerResource has a new parameter computed_properties + - Model ThroughputSettingsGetPropertiesResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsGetPropertiesResource has a new parameter soft_allowed_maximum_throughput + - Model ThroughputSettingsResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsResource has a new parameter soft_allowed_maximum_throughput + - Operation CassandraClustersOperations.begin_deallocate has a new optional parameter x_ms_force_deallocate + +### Breaking Changes + + - Model BackupResource no longer has parameter id + - Model BackupResource no longer has parameter name + - Model BackupResource no longer has parameter properties + - Model BackupResource no longer has parameter type + - Model CommandPostBody no longer has parameter readwrite + +## 9.4.0 (2023-12-19) + +### Features Added + + - Model GremlinDatabaseGetPropertiesResource has a new parameter create_mode + - Model GremlinDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model GremlinDatabaseResource has a new parameter create_mode + - Model GremlinDatabaseResource has a new parameter restore_parameters + - Model GremlinGraphGetPropertiesResource has a new parameter create_mode + - Model GremlinGraphGetPropertiesResource has a new parameter restore_parameters + - Model GremlinGraphResource has a new parameter create_mode + - Model GremlinGraphResource has a new parameter restore_parameters + - Model MongoDBCollectionGetPropertiesResource has a new parameter create_mode + - Model MongoDBCollectionGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBCollectionResource has a new parameter create_mode + - Model MongoDBCollectionResource has a new parameter restore_parameters + - Model MongoDBDatabaseGetPropertiesResource has a new parameter create_mode + - Model MongoDBDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBDatabaseResource has a new parameter create_mode + - Model MongoDBDatabaseResource has a new parameter restore_parameters + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter computed_properties + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter create_mode + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter restore_parameters + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter create_mode + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter restore_parameters + - Model RestorableTablePropertiesResource has a new parameter can_undelete + - Model RestorableTablePropertiesResource has a new parameter can_undelete_reason + - Model SqlContainerGetPropertiesResource has a new parameter computed_properties + - Model SqlContainerGetPropertiesResource has a new parameter create_mode + - Model SqlContainerGetPropertiesResource has a new parameter restore_parameters + - Model SqlContainerResource has a new parameter computed_properties + - Model SqlContainerResource has a new parameter create_mode + - Model SqlContainerResource has a new parameter restore_parameters + - Model SqlDatabaseGetPropertiesResource has a new parameter create_mode + - Model SqlDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model SqlDatabaseResource has a new parameter create_mode + - Model SqlDatabaseResource has a new parameter restore_parameters + - Model TableGetPropertiesResource has a new parameter create_mode + - Model TableGetPropertiesResource has a new parameter restore_parameters + - Model TableResource has a new parameter create_mode + - Model TableResource has a new parameter restore_parameters + +## 9.3.0 (2023-10-23) + +### Features Added + + - Model DatabaseAccountCreateUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountGetResults has a new parameter customer_managed_key_status + - Model DatabaseAccountGetResults has a new parameter enable_burst_capacity + - Model DatabaseAccountUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountUpdateParameters has a new parameter enable_burst_capacity + +## 10.0.0b1 (2023-06-16) + +### Features Added + + - Added operation CassandraClustersOperations.get_backup + - Added operation CassandraClustersOperations.list_backups + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation MongoDBResourcesOperations.begin_list_mongo_db_collection_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_retrieve_throughput_distribution + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_list_sql_container_partition_merge + - Added operation SqlResourcesOperations.begin_sql_container_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_sql_database_partition_merge + - Added operation SqlResourcesOperations.begin_sql_database_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_database_retrieve_throughput_distribution + - Added operation group DataTransferJobsOperations + - Added operation group GraphResourcesOperations + - Added operation group MongoClustersOperations + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model DatabaseAccountGetResults has a new parameter enable_burst_capacity + - Model DatabaseAccountGetResults has a new parameter enable_materialized_views + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountUpdateParameters has a new parameter enable_materialized_views + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetPropertiesResource has a new parameter create_mode + - Model GremlinDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinDatabaseResource has a new parameter create_mode + - Model GremlinDatabaseResource has a new parameter restore_parameters + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetPropertiesResource has a new parameter create_mode + - Model GremlinGraphGetPropertiesResource has a new parameter restore_parameters + - Model GremlinGraphGetResults has a new parameter identity + - Model GremlinGraphResource has a new parameter create_mode + - Model GremlinGraphResource has a new parameter restore_parameters + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetPropertiesResource has a new parameter create_mode + - Model MongoDBCollectionGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBCollectionGetResults has a new parameter identity + - Model MongoDBCollectionResource has a new parameter create_mode + - Model MongoDBCollectionResource has a new parameter restore_parameters + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model MongoDBDatabaseGetPropertiesResource has a new parameter create_mode + - Model MongoDBDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model MongoDBDatabaseResource has a new parameter create_mode + - Model MongoDBDatabaseResource has a new parameter restore_parameters + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter create_mode + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter materialized_view_definition + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter restore_parameters + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter create_mode + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter restore_parameters + - Model RestoreParameters has a new parameter source_backup_location + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetPropertiesResource has a new parameter create_mode + - Model SqlContainerGetPropertiesResource has a new parameter materialized_view_definition + - Model SqlContainerGetPropertiesResource has a new parameter restore_parameters + - Model SqlContainerGetResults has a new parameter identity + - Model SqlContainerResource has a new parameter create_mode + - Model SqlContainerResource has a new parameter materialized_view_definition + - Model SqlContainerResource has a new parameter restore_parameters + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseGetPropertiesResource has a new parameter create_mode + - Model SqlDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model SqlDatabaseGetResults has a new parameter identity + - Model SqlDatabaseResource has a new parameter create_mode + - Model SqlDatabaseResource has a new parameter restore_parameters + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model TableGetPropertiesResource has a new parameter create_mode + - Model TableGetPropertiesResource has a new parameter restore_parameters + - Model TableGetResults has a new parameter identity + - Model TableResource has a new parameter create_mode + - Model TableResource has a new parameter restore_parameters + - Model ThroughputSettingsGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + +### Breaking Changes + + - Model ThroughputSettingsGetPropertiesResource no longer has parameter instant_maximum_throughput + - Model ThroughputSettingsGetPropertiesResource no longer has parameter soft_allowed_maximum_throughput + - Model ThroughputSettingsResource no longer has parameter instant_maximum_throughput + - Model ThroughputSettingsResource no longer has parameter soft_allowed_maximum_throughput + +## 9.2.0 (2023-05-08) + +### Features Added + + - Model ContinuousModeBackupPolicy has a new parameter continuous_mode_properties + - Model RestorableDatabaseAccountGetResult has a new parameter oldest_restorable_time + - Model ThroughputSettingsGetPropertiesResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsGetPropertiesResource has a new parameter soft_allowed_maximum_throughput + - Model ThroughputSettingsResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsResource has a new parameter soft_allowed_maximum_throughput + - Added new enum type `ContinuousTier` + - Enum `PublicNetworkAccess` has a new value `SECURED_BY_PERIMETER` + +## 9.1.0 (2023-04-21) + +### Features Added + + - Model CassandraClusterDataCenterNodeItem has a new parameter cassandra_process_status + - Model CassandraClusterPublicStatus has a new parameter errors + - Model ClusterResourceProperties has a new parameter provision_error + - Model DataCenterResourceProperties has a new parameter authentication_method_ldap_properties + - Model DataCenterResourceProperties has a new parameter deallocated + - Model DataCenterResourceProperties has a new parameter provision_error + - Model DatabaseAccountConnectionString has a new parameter key_kind + - Model DatabaseAccountConnectionString has a new parameter type + - Model LocationProperties has a new parameter is_subscription_region_access_allowed_for_az + - Model LocationProperties has a new parameter is_subscription_region_access_allowed_for_regular + - Model LocationProperties has a new parameter status + +## 9.1.0b2 (2023-04-20) + +### Features Added + + - Added operation group MongoClustersOperations + +## 9.1.0b1 (2023-03-20) + +### Features Added + + - Added operation CassandraClustersOperations.get_backup + - Added operation CassandraClustersOperations.list_backups + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation MongoDBResourcesOperations.begin_list_mongo_db_collection_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_retrieve_throughput_distribution + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_list_sql_container_partition_merge + - Added operation SqlResourcesOperations.begin_sql_container_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_sql_database_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_database_retrieve_throughput_distribution + - Added operation group DataTransferJobsOperations + - Added operation group GraphResourcesOperations + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model ContinuousModeBackupPolicy has a new parameter continuous_mode_properties + - Model DataCenterResourceProperties has a new parameter authentication_method_ldap_properties + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model DatabaseAccountGetResults has a new parameter enable_burst_capacity + - Model DatabaseAccountGetResults has a new parameter enable_materialized_views + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountUpdateParameters has a new parameter enable_materialized_views + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetPropertiesResource has a new parameter create_mode + - Model GremlinDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinDatabaseResource has a new parameter create_mode + - Model GremlinDatabaseResource has a new parameter restore_parameters + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetPropertiesResource has a new parameter create_mode + - Model GremlinGraphGetPropertiesResource has a new parameter restore_parameters + - Model GremlinGraphGetResults has a new parameter identity + - Model GremlinGraphResource has a new parameter create_mode + - Model GremlinGraphResource has a new parameter restore_parameters + - Model LocationProperties has a new parameter status + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetPropertiesResource has a new parameter create_mode + - Model MongoDBCollectionGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBCollectionGetResults has a new parameter identity + - Model MongoDBCollectionResource has a new parameter create_mode + - Model MongoDBCollectionResource has a new parameter restore_parameters + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model MongoDBDatabaseGetPropertiesResource has a new parameter create_mode + - Model MongoDBDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model MongoDBDatabaseResource has a new parameter create_mode + - Model MongoDBDatabaseResource has a new parameter restore_parameters + - Model RestorableDatabaseAccountGetResult has a new parameter oldest_restorable_time + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter create_mode + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter restore_parameters + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter create_mode + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter restore_parameters + - Model RestoreParameters has a new parameter source_backup_location + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetPropertiesResource has a new parameter create_mode + - Model SqlContainerGetPropertiesResource has a new parameter restore_parameters + - Model SqlContainerGetResults has a new parameter identity + - Model SqlContainerResource has a new parameter create_mode + - Model SqlContainerResource has a new parameter restore_parameters + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseGetPropertiesResource has a new parameter create_mode + - Model SqlDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model SqlDatabaseGetResults has a new parameter identity + - Model SqlDatabaseResource has a new parameter create_mode + - Model SqlDatabaseResource has a new parameter restore_parameters + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model TableGetPropertiesResource has a new parameter create_mode + - Model TableGetPropertiesResource has a new parameter restore_parameters + - Model TableGetResults has a new parameter identity + - Model TableResource has a new parameter create_mode + - Model TableResource has a new parameter restore_parameters + - Model ThroughputSettingsGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + +## 9.0.0 (2023-02-15) + +### Features Added + + - Added operation GremlinResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation SqlResourcesOperations.begin_create_update_client_encryption_key + - Added operation SqlResourcesOperations.get_client_encryption_key + - Added operation SqlResourcesOperations.list_client_encryption_keys + - Added operation TableResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation group RestorableGremlinDatabasesOperations + - Added operation group RestorableGremlinGraphsOperations + - Added operation group RestorableGremlinResourcesOperations + - Added operation group RestorableTableResourcesOperations + - Added operation group RestorableTablesOperations + - Model DatabaseAccountCreateUpdateParameters has a new parameter minimal_tls_version + - Model DatabaseAccountGetResults has a new parameter minimal_tls_version + - Model DatabaseAccountUpdateParameters has a new parameter minimal_tls_version + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter client_encryption_policy + - Model RestoreParameters has a new parameter gremlin_databases_to_restore + - Model RestoreParameters has a new parameter tables_to_restore + - Model SqlContainerGetPropertiesResource has a new parameter client_encryption_policy + - Model SqlContainerResource has a new parameter client_encryption_policy + - Operation RestorableMongodbCollectionsOperations.list has a new optional parameter end_time + - Operation RestorableMongodbCollectionsOperations.list has a new optional parameter start_time + +## 9.0.0b2 (2022-10-26) + +### Features Added + + - Added model CosmosMongoDataTransferDataSourceSink + +## 9.0.0b1 (2022-10-10) + +### Features Added + + - Added operation CassandraClustersOperations.get_backup + - Added operation CassandraClustersOperations.list_backups + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation GremlinResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation MongoDBResourcesOperations.begin_list_mongo_db_collection_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_retrieve_throughput_distribution + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_create_update_client_encryption_key + - Added operation SqlResourcesOperations.begin_list_sql_container_partition_merge + - Added operation SqlResourcesOperations.begin_sql_container_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_sql_database_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_database_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.get_client_encryption_key + - Added operation SqlResourcesOperations.list_client_encryption_keys + - Added operation TableResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation group DataTransferJobsOperations + - Added operation group GraphResourcesOperations + - Added operation group RestorableGremlinDatabasesOperations + - Added operation group RestorableGremlinGraphsOperations + - Added operation group RestorableGremlinResourcesOperations + - Added operation group RestorableTableResourcesOperations + - Added operation group RestorableTablesOperations + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model ContinuousModeBackupPolicy has a new parameter continuous_mode_properties + - Model DataCenterResourceProperties has a new parameter authentication_method_ldap_properties + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model DatabaseAccountGetResults has a new parameter enable_materialized_views + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountUpdateParameters has a new parameter enable_materialized_views + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetResults has a new parameter identity + - Model LocationProperties has a new parameter status + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetPropertiesResource has a new parameter create_mode + - Model MongoDBCollectionGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBCollectionGetResults has a new parameter identity + - Model MongoDBCollectionResource has a new parameter create_mode + - Model MongoDBCollectionResource has a new parameter restore_parameters + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model MongoDBDatabaseGetPropertiesResource has a new parameter create_mode + - Model MongoDBDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model MongoDBDatabaseResource has a new parameter create_mode + - Model MongoDBDatabaseResource has a new parameter restore_parameters + - Model RestorableDatabaseAccountGetResult has a new parameter oldest_restorable_time + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter client_encryption_policy + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter create_mode + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter restore_parameters + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter create_mode + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter restore_parameters + - Model RestoreParameters has a new parameter gremlin_databases_to_restore + - Model RestoreParameters has a new parameter tables_to_restore + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetPropertiesResource has a new parameter client_encryption_policy + - Model SqlContainerGetPropertiesResource has a new parameter create_mode + - Model SqlContainerGetPropertiesResource has a new parameter restore_parameters + - Model SqlContainerGetResults has a new parameter identity + - Model SqlContainerResource has a new parameter client_encryption_policy + - Model SqlContainerResource has a new parameter create_mode + - Model SqlContainerResource has a new parameter restore_parameters + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseGetPropertiesResource has a new parameter create_mode + - Model SqlDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model SqlDatabaseGetResults has a new parameter identity + - Model SqlDatabaseResource has a new parameter create_mode + - Model SqlDatabaseResource has a new parameter restore_parameters + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model TableGetResults has a new parameter identity + - Model ThroughputSettingsGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + +### Breaking Changes + + - Operation RestorableMongodbCollectionsOperations.list has a new parameter end_time + - Operation RestorableMongodbCollectionsOperations.list has a new parameter start_time + +## 8.0.0 (2022-09-08) + +### Features Added + + - Added operation MongoDBResourcesOperations.begin_create_update_mongo_role_definition + - Added operation MongoDBResourcesOperations.begin_create_update_mongo_user_definition + - Added operation MongoDBResourcesOperations.begin_delete_mongo_role_definition + - Added operation MongoDBResourcesOperations.begin_delete_mongo_user_definition + - Added operation MongoDBResourcesOperations.get_mongo_role_definition + - Added operation MongoDBResourcesOperations.get_mongo_user_definition + - Added operation MongoDBResourcesOperations.list_mongo_role_definitions + - Added operation MongoDBResourcesOperations.list_mongo_user_definitions + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_partition_merge + - Model DatabaseAccountCreateUpdateParameters has a new parameter keys_metadata + - Model DatabaseAccountGetResults has a new parameter enable_partition_merge + - Model DatabaseAccountGetResults has a new parameter keys_metadata + - Model DatabaseAccountUpdateParameters has a new parameter enable_partition_merge + - Model DatabaseAccountUpdateParameters has a new parameter keys_metadata + +## 8.0.0b2 (2022-08-11) + +### Breaking Changes + + - Renamed model `ComponentsM9L909SchemasCassandraclusterpublicstatusPropertiesDatacentersItemsPropertiesNodesItems` to `CassandraClusterDataCenterNodeItem` + - Renamed model `Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties` to `ManagedServiceIdentityUserAssignedIdentity` + +## 8.0.0b1 (2022-08-03) + +**Features** + + - Added operation CassandraClustersOperations.get_backup + - Added operation CassandraClustersOperations.list_backups + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation GremlinResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation MongoDBResourcesOperations.begin_create_update_mongo_role_definition + - Added operation MongoDBResourcesOperations.begin_create_update_mongo_user_definition + - Added operation MongoDBResourcesOperations.begin_delete_mongo_role_definition + - Added operation MongoDBResourcesOperations.begin_delete_mongo_user_definition + - Added operation MongoDBResourcesOperations.begin_list_mongo_db_collection_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_retrieve_throughput_distribution + - Added operation MongoDBResourcesOperations.get_mongo_role_definition + - Added operation MongoDBResourcesOperations.get_mongo_user_definition + - Added operation MongoDBResourcesOperations.list_mongo_role_definitions + - Added operation MongoDBResourcesOperations.list_mongo_user_definitions + - Added operation SqlResourcesOperations.begin_create_update_client_encryption_key + - Added operation SqlResourcesOperations.begin_list_sql_container_partition_merge + - Added operation SqlResourcesOperations.begin_sql_container_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.get_client_encryption_key + - Added operation SqlResourcesOperations.list_client_encryption_keys + - Added operation TableResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation group DataTransferJobsOperations + - Added operation group GraphResourcesOperations + - Added operation group RestorableGremlinDatabasesOperations + - Added operation group RestorableGremlinGraphsOperations + - Added operation group RestorableGremlinResourcesOperations + - Added operation group RestorableTableResourcesOperations + - Added operation group RestorableTablesOperations + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model ContinuousModeBackupPolicy has a new parameter continuous_mode_properties + - Model DataCenterResourceProperties has a new parameter authentication_method_ldap_properties + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountCreateUpdateParameters has a new parameter keys_metadata + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model DatabaseAccountGetResults has a new parameter enable_materialized_views + - Model DatabaseAccountGetResults has a new parameter keys_metadata + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountUpdateParameters has a new parameter keys_metadata + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetResults has a new parameter identity + - Model LocationProperties has a new parameter status + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetResults has a new parameter identity + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model RestorableDatabaseAccountGetResult has a new parameter oldest_restorable_time + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter client_encryption_policy + - Model RestoreParameters has a new parameter gremlin_databases_to_restore + - Model RestoreParameters has a new parameter tables_to_restore + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetPropertiesResource has a new parameter client_encryption_policy + - Model SqlContainerGetResults has a new parameter identity + - Model SqlContainerResource has a new parameter client_encryption_policy + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseGetResults has a new parameter identity + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model TableGetResults has a new parameter identity + - Model ThroughputSettingsGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + +**Breaking changes** + + - Operation RestorableMongodbCollectionsOperations.list has a new parameter end_time + - Operation RestorableMongodbCollectionsOperations.list has a new parameter start_time + +## 7.0.0 (2022-07-22) + +**Features** + + - Added operation MongoDBResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation group CassandraClustersOperations + - Added operation group CassandraDataCentersOperations + - Added operation group LocationsOperations + - Added operation group ServiceOperations + - Model DatabaseAccountCreateUpdateParameters has a new parameter capacity + - Model DatabaseAccountGetResults has a new parameter capacity + - Model DatabaseAccountUpdateParameters has a new parameter capacity + - Model GremlinGraphGetPropertiesResource has a new parameter analytical_storage_ttl + - Model GremlinGraphResource has a new parameter analytical_storage_ttl + - Model PeriodicModeProperties has a new parameter backup_storage_redundancy + +## 7.0.0b6 (2022-05-23) + +**Features** + + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_retrieve_throughput_distribution + +**Breaking changes** + + - Removed operation MongoDBResourcesOperations.begin_sql_container_retrieve_throughput_distribution + +## 7.0.0b5 (2022-04-28) + +**Features** + + - Added operation DataTransferJobsOperations.cancel + - Added operation DataTransferJobsOperations.pause + - Added operation DataTransferJobsOperations.resume + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_sql_container_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Model DataTransferJobGetResults has a new parameter processed_count + - Model DataTransferJobGetResults has a new parameter total_count + - Model DataTransferJobProperties has a new parameter processed_count + - Model DataTransferJobProperties has a new parameter total_count + +**Breaking changes** + + - Model DataTransferJobGetResults no longer has parameter percentage_complete + - Model DataTransferJobProperties no longer has parameter percentage_complete + +## 7.0.0b4 (2022-04-14) + +**Features** + + - Added operation MongoDBResourcesOperations.begin_list_mongo_db_collection_partition_merge + - Added operation SqlResourcesOperations.begin_list_sql_container_partition_merge + - Model ContinuousModeBackupPolicy has a new parameter continuous_mode_properties + - Model KeyWrapMetadata has a new parameter algorithm + - Model RestorableDatabaseAccountGetResult has a new parameter oldest_restorable_time + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter client_encryption_policy + - Model SqlContainerGetPropertiesResource has a new parameter client_encryption_policy + - Model SqlContainerResource has a new parameter client_encryption_policy + +## 7.0.0b3 (2022-02-18) + +**Features** + + - Added operation CassandraClustersOperations.get_backup + - Added operation CassandraClustersOperations.list_backups + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation GremlinResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation MongoDBResourcesOperations.begin_create_update_mongo_role_definition + - Added operation MongoDBResourcesOperations.begin_create_update_mongo_user_definition + - Added operation MongoDBResourcesOperations.begin_delete_mongo_role_definition + - Added operation MongoDBResourcesOperations.begin_delete_mongo_user_definition + - Added operation MongoDBResourcesOperations.get_mongo_role_definition + - Added operation MongoDBResourcesOperations.get_mongo_user_definition + - Added operation MongoDBResourcesOperations.list_mongo_role_definitions + - Added operation MongoDBResourcesOperations.list_mongo_user_definitions + - Added operation SqlResourcesOperations.begin_create_update_client_encryption_key + - Added operation SqlResourcesOperations.get_client_encryption_key + - Added operation SqlResourcesOperations.list_client_encryption_keys + - Added operation TableResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation group DataTransferJobsOperations + - Added operation group GraphResourcesOperations + - Added operation group RestorableGremlinDatabasesOperations + - Added operation group RestorableGremlinGraphsOperations + - Added operation group RestorableGremlinResourcesOperations + - Added operation group RestorableTableResourcesOperations + - Added operation group RestorableTablesOperations + - Added operation group ServiceOperations + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model DataCenterResourceProperties has a new parameter authentication_method_ldap_properties + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model DatabaseAccountGetResults has a new parameter enable_materialized_views + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountUpdateParameters has a new parameter enable_materialized_views + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetResults has a new parameter identity + - Model LocationProperties has a new parameter status + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetResults has a new parameter identity + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model RestoreParameters has a new parameter gremlin_databases_to_restore + - Model RestoreParameters has a new parameter tables_to_restore + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetResults has a new parameter identity + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseGetResults has a new parameter identity + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model TableGetResults has a new parameter identity + - Model ThroughputSettingsGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + +**Breaking changes** + + - Operation RestorableMongodbCollectionsOperations.list has a new signature + - Operation RestorableMongodbCollectionsOperations.list has a new signature + +## 7.0.0b2 (2021-10-26) + +**Features** + + - Model DataCenterResourceProperties has a new parameter disk_capacity + - Model DataCenterResourceProperties has a new parameter disk_sku + - Model DataCenterResourceProperties has a new parameter managed_disk_customer_key_uri + - Model DataCenterResourceProperties has a new parameter sku + - Model DataCenterResourceProperties has a new parameter availability_zone + - Model DataCenterResourceProperties has a new parameter backup_storage_customer_key_uri + - Model DatabaseAccountCreateUpdateParameters has a new parameter capacity + - Model DatabaseAccountUpdateParameters has a new parameter capacity + - Model ClusterResourceProperties has a new parameter cassandra_audit_logging_enabled + - Model ClusterResourceProperties has a new parameter deallocated + - Model DatabaseAccountGetResults has a new parameter capacity + - Added operation MongoDBResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation CassandraClustersOperations.begin_invoke_command + - Added operation CassandraClustersOperations.begin_start + - Added operation CassandraClustersOperations.begin_deallocate + - Added operation CassandraClustersOperations.status + - Added operation group LocationsOperations + +**Breaking changes** + + - Model MongoDBDatabaseGetResults no longer has parameter identity + - Model MongoDBDatabaseCreateUpdateParameters no longer has parameter identity + - Model SqlContainerGetResults no longer has parameter identity + - Model SqlUserDefinedFunctionGetResults no longer has parameter identity + - Model GremlinDatabaseGetResults no longer has parameter identity + - Model SqlTriggerCreateUpdateParameters no longer has parameter identity + - Model SqlContainerCreateUpdateParameters no longer has parameter identity + - Model SqlDatabaseCreateUpdateParameters no longer has parameter identity + - Model LocationProperties no longer has parameter status + - Model DatabaseAccountCreateUpdateParameters no longer has parameter diagnostic_log_settings + - Model ThroughputSettingsGetResults no longer has parameter identity + - Model DatabaseAccountUpdateParameters no longer has parameter diagnostic_log_settings + - Model ARMResourceProperties no longer has parameter identity + - Model CassandraTableGetResults no longer has parameter identity + - Model GremlinGraphGetResults no longer has parameter identity + - Model CassandraKeyspaceCreateUpdateParameters no longer has parameter identity + - Model GremlinDatabaseCreateUpdateParameters no longer has parameter identity + - Model SqlTriggerGetResults no longer has parameter identity + - Model GremlinGraphCreateUpdateParameters no longer has parameter identity + - Model MongoDBCollectionGetResults no longer has parameter identity + - Model TableGetResults no longer has parameter identity + - Model CassandraKeyspaceGetResults no longer has parameter identity + - Model MongoDBCollectionCreateUpdateParameters no longer has parameter identity + - Model SqlStoredProcedureGetResults no longer has parameter identity + - Model SqlStoredProcedureCreateUpdateParameters no longer has parameter identity + - Model ThroughputSettingsUpdateParameters no longer has parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters no longer has parameter identity + - Model TableCreateUpdateParameters no longer has parameter identity + - Model DatabaseAccountGetResults no longer has parameter diagnostic_log_settings + - Model SqlDatabaseGetResults no longer has parameter identity + - Model CassandraTableCreateUpdateParameters no longer has parameter identity + - Removed operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Removed operation CassandraResourcesOperations.get_cassandra_view + - Removed operation CassandraResourcesOperations.list_cassandra_views + - Removed operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Removed operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Removed operation CassandraResourcesOperations.get_cassandra_view_throughput + - Removed operation CassandraResourcesOperations.begin_delete_cassandra_view + - Removed operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Removed operation CassandraClustersOperations.begin_request_repair + - Removed operation CassandraClustersOperations.begin_fetch_node_status + - Removed operation CassandraClustersOperations.get_backup + - Removed operation CassandraClustersOperations.list_backups + - Removed operation group ServiceOperations + - Removed operation group CosmosDBManagementClientOperationsMixin + - Removed operation group GraphResourcesOperations + +## 7.0.0b1 (2021-09-17) + +**Features** + + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model TableGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlDatabaseGetResults has a new parameter identity + - Model GremlinGraphGetResults has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model PeriodicModeProperties has a new parameter backup_storage_redundancy + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetResults has a new parameter identity + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model ThroughputSettingsGetResults has a new parameter identity + - Model MongoDBCollectionGetResults has a new parameter identity + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model ARMResourceProperties has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation group CassandraClustersOperations + - Added operation group CassandraDataCentersOperations + - Added operation group ServiceOperations + - Added operation group CosmosDBManagementClientOperationsMixin + - Added operation group GraphResourcesOperations + +**Breaking changes** + + - Parameter create_mode of model DatabaseAccountCreateUpdateParameters is now required + +## 6.4.0 (2021-06-22) + +**Features** + + - Model ContinuousModeBackupPolicy has a new parameter migration_state + - Model DatabaseAccountGetResults has a new parameter restore_parameters + - Model DatabaseAccountGetResults has a new parameter analytical_storage_configuration + - Model DatabaseAccountGetResults has a new parameter system_data + - Model DatabaseAccountGetResults has a new parameter instance_id + - Model DatabaseAccountGetResults has a new parameter disable_local_auth + - Model DatabaseAccountGetResults has a new parameter create_mode + - Model BackupPolicy has a new parameter migration_state + - Model DatabaseAccountCreateUpdateParameters has a new parameter analytical_storage_configuration + - Model DatabaseAccountCreateUpdateParameters has a new parameter restore_parameters + - Model DatabaseAccountCreateUpdateParameters has a new parameter disable_local_auth + - Model DatabaseAccountCreateUpdateParameters has a new parameter create_mode + - Model PeriodicModeBackupPolicy has a new parameter migration_state + - Model DatabaseAccountUpdateParameters has a new parameter analytical_storage_configuration + - Model DatabaseAccountUpdateParameters has a new parameter disable_local_auth + - Added operation SqlResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation group RestorableMongodbDatabasesOperations + - Added operation group RestorableDatabaseAccountsOperations + - Added operation group RestorableSqlDatabasesOperations + - Added operation group RestorableSqlContainersOperations + - Added operation group RestorableMongodbResourcesOperations + - Added operation group RestorableMongodbCollectionsOperations + - Added operation group RestorableSqlResourcesOperations + +## 6.3.0 (2021-05-14) + +**Breaking changes** + + - Model CassandraKeyspaceCreateUpdateParameters no longer has parameter identity + - Model ARMResourceProperties no longer has parameter identity + - Model MongoDBCollectionCreateUpdateParameters no longer has parameter identity + - Model SqlDatabaseCreateUpdateParameters no longer has parameter identity + - Model SqlStoredProcedureCreateUpdateParameters no longer has parameter identity + - Model SqlTriggerGetResults no longer has parameter identity + - Model MongoDBDatabaseCreateUpdateParameters no longer has parameter identity + - Model SqlDatabaseGetResults no longer has parameter identity + - Model TableGetResults no longer has parameter identity + - Model CassandraTableCreateUpdateParameters no longer has parameter identity + - Model GremlinGraphCreateUpdateParameters no longer has parameter identity + - Model GremlinDatabaseGetResults no longer has parameter identity + - Model ThroughputSettingsUpdateParameters no longer has parameter identity + - Model CassandraKeyspaceGetResults no longer has parameter identity + - Model SqlContainerGetResults no longer has parameter identity + - Model SqlUserDefinedFunctionGetResults no longer has parameter identity + - Model SqlTriggerCreateUpdateParameters no longer has parameter identity + - Model MongoDBCollectionGetResults no longer has parameter identity + - Model MongoDBDatabaseGetResults no longer has parameter identity + - Model PeriodicModeProperties no longer has parameter backup_storage_redundancy + - Model ThroughputSettingsGetResults no longer has parameter identity + - Model GremlinGraphGetResults no longer has parameter identity + - Model GremlinDatabaseCreateUpdateParameters no longer has parameter identity + - Model CassandraTableGetResults no longer has parameter identity + - Model SqlStoredProcedureGetResults no longer has parameter identity + - Model TableCreateUpdateParameters no longer has parameter identity + - Model DatabaseAccountGetResults no longer has parameter create_mode + - Model DatabaseAccountGetResults no longer has parameter restore_parameters + - Model DatabaseAccountGetResults no longer has parameter instance_id + - Model DatabaseAccountGetResults no longer has parameter system_data + - Model SqlUserDefinedFunctionCreateUpdateParameters no longer has parameter identity + - Model SqlContainerCreateUpdateParameters no longer has parameter identity + - Removed operation SqlResourcesOperations.begin_retrieve_continuous_backup_information + - Model DatabaseAccountCreateUpdateParameters has a new signature + - Removed operation group RestorableDatabaseAccountsOperations + - Removed operation group RestorableMongodbCollectionsOperations + - Removed operation group CosmosDBManagementClientOperationsMixin + - Removed operation group RestorableSqlResourcesOperations + - Removed operation group RestorableMongodbDatabasesOperations + - Removed operation group CassandraClustersOperations + - Removed operation group RestorableMongodbResourcesOperations + - Removed operation group RestorableSqlContainersOperations + - Removed operation group CassandraDataCentersOperations + - Removed operation group RestorableSqlDatabasesOperations + - Removed operation group ServiceOperations + +## 6.3.0b1 (2021-05-10) + +**Features** + + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model TableGetResults has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model PeriodicModeProperties has a new parameter backup_storage_redundancy + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetResults has a new parameter identity + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model ThroughputSettingsGetResults has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model SqlDatabaseGetResults has a new parameter identity + - Model ARMResourceProperties has a new parameter identity + - Model GremlinDatabaseGetResults has a new parameter identity + - Model DatabaseAccountGetResults has a new parameter instance_id + - Model DatabaseAccountGetResults has a new parameter restore_parameters + - Model DatabaseAccountGetResults has a new parameter system_data + - Model DatabaseAccountGetResults has a new parameter create_mode + - Added operation SqlResourcesOperations.begin_create_update_sql_role_assignment + - Added operation SqlResourcesOperations.begin_retrieve_continuous_backup_information + - Added operation SqlResourcesOperations.begin_delete_sql_role_assignment + - Added operation SqlResourcesOperations.begin_create_update_sql_role_definition + - Added operation SqlResourcesOperations.list_sql_role_definitions + - Added operation SqlResourcesOperations.begin_delete_sql_role_definition + - Added operation SqlResourcesOperations.list_sql_role_assignments + - Added operation SqlResourcesOperations.get_sql_role_assignment + - Added operation SqlResourcesOperations.get_sql_role_definition + - Added operation group CassandraDataCentersOperations + - Added operation group RestorableSqlContainersOperations + - Added operation group CassandraClustersOperations + - Added operation group RestorableMongodbResourcesOperations + - Added operation group RestorableMongodbDatabasesOperations + - Added operation group RestorableDatabaseAccountsOperations + - Added operation group RestorableMongodbCollectionsOperations + - Added operation group CosmosDBManagementClientOperationsMixin + - Added operation group RestorableSqlResourcesOperations + - Added operation group ServiceOperations + - Added operation group RestorableSqlDatabasesOperations + +**Breaking changes** + + - Model DatabaseAccountCreateUpdateParameters has a new signature + +## 6.2.0 (2021-04-06) + +**Features** + + - Model DatabaseAccountUpdateParameters has a new parameter default_identity + - Model DatabaseAccountCreateUpdateParameters has a new parameter default_identity + - Model DatabaseAccountGetResults has a new parameter default_identity + +## 6.1.0 (2021-03-02) + +**Features** + + - Model DatabaseAccountGetResults has a new parameter network_acl_bypass + - Model DatabaseAccountGetResults has a new parameter backup_policy + - Model DatabaseAccountGetResults has a new parameter identity + - Model DatabaseAccountGetResults has a new parameter network_acl_bypass_resource_ids + - Model PrivateEndpointConnection has a new parameter group_id + - Model PrivateEndpointConnection has a new parameter provisioning_state + - Model ContainerPartitionKey has a new parameter system_key + - Model DatabaseAccountUpdateParameters has a new parameter network_acl_bypass + - Model DatabaseAccountUpdateParameters has a new parameter backup_policy + - Model DatabaseAccountUpdateParameters has a new parameter identity + - Model DatabaseAccountUpdateParameters has a new parameter network_acl_bypass_resource_ids + - Model PrivateLinkServiceConnectionStateProperty has a new parameter description + - Model DatabaseAccountCreateUpdateParameters has a new parameter network_acl_bypass + - Model DatabaseAccountCreateUpdateParameters has a new parameter backup_policy + - Model DatabaseAccountCreateUpdateParameters has a new parameter identity + - Model DatabaseAccountCreateUpdateParameters has a new parameter network_acl_bypass_resource_ids + +## 6.0.0 (2020-11-24) + +- GA release + +## 6.0.0b1 (2020-10-12) + +This is beta preview version. + +This version uses a next-generation code generator that introduces important breaking changes, but also important new features (like unified authentication and async programming). + +**General breaking changes** + +- Credential system has been completly revamped: + + - `azure.common.credentials` or `msrestazure.azure_active_directory` instances are no longer supported, use the `azure-identity` classes instead: https://pypi.org/project/azure-identity/ + - `credentials` parameter has been renamed `credential` + +- The `config` attribute no longer exists on a client, configuration should be passed as kwarg. Example: `MyClient(credential, subscription_id, enable_logging=True)`. For a complete set of + supported options, see the [parameters accept in init documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) +- You can't import a `version` module anymore, use `__version__` instead +- Operations that used to return a `msrest.polling.LROPoller` now returns a `azure.core.polling.LROPoller` and are prefixed with `begin_`. +- Exceptions tree have been simplified and most exceptions are now `azure.core.exceptions.HttpResponseError` (`CloudError` has been removed). +- Most of the operation kwarg have changed. Some of the most noticeable: + + - `raw` has been removed. Equivalent feature can be found using `cls`, a callback that will give access to internal HTTP response for advanced user + - For a complete set of + supported options, see the [parameters accept in Request documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) + +**General new features** + +- Type annotations support using `typing`. SDKs are mypy ready. +- This client has now stable and official support for async. Check the `aio` namespace of your package to find the async client. +- This client now support natively tracing library like OpenCensus or OpenTelemetry. See this [tracing quickstart](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core-tracing-opentelemetry) for an overview. + +## 1.0.0 (2020-08-17) + +**Features** + + - Model SqlContainerGetPropertiesResource has a new parameter analytical_storage_ttl + - Model DatabaseAccountUpdateParameters has a new parameter cors + - Model SqlContainerResource has a new parameter analytical_storage_ttl + - Model DatabaseAccountGetResults has a new parameter cors + - Added operation MongoDBResourcesOperations.migrate_mongo_db_collection_to_manual_throughput + - Added operation MongoDBResourcesOperations.migrate_mongo_db_database_to_manual_throughput + - Added operation MongoDBResourcesOperations.migrate_mongo_db_database_to_autoscale + - Added operation MongoDBResourcesOperations.migrate_mongo_db_collection_to_autoscale + - Added operation GremlinResourcesOperations.migrate_gremlin_database_to_manual_throughput + - Added operation GremlinResourcesOperations.migrate_gremlin_graph_to_autoscale + - Added operation GremlinResourcesOperations.migrate_gremlin_graph_to_manual_throughput + - Added operation GremlinResourcesOperations.migrate_gremlin_database_to_autoscale + - Added operation TableResourcesOperations.migrate_table_to_autoscale + - Added operation TableResourcesOperations.migrate_table_to_manual_throughput + - Added operation CassandraResourcesOperations.migrate_cassandra_keyspace_to_autoscale + - Added operation CassandraResourcesOperations.migrate_cassandra_keyspace_to_manual_throughput + - Added operation CassandraResourcesOperations.migrate_cassandra_table_to_manual_throughput + - Added operation CassandraResourcesOperations.migrate_cassandra_table_to_autoscale + - Added operation SqlResourcesOperations.migrate_sql_database_to_manual_throughput + - Added operation SqlResourcesOperations.migrate_sql_database_to_autoscale + - Added operation SqlResourcesOperations.migrate_sql_container_to_autoscale + - Added operation SqlResourcesOperations.migrate_sql_container_to_manual_throughput + +**Breaking changes** + + - Model ThroughputSettingsUpdateParameters no longer has parameter identity + - Model CassandraKeyspaceCreateUpdateParameters no longer has parameter identity + - Model SqlTriggerCreateUpdateParameters no longer has parameter identity + - Model SqlContainerGetResults no longer has parameter identity + - Model MongoDBDatabaseGetResults no longer has parameter identity + - Model GremlinGraphGetResults no longer has parameter identity + - Model SqlUserDefinedFunctionGetResults no longer has parameter identity + - Model CassandraTableGetResults no longer has parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters no longer has parameter identity + - Model SqlDatabaseGetResults no longer has parameter identity + - Model MongoDBCollectionGetResults no longer has parameter identity + - Model SqlStoredProcedureGetResults no longer has parameter identity + - Model GremlinDatabaseGetResults no longer has parameter identity + - Model MongoDBDatabaseCreateUpdateParameters no longer has parameter identity + - Model SqlTriggerGetResults no longer has parameter identity + - Model CassandraKeyspaceGetResults no longer has parameter identity + - Model DatabaseAccountUpdateParameters no longer has parameter backup_policy + - Model SqlStoredProcedureCreateUpdateParameters no longer has parameter identity + - Model TableCreateUpdateParameters no longer has parameter identity + - Model GremlinDatabaseCreateUpdateParameters no longer has parameter identity + - Model SqlDatabaseCreateUpdateParameters no longer has parameter identity + - Model MongoDBCollectionCreateUpdateParameters no longer has parameter identity + - Model DatabaseAccountGetResults no longer has parameter instance_id + - Model DatabaseAccountGetResults no longer has parameter system_data + - Model DatabaseAccountGetResults no longer has parameter backup_policy + - Model DatabaseAccountGetResults no longer has parameter identity + - Model DatabaseAccountGetResults no longer has parameter create_mode + - Model DatabaseAccountGetResults no longer has parameter restore_parameters + - Model SqlContainerCreateUpdateParameters no longer has parameter identity + - Model GremlinGraphCreateUpdateParameters no longer has parameter identity + - Model ARMResourceProperties no longer has parameter identity + - Model CassandraTableCreateUpdateParameters no longer has parameter identity + - Model ThroughputSettingsGetResults no longer has parameter identity + - Model TableGetResults no longer has parameter identity + - Model DatabaseAccountCreateUpdateParameters has a new signature + - Removed operation group RestorableDatabaseAccountsOperations + +## 0.16.0 (2020-07-31) + +**Features** + + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetResults has a new parameter identity + - Model TableGetResults has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model ThroughputSettingsGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model DatabaseAccountUpdateParameters has a new parameter backup_policy + - Model SqlDatabaseGetResults has a new parameter identity + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetResults has a new parameter identity + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model SqlContainerGetResults has a new parameter identity + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model DatabaseAccountGetResults has a new parameter system_data + - Model DatabaseAccountGetResults has a new parameter backup_policy + - Model DatabaseAccountGetResults has a new parameter create_mode + - Model DatabaseAccountGetResults has a new parameter instance_id + - Model DatabaseAccountGetResults has a new parameter identity + - Model DatabaseAccountGetResults has a new parameter restore_parameters + - Added operation group RestorableDatabaseAccountsOperations + +**Breaking changes** + + - Model DatabaseAccountCreateUpdateParameters has a new signature + +## 0.15.0 (2020-06-11) + +**Features** + + - Model MongoDBCollectionResource has a new parameter analytical_storage_ttl + - Model MongoDBDatabaseGetPropertiesOptions has a new parameter autoscale_settings + - Model ThroughputSettingsGetPropertiesResource has a new parameter autoscale_settings + - Model SqlContainerGetPropertiesOptions has a new parameter autoscale_settings + - Model CassandraTableGetPropertiesResource has a new parameter analytical_storage_ttl + - Model CassandraTableResource has a new parameter analytical_storage_ttl + - Model OptionsResource has a new parameter autoscale_settings + - Model TableGetPropertiesOptions has a new parameter autoscale_settings + - Model ThroughputSettingsResource has a new parameter autoscale_settings + - Model CassandraTableGetPropertiesOptions has a new parameter autoscale_settings + - Model GremlinDatabaseGetPropertiesOptions has a new parameter autoscale_settings + - Model DatabaseAccountGetResults has a new parameter api_properties + - Model DatabaseAccountGetResults has a new parameter ip_rules + - Model DatabaseAccountGetResults has a new parameter enable_free_tier + - Model DatabaseAccountGetResults has a new parameter enable_analytical_storage + - Model GremlinGraphGetPropertiesOptions has a new parameter autoscale_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter api_properties + - Model DatabaseAccountCreateUpdateParameters has a new parameter ip_rules + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_free_tier + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_analytical_storage + - Model MongoDBCollectionGetPropertiesOptions has a new parameter autoscale_settings + - Model CassandraKeyspaceGetPropertiesOptions has a new parameter autoscale_settings + - Model SqlDatabaseGetPropertiesOptions has a new parameter autoscale_settings + - Model DatabaseAccountUpdateParameters has a new parameter api_properties + - Model DatabaseAccountUpdateParameters has a new parameter ip_rules + - Model DatabaseAccountUpdateParameters has a new parameter enable_free_tier + - Model DatabaseAccountUpdateParameters has a new parameter enable_analytical_storage + - Model MongoDBCollectionGetPropertiesResource has a new parameter analytical_storage_ttl + +**Breaking changes** + + - Model ThroughputSettingsGetPropertiesResource no longer has parameter provisioned_throughput_settings + - Model ThroughputSettingsResource no longer has parameter provisioned_throughput_settings + - Model DatabaseAccountGetResults no longer has parameter ip_range_filter + - Model DatabaseAccountCreateUpdateParameters no longer has parameter ip_range_filter + - Model DatabaseAccountUpdateParameters no longer has parameter ip_range_filter + - Model CreateUpdateOptions has a new signature + +## 0.14.0 (2020-05-05) + +**Features** + + - Model DatabaseAccountGetResults has a new parameter private_endpoint_connections + +## 0.13.0 (2020-04-18) + +**Features** + + - Model DatabaseAccountUpdateParameters has a new parameter public_network_access + - Model DatabaseAccountCreateUpdateParameters has a new parameter public_network_access + - Model GremlinGraphGetResults has a new parameter options + - Model PrivateLinkResource has a new parameter required_zone_names + - Model ThroughputSettingsGetPropertiesResource has a new parameter provisioned_throughput_settings + - Model PrivateEndpointConnection has a new parameter group_id + - Model PrivateEndpointConnection has a new parameter provisioning_state + - Model MongoDBDatabaseGetResults has a new parameter options + - Model SqlContainerGetResults has a new parameter options + - Model TableGetResults has a new parameter options + - Model SqlDatabaseGetResults has a new parameter options + - Model CassandraKeyspaceGetResults has a new parameter options + - Model ThroughputSettingsResource has a new parameter provisioned_throughput_settings + - Model DatabaseAccountGetResults has a new parameter public_network_access + - Model GremlinDatabaseGetResults has a new parameter options + - Model MongoDBCollectionGetResults has a new parameter options + - Model CassandraTableGetResults has a new parameter options + - Added operation group NotebookWorkspacesOperations + +**Breaking changes** + + - Model ThroughputSettingsGetPropertiesResource no longer has parameter autopilot_settings + - Model ThroughputSettingsResource no longer has parameter autopilot_settings + - Operation PrivateEndpointConnectionsOperations.create_or_update has a new signature + +## 0.12.0 (2020-02-27) + +**Features** + + - Model DatabaseAccountGetResults has a new parameter key_vault_key_uri + - Model ThroughputSettingsResource has a new parameter autopilot_settings + - Model ThroughputSettingsGetPropertiesResource has a new parameter autopilot_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter key_vault_key_uri + - Model DatabaseAccountUpdateParameters has a new parameter key_vault_key_uri + +## 0.11.0 (2019-12-07) + +**Features** + + - Model GremlinDatabaseGetResults has a new parameter resource + - Model ThroughputSettingsGetResults has a new parameter resource + - Model SqlStoredProcedureGetResults has a new parameter resource + - Model MongoDBDatabaseGetResults has a new parameter resource + - Model SqlUserDefinedFunctionGetResults has a new parameter resource + - Model TableGetResults has a new parameter resource + - Model IndexingPolicy has a new parameter composite_indexes + - Model IndexingPolicy has a new parameter spatial_indexes + - Model CassandraKeyspaceGetResults has a new parameter resource + - Model SqlDatabaseGetResults has a new parameter resource + +**Breaking changes** + + - Model GremlinDatabaseGetResults no longer has parameter _etag + - Model GremlinDatabaseGetResults no longer has parameter + gremlin_database_get_results_id + - Model GremlinDatabaseGetResults no longer has parameter _ts + - Model GremlinDatabaseGetResults no longer has parameter _rid + - Model ThroughputSettingsGetResults no longer has parameter + minimum_throughput + - Model ThroughputSettingsGetResults no longer has parameter + offer_replace_pending + - Model ThroughputSettingsGetResults no longer has parameter + throughput + - Model SqlStoredProcedureGetResults no longer has parameter _etag + - Model SqlStoredProcedureGetResults no longer has parameter _ts + - Model SqlStoredProcedureGetResults no longer has parameter _rid + - Model SqlStoredProcedureGetResults no longer has parameter body + - Model SqlStoredProcedureGetResults no longer has parameter + sql_stored_procedure_get_results_id + - Model MongoDBDatabaseGetResults no longer has parameter _etag + - Model MongoDBDatabaseGetResults no longer has parameter + mongo_db_database_get_results_id + - Model MongoDBDatabaseGetResults no longer has parameter _ts + - Model MongoDBDatabaseGetResults no longer has parameter _rid + - Model SqlUserDefinedFunctionGetResults no longer has parameter + _etag + - Model SqlUserDefinedFunctionGetResults no longer has parameter + sql_user_defined_function_get_results_id + - Model SqlUserDefinedFunctionGetResults no longer has parameter _ts + - Model SqlUserDefinedFunctionGetResults no longer has parameter _rid + - Model SqlUserDefinedFunctionGetResults no longer has parameter body + - Model TableGetResults no longer has parameter _etag + - Model TableGetResults no longer has parameter + table_get_results_id + - Model TableGetResults no longer has parameter _ts + - Model TableGetResults no longer has parameter _rid + - Model CassandraKeyspaceGetResults no longer has parameter _etag + - Model CassandraKeyspaceGetResults no longer has parameter + cassandra_keyspace_get_results_id + - Model CassandraKeyspaceGetResults no longer has parameter _ts + - Model CassandraKeyspaceGetResults no longer has parameter _rid + - Model SqlDatabaseGetResults no longer has parameter _colls + - Model SqlDatabaseGetResults no longer has parameter _etag + - Model SqlDatabaseGetResults no longer has parameter _users + - Model SqlDatabaseGetResults no longer has parameter + sql_database_get_results_id + - Model SqlDatabaseGetResults no longer has parameter _rid + - Model SqlDatabaseGetResults no longer has parameter _ts + - Model GremlinGraphGetResults has a new signature + - Model CassandraTableGetResults has a new signature + - Model SqlTriggerGetResults has a new signature + - Model SqlContainerGetResults has a new signature + - Model MongoDBCollectionGetResults has a new signature + +## 0.10.0 (2019-11-13) + +**Features** + + - Model DatabaseAccountCreateUpdateParameters has a new parameter + disable_key_based_metadata_write_access + - Model ContainerPartitionKey has a new parameter version + - Added operation DatabaseAccountsOperations.update + - Added operation group SqlResourcesOperations + - Added operation group MongoDBResourcesOperations + - Added operation group TableResourcesOperations + - Added operation group GremlinResourcesOperations + - Added operation group CassandraResourcesOperations + +**Breaking changes** + + - CosmosDB has been renamed to CosmosDBManagementClient + - CosmosDBConfiguration was renamed to + CosmodDBManagementClientConfiguration + - Model MongoDBCollectionCreateUpdateParameters has a new signature + - Model GremlinGraphCreateUpdateParameters has a new signature + - Model CassandraKeyspaceCreateUpdateParameters has a new signature + - Model GremlinDatabaseCreateUpdateParameters has a new signature + - Model SqlContainerCreateUpdateParameters has a new signature + - Model CassandraTableCreateUpdateParameters has a new signature + - Model TableCreateUpdateParameters has a new signature + - Model MongoDBDatabaseCreateUpdateParameters has a new signature + - Model SqlDatabaseCreateUpdateParameters has a new signature + - Removed operation + DatabaseAccountsOperations.get_gremlin_graph_throughput + - Removed operation + DatabaseAccountsOperations.update_cassandra_keyspace_throughput + - Removed operation DatabaseAccountsOperations.delete_sql_database + - Removed operation + DatabaseAccountsOperations.update_sql_database_throughput + - Removed operation + DatabaseAccountsOperations.update_mongo_db_database_throughput + - Removed operation + DatabaseAccountsOperations.delete_mongo_db_collection + - Removed operation + DatabaseAccountsOperations.list_mongo_db_databases + - Removed operation + DatabaseAccountsOperations.create_update_mongo_db_database + - Removed operation + DatabaseAccountsOperations.create_update_gremlin_graph + - Removed operation + DatabaseAccountsOperations.update_gremlin_database_throughput + - Removed operation + DatabaseAccountsOperations.get_mongo_db_collection + - Removed operation + DatabaseAccountsOperations.delete_gremlin_database + - Removed operation + DatabaseAccountsOperations.create_update_cassandra_keyspace + - Removed operation DatabaseAccountsOperations.get_sql_database + - Removed operation DatabaseAccountsOperations.get_table + - Removed operation + DatabaseAccountsOperations.update_table_throughput + - Removed operation + DatabaseAccountsOperations.create_update_mongo_db_collection + - Removed operation DatabaseAccountsOperations.get_gremlin_database + - Removed operation + DatabaseAccountsOperations.create_update_sql_container + - Removed operation + DatabaseAccountsOperations.create_update_gremlin_database + - Removed operation DatabaseAccountsOperations.get_table_throughput + - Removed operation + DatabaseAccountsOperations.delete_mongo_db_database + - Removed operation + DatabaseAccountsOperations.get_cassandra_table_throughput + - Removed operation + DatabaseAccountsOperations.update_sql_container_throughput + - Removed operation DatabaseAccountsOperations.get_cassandra_table + - Removed operation + DatabaseAccountsOperations.list_gremlin_databases + - Removed operation DatabaseAccountsOperations.list_gremlin_graphs + - Removed operation + DatabaseAccountsOperations.list_mongo_db_collections + - Removed operation + DatabaseAccountsOperations.create_update_cassandra_table + - Removed operation + DatabaseAccountsOperations.delete_cassandra_keyspace + - Removed operation + DatabaseAccountsOperations.update_cassandra_table_throughput + - Removed operation + DatabaseAccountsOperations.update_gremlin_graph_throughput + - Removed operation DatabaseAccountsOperations.create_update_table + - Removed operation + DatabaseAccountsOperations.get_mongo_db_database_throughput + - Removed operation DatabaseAccountsOperations.get_sql_container + - Removed operation + DatabaseAccountsOperations.get_gremlin_database_throughput + - Removed operation + DatabaseAccountsOperations.get_mongo_db_collection_throughput + - Removed operation DatabaseAccountsOperations.list_cassandra_tables + - Removed operation + DatabaseAccountsOperations.get_sql_database_throughput + - Removed operation DatabaseAccountsOperations.list_sql_databases + - Removed operation DatabaseAccountsOperations.list_tables + - Removed operation + DatabaseAccountsOperations.get_cassandra_keyspace + - Removed operation DatabaseAccountsOperations.get_gremlin_graph + - Removed operation + DatabaseAccountsOperations.get_mongo_db_database + - Removed operation DatabaseAccountsOperations.delete_table + - Removed operation + DatabaseAccountsOperations.list_cassandra_keyspaces + - Removed operation DatabaseAccountsOperations.list_sql_containers + - Removed operation DatabaseAccountsOperations.delete_sql_container + - Removed operation DatabaseAccountsOperations.delete_gremlin_graph + - Removed operation + DatabaseAccountsOperations.get_cassandra_keyspace_throughput + - Removed operation + DatabaseAccountsOperations.get_sql_container_throughput + - Removed operation + DatabaseAccountsOperations.delete_cassandra_table + - Removed operation DatabaseAccountsOperations.patch + - Removed operation + DatabaseAccountsOperations.create_update_sql_database + - Removed operation + DatabaseAccountsOperations.update_mongo_db_collection_throughput + +## 0.9.0 (2019-11-09) + +**Features** + + - Added operation group PrivateLinkResourcesOperations + - Added operation group PrivateEndpointConnectionsOperations + +## 0.8.0 (2019-08-15) + +**Features** + + - Model DatabaseAccount has a new parameter + enable_cassandra_connector + - Model DatabaseAccount has a new parameter connector_offer + - Model DatabaseAccountCreateUpdateParameters has a new parameter + enable_cassandra_connector + - Model DatabaseAccountCreateUpdateParameters has a new parameter + connector_offer + +**General breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes if from some import. In summary, some modules +were incorrectly visible/importable and have been renamed. This fixed +several issues caused by usage of classes that were not supposed to be +used in the first place. + + - CosmosDB cannot be imported from `azure.mgmt.cosmosdb.cosmos_db` + anymore (import from `azure.mgmt.cosmosdb` works like before) + - CosmosDBConfiguration import has been moved from + `azure.mgmt.cosmosdb.cosmos_db` to `azure.mgmt.cosmosdb` + - A model `MyClass` from a "models" sub-module cannot be imported + anymore using `azure.mgmt.cosmosdb.models.my_class` (import from + `azure.mgmt.cosmosdb.models` works like before) + - An operation class `MyClassOperations` from an `operations` + sub-module cannot be imported anymore using + `azure.mgmt.cosmosdb.operations.my_class_operations` (import + from `azure.mgmt.cosmosdb.operations` works like before) + +Last but not least, HTTP connection pooling is now enabled by default. +You should always use a client as a context manager, or call close(), or +use no more than one client per process. + +## 0.7.0 (2019-06-07) + +**Features** + + - Added operation + DatabaseAccountsOperations.get_gremlin_graph_throughput + - Added operation + DatabaseAccountsOperations.get_sql_database_throughput + - Added operation + DatabaseAccountsOperations.update_gremlin_database_throughput + - Added operation + DatabaseAccountsOperations.get_sql_container_throughput + - Added operation + DatabaseAccountsOperations.update_sql_container_throughput + - Added operation + DatabaseAccountsOperations.get_gremlin_database_throughput + - Added operation + DatabaseAccountsOperations.get_cassandra_table_throughput + - Added operation + DatabaseAccountsOperations.update_cassandra_keyspace_throughput + - Added operation + DatabaseAccountsOperations.update_mongo_db_collection_throughput + - Added operation + DatabaseAccountsOperations.update_cassandra_table_throughput + - Added operation DatabaseAccountsOperations.update_table_throughput + - Added operation + DatabaseAccountsOperations.update_mongo_db_database_throughput + - Added operation + DatabaseAccountsOperations.get_mongo_db_database_throughput + - Added operation + DatabaseAccountsOperations.update_sql_database_throughput + - Added operation DatabaseAccountsOperations.get_table_throughput + - Added operation + DatabaseAccountsOperations.get_mongo_db_collection_throughput + - Added operation + DatabaseAccountsOperations.update_gremlin_graph_throughput + - Added operation + DatabaseAccountsOperations.get_cassandra_keyspace_throughput + +## 0.6.1 (2019-05-31) + +**Features** + + - Add is_zone_redundant attribute + +**Bugfix** + + - Fix some incorrect type from int to long (Python 2) + +## 0.6.0 (2019-05-03) + +**Features** + + - Added operation DatabaseAccountsOperations.list_sql_databases + - Added operation DatabaseAccountsOperations.delete_gremlin_graph + - Added operation DatabaseAccountsOperations.get_sql_database + - Added operation DatabaseAccountsOperations.delete_table + - Added operation DatabaseAccountsOperations.get_cassandra_keyspace + - Added operation DatabaseAccountsOperations.list_sql_containers + - Added operation + DatabaseAccountsOperations.create_update_sql_container + - Added operation DatabaseAccountsOperations.get_table + - Added operation DatabaseAccountsOperations.list_cassandra_tables + - Added operation DatabaseAccountsOperations.create_update_table + - Added operation + DatabaseAccountsOperations.delete_mongo_db_collection + - Added operation DatabaseAccountsOperations.get_gremlin_graph + - Added operation DatabaseAccountsOperations.get_gremlin_database + - Added operation + DatabaseAccountsOperations.list_cassandra_keyspaces + - Added operation + DatabaseAccountsOperations.create_update_mongo_db_collection + - Added operation + DatabaseAccountsOperations.create_update_cassandra_keyspace + - Added operation + DatabaseAccountsOperations.create_update_cassandra_table + - Added operation DatabaseAccountsOperations.get_mongo_db_database + - Added operation DatabaseAccountsOperations.list_gremlin_databases + - Added operation + DatabaseAccountsOperations.create_update_sql_database + - Added operation + DatabaseAccountsOperations.get_mongo_db_collection + - Added operation + DatabaseAccountsOperations.list_mongo_db_collections + - Added operation DatabaseAccountsOperations.get_sql_container + - Added operation + DatabaseAccountsOperations.delete_cassandra_keyspace + - Added operation + DatabaseAccountsOperations.delete_mongo_db_database + - Added operation DatabaseAccountsOperations.get_cassandra_table + - Added operation DatabaseAccountsOperations.delete_cassandra_table + - Added operation + DatabaseAccountsOperations.list_mongo_db_databases + - Added operation DatabaseAccountsOperations.list_gremlin_graphs + - Added operation + DatabaseAccountsOperations.create_update_mongo_db_database + - Added operation DatabaseAccountsOperations.delete_sql_container + - Added operation + DatabaseAccountsOperations.create_update_gremlin_graph + - Added operation + DatabaseAccountsOperations.create_update_gremlin_database + - Added operation DatabaseAccountsOperations.list_tables + - Added operation DatabaseAccountsOperations.delete_gremlin_database + - Added operation DatabaseAccountsOperations.delete_sql_database + +## 0.5.2 (2018-11-05) + +**Features** + + - Add ignore_missing_vnet_service_endpoint support + +## 0.5.1 (2018-10-16) + +**Bugfix** + + - Fix sdist broken in 0.5.0. No code change. + +## 0.5.0 (2018-10-08) + +**Features** + + - Add enable_multiple_write_locations support + +**Note** + + - `database_accounts.list_read_only_keys` is now doing a POST + call, and not GET anymore. This should not impact anything. Old + behavior be can found with the + `database_accounts.get_read_only_keys` **deprecated** method. + - azure-mgmt-nspkg is not installed anymore on Python 3 (PEP420-based + namespace package) + +## 0.4.1 (2018-05-15) + +**Features** + + - Add database_accounts.offline_region + - Add database_accounts.online_region + - Client class can be used as a context manager to keep the underlying + HTTP session open for performance + +## 0.4.0 (2018-04-17) + +**General Breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes. + + - Model signatures now use only keyword-argument syntax. All + positional arguments must be re-written as keyword-arguments. To + keep auto-completion in most cases, models are now generated for + Python 2 and Python 3. Python 3 uses the "*" syntax for + keyword-only arguments. + - Enum types now use the "str" mixin (class AzureEnum(str, Enum)) to + improve the behavior when unrecognized enum values are encountered. + While this is not a breaking change, the distinctions are important, + and are documented here: + At a glance: + - "is" should not be used at all. + - "format" will return the string value, where "%s" string + formatting will return `NameOfEnum.stringvalue`. Format syntax + should be prefered. + - New Long Running Operation: + - Return type changes from + `msrestazure.azure_operation.AzureOperationPoller` to + `msrest.polling.LROPoller`. External API is the same. + - Return type is now **always** a `msrest.polling.LROPoller`, + regardless of the optional parameters used. + - The behavior has changed when using `raw=True`. Instead of + returning the initial call result as `ClientRawResponse`, + without polling, now this returns an LROPoller. After polling, + the final resource will be returned as a `ClientRawResponse`. + - New `polling` parameter. The default behavior is + `Polling=True` which will poll using ARM algorithm. When + `Polling=False`, the response of the initial call will be + returned without polling. + - `polling` parameter accepts instances of subclasses of + `msrest.polling.PollingMethod`. + - `add_done_callback` will no longer raise if called after + polling is finished, but will instead execute the callback right + away. + +**Bugfixes** + + - Compatibility of the sdist with wheel 0.31.0 + +**Features** + + - Add VNet related properties to CosmosDB + +## 0.3.1 (2018-02-01) + +**Bugfixes** + + - Fix capabilities model definition + +## 0.3.0 (2018-01-30) + +**Features** + + - Add capability + - Add metrics operation groups + +## 0.2.1 (2017-10-18) + +**Bugfixes** + + - Fix max_interval_in_seconds interval values from 1/100 to 5/86400 + - Tags is now optional + +**Features** + + - Add operation list + +## 0.2.0 (2017-06-26) + + - Creation on this package based on azure-mgmt-documentdb 0.1.3 + content diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-cosmosdb-10.0.0b6-CHANGELOG.trimmed.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-cosmosdb-10.0.0b6-CHANGELOG.trimmed.md new file mode 100644 index 000000000000..28c3fcbd02f9 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-cosmosdb-10.0.0b6-CHANGELOG.trimmed.md @@ -0,0 +1,877 @@ +# Release History + +## 10.0.0b6 (2026-05-06) + +### Features Added + + - Client `CosmosDBManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `CosmosDBManagementClient` added method `send_request` + - Client `CosmosDBManagementClient` added operation group `copy_jobs` + - Client `CosmosDBManagementClient` added operation group `garnet_clusters` + - Client `CosmosDBManagementClient` added operation group `mongo_mi_resources` + - Client `CosmosDBManagementClient` added operation group `fleet` + - Client `CosmosDBManagementClient` added operation group `fleet_analytics` + - Client `CosmosDBManagementClient` added operation group `fleetspace` + - Client `CosmosDBManagementClient` added operation group `fleetspace_account` + - Model `CassandraKeyspaceGetResults` added property `system_data` + - Model `CassandraTableGetResults` added property `system_data` + - Model `CassandraViewGetResults` added property `system_data` + - Model `ClientEncryptionKeyGetResults` added property `system_data` + - Model `ClusterResource` added property `system_data` + - Model `DataCenterResource` added property `system_data` + - Enum `DataTransferComponent` added member `BASE_COSMOS_DATA_TRANSFER_DATA_SOURCE_SINK` + - Model `DataTransferJobGetResults` added property `system_data` + - Model `GraphResourceGetResults` added property `system_data` + - Model `GremlinDatabaseGetResults` added property `system_data` + - Model `GremlinGraphGetResults` added property `system_data` + - Model `IndexingPolicy` added property `full_text_indexes` + - Model `LocationGetResult` added property `system_data` + - Model `MaterializedViewDefinition` added property `throughput_bucket_for_build` + - Model `MongoDBCollectionGetResults` added property `system_data` + - Model `MongoDBDatabaseGetResults` added property `system_data` + - Model `MongoRoleDefinitionGetResults` added property `system_data` + - Model `MongoUserDefinitionGetResults` added property `system_data` + - Model `NotebookWorkspace` added property `system_data` + - Model `Permission` added property `id` + - Model `PhysicalPartitionThroughputInfoResource` added property `target_throughput` + - Model `PrivateLinkResource` added property `system_data` + - Model `RestorableDatabaseAccountGetResult` added property `system_data` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `materialized_views` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `materialized_views_properties` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `full_text_policy` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `data_masking_policy` + - Model `ServiceResource` added property `system_data` + - Model `SqlContainerGetPropertiesResource` added property `materialized_views` + - Model `SqlContainerGetPropertiesResource` added property `materialized_views_properties` + - Model `SqlContainerGetPropertiesResource` added property `full_text_policy` + - Model `SqlContainerGetPropertiesResource` added property `data_masking_policy` + - Model `SqlContainerGetResults` added property `system_data` + - Model `SqlContainerResource` added property `materialized_views` + - Model `SqlContainerResource` added property `materialized_views_properties` + - Model `SqlContainerResource` added property `full_text_policy` + - Model `SqlContainerResource` added property `data_masking_policy` + - Model `SqlDatabaseGetResults` added property `system_data` + - Model `SqlRoleAssignmentGetResults` added property `system_data` + - Model `SqlRoleDefinitionGetResults` added property `system_data` + - Model `SqlStoredProcedureGetResults` added property `system_data` + - Model `SqlTriggerGetResults` added property `system_data` + - Model `SqlUserDefinedFunctionGetResults` added property `system_data` + - Enum `Status` added member `CREATING` + - Model `TableGetResults` added property `system_data` + - Model `ThroughputBucketResource` added property `is_default_bucket` + - Model `ThroughputSettingsGetResults` added property `system_data` + - Enum `VectorDataType` added member `FLOAT16` + - Model `VectorIndex` added property `quantization_byte_size` + - Model `VectorIndex` added property `indexing_search_list_size` + - Model `VectorIndex` added property `vector_index_shard_key` + - Added enum `AllocationState` + - Added model `AzureBlobContainer` + - Added model `AzureBlobSourceSinkDetails` + - Added model `BaseCopyJobProperties` + - Added model `BaseCopyJobTask` + - Added model `BlobToCassandraRUCopyJobProperties` + - Added model `BlobToCassandraRUCopyJobTask` + - Added model `CassandraRUToBlobCopyJobProperties` + - Added model `CassandraRUToBlobCopyJobTask` + - Added model `CassandraRUToCassandraRUCopyJobProperties` + - Added model `CassandraRUToCassandraRUCopyJobTask` + - Added model `CassandraRoleAssignmentResource` + - Added model `CassandraRoleAssignmentResourceProperties` + - Added model `CassandraRoleDefinitionResource` + - Added model `CassandraRoleDefinitionResourceProperties` + - Added model `CloudError` + - Added model `CopyJobGetResults` + - Added enum `CopyJobMode` + - Added model `CopyJobProperties` + - Added enum `CopyJobStatus` + - Added enum `CopyJobType` + - Added model `CosmosDBCassandraTable` + - Added model `CosmosDBMongoCollection` + - Added model `CosmosDBMongoVCoreCollection` + - Added model `CosmosDBNoSqlContainer` + - Added model `CosmosDBSourceSinkDetails` + - Added model `DataMaskingPolicy` + - Added model `DataMaskingPolicyExcludedPathsItem` + - Added model `DataMaskingPolicyIncludedPathsItem` + - Added model `FleetAnalyticsProperties` + - Added enum `FleetAnalyticsPropertiesStorageLocationType` + - Added model `FleetAnalyticsResource` + - Added model `FleetResource` + - Added model `FleetResourceProperties` + - Added model `FleetResourceUpdate` + - Added model `FleetspaceAccountProperties` + - Added model `FleetspaceAccountPropertiesGlobalDatabaseAccountProperties` + - Added model `FleetspaceAccountResource` + - Added model `FleetspaceProperties` + - Added enum `FleetspacePropertiesFleetspaceApiKind` + - Added enum `FleetspacePropertiesServiceTier` + - Added model `FleetspacePropertiesThroughputPoolConfiguration` + - Added model `FleetspaceResource` + - Added model `FleetspaceUpdate` + - Added model `FullTextIndexPath` + - Added model `FullTextPath` + - Added model `FullTextPolicy` + - Added enum `GarnetCacheProvisioningState` + - Added model `GarnetClusterResource` + - Added model `GarnetClusterResourcePatch` + - Added model `GarnetClusterResourcePatchProperties` + - Added model `GarnetClusterResourceProperties` + - Added model `GarnetClusterResourcePropertiesEndPointsItem` + - Added model `GremlinRoleAssignmentResource` + - Added model `GremlinRoleAssignmentResourceProperties` + - Added model `GremlinRoleDefinitionResource` + - Added model `GremlinRoleDefinitionResourceProperties` + - Added model `MaterializedViewDetails` + - Added model `MaterializedViewsProperties` + - Added model `MongoMIRoleAssignmentResource` + - Added model `MongoMIRoleAssignmentResourceProperties` + - Added model `MongoMIRoleDefinitionResource` + - Added model `MongoMIRoleDefinitionResourceProperties` + - Added model `MongoRUToMongoRUCopyJobProperties` + - Added model `MongoRUToMongoRUCopyJobTask` + - Added model `MongoRUToMongoVCoreCopyJobProperties` + - Added model `MongoRUToMongoVCoreCopyJobTask` + - Added model `MongoRoleDefinitionResource` + - Added model `MongoUserDefinitionResource` + - Added model `MongoVCoreSourceSinkDetails` + - Added model `NoSqlRUToNoSqlRUCopyJobProperties` + - Added model `NoSqlRUToNoSqlRUCopyJobTask` + - Added model `SqlRoleAssignmentResource` + - Added model `SqlRoleDefinitionResource` + - Operation group `CassandraResourcesOperations` added method `begin_create_update_cassandra_role_assignment` + - Operation group `CassandraResourcesOperations` added method `begin_create_update_cassandra_role_definition` + - Operation group `CassandraResourcesOperations` added method `begin_delete_cassandra_role_assignment` + - Operation group `CassandraResourcesOperations` added method `begin_delete_cassandra_role_definition` + - Operation group `CassandraResourcesOperations` added method `get_cassandra_role_assignment` + - Operation group `CassandraResourcesOperations` added method `get_cassandra_role_definition` + - Operation group `CassandraResourcesOperations` added method `list_cassandra_role_assignments` + - Operation group `CassandraResourcesOperations` added method `list_cassandra_role_definitions` + - Operation group `GremlinResourcesOperations` added method `begin_create_update_gremlin_role_assignment` + - Operation group `GremlinResourcesOperations` added method `begin_create_update_gremlin_role_definition` + - Operation group `GremlinResourcesOperations` added method `begin_delete_gremlin_role_assignment` + - Operation group `GremlinResourcesOperations` added method `begin_delete_gremlin_role_definition` + - Operation group `GremlinResourcesOperations` added method `get_gremlin_role_assignment` + - Operation group `GremlinResourcesOperations` added method `get_gremlin_role_definition` + - Operation group `GremlinResourcesOperations` added method `list_gremlin_role_assignments` + - Operation group `GremlinResourcesOperations` added method `list_gremlin_role_definitions` + - Added operation group `CopyJobsOperations` + - Added operation group `FleetAnalyticsOperations` + - Added operation group `FleetOperations` + - Added operation group `FleetspaceAccountOperations` + - Added operation group `FleetspaceOperations` + - Added operation group `GarnetClustersOperations` + - Added operation group `MongoMIResourcesOperations` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Model `CassandraKeyspaceCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraKeyspaceCreateUpdateProperties` + - Model `CassandraKeyspaceGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraKeyspaceGetProperties` + - Model `CassandraTableCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraTableCreateUpdateProperties` + - Model `CassandraTableGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraTableGetProperties` + - Model `CassandraViewCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraViewCreateUpdateProperties` + - Model `CassandraViewGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `CassandraViewGetProperties` + - Model `ChaosFaultResource` moved instance variable `action`, `region`, `database_name`, `container_name`, `provisioning_state` under property `properties` whose type is `ChaosFaultProperties` + - Model `ClientEncryptionKeyCreateUpdateParameters` moved instance variable `resource` under property `properties` whose type is `ClientEncryptionKeyCreateUpdateProperties` + - Model `ClientEncryptionKeyGetResults` moved instance variable `resource` under property `properties` whose type is `ClientEncryptionKeyGetProperties` + - Model `DataTransferJobGetResults` moved instance variable `job_name`, `source`, `destination`, `status`, `processed_count`, `total_count`, `last_updated_utc_time`, `worker_count`, `error`, `duration`, `mode` under property `properties` whose type is `DataTransferJobProperties` + - Model `DatabaseAccountCreateUpdateParameters` moved instance variable `consistency_policy`, `locations`, `ip_rules`, `is_virtual_network_filter_enabled`, `enable_automatic_failover`, `capabilities`, `virtual_network_rules`, `enable_multiple_write_locations`, `enable_cassandra_connector`, `connector_offer`, `disable_key_based_metadata_write_access`, `key_vault_key_uri`, `default_identity`, `public_network_access`, `enable_free_tier`, `api_properties`, `enable_analytical_storage`, `analytical_storage_configuration`, `create_mode`, `backup_policy`, `cors`, `network_acl_bypass`, `network_acl_bypass_resource_ids`, `diagnostic_log_settings`, `disable_local_auth`, `restore_parameters`, `capacity`, `capacity_mode`, `enable_materialized_views`, `keys_metadata`, `enable_partition_merge`, `enable_burst_capacity`, `minimal_tls_version`, `customer_managed_key_status`, `enable_priority_based_execution`, `default_priority_level`, `enable_per_region_per_partition_autoscale` under property `properties` whose type is `DatabaseAccountCreateUpdateProperties` + - Model `DatabaseAccountGetResults` moved instance variable `provisioning_state`, `document_endpoint`, `database_account_offer_type`, `ip_rules`, `is_virtual_network_filter_enabled`, `enable_automatic_failover`, `consistency_policy`, `capabilities`, `write_locations`, `read_locations`, `locations`, `failover_policies`, `virtual_network_rules`, `private_endpoint_connections`, `enable_multiple_write_locations`, `enable_cassandra_connector`, `connector_offer`, `disable_key_based_metadata_write_access`, `key_vault_key_uri`, `default_identity`, `public_network_access`, `enable_free_tier`, `api_properties`, `enable_analytical_storage`, `analytical_storage_configuration`, `instance_id`, `create_mode`, `restore_parameters`, `backup_policy`, `cors`, `network_acl_bypass`, `network_acl_bypass_resource_ids`, `diagnostic_log_settings`, `disable_local_auth`, `capacity`, `capacity_mode`, `capacity_mode_change_transition_state`, `enable_materialized_views`, `keys_metadata`, `enable_partition_merge`, `enable_burst_capacity`, `minimal_tls_version`, `customer_managed_key_status`, `enable_priority_based_execution`, `default_priority_level`, `enable_per_region_per_partition_autoscale` under property `properties` whose type is `DatabaseAccountGetProperties` + - Model `DatabaseAccountUpdateParameters` moved instance variable `consistency_policy`, `locations`, `ip_rules`, `is_virtual_network_filter_enabled`, `enable_automatic_failover`, `capabilities`, `virtual_network_rules`, `enable_multiple_write_locations`, `enable_cassandra_connector`, `connector_offer`, `disable_key_based_metadata_write_access`, `key_vault_key_uri`, `default_identity`, `public_network_access`, `enable_free_tier`, `api_properties`, `enable_analytical_storage`, `analytical_storage_configuration`, `backup_policy`, `cors`, `network_acl_bypass`, `network_acl_bypass_resource_ids`, `diagnostic_log_settings`, `disable_local_auth`, `capacity`, `capacity_mode`, `enable_materialized_views`, `keys_metadata`, `enable_partition_merge`, `enable_burst_capacity`, `minimal_tls_version`, `customer_managed_key_status`, `enable_priority_based_execution`, `default_priority_level`, `enable_per_region_per_partition_autoscale` under property `properties` whose type is `DatabaseAccountUpdateProperties` + - Model `GraphResourceCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `GraphResourceCreateUpdateProperties` + - Model `GraphResourceGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `GraphResourceGetProperties` + - Model `GremlinDatabaseCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinDatabaseCreateUpdateProperties` + - Model `GremlinDatabaseGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinDatabaseGetProperties` + - Model `GremlinGraphCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinGraphCreateUpdateProperties` + - Model `GremlinGraphGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `GremlinGraphGetProperties` + - Model `MongoDBCollectionCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBCollectionCreateUpdateProperties` + - Model `MongoDBCollectionGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBCollectionGetProperties` + - Model `MongoDBDatabaseCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBDatabaseCreateUpdateProperties` + - Model `MongoDBDatabaseGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `MongoDBDatabaseGetProperties` + - Model `MongoIndexKeys` deleted or renamed its instance variable `keys` + - Model `MongoRoleDefinitionCreateUpdateParameters` moved instance variable `role_name`, `type`, `database_name`, `privileges`, `roles` under property `properties` whose type is `MongoRoleDefinitionResource` + - Model `MongoRoleDefinitionGetResults` moved instance variable `role_name`, `type_properties_type`, `database_name`, `privileges`, `roles` under property `properties` whose type is `MongoRoleDefinitionResource` + - Model `MongoUserDefinitionCreateUpdateParameters` moved instance variable `user_name`, `password`, `database_name`, `custom_data`, `roles`, `mechanisms` under property `properties` whose type is `MongoUserDefinitionResource` + - Model `MongoUserDefinitionGetResults` moved instance variable `user_name`, `password`, `database_name`, `custom_data`, `roles`, `mechanisms` under property `properties` whose type is `MongoUserDefinitionResource` + - Model `RedistributeThroughputParameters` moved instance variable `resource` under property `properties` whose type is `RedistributeThroughputProperties` + - Model `RestorableDatabaseAccountGetResult` moved instance variable `account_name`, `creation_time`, `oldest_restorable_time`, `deletion_time`, `api_type`, `restorable_locations` under property `properties` whose type is `RestorableDatabaseAccountProperties` + - Model `RestorableGremlinDatabaseGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableGremlinDatabaseProperties` + - Model `RestorableGremlinGraphGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableGremlinGraphProperties` + - Model `RestorableMongodbCollectionGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableMongodbCollectionProperties` + - Model `RestorableMongodbDatabaseGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableMongodbDatabaseProperties` + - Model `RestorableSqlContainerGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableSqlContainerProperties` + - Model `RestorableSqlDatabaseGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableSqlDatabaseProperties` + - Model `RestorableTableGetResult` moved instance variable `resource` under property `properties` whose type is `RestorableTableProperties` + - Model `RetrieveThroughputParameters` moved instance variable `resource` under property `properties` whose type is `RetrieveThroughputProperties` + - Model `SqlContainerCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlContainerCreateUpdateProperties` + - Model `SqlContainerGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `SqlContainerGetProperties` + - Model `SqlDatabaseCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlDatabaseCreateUpdateProperties` + - Model `SqlDatabaseGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `SqlDatabaseGetProperties` + - Model `SqlRoleAssignmentCreateUpdateParameters` moved instance variable `role_definition_id`, `scope`, `principal_id` under property `properties` whose type is `SqlRoleAssignmentResource` + - Model `SqlRoleAssignmentGetResults` moved instance variable `role_definition_id`, `scope`, `principal_id` under property `properties` whose type is `SqlRoleAssignmentResource` + - Model `SqlRoleDefinitionCreateUpdateParameters` moved instance variable `role_name`, `type`, `assignable_scopes`, `permissions` under property `properties` whose type is `SqlRoleDefinitionResource` + - Model `SqlRoleDefinitionGetResults` moved instance variable `role_name`, `type_properties_type`, `assignable_scopes`, `permissions` under property `properties` whose type is `SqlRoleDefinitionResource` + - Model `SqlStoredProcedureCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlStoredProcedureCreateUpdateProperties` + - Model `SqlStoredProcedureGetResults` moved instance variable `resource` under property `properties` whose type is `SqlStoredProcedureGetProperties` + - Model `SqlTriggerCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlTriggerCreateUpdateProperties` + - Model `SqlTriggerGetResults` moved instance variable `resource` under property `properties` whose type is `SqlTriggerGetProperties` + - Model `SqlUserDefinedFunctionCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `SqlUserDefinedFunctionCreateUpdateProperties` + - Model `SqlUserDefinedFunctionGetResults` moved instance variable `resource` under property `properties` whose type is `SqlUserDefinedFunctionGetProperties` + - Model `TableCreateUpdateParameters` moved instance variable `resource`, `options` under property `properties` whose type is `TableCreateUpdateProperties` + - Model `TableGetResults` moved instance variable `resource`, `options` under property `properties` whose type is `TableGetProperties` + - Model `ThroughputPoolAccountResource` moved instance variable `provisioning_state`, `account_resource_identifier`, `account_location`, `account_instance_id` under property `properties` whose type is `ThroughputPoolAccountProperties` + - Model `ThroughputPoolResource` moved instance variable `provisioning_state`, `max_throughput` under property `properties` whose type is `ThroughputPoolProperties` + - Model `ThroughputPoolUpdate` moved instance variable `provisioning_state`, `max_throughput` under property `properties` whose type is `ThroughputPoolProperties` + - Model `ThroughputSettingsGetResults` moved instance variable `resource` under property `properties` whose type is `ThroughputSettingsGetProperties` + - Model `ThroughputSettingsUpdateParameters` moved instance variable `resource` under property `properties` whose type is `ThroughputSettingsUpdateProperties` + - Deleted or renamed model `DataTransferServiceResource` + - Deleted or renamed model `ExtendedResourceProperties` + - Deleted or renamed model `GraphAPIComputeServiceResource` + - Deleted or renamed model `ManagedCassandraARMResourceProperties` + - Deleted or renamed model `MaterializedViewsBuilderServiceResource` + - Deleted or renamed model `NodeStatus` + - Deleted or renamed model `PermissionAutoGenerated` + - Deleted or renamed model `SqlDedicatedGatewayServiceResource` + - Deleted or renamed model `ThroughputPoolAccountCreateParameters` + - Method `CassandraClustersOperations.begin_deallocate` changed its parameter `x_ms_force_deallocate` from `positional_or_keyword` to `keyword_only` + - Method `RestorableGremlinGraphsOperations.list` changed its parameter `restorable_gremlin_database_rid`, `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + - Method `RestorableGremlinResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableMongodbCollectionsOperations.list` changed its parameter `restorable_mongodb_database_rid`, `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + - Method `RestorableMongodbResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableSqlContainersOperations.list` changed its parameter `restorable_sql_database_rid`, `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + - Method `RestorableSqlResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableTableResourcesOperations.list` changed its parameter `restore_location`, `restore_timestamp_in_utc` from `positional_or_keyword` to `keyword_only` + - Method `RestorableTablesOperations.list` changed its parameter `start_time`, `end_time` from `positional_or_keyword` to `keyword_only` + +### Other Changes + + - Deleted model `ChaosFaultListResponse`/`DataTransferJobFeedResults`/`ListBackups`/`ListClusters`/`ListCommands`/`ListDataCenters`/`PartitionUsagesResult`/`UsagesResult` which actually were not used by SDK users + +## 9.9.0 (2025-11-14) + +### Features Added + + - Model `CosmosDBManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `CosmosDBManagementClient` added operation group `fleet` + - Client `CosmosDBManagementClient` added operation group `fleetspace` + - Client `CosmosDBManagementClient` added operation group `fleetspace_account` + - Model `DatabaseAccountCreateUpdateParameters` added property `enable_priority_based_execution` + - Model `DatabaseAccountCreateUpdateParameters` added property `default_priority_level` + - Model `DatabaseAccountGetResults` added property `key_vault_key_uri_version` + - Model `DatabaseAccountGetResults` added property `enable_priority_based_execution` + - Model `DatabaseAccountGetResults` added property `default_priority_level` + - Model `DatabaseAccountUpdateParameters` added property `enable_priority_based_execution` + - Model `DatabaseAccountUpdateParameters` added property `default_priority_level` + - Model `IndexingPolicy` added property `full_text_indexes` + - Model `RestoreParameters` added property `source_backup_location` + - Enum `Status` added member `CANCELED` + - Enum `Status` added member `CREATING` + - Enum `Status` added member `FAILED` + - Enum `Status` added member `SUCCEEDED` + - Enum `Status` added member `UPDATING` + - Enum `VectorDataType` added member `FLOAT16` + - Model `VectorIndex` added property `quantization_byte_size` + - Model `VectorIndex` added property `indexing_search_list_size` + - Model `VectorIndex` added property `vector_index_shard_key` + - Added enum `DefaultPriorityLevel` + - Added model `ErrorDetailAutoGenerated` + - Added model `ErrorResponseAutoGenerated2` + - Added model `FleetListResult` + - Added model `FleetResource` + - Added model `FleetResourceUpdate` + - Added model `FleetspaceAccountListResult` + - Added model `FleetspaceAccountPropertiesGlobalDatabaseAccountProperties` + - Added model `FleetspaceAccountResource` + - Added model `FleetspaceListResult` + - Added enum `FleetspacePropertiesFleetspaceApiKind` + - Added enum `FleetspacePropertiesServiceTier` + - Added model `FleetspacePropertiesThroughputPoolConfiguration` + - Added model `FleetspaceResource` + - Added model `FleetspaceUpdate` + - Added model `FullTextIndexPath` + - Added model `ProxyResourceAutoGenerated` + - Added model `ResourceAutoGenerated` + - Added model `TrackedResource` + - Added operation group `FleetOperations` + - Added operation group `FleetspaceAccountOperations` + - Added operation group `FleetspaceOperations` + +## 9.8.0 (2025-05-07) + +### Features Added + + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `full_text_policy` + - Model `SqlContainerGetPropertiesResource` added property `full_text_policy` + - Model `SqlContainerResource` added property `full_text_policy` + - Added model `FullTextPath` + - Added model `FullTextPolicy` + +## 10.0.0b5 (2024-12-23) + +### Features Added + + - Model `CommandPostBody` added property `readwrite` + - Model `ErrorResponse` added property `error` + - Model `ErrorResponseAutoGenerated` added property `code` + - Model `ErrorResponseAutoGenerated` added property `message` + - Model `IndexingPolicy` added property `vector_indexes` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `vector_embedding_policy` + - Model `SqlContainerGetPropertiesResource` added property `vector_embedding_policy` + - Model `SqlContainerResource` added property `vector_embedding_policy` + - Model `ThroughputSettingsGetPropertiesResource` added property `throughput_buckets` + - Model `ThroughputSettingsResource` added property `throughput_buckets` + - Added model `CommandAsyncPostBody` + - Added enum `DistanceFunction` + - Added model `PermissionAutoGenerated` + - Added model `TableRoleAssignmentListResult` + - Added model `TableRoleAssignmentResource` + - Added model `TableRoleDefinitionListResult` + - Added model `TableRoleDefinitionResource` + - Added model `ThroughputBucketResource` + - Added enum `VectorDataType` + - Added model `VectorEmbedding` + - Added model `VectorEmbeddingPolicy` + - Added model `VectorIndex` + - Added enum `VectorIndexType` + - Operation group `TableResourcesOperations` added method `begin_create_update_table_role_assignment` + - Operation group `TableResourcesOperations` added method `begin_create_update_table_role_definition` + - Operation group `TableResourcesOperations` added method `begin_delete_table_role_assignment` + - Operation group `TableResourcesOperations` added method `begin_delete_table_role_definition` + - Operation group `TableResourcesOperations` added method `get_table_role_assignment` + - Operation group `TableResourcesOperations` added method `get_table_role_definition` + - Operation group `TableResourcesOperations` added method `list_table_role_assignments` + - Operation group `TableResourcesOperations` added method `list_table_role_definitions` + +### Breaking Changes + + - Model `CommandPostBody` deleted or renamed its instance variable `read_write` + - Model `ErrorResponse` deleted or renamed its instance variable `code` + - Model `ErrorResponse` deleted or renamed its instance variable `message` + - Model `ErrorResponseAutoGenerated` deleted or renamed its instance variable `error` + +## 9.7.0 (2024-11-18) + +### Features Added + + - Model `DatabaseAccountCreateUpdateParameters` added property `enable_per_region_per_partition_autoscale` + - Model `DatabaseAccountGetResults` added property `enable_per_region_per_partition_autoscale` + - Model `DatabaseAccountUpdateParameters` added property `enable_per_region_per_partition_autoscale` + - Model `IndexingPolicy` added property `vector_indexes` + - Model `RestorableSqlContainerPropertiesResourceContainer` added property `vector_embedding_policy` + - Model `SqlContainerGetPropertiesResource` added property `vector_embedding_policy` + - Model `SqlContainerResource` added property `vector_embedding_policy` + - Added enum `DistanceFunction` + - Added enum `VectorDataType` + - Added model `VectorEmbedding` + - Added model `VectorEmbeddingPolicy` + - Added model `VectorIndex` + - Added enum `VectorIndexType` + +## 10.0.0b4 (2024-09-23) + +### Features Added + + - Client `CosmosDBManagementClient` added operation group `network_security_perimeter_configurations` + - Client `CosmosDBManagementClient` added operation group `chaos_fault` + - Enum `DataTransferComponent` added member `COSMOS_DB_MONGO_V_CORE` + - Model `DatabaseAccountCreateUpdateParameters` added property `capacity_mode` + - Model `DatabaseAccountGetResults` added property `capacity_mode` + - Model `DatabaseAccountGetResults` added property `capacity_mode_change_transition_state` + - Model `DatabaseAccountUpdateParameters` added property `capacity_mode` + - Enum `ServerVersion` added member `FIVE0` + - Enum `ServerVersion` added member `SEVEN0` + - Enum `ServerVersion` added member `SIX0` + - Model `ServiceResourceCreateUpdateParameters` added parameter `properties` in method `__init__` + - Model `SqlDedicatedGatewayServiceResourceProperties` added property `dedicated_gateway_type` + - Added model `AccessRule` + - Added enum `AccessRuleDirection` + - Added model `AccessRuleProperties` + - Added model `AccessRulePropertiesSubscriptionsItem` + - Added enum `CapacityMode` + - Added model `CapacityModeChangeTransitionState` + - Added enum `CapacityModeTransitionStatus` + - Added model `ChaosFaultListResponse` + - Added model `ChaosFaultResource` + - Added model `CosmosMongoVCoreDataTransferDataSourceSink` + - Added model `DataTransferServiceResourceCreateUpdateProperties` + - Added enum `DedicatedGatewayType` + - Added model `GraphAPIComputeServiceResourceCreateUpdateProperties` + - Added enum `IssueType` + - Added model `MaterializedViewsBuilderServiceResourceCreateUpdateProperties` + - Added model `NetworkSecurityPerimeter` + - Added model `NetworkSecurityPerimeterConfiguration` + - Added model `NetworkSecurityPerimeterConfigurationListResult` + - Added model `NetworkSecurityPerimeterConfigurationProperties` + - Added enum `NetworkSecurityPerimeterConfigurationProvisioningState` + - Added model `NetworkSecurityProfile` + - Added model `ProvisioningIssue` + - Added model `ProvisioningIssueProperties` + - Added model `ResourceAssociation` + - Added enum `ResourceAssociationAccessMode` + - Added model `ServiceResourceCreateUpdateProperties` + - Added enum `Severity` + - Added model `SqlDedicatedGatewayServiceResourceCreateUpdateProperties` + - Added enum `SupportedActions` + - Added model `ChaosFaultOperations` + - Added model `NetworkSecurityPerimeterConfigurationsOperations` + +### Breaking Changes + + - Deleted or renamed client operation group `CosmosDBManagementClient.mongo_clusters` + - Deleted or renamed enum value `CreateMode.POINT_IN_TIME_RESTORE` + - Model `ServiceResourceCreateUpdateParameters` deleted or renamed its instance variable `instance_size` + - Model `ServiceResourceCreateUpdateParameters` deleted or renamed its instance variable `instance_count` + - Model `ServiceResourceCreateUpdateParameters` deleted or renamed its instance variable `service_type` + - Deleted or renamed model `CheckNameAvailabilityReason` + - Deleted or renamed model `CheckNameAvailabilityRequest` + - Deleted or renamed model `CheckNameAvailabilityResponse` + - Deleted or renamed model `ConnectionString` + - Deleted or renamed model `FirewallRule` + - Deleted or renamed model `ListConnectionStringsResult` + - Deleted or renamed model `MongoCluster` + - Deleted or renamed model `MongoClusterRestoreParameters` + - Deleted or renamed model `MongoClusterStatus` + - Deleted or renamed model `MongoClusterUpdate` + - Deleted or renamed model `NodeGroupProperties` + - Deleted or renamed model `NodeGroupSpec` + - Deleted or renamed model `NodeKind` + - Deleted or renamed model `ProvisioningState` + - Deleted or renamed model `MongoClustersOperations` + +## 9.6.0 (2024-09-18) + +### Features Added + + - Model `ResourceRestoreParameters` added property `restore_with_ttl_disabled` + - Model `RestoreParameters` added parameter `restore_with_ttl_disabled` in method `__init__` + - Model `RestoreParametersBase` added property `restore_with_ttl_disabled` + - Enum `ServerVersion` added member `SEVEN0` + - Added model `ErrorAdditionalInfo` + - Added model `ErrorDetail` + - Added model `ErrorResponseAutoGenerated` + +## 9.5.1 (2024-06-19) + +### Features Added + + - Model ServiceResourceCreateUpdateParameters has a new parameter properties + +### Breaking Changes + + - Model ServiceResourceCreateUpdateParameters no longer has parameter instance_count + - Model ServiceResourceCreateUpdateParameters no longer has parameter instance_size + - Model ServiceResourceCreateUpdateParameters no longer has parameter service_type + +### Bugs Fixed + + - Disable parameter flatten for Model ServiceResourceCreateUpdateParameters to avoid deserializatin + +## 9.5.0 (2024-05-20) + +### Features Added + + - Model ClusterResourceProperties has a new parameter azure_connection_method + - Model ClusterResourceProperties has a new parameter private_link_resource_id + - Model DataCenterResourceProperties has a new parameter private_endpoint_ip_address + - Model SqlDedicatedGatewayServiceResourceProperties has a new parameter dedicated_gateway_type + +## 10.0.0b3 (2024-03-18) + +### Features Added + + - Added operation DataTransferJobsOperations.complete + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_per_region_per_partition_autoscale + - Model DatabaseAccountGetResults has a new parameter enable_per_region_per_partition_autoscale + - Model DatabaseAccountUpdateParameters has a new parameter enable_per_region_per_partition_autoscale + - Model PrivateEndpointConnection has a new parameter system_data + - Model ProxyResource has a new parameter system_data + - Model Resource has a new parameter system_data + - Model ResourceRestoreParameters has a new parameter restore_with_ttl_disabled + - Model RestoreParameters has a new parameter restore_with_ttl_disabled + - Model RestoreParametersBase has a new parameter restore_with_ttl_disabled + +## 10.0.0b2 (2024-01-26) + +### Features Added + + - Added operation CassandraClustersOperations.begin_invoke_command_async + - Added operation CassandraClustersOperations.get_command_async + - Added operation CassandraClustersOperations.list_command + - Added operation group ThroughputPoolAccountOperations + - Added operation group ThroughputPoolAccountsOperations + - Added operation group ThroughputPoolOperations + - Added operation group ThroughputPoolsOperations + - Model BackupResource has a new parameter backup_expiry_timestamp + - Model BackupResource has a new parameter backup_id + - Model BackupResource has a new parameter backup_start_timestamp + - Model BackupResource has a new parameter backup_state + - Model BackupResource has a new parameter backup_stop_timestamp + - Model CassandraClusterDataCenterNodeItem has a new parameter is_latest_model + - Model ClusterResourceProperties has a new parameter auto_replicate + - Model ClusterResourceProperties has a new parameter azure_connection_method + - Model ClusterResourceProperties has a new parameter backup_schedules + - Model ClusterResourceProperties has a new parameter cluster_type + - Model ClusterResourceProperties has a new parameter extensions + - Model ClusterResourceProperties has a new parameter external_data_centers + - Model ClusterResourceProperties has a new parameter private_link_resource_id + - Model ClusterResourceProperties has a new parameter scheduled_event_strategy + - Model CommandPostBody has a new parameter read_write + - Model CosmosCassandraDataTransferDataSourceSink has a new parameter remote_account_name + - Model CosmosMongoDataTransferDataSourceSink has a new parameter remote_account_name + - Model CosmosSqlDataTransferDataSourceSink has a new parameter remote_account_name + - Model DataCenterResourceProperties has a new parameter private_endpoint_ip_address + - Model DataTransferJobGetResults has a new parameter duration + - Model DataTransferJobGetResults has a new parameter mode + - Model DataTransferJobProperties has a new parameter duration + - Model DataTransferJobProperties has a new parameter mode + - Model DatabaseAccountCreateUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountCreateUpdateParameters has a new parameter default_priority_level + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_priority_based_execution + - Model DatabaseAccountGetResults has a new parameter customer_managed_key_status + - Model DatabaseAccountGetResults has a new parameter default_priority_level + - Model DatabaseAccountGetResults has a new parameter enable_priority_based_execution + - Model DatabaseAccountUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountUpdateParameters has a new parameter default_priority_level + - Model DatabaseAccountUpdateParameters has a new parameter enable_priority_based_execution + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter computed_properties + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableTablePropertiesResource has a new parameter can_undelete + - Model RestorableTablePropertiesResource has a new parameter can_undelete_reason + - Model SqlContainerGetPropertiesResource has a new parameter computed_properties + - Model SqlContainerResource has a new parameter computed_properties + - Model ThroughputSettingsGetPropertiesResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsGetPropertiesResource has a new parameter soft_allowed_maximum_throughput + - Model ThroughputSettingsResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsResource has a new parameter soft_allowed_maximum_throughput + - Operation CassandraClustersOperations.begin_deallocate has a new optional parameter x_ms_force_deallocate + +### Breaking Changes + + - Model BackupResource no longer has parameter id + - Model BackupResource no longer has parameter name + - Model BackupResource no longer has parameter properties + - Model BackupResource no longer has parameter type + - Model CommandPostBody no longer has parameter readwrite + +## 9.4.0 (2023-12-19) + +### Features Added + + - Model GremlinDatabaseGetPropertiesResource has a new parameter create_mode + - Model GremlinDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model GremlinDatabaseResource has a new parameter create_mode + - Model GremlinDatabaseResource has a new parameter restore_parameters + - Model GremlinGraphGetPropertiesResource has a new parameter create_mode + - Model GremlinGraphGetPropertiesResource has a new parameter restore_parameters + - Model GremlinGraphResource has a new parameter create_mode + - Model GremlinGraphResource has a new parameter restore_parameters + - Model MongoDBCollectionGetPropertiesResource has a new parameter create_mode + - Model MongoDBCollectionGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBCollectionResource has a new parameter create_mode + - Model MongoDBCollectionResource has a new parameter restore_parameters + - Model MongoDBDatabaseGetPropertiesResource has a new parameter create_mode + - Model MongoDBDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBDatabaseResource has a new parameter create_mode + - Model MongoDBDatabaseResource has a new parameter restore_parameters + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableGremlinDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete + - Model RestorableGremlinGraphPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete + - Model RestorableMongodbCollectionPropertiesResource has a new parameter can_undelete_reason + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableMongodbDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete + - Model RestorableSqlContainerPropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter computed_properties + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter create_mode + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter restore_parameters + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete + - Model RestorableSqlDatabasePropertiesResource has a new parameter can_undelete_reason + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter create_mode + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter restore_parameters + - Model RestorableTablePropertiesResource has a new parameter can_undelete + - Model RestorableTablePropertiesResource has a new parameter can_undelete_reason + - Model SqlContainerGetPropertiesResource has a new parameter computed_properties + - Model SqlContainerGetPropertiesResource has a new parameter create_mode + - Model SqlContainerGetPropertiesResource has a new parameter restore_parameters + - Model SqlContainerResource has a new parameter computed_properties + - Model SqlContainerResource has a new parameter create_mode + - Model SqlContainerResource has a new parameter restore_parameters + - Model SqlDatabaseGetPropertiesResource has a new parameter create_mode + - Model SqlDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model SqlDatabaseResource has a new parameter create_mode + - Model SqlDatabaseResource has a new parameter restore_parameters + - Model TableGetPropertiesResource has a new parameter create_mode + - Model TableGetPropertiesResource has a new parameter restore_parameters + - Model TableResource has a new parameter create_mode + - Model TableResource has a new parameter restore_parameters + +## 9.3.0 (2023-10-23) + +### Features Added + + - Model DatabaseAccountCreateUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountGetResults has a new parameter customer_managed_key_status + - Model DatabaseAccountGetResults has a new parameter enable_burst_capacity + - Model DatabaseAccountUpdateParameters has a new parameter customer_managed_key_status + - Model DatabaseAccountUpdateParameters has a new parameter enable_burst_capacity + +## 10.0.0b1 (2023-06-16) + +### Features Added + + - Added operation CassandraClustersOperations.get_backup + - Added operation CassandraClustersOperations.list_backups + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation MongoDBResourcesOperations.begin_list_mongo_db_collection_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_retrieve_throughput_distribution + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_list_sql_container_partition_merge + - Added operation SqlResourcesOperations.begin_sql_container_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_sql_database_partition_merge + - Added operation SqlResourcesOperations.begin_sql_database_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_database_retrieve_throughput_distribution + - Added operation group DataTransferJobsOperations + - Added operation group GraphResourcesOperations + - Added operation group MongoClustersOperations + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model DatabaseAccountGetResults has a new parameter enable_burst_capacity + - Model DatabaseAccountGetResults has a new parameter enable_materialized_views + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountUpdateParameters has a new parameter enable_materialized_views + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetPropertiesResource has a new parameter create_mode + - Model GremlinDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinDatabaseResource has a new parameter create_mode + - Model GremlinDatabaseResource has a new parameter restore_parameters + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetPropertiesResource has a new parameter create_mode + - Model GremlinGraphGetPropertiesResource has a new parameter restore_parameters + - Model GremlinGraphGetResults has a new parameter identity + - Model GremlinGraphResource has a new parameter create_mode + - Model GremlinGraphResource has a new parameter restore_parameters + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetPropertiesResource has a new parameter create_mode + - Model MongoDBCollectionGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBCollectionGetResults has a new parameter identity + - Model MongoDBCollectionResource has a new parameter create_mode + - Model MongoDBCollectionResource has a new parameter restore_parameters + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model MongoDBDatabaseGetPropertiesResource has a new parameter create_mode + - Model MongoDBDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model MongoDBDatabaseResource has a new parameter create_mode + - Model MongoDBDatabaseResource has a new parameter restore_parameters + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter create_mode + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter materialized_view_definition + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter restore_parameters + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter create_mode + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter restore_parameters + - Model RestoreParameters has a new parameter source_backup_location + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetPropertiesResource has a new parameter create_mode + - Model SqlContainerGetPropertiesResource has a new parameter materialized_view_definition + - Model SqlContainerGetPropertiesResource has a new parameter restore_parameters + - Model SqlContainerGetResults has a new parameter identity + - Model SqlContainerResource has a new parameter create_mode + - Model SqlContainerResource has a new parameter materialized_view_definition + - Model SqlContainerResource has a new parameter restore_parameters + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseGetPropertiesResource has a new parameter create_mode + - Model SqlDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model SqlDatabaseGetResults has a new parameter identity + - Model SqlDatabaseResource has a new parameter create_mode + - Model SqlDatabaseResource has a new parameter restore_parameters + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model TableGetPropertiesResource has a new parameter create_mode + - Model TableGetPropertiesResource has a new parameter restore_parameters + - Model TableGetResults has a new parameter identity + - Model TableResource has a new parameter create_mode + - Model TableResource has a new parameter restore_parameters + - Model ThroughputSettingsGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + +### Breaking Changes + + - Model ThroughputSettingsGetPropertiesResource no longer has parameter instant_maximum_throughput + - Model ThroughputSettingsGetPropertiesResource no longer has parameter soft_allowed_maximum_throughput + - Model ThroughputSettingsResource no longer has parameter instant_maximum_throughput + - Model ThroughputSettingsResource no longer has parameter soft_allowed_maximum_throughput + +## 9.2.0 (2023-05-08) + +### Features Added + + - Model ContinuousModeBackupPolicy has a new parameter continuous_mode_properties + - Model RestorableDatabaseAccountGetResult has a new parameter oldest_restorable_time + - Model ThroughputSettingsGetPropertiesResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsGetPropertiesResource has a new parameter soft_allowed_maximum_throughput + - Model ThroughputSettingsResource has a new parameter instant_maximum_throughput + - Model ThroughputSettingsResource has a new parameter soft_allowed_maximum_throughput + - Added new enum type `ContinuousTier` + - Enum `PublicNetworkAccess` has a new value `SECURED_BY_PERIMETER` + +## 9.1.0 (2023-04-21) + +### Features Added + + - Model CassandraClusterDataCenterNodeItem has a new parameter cassandra_process_status + - Model CassandraClusterPublicStatus has a new parameter errors + - Model ClusterResourceProperties has a new parameter provision_error + - Model DataCenterResourceProperties has a new parameter authentication_method_ldap_properties + - Model DataCenterResourceProperties has a new parameter deallocated + - Model DataCenterResourceProperties has a new parameter provision_error + - Model DatabaseAccountConnectionString has a new parameter key_kind + - Model DatabaseAccountConnectionString has a new parameter type + - Model LocationProperties has a new parameter is_subscription_region_access_allowed_for_az + - Model LocationProperties has a new parameter is_subscription_region_access_allowed_for_regular + - Model LocationProperties has a new parameter status + +## 9.1.0b2 (2023-04-20) + +### Features Added + + - Added operation group MongoClustersOperations + +## 9.1.0b1 (2023-03-20) + +### Features Added + + - Added operation CassandraClustersOperations.get_backup + - Added operation CassandraClustersOperations.list_backups + - Added operation CassandraResourcesOperations.begin_create_update_cassandra_view + - Added operation CassandraResourcesOperations.begin_delete_cassandra_view + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_autoscale + - Added operation CassandraResourcesOperations.begin_migrate_cassandra_view_to_manual_throughput + - Added operation CassandraResourcesOperations.begin_update_cassandra_view_throughput + - Added operation CassandraResourcesOperations.get_cassandra_view + - Added operation CassandraResourcesOperations.get_cassandra_view_throughput + - Added operation CassandraResourcesOperations.list_cassandra_views + - Added operation MongoDBResourcesOperations.begin_list_mongo_db_collection_partition_merge + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_container_retrieve_throughput_distribution + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_redistribute_throughput + - Added operation MongoDBResourcesOperations.begin_mongo_db_database_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_list_sql_container_partition_merge + - Added operation SqlResourcesOperations.begin_sql_container_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_container_retrieve_throughput_distribution + - Added operation SqlResourcesOperations.begin_sql_database_redistribute_throughput + - Added operation SqlResourcesOperations.begin_sql_database_retrieve_throughput_distribution + - Added operation group DataTransferJobsOperations + - Added operation group GraphResourcesOperations + - Model ARMResourceProperties has a new parameter identity + - Model CassandraKeyspaceCreateUpdateParameters has a new parameter identity + - Model CassandraKeyspaceGetResults has a new parameter identity + - Model CassandraTableCreateUpdateParameters has a new parameter identity + - Model CassandraTableGetResults has a new parameter identity + - Model ContinuousModeBackupPolicy has a new parameter continuous_mode_properties + - Model DataCenterResourceProperties has a new parameter authentication_method_ldap_properties + - Model DatabaseAccountCreateUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountCreateUpdateParameters has a new parameter enable_materialized_views + - Model DatabaseAccountGetResults has a new parameter diagnostic_log_settings + - Model DatabaseAccountGetResults has a new parameter enable_burst_capacity + - Model DatabaseAccountGetResults has a new parameter enable_materialized_views + - Model DatabaseAccountUpdateParameters has a new parameter diagnostic_log_settings + - Model DatabaseAccountUpdateParameters has a new parameter enable_burst_capacity + - Model DatabaseAccountUpdateParameters has a new parameter enable_materialized_views + - Model GremlinDatabaseCreateUpdateParameters has a new parameter identity + - Model GremlinDatabaseGetPropertiesResource has a new parameter create_mode + - Model GremlinDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model GremlinDatabaseGetResults has a new parameter identity + - Model GremlinDatabaseResource has a new parameter create_mode + - Model GremlinDatabaseResource has a new parameter restore_parameters + - Model GremlinGraphCreateUpdateParameters has a new parameter identity + - Model GremlinGraphGetPropertiesResource has a new parameter create_mode + - Model GremlinGraphGetPropertiesResource has a new parameter restore_parameters + - Model GremlinGraphGetResults has a new parameter identity + - Model GremlinGraphResource has a new parameter create_mode + - Model GremlinGraphResource has a new parameter restore_parameters + - Model LocationProperties has a new parameter status + - Model MongoDBCollectionCreateUpdateParameters has a new parameter identity + - Model MongoDBCollectionGetPropertiesResource has a new parameter create_mode + - Model MongoDBCollectionGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBCollectionGetResults has a new parameter identity + - Model MongoDBCollectionResource has a new parameter create_mode + - Model MongoDBCollectionResource has a new parameter restore_parameters + - Model MongoDBDatabaseCreateUpdateParameters has a new parameter identity + - Model MongoDBDatabaseGetPropertiesResource has a new parameter create_mode + - Model MongoDBDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model MongoDBDatabaseGetResults has a new parameter identity + - Model MongoDBDatabaseResource has a new parameter create_mode + - Model MongoDBDatabaseResource has a new parameter restore_parameters + - Model RestorableDatabaseAccountGetResult has a new parameter oldest_restorable_time + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter create_mode + - Model RestorableSqlContainerPropertiesResourceContainer has a new parameter restore_parameters + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter create_mode + - Model RestorableSqlDatabasePropertiesResourceDatabase has a new parameter restore_parameters + - Model RestoreParameters has a new parameter source_backup_location + - Model SqlContainerCreateUpdateParameters has a new parameter identity + - Model SqlContainerGetPropertiesResource has a new parameter create_mode + - Model SqlContainerGetPropertiesResource has a new parameter restore_parameters + - Model SqlContainerGetResults has a new parameter identity + - Model SqlContainerResource has a new parameter create_mode + - Model SqlContainerResource has a new parameter restore_parameters + - Model SqlDatabaseCreateUpdateParameters has a new parameter identity + - Model SqlDatabaseGetPropertiesResource has a new parameter create_mode + - Model SqlDatabaseGetPropertiesResource has a new parameter restore_parameters + - Model SqlDatabaseGetResults has a new parameter identity + - Model SqlDatabaseResource has a new parameter create_mode + - Model SqlDatabaseResource has a new parameter restore_parameters + - Model SqlStoredProcedureCreateUpdateParameters has a new parameter identity + - Model SqlStoredProcedureGetResults has a new parameter identity + - Model SqlTriggerCreateUpdateParameters has a new parameter identity + - Model SqlTriggerGetResults has a new parameter identity + - Model SqlUserDefinedFunctionCreateUpdateParameters has a new parameter identity + - Model SqlUserDefinedFunctionGetResults has a new parameter identity + - Model TableCreateUpdateParameters has a new parameter identity + - Model TableGetPropertiesResource has a new parameter create_mode + - Model TableGetPropertiesResource has a new parameter restore_parameters + - Model TableGetResults has a new parameter identity + - Model TableResource has a new parameter create_mode + - Model TableResource has a new parameter restore_parameters + - Model ThroughputSettingsGetResults has a new parameter identity + - Model ThroughputSettingsUpdateParameters has a new parameter identity + +> Changelog entries prior to 9.1.0b1 were removed to reduce file size. See https://pypi.org/project/azure-mgmt-cosmosdb/9.1.0b1/ for the older history. diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-datafactory-10.0.0b1-CHANGELOG.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-datafactory-10.0.0b1-CHANGELOG.md new file mode 100644 index 000000000000..2441fed86dba --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-datafactory-10.0.0b1-CHANGELOG.md @@ -0,0 +1,2471 @@ +# Release History + +## 10.0.0b1 (2026-05-28) + +### Features Added + + - Client `DataFactoryManagementClient` added method `send_request` + - Model `ChangeDataCaptureResource` added property `system_data` + - Model `CredentialResource` added property `system_data` + - Model `DataFlowResource` added property `system_data` + - Model `DatasetResource` added property `system_data` + - Model `Factory` added property `system_data` + - Model `GlobalParameterResource` added property `system_data` + - Model `IntegrationRuntimeResource` added property `system_data` + - Model `LinkedServiceResource` added property `system_data` + - Model `ManagedPrivateEndpointResource` added property `system_data` + - Model `ManagedVirtualNetworkResource` added property `system_data` + - Model `PipelineResource` added property `system_data` + - Model `PrivateEndpointConnectionResource` added property `system_data` + - Model `TriggerResource` added property `system_data` + - Added enum `CreatedByType` + - Added model `ProxyResource` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Model `AmazonMWSLinkedService` moved instance variable `endpoint`, `marketplace_id`, `seller_id`, `mws_auth_token`, `access_key_id`, `secret_key`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `AmazonMWSLinkedServiceTypeProperties` + - Model `AmazonMWSObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `AmazonRdsForOracleLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `username`, `password`, `encryption_client`, `encryption_types_client`, `crypto_checksum_client`, `crypto_checksum_types_client`, `initial_lob_fetch_size`, `fetch_size`, `statement_cache_size`, `initialization_string`, `enable_bulk_load`, `support_v1_data_types`, `fetch_tswtz_as_timestamp` and `encrypted_credential` under property `type_properties` whose type is `AmazonRdsForLinkedServiceTypeProperties` + - Model `AmazonRdsForOracleTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AmazonRdsForOracleTableDatasetTypeProperties` + - Model `AmazonRdsForSqlServerLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `encrypted_credential` and `always_encrypted_settings` under property `type_properties` whose type is `AmazonRdsForSqlServerLinkedServiceTypeProperties` + - Model `AmazonRdsForSqlServerTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AmazonRdsForSqlServerTableDatasetTypeProperties` + - Model `AmazonRedshiftLinkedService` moved instance variable `server`, `username`, `password`, `database`, `port` and `encrypted_credential` under property `type_properties` whose type is `AmazonRedshiftLinkedServiceTypeProperties` + - Model `AmazonRedshiftTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `AmazonRedshiftTableDatasetTypeProperties` + - Model `AmazonS3CompatibleLinkedService` moved instance variable `access_key_id`, `secret_access_key`, `service_url`, `force_path_style` and `encrypted_credential` under property `type_properties` whose type is `AmazonS3CompatibleLinkedServiceTypeProperties` + - Model `AmazonS3Dataset` moved instance variable `bucket_name`, `key`, `prefix`, `version`, `modified_datetime_start`, `modified_datetime_end`, `format` and `compression` under property `type_properties` whose type is `AmazonS3DatasetTypeProperties` + - Model `AmazonS3LinkedService` moved instance variable `authentication_type`, `access_key_id`, `secret_access_key`, `service_url`, `session_token` and `encrypted_credential` under property `type_properties` whose type is `AmazonS3LinkedServiceTypeProperties` + - Model `AppFiguresLinkedService` moved instance variable `user_name`, `password` and `client_key` under property `type_properties` whose type is `AppFiguresLinkedServiceTypeProperties` + - Model `AppendVariableActivity` moved instance variable `variable_name` and `value` under property `type_properties` whose type is `AppendVariableActivityTypeProperties` + - Model `AsanaLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `AsanaLinkedServiceTypeProperties` + - Model `AvroDataset` moved instance variable `location`, `avro_compression_codec` and `avro_compression_level` under property `type_properties` whose type is `AvroDatasetTypeProperties` + - Model `AzPowerShellSetup` moved instance variable `version` under property `type_properties` whose type is `AzPowerShellSetupTypeProperties` + - Model `AzureBatchLinkedService` moved instance variable `account_name`, `access_key`, `batch_uri`, `pool_name`, `linked_service_name`, `encrypted_credential` and `credential` under property `type_properties` whose type is `AzureBatchLinkedServiceTypeProperties` + - Model `AzureBlobDataset` moved instance variable `folder_path`, `table_root_location`, `file_name`, `modified_datetime_start`, `modified_datetime_end`, `format` and `compression` under property `type_properties` whose type is `AzureBlobDatasetTypeProperties` + - Model `AzureBlobFSDataset` moved instance variable `folder_path`, `file_name`, `format` and `compression` under property `type_properties` whose type is `AzureBlobFSDatasetTypeProperties` + - Model `AzureBlobFSLinkedService` moved instance variable `url`, `account_key`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `encrypted_credential`, `credential`, `service_principal_credential_type`, `service_principal_credential`, `sas_uri` and `sas_token` under property `type_properties` whose type is `AzureBlobFSLinkedServiceTypeProperties` + - Model `AzureBlobStorageLinkedService` moved instance variable `connection_string`, `account_key`, `sas_uri`, `sas_token`, `service_endpoint`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `account_kind`, `encrypted_credential`, `credential`, `authentication_type` and `container_uri` under property `type_properties` whose type is `AzureBlobStorageLinkedServiceTypeProperties` + - Model `AzureDataExplorerCommandActivity` moved instance variable `command` and `command_timeout` under property `type_properties` whose type is `AzureDataExplorerCommandActivityTypeProperties` + - Model `AzureDataExplorerLinkedService` moved instance variable `endpoint`, `service_principal_id`, `service_principal_key`, `database`, `tenant` and `credential` under property `type_properties` whose type is `AzureDataExplorerLinkedServiceTypeProperties` + - Model `AzureDataExplorerTableDataset` moved instance variable `table` under property `type_properties` whose type is `AzureDataExplorerDatasetTypeProperties` + - Model `AzureDataLakeAnalyticsLinkedService` moved instance variable `account_name`, `service_principal_id`, `service_principal_key`, `tenant`, `subscription_id`, `resource_group_name`, `data_lake_analytics_uri` and `encrypted_credential` under property `type_properties` whose type is `AzureDataLakeAnalyticsLinkedServiceTypeProperties` + - Model `AzureDataLakeStoreDataset` moved instance variable `folder_path`, `file_name`, `format` and `compression` under property `type_properties` whose type is `AzureDataLakeStoreDatasetTypeProperties` + - Model `AzureDataLakeStoreLinkedService` moved instance variable `data_lake_store_uri`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `account_name`, `subscription_id`, `resource_group_name`, `encrypted_credential` and `credential` under property `type_properties` whose type is `AzureDataLakeStoreLinkedServiceTypeProperties` + - Model `AzureDatabricksDeltaLakeDataset` moved instance variable `table` and `database` under property `type_properties` whose type is `AzureDatabricksDeltaLakeDatasetTypeProperties` + - Model `AzureDatabricksDeltaLakeLinkedService` moved instance variable `domain`, `access_token`, `cluster_id`, `encrypted_credential`, `credential` and `workspace_resource_id` under property `type_properties` whose type is `AzureDatabricksDetltaLakeLinkedServiceTypeProperties` + - Model `AzureDatabricksLinkedService` moved instance variable `domain`, `access_token`, `authentication`, `workspace_resource_id`, `existing_cluster_id`, `instance_pool_id`, `new_cluster_version`, `new_cluster_num_of_worker`, `new_cluster_node_type`, `new_cluster_spark_conf`, `new_cluster_spark_env_vars`, `new_cluster_custom_tags`, `new_cluster_log_destination`, `new_cluster_driver_node_type`, `new_cluster_init_scripts`, `new_cluster_enable_elastic_disk`, `encrypted_credential`, `policy_id`, `credential` and `data_security_mode` under property `type_properties` whose type is `AzureDatabricksLinkedServiceTypeProperties` + - Model `AzureFileStorageLinkedService` moved instance variable `host`, `user_id`, `password`, `connection_string`, `account_key`, `sas_uri`, `sas_token`, `file_share`, `snapshot`, `encrypted_credential`, `service_endpoint` and `credential` under property `type_properties` whose type is `AzureFileStorageLinkedServiceTypeProperties` + - Model `AzureFunctionActivity` moved instance variable `method`, `function_name`, `headers` and `body` under property `type_properties` whose type is `AzureFunctionActivityTypeProperties` + - Model `AzureFunctionLinkedService` moved instance variable `function_app_url`, `function_key`, `encrypted_credential`, `credential`, `resource_id` and `authentication` under property `type_properties` whose type is `AzureFunctionLinkedServiceTypeProperties` + - Model `AzureKeyVaultLinkedService` moved instance variable `base_url` and `credential` under property `type_properties` whose type is `AzureKeyVaultLinkedServiceTypeProperties` + - Model `AzureMLBatchExecutionActivity` moved instance variable `global_parameters`, `web_service_outputs` and `web_service_inputs` under property `type_properties` whose type is `AzureMLBatchExecutionActivityTypeProperties` + - Model `AzureMLExecutePipelineActivity` moved instance variable `ml_pipeline_id`, `ml_pipeline_endpoint_id`, `version`, `experiment_name`, `ml_pipeline_parameters`, `data_path_assignments`, `ml_parent_run_id` and `continue_on_step_failure` under property `type_properties` whose type is `AzureMLExecutePipelineActivityTypeProperties` + - Model `AzureMLLinkedService` moved instance variable `ml_endpoint`, `api_key`, `update_resource_endpoint`, `service_principal_id`, `service_principal_key`, `tenant`, `encrypted_credential` and `authentication` under property `type_properties` whose type is `AzureMLLinkedServiceTypeProperties` + - Model `AzureMLServiceLinkedService` moved instance variable `subscription_id`, `resource_group_name`, `ml_workspace_name`, `authentication`, `service_principal_id`, `service_principal_key`, `tenant` and `encrypted_credential` under property `type_properties` whose type is `AzureMLServiceLinkedServiceTypeProperties` + - Model `AzureMLUpdateResourceActivity` moved instance variable `trained_model_name`, `trained_model_linked_service_name` and `trained_model_file_path` under property `type_properties` whose type is `AzureMLUpdateResourceActivityTypeProperties` + - Model `AzureMariaDBLinkedService` moved instance variable `connection_string`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `AzureMariaDBLinkedServiceTypeProperties` + - Model `AzureMariaDBTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `AzureMySqlLinkedService` moved instance variable `connection_string`, `password` and `encrypted_credential` under property `type_properties` whose type is `AzureMySqlLinkedServiceTypeProperties` + - Model `AzureMySqlTableDataset` moved instance variable `table_name` and `table` under property `type_properties` whose type is `AzureMySqlTableDatasetTypeProperties` + - Model `AzurePostgreSqlLinkedService` moved instance variable `connection_string`, `server`, `port`, `username`, `database`, `ssl_mode`, `timeout`, `command_timeout`, `trust_server_certificate`, `read_buffer_size`, `timezone`, `encoding`, `password`, `encrypted_credential`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password`, `tenant`, `azure_cloud_type` and `credential` under property `type_properties` whose type is `AzurePostgreSqlLinkedServiceTypeProperties` + - Model `AzurePostgreSqlSinkUpsertSettings` renamed its instance variable `keys` to `keys_property` + - Model `AzurePostgreSqlTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `AzurePostgreSqlTableDatasetTypeProperties` + - Model `AzureSearchIndexDataset` moved instance variable `index_name` under property `type_properties` whose type is `AzureSearchIndexDatasetTypeProperties` + - Model `AzureSearchLinkedService` moved instance variable `url`, `key` and `encrypted_credential` under property `type_properties` whose type is `AzureSearchLinkedServiceTypeProperties` + - Model `AzureSqlDWLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `encrypted_credential` and `credential` under property `type_properties` whose type is `AzureSqlDWLinkedServiceTypeProperties` + - Model `AzureSqlDWTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AzureSqlDWTableDatasetTypeProperties` + - Model `AzureSqlDatabaseLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `encrypted_credential`, `always_encrypted_settings` and `credential` under property `type_properties` whose type is `AzureSqlDatabaseLinkedServiceTypeProperties` + - Model `AzureSqlMILinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `encrypted_credential`, `always_encrypted_settings` and `credential` under property `type_properties` whose type is `AzureSqlMILinkedServiceTypeProperties` + - Model `AzureSqlMITableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AzureSqlMITableDatasetTypeProperties` + - Model `AzureSqlTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AzureSqlTableDatasetTypeProperties` + - Model `AzureStorageLinkedService` moved instance variable `connection_string`, `account_key`, `sas_uri`, `sas_token` and `encrypted_credential` under property `type_properties` whose type is `AzureStorageLinkedServiceTypeProperties` + - Model `AzureSynapseArtifactsLinkedService` moved instance variable `endpoint`, `authentication` and `workspace_resource_id` under property `type_properties` whose type is `AzureSynapseArtifactsLinkedServiceTypeProperties` + - Model `AzureTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `AzureTableDatasetTypeProperties` + - Model `AzureTableStorageLinkedService` moved instance variable `connection_string`, `account_key`, `sas_uri`, `sas_token`, `encrypted_credential`, `service_endpoint` and `credential` under property `type_properties` whose type is `AzureTableStorageLinkedServiceTypeProperties` + - Model `BinaryDataset` moved instance variable `location` and `compression` under property `type_properties` whose type is `BinaryDatasetTypeProperties` + - Model `BlobEventsTrigger` moved instance variable `blob_path_begins_with`, `blob_path_ends_with`, `ignore_empty_blobs`, `events` and `scope` under property `type_properties` whose type is `BlobEventsTriggerTypeProperties` + - Model `BlobTrigger` moved instance variable `folder_path`, `max_concurrency` and `linked_service` under property `type_properties` whose type is `BlobTriggerTypeProperties` + - Model `CassandraLinkedService` moved instance variable `host`, `authentication_type`, `port`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `CassandraLinkedServiceTypeProperties` + - Model `CassandraTableDataset` moved instance variable `table_name` and `keyspace` under property `type_properties` whose type is `CassandraTableDatasetTypeProperties` + - Model `ChainingTrigger` moved instance variable `depends_on` and `run_dimension` under property `type_properties` whose type is `ChainingTriggerTypeProperties` + - Model `ChangeDataCaptureResource` moved instance variable `folder`, `description`, `source_connections_info`, `target_connections_info`, `policy`, `allow_v_net_override` and `status` under property `properties` whose type is `ChangeDataCapture` + - Model `CloudError` moved instance variable `code`, `message`, `target` and `details` under property `error` whose type is `CloudErrorBody` + - Model `CmdkeySetup` moved instance variable `target_name`, `user_name` and `password` under property `type_properties` whose type is `CmdkeySetupTypeProperties` + - Model `CommonDataServiceForAppsEntityDataset` moved instance variable `entity_name` under property `type_properties` whose type is `CommonDataServiceForAppsEntityDatasetTypeProperties` + - Model `CommonDataServiceForAppsLinkedService` moved instance variable `deployment_type`, `host_name`, `port`, `service_uri`, `organization_name`, `authentication_type`, `domain`, `username`, `password`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential` and `encrypted_credential` under property `type_properties` whose type is `CommonDataServiceForAppsLinkedServiceTypeProperties` + - Model `ComponentSetup` moved instance variable `component_name` and `license_key` under property `type_properties` whose type is `LicensedComponentSetupTypeProperties` + - Model `ConcurLinkedService` moved instance variable `connection_properties`, `client_id`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ConcurLinkedServiceTypeProperties` + - Model `ConcurObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `CopyActivity` moved instance variable `source`, `sink`, `translator`, `enable_staging`, `staging_settings`, `parallel_copies`, `data_integration_units`, `enable_skip_incompatible_row`, `redirect_incompatible_row_settings`, `log_storage_settings`, `log_settings`, `preserve_rules`, `preserve`, `validate_data_consistency` and `skip_error_file` under property `type_properties` whose type is `CopyActivityTypeProperties` + - Model `CosmosDbLinkedService` moved instance variable `connection_string`, `account_endpoint`, `database`, `account_key`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `connection_mode`, `encrypted_credential` and `credential` under property `type_properties` whose type is `CosmosDbLinkedServiceTypeProperties` + - Model `CosmosDbMongoDbApiCollectionDataset` moved instance variable `collection` under property `type_properties` whose type is `CosmosDbMongoDbApiCollectionDatasetTypeProperties` + - Model `CosmosDbMongoDbApiLinkedService` moved instance variable `is_server_version_above32`, `connection_string` and `database` under property `type_properties` whose type is `CosmosDbMongoDbApiLinkedServiceTypeProperties` + - Model `CosmosDbSqlApiCollectionDataset` moved instance variable `collection_name` under property `type_properties` whose type is `CosmosDbSqlApiCollectionDatasetTypeProperties` + - Model `CouchbaseLinkedService` moved instance variable `connection_string`, `cred_string` and `encrypted_credential` under property `type_properties` whose type is `CouchbaseLinkedServiceTypeProperties` + - Model `CouchbaseTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `CustomActivity` moved instance variable `command`, `resource_linked_service`, `folder_path`, `reference_objects`, `extended_properties`, `retention_time_in_days` and `auto_user_specification` under property `type_properties` whose type is `CustomActivityTypeProperties` + - Model `CustomEventsTrigger` moved instance variable `subject_begins_with`, `subject_ends_with`, `events` and `scope` under property `type_properties` whose type is `CustomEventsTriggerTypeProperties` + - Model `DataLakeAnalyticsUSQLActivity` moved instance variable `script_path`, `script_linked_service`, `degree_of_parallelism`, `priority`, `parameters`, `runtime_version` and `compilation_mode` under property `type_properties` whose type is `DataLakeAnalyticsUSQLActivityTypeProperties` + - Model `DatabricksJobActivity` moved instance variable `job_id` and `job_parameters` under property `type_properties` whose type is `DatabricksJobActivityTypeProperties` + - Model `DatabricksNotebookActivity` moved instance variable `notebook_path`, `base_parameters` and `libraries` under property `type_properties` whose type is `DatabricksNotebookActivityTypeProperties` + - Model `DatabricksSparkJarActivity` moved instance variable `main_class_name`, `parameters` and `libraries` under property `type_properties` whose type is `DatabricksSparkJarActivityTypeProperties` + - Model `DatabricksSparkPythonActivity` moved instance variable `python_file`, `parameters` and `libraries` under property `type_properties` whose type is `DatabricksSparkPythonActivityTypeProperties` + - Model `DataworldLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `DataworldLinkedServiceTypeProperties` + - Model `Db2LinkedService` moved instance variable `connection_string`, `server`, `database`, `authentication_type`, `username`, `password`, `package_collection`, `certificate_common_name` and `encrypted_credential` under property `type_properties` whose type is `Db2LinkedServiceTypeProperties` + - Model `Db2TableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `Db2TableDatasetTypeProperties` + - Model `DeleteActivity` moved instance variable `recursive`, `max_concurrent_connections`, `enable_logging`, `log_storage_settings`, `dataset` and `store_settings` under property `type_properties` whose type is `DeleteActivityTypeProperties` + - Model `DelimitedTextDataset` moved instance variable `location`, `column_delimiter`, `row_delimiter`, `encoding_name`, `compression_codec`, `compression_level`, `quote_char`, `escape_char`, `first_row_as_header` and `null_value` under property `type_properties` whose type is `DelimitedTextDatasetTypeProperties` + - Model `DocumentDbCollectionDataset` moved instance variable `collection_name` under property `type_properties` whose type is `DocumentDbCollectionDatasetTypeProperties` + - Model `DrillLinkedService` moved instance variable `connection_string`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `DrillLinkedServiceTypeProperties` + - Model `DrillTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `DrillDatasetTypeProperties` + - Model `DynamicsAXLinkedService` moved instance variable `url`, `service_principal_id`, `service_principal_key`, `tenant`, `aad_resource_id` and `encrypted_credential` under property `type_properties` whose type is `DynamicsAXLinkedServiceTypeProperties` + - Model `DynamicsAXResourceDataset` moved instance variable `path` under property `type_properties` whose type is `DynamicsAXResourceDatasetTypeProperties` + - Model `DynamicsCrmEntityDataset` moved instance variable `entity_name` under property `type_properties` whose type is `DynamicsCrmEntityDatasetTypeProperties` + - Model `DynamicsCrmLinkedService` moved instance variable `deployment_type`, `host_name`, `port`, `service_uri`, `organization_name`, `authentication_type`, `domain`, `username`, `password`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential`, `credential` and `encrypted_credential` under property `type_properties` whose type is `DynamicsCrmLinkedServiceTypeProperties` + - Model `DynamicsEntityDataset` moved instance variable `entity_name` under property `type_properties` whose type is `DynamicsEntityDatasetTypeProperties` + - Model `DynamicsLinkedService` moved instance variable `deployment_type`, `host_name`, `port`, `service_uri`, `organization_name`, `authentication_type`, `domain`, `username`, `password`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential`, `encrypted_credential` and `credential` under property `type_properties` whose type is `DynamicsLinkedServiceTypeProperties` + - Model `EloquaLinkedService` moved instance variable `endpoint`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `EloquaLinkedServiceTypeProperties` + - Model `EloquaObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `EnvironmentVariableSetup` moved instance variable `variable_name` and `variable_value` under property `type_properties` whose type is `EnvironmentVariableSetupTypeProperties` + - Model `ExcelDataset` moved instance variable `location`, `sheet_name`, `sheet_index`, `range`, `first_row_as_header`, `compression` and `null_value` under property `type_properties` whose type is `ExcelDatasetTypeProperties` + - Model `ExecuteDataFlowActivity` moved instance variable `data_flow`, `staging`, `integration_runtime`, `continuation_settings`, `compute`, `trace_level`, `continue_on_error`, `run_concurrently` and `source_staging_concurrency` under property `type_properties` whose type is `ExecuteDataFlowActivityTypeProperties` + - Model `ExecutePipelineActivity` moved instance variable `pipeline`, `parameters` and `wait_on_completion` under property `type_properties` whose type is `ExecutePipelineActivityTypeProperties` + - Model `ExecuteSSISPackageActivity` moved instance variable `package_location`, `runtime`, `logging_level`, `environment_path`, `execution_credential`, `connect_via`, `project_parameters`, `package_parameters`, `project_connection_managers`, `package_connection_managers`, `property_overrides` and `log_location` under property `type_properties` whose type is `ExecuteSSISPackageActivityTypeProperties` + - Model `ExecuteWranglingDataflowActivity` moved instance variable `data_flow`, `staging`, `integration_runtime`, `continuation_settings`, `compute`, `trace_level`, `continue_on_error`, `run_concurrently`, `source_staging_concurrency`, `sinks` and `queries` under property `type_properties` whose type is `ExecutePowerQueryActivityTypeProperties` + - Model `FactoryUpdateParameters` moved instance variable `public_network_access` under property `properties` whose type is `FactoryUpdateProperties` + - Model `FailActivity` moved instance variable `message` and `error_code` under property `type_properties` whose type is `FailActivityTypeProperties` + - Model `FileServerLinkedService` moved instance variable `host`, `user_id`, `password` and `encrypted_credential` under property `type_properties` whose type is `FileServerLinkedServiceTypeProperties` + - Model `FileShareDataset` moved instance variable `folder_path`, `file_name`, `modified_datetime_start`, `modified_datetime_end`, `format`, `file_filter` and `compression` under property `type_properties` whose type is `FileShareDatasetTypeProperties` + - Model `FilterActivity` moved instance variable `items` and `condition` under property `type_properties` whose type is `FilterActivityTypeProperties` + - Model `Flowlet` moved instance variable `sources`, `sinks`, `transformations`, `script` and `script_lines` under property `type_properties` whose type is `FlowletTypeProperties` + - Model `ForEachActivity` moved instance variable `is_sequential`, `batch_count`, `items` and `activities` under property `type_properties` whose type is `ForEachActivityTypeProperties` + - Model `FtpServerLinkedService` moved instance variable `host`, `port`, `authentication_type`, `user_name`, `password`, `encrypted_credential`, `enable_ssl` and `enable_server_certificate_validation` under property `type_properties` whose type is `FtpServerLinkedServiceTypeProperties` + - Model `GetMetadataActivity` moved instance variable `dataset`, `field_list`, `store_settings` and `format_settings` under property `type_properties` whose type is `GetMetadataActivityTypeProperties` + - Model `GoogleAdWordsLinkedService` moved instance variable `connection_properties`, `client_customer_id`, `developer_token`, `authentication_type`, `refresh_token`, `client_id`, `client_secret`, `email`, `key_file_path`, `trusted_cert_path`, `use_system_trust_store`, `private_key`, `login_customer_id`, `google_ads_api_version`, `support_legacy_data_types` and `encrypted_credential` under property `type_properties` whose type is `GoogleAdWordsLinkedServiceTypeProperties` + - Model `GoogleAdWordsObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `GoogleBigQueryLinkedService` moved instance variable `project`, `additional_projects`, `request_google_drive_scope`, `authentication_type`, `refresh_token`, `client_id`, `client_secret`, `email`, `key_file_path`, `trusted_cert_path`, `use_system_trust_store` and `encrypted_credential` under property `type_properties` whose type is `GoogleBigQueryLinkedServiceTypeProperties` + - Model `GoogleBigQueryObjectDataset` moved instance variable `table_name`, `table` and `dataset` under property `type_properties` whose type is `GoogleBigQueryDatasetTypeProperties` + - Model `GoogleBigQueryV2LinkedService` moved instance variable `project_id`, `authentication_type`, `client_id`, `client_secret`, `refresh_token`, `key_file_content` and `encrypted_credential` under property `type_properties` whose type is `GoogleBigQueryV2LinkedServiceTypeProperties` + - Model `GoogleBigQueryV2ObjectDataset` moved instance variable `table` and `dataset` under property `type_properties` whose type is `GoogleBigQueryV2DatasetTypeProperties` + - Model `GoogleCloudStorageLinkedService` moved instance variable `access_key_id`, `secret_access_key`, `service_url` and `encrypted_credential` under property `type_properties` whose type is `GoogleCloudStorageLinkedServiceTypeProperties` + - Model `GoogleSheetsLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `GoogleSheetsLinkedServiceTypeProperties` + - Model `GreenplumLinkedService` moved instance variable `connection_string`, `pwd`, `encrypted_credential`, `authentication_type`, `host`, `port`, `username`, `database`, `ssl_mode`, `connection_timeout` and `command_timeout` under property `type_properties` whose type is `GreenplumLinkedServiceTypeProperties` + - Model `GreenplumTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `GreenplumDatasetTypeProperties` + - Model `HBaseLinkedService` moved instance variable `host`, `port`, `http_path`, `authentication_type`, `username`, `password`, `enable_ssl`, `trusted_cert_path`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `HBaseLinkedServiceTypeProperties` + - Model `HBaseObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `HDInsightHiveActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `script_path`, `script_linked_service`, `defines`, `variables` and `query_timeout` under property `type_properties` whose type is `HDInsightHiveActivityTypeProperties` + - Model `HDInsightLinkedService` moved instance variable `cluster_uri`, `cluster_auth_type`, `user_name`, `password`, `linked_service_name`, `hcatalog_linked_service_name`, `encrypted_credential`, `is_esp_enabled`, `file_system` and `credential` under property `type_properties` whose type is `HDInsightLinkedServiceTypeProperties` + - Model `HDInsightMapReduceActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `class_name`, `jar_file_path`, `jar_linked_service`, `jar_libs` and `defines` under property `type_properties` whose type is `HDInsightMapReduceActivityTypeProperties` + - Model `HDInsightOnDemandLinkedService` moved instance variable `cluster_size`, `time_to_live`, `version_type_properties_version`, `linked_service_name`, `host_subscription_id`, `service_principal_id`, `service_principal_key`, `tenant`, `cluster_resource_group`, `cluster_resource_group_auth_type`, `cluster_name_prefix`, `cluster_user_name`, `cluster_password`, `cluster_ssh_user_name`, `cluster_ssh_password`, `additional_linked_service_names`, `hcatalog_linked_service_name`, `cluster_type`, `spark_version`, `core_configuration`, `h_base_configuration`, `hdfs_configuration`, `hive_configuration`, `map_reduce_configuration`, `oozie_configuration`, `storm_configuration`, `yarn_configuration`, `encrypted_credential`, `head_node_size`, `data_node_size`, `zookeeper_node_size`, `script_actions`, `virtual_network_id`, `subnet_name` and `credential` under property `type_properties` whose type is `HDInsightOnDemandLinkedServiceTypeProperties` + - Model `HDInsightPigActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `script_path`, `script_linked_service` and `defines` under property `type_properties` whose type is `HDInsightPigActivityTypeProperties` + - Model `HDInsightSparkActivity` moved instance variable `root_path`, `entry_file_path`, `arguments`, `get_debug_info`, `spark_job_linked_service`, `class_name`, `proxy_user` and `spark_config` under property `type_properties` whose type is `HDInsightSparkActivityTypeProperties` + - Model `HDInsightStreamingActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `mapper`, `reducer`, `input`, `output`, `file_paths`, `file_linked_service`, `combiner`, `command_environment` and `defines` under property `type_properties` whose type is `HDInsightStreamingActivityTypeProperties` + - Model `HdfsLinkedService` moved instance variable `url`, `authentication_type`, `encrypted_credential`, `user_name` and `password` under property `type_properties` whose type is `HdfsLinkedServiceTypeProperties` + - Model `HiveLinkedService` moved instance variable `host`, `port`, `server_type`, `thrift_transport_protocol`, `authentication_type`, `service_discovery_mode`, `zoo_keeper_name_space`, `use_native_query`, `username`, `password`, `http_path`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `HiveLinkedServiceTypeProperties` + - Model `HiveObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `HiveDatasetTypeProperties` + - Model `HttpDataset` moved instance variable `relative_url`, `request_method`, `request_body`, `additional_headers`, `format` and `compression` under property `type_properties` whose type is `HttpDatasetTypeProperties` + - Model `HttpLinkedService` moved instance variable `url`, `authentication_type`, `user_name`, `password`, `auth_headers`, `embedded_cert_data`, `cert_thumbprint`, `encrypted_credential` and `enable_server_certificate_validation` under property `type_properties` whose type is `HttpLinkedServiceTypeProperties` + - Model `HubspotLinkedService` moved instance variable `client_id`, `client_secret`, `access_token`, `refresh_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `HubspotLinkedServiceTypeProperties` + - Model `HubspotObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `IcebergDataset` moved instance variable `location` under property `type_properties` whose type is `IcebergDatasetTypeProperties` + - Model `IfConditionActivity` moved instance variable `expression`, `if_true_activities` and `if_false_activities` under property `type_properties` whose type is `IfConditionActivityTypeProperties` + - Model `ImpalaLinkedService` moved instance variable `host`, `port`, `authentication_type`, `username`, `password`, `thrift_transport_protocol`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `ImpalaLinkedServiceTypeProperties` + - Model `ImpalaObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `ImpalaDatasetTypeProperties` + - Model `InformixLinkedService` moved instance variable `connection_string`, `authentication_type`, `credential`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `InformixLinkedServiceTypeProperties` + - Model `InformixTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `InformixTableDatasetTypeProperties` + - Model `JiraLinkedService` moved instance variable `host`, `port`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `JiraLinkedServiceTypeProperties` + - Model `JiraObjectDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `JiraTableDatasetTypeProperties` + - Model `JsonDataset` moved instance variable `location`, `encoding_name` and `compression` under property `type_properties` whose type is `JsonDatasetTypeProperties` + - Model `LakeHouseLinkedService` moved instance variable `workspace_id`, `artifact_id`, `authentication_type`, `service_principal_id`, `service_principal_key`, `tenant`, `encrypted_credential`, `service_principal_credential_type`, `service_principal_credential` and `credential` under property `type_properties` whose type is `LakeHouseLinkedServiceTypeProperties` + - Model `LakeHouseTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `LakeHouseTableDatasetTypeProperties` + - Model `LookupActivity` moved instance variable `source`, `dataset`, `first_row_only` and `treat_decimal_as_string` under property `type_properties` whose type is `LookupActivityTypeProperties` + - Model `MagentoLinkedService` moved instance variable `host`, `access_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `MagentoLinkedServiceTypeProperties` + - Model `MagentoObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `ManagedIdentityCredential` moved instance variable `resource_id` under property `type_properties` whose type is `ManagedIdentityTypeProperties` + - Model `ManagedIntegrationRuntime` moved instance variable `compute_properties`, `ssis_properties`, `customer_virtual_network` and `interactive_query` under property `type_properties` whose type is `ManagedIntegrationRuntimeTypeProperties` + - Model `ManagedIntegrationRuntimeStatus` moved instance variable `create_time`, `nodes`, `other_errors` and `last_operation` under property `type_properties` whose type is `ManagedIntegrationRuntimeStatusTypeProperties` + - Model `MappingDataFlow` moved instance variable `sources`, `sinks`, `transformations`, `script` and `script_lines` under property `type_properties` whose type is `MappingDataFlowTypeProperties` + - Model `MariaDBLinkedService` moved instance variable `driver_version`, `connection_string`, `server`, `port`, `username`, `database`, `ssl_mode`, `use_system_trust_store`, `password` and `encrypted_credential` under property `type_properties` whose type is `MariaDBLinkedServiceTypeProperties` + - Model `MariaDBTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `MarketoLinkedService` moved instance variable `endpoint`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `MarketoLinkedServiceTypeProperties` + - Model `MarketoObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `MicrosoftAccessLinkedService` moved instance variable `connection_string`, `authentication_type`, `credential`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `MicrosoftAccessLinkedServiceTypeProperties` + - Model `MicrosoftAccessTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `MicrosoftAccessTableDatasetTypeProperties` + - Model `MongoDbAtlasCollectionDataset` moved instance variable `collection` under property `type_properties` whose type is `MongoDbAtlasCollectionDatasetTypeProperties` + - Model `MongoDbAtlasLinkedService` moved instance variable `connection_string`, `database` and `driver_version` under property `type_properties` whose type is `MongoDbAtlasLinkedServiceTypeProperties` + - Model `MongoDbCollectionDataset` moved instance variable `collection_name` under property `type_properties` whose type is `MongoDbCollectionDatasetTypeProperties` + - Model `MongoDbLinkedService` moved instance variable `server`, `authentication_type`, `database_name`, `username`, `password`, `auth_source`, `port`, `enable_ssl`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `MongoDbLinkedServiceTypeProperties` + - Model `MongoDbV2CollectionDataset` moved instance variable `collection` under property `type_properties` whose type is `MongoDbV2CollectionDatasetTypeProperties` + - Model `MongoDbV2LinkedService` moved instance variable `connection_string` and `database` under property `type_properties` whose type is `MongoDbV2LinkedServiceTypeProperties` + - Model `MySqlLinkedService` moved instance variable `driver_version`, `connection_string`, `server`, `port`, `username`, `database`, `ssl_mode`, `use_system_trust_store`, `password`, `encrypted_credential`, `allow_zero_date_time`, `connection_timeout`, `convert_zero_date_time`, `guid_format`, `ssl_cert`, `ssl_key` and `treat_tiny_as_boolean` under property `type_properties` whose type is `MySqlLinkedServiceTypeProperties` + - Model `MySqlTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `MySqlTableDatasetTypeProperties` + - Model `NetezzaLinkedService` moved instance variable `connection_string`, `server`, `port`, `uid`, `database`, `security_level`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `NetezzaLinkedServiceTypeProperties` + - Model `NetezzaTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `NetezzaTableDatasetTypeProperties` + - Model `ODataLinkedService` moved instance variable `url`, `authentication_type`, `user_name`, `password`, `auth_headers`, `tenant`, `service_principal_id`, `azure_cloud_type`, `aad_resource_id`, `aad_service_principal_credential_type`, `service_principal_key`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password` and `encrypted_credential` under property `type_properties` whose type is `ODataLinkedServiceTypeProperties` + - Model `ODataResourceDataset` moved instance variable `path` under property `type_properties` whose type is `ODataResourceDatasetTypeProperties` + - Model `OdbcLinkedService` moved instance variable `connection_string`, `authentication_type`, `credential`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `OdbcLinkedServiceTypeProperties` + - Model `OdbcTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `OdbcTableDatasetTypeProperties` + - Model `Office365Dataset` moved instance variable `table_name` and `predicate` under property `type_properties` whose type is `Office365DatasetTypeProperties` + - Model `Office365LinkedService` moved instance variable `office365_tenant_id`, `service_principal_tenant_id`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password` and `encrypted_credential` under property `type_properties` whose type is `Office365LinkedServiceTypeProperties` + - Model `OracleCloudStorageLinkedService` moved instance variable `access_key_id`, `secret_access_key`, `service_url` and `encrypted_credential` under property `type_properties` whose type is `OracleCloudStorageLinkedServiceTypeProperties` + - Model `OracleLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `username`, `password`, `encryption_client`, `encryption_types_client`, `crypto_checksum_client`, `crypto_checksum_types_client`, `initial_lob_fetch_size`, `fetch_size`, `statement_cache_size`, `initialization_string`, `enable_bulk_load`, `support_v1_data_types`, `fetch_tswtz_as_timestamp` and `encrypted_credential` under property `type_properties` whose type is `OracleLinkedServiceTypeProperties` + - Model `OracleServiceCloudLinkedService` moved instance variable `host`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `OracleServiceCloudLinkedServiceTypeProperties` + - Model `OracleServiceCloudObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `OracleTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `OracleTableDatasetTypeProperties` + - Model `OrcDataset` moved instance variable `location` and `orc_compression_codec` under property `type_properties` whose type is `OrcDatasetTypeProperties` + - Model `ParquetDataset` moved instance variable `location` and `compression_codec` under property `type_properties` whose type is `ParquetDatasetTypeProperties` + - Model `PaypalLinkedService` moved instance variable `host`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `PaypalLinkedServiceTypeProperties` + - Model `PaypalObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `PhoenixLinkedService` moved instance variable `host`, `port`, `http_path`, `authentication_type`, `username`, `password`, `enable_ssl`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `PhoenixLinkedServiceTypeProperties` + - Model `PhoenixObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PhoenixDatasetTypeProperties` + - Model `PipelineResource` moved instance variable `description`, `activities`, `parameters`, `variables`, `concurrency`, `annotations`, `run_dimensions`, `folder` and `policy` under property `properties` whose type is `Pipeline` + - Model `PostgreSqlLinkedService` moved instance variable `connection_string`, `password` and `encrypted_credential` under property `type_properties` whose type is `PostgreSqlLinkedServiceTypeProperties` + - Model `PostgreSqlTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PostgreSqlTableDatasetTypeProperties` + - Model `PostgreSqlV2LinkedService` moved instance variable `server`, `port`, `username`, `database`, `authentication_type`, `ssl_mode`, `schema`, `pooling`, `connection_timeout`, `command_timeout`, `trust_server_certificate`, `ssl_certificate`, `ssl_key`, `ssl_password`, `read_buffer_size`, `log_parameters`, `timezone`, `encoding`, `password` and `encrypted_credential` under property `type_properties` whose type is `PostgreSqlV2LinkedServiceTypeProperties` + - Model `PostgreSqlV2TableDataset` moved instance variable `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PostgreSqlV2TableDatasetTypeProperties` + - Model `PrestoLinkedService` moved instance variable `host`, `server_version`, `catalog`, `port`, `authentication_type`, `username`, `password`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert`, `time_zone_id` and `encrypted_credential` under property `type_properties` whose type is `PrestoLinkedServiceTypeProperties` + - Model `PrestoObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PrestoDatasetTypeProperties` + - Model `QuickBooksLinkedService` moved instance variable `connection_properties`, `endpoint`, `company_id`, `consumer_key`, `consumer_secret`, `access_token`, `access_token_secret`, `refresh_token`, `use_encrypted_endpoints` and `encrypted_credential` under property `type_properties` whose type is `QuickBooksLinkedServiceTypeProperties` + - Model `QuickBooksObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `QuickbaseLinkedService` moved instance variable `url`, `user_token` and `encrypted_credential` under property `type_properties` whose type is `QuickbaseLinkedServiceTypeProperties` + - Model `RelationalTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `RelationalTableDatasetTypeProperties` + - Model `RerunTumblingWindowTrigger` moved instance variable `parent_trigger`, `requested_start_time`, `requested_end_time` and `rerun_concurrency` under property `type_properties` whose type is `RerunTumblingWindowTriggerTypeProperties` + - Model `Resource` moved instance variable `location`, `tags` and `e_tag` under property `system_data` whose type is `SystemData` + - Model `ResponsysLinkedService` moved instance variable `endpoint`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ResponsysLinkedServiceTypeProperties` + - Model `ResponsysObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `RestResourceDataset` moved instance variable `relative_url`, `request_method`, `request_body`, `additional_headers` and `pagination_rules` under property `type_properties` whose type is `RestResourceDatasetTypeProperties` + - Model `RestServiceLinkedService` moved instance variable `url`, `enable_server_certificate_validation`, `authentication_type`, `user_name`, `password`, `auth_headers`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `aad_resource_id`, `encrypted_credential`, `credential`, `client_id`, `client_secret`, `token_endpoint`, `resource`, `scope`, `service_principal_credential_type`, `service_principal_embedded_cert` and `service_principal_embedded_cert_password` under property `type_properties` whose type is `RestServiceLinkedServiceTypeProperties` + - Model `RunQueryFilter` renamed its instance variable `values` to `values_property` + - Model `SSISLogLocation` moved instance variable `access_credential` and `log_refresh_interval` under property `type_properties` whose type is `SSISLogLocationTypeProperties` + - Model `SSISPackageLocation` moved instance variable `package_password`, `access_credential`, `configuration_path`, `configuration_access_credential`, `package_name`, `package_content`, `package_last_modified_date` and `child_packages` under property `type_properties` whose type is `SSISPackageLocationTypeProperties` + - Model `SalesforceLinkedService` moved instance variable `environment_url`, `username`, `password`, `security_token`, `api_version` and `encrypted_credential` under property `type_properties` whose type is `SalesforceLinkedServiceTypeProperties` + - Model `SalesforceMarketingCloudLinkedService` moved instance variable `connection_properties`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `SalesforceMarketingCloudLinkedServiceTypeProperties` + - Model `SalesforceMarketingCloudObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `SalesforceObjectDataset` moved instance variable `object_api_name` under property `type_properties` whose type is `SalesforceObjectDatasetTypeProperties` + - Model `SalesforceServiceCloudLinkedService` moved instance variable `environment_url`, `username`, `password`, `security_token`, `api_version`, `extended_properties` and `encrypted_credential` under property `type_properties` whose type is `SalesforceServiceCloudLinkedServiceTypeProperties` + - Model `SalesforceServiceCloudObjectDataset` moved instance variable `object_api_name` under property `type_properties` whose type is `SalesforceServiceCloudObjectDatasetTypeProperties` + - Model `SalesforceServiceCloudV2LinkedService` moved instance variable `environment_url`, `authentication_type`, `client_id`, `client_secret`, `api_version` and `encrypted_credential` under property `type_properties` whose type is `SalesforceServiceCloudV2LinkedServiceTypeProperties` + - Model `SalesforceServiceCloudV2ObjectDataset` moved instance variable `object_api_name` and `report_id` under property `type_properties` whose type is `SalesforceServiceCloudV2ObjectDatasetTypeProperties` + - Model `SalesforceV2LinkedService` moved instance variable `environment_url`, `authentication_type`, `client_id`, `client_secret`, `api_version` and `encrypted_credential` under property `type_properties` whose type is `SalesforceV2LinkedServiceTypeProperties` + - Model `SalesforceV2ObjectDataset` moved instance variable `object_api_name` and `report_id` under property `type_properties` whose type is `SalesforceV2ObjectDatasetTypeProperties` + - Model `SapBWLinkedService` moved instance variable `server`, `system_number`, `client_id`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapBWLinkedServiceTypeProperties` + - Model `SapCloudForCustomerLinkedService` moved instance variable `url`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapCloudForCustomerLinkedServiceTypeProperties` + - Model `SapCloudForCustomerResourceDataset` moved instance variable `path` under property `type_properties` whose type is `SapCloudForCustomerResourceDatasetTypeProperties` + - Model `SapEccLinkedService` moved instance variable `url`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapEccLinkedServiceTypeProperties` + - Model `SapEccResourceDataset` moved instance variable `path` under property `type_properties` whose type is `SapEccResourceDatasetTypeProperties` + - Model `SapHanaLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapHanaLinkedServiceProperties` + - Model `SapHanaTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SapHanaTableDatasetTypeProperties` + - Model `SapOdpLinkedService` moved instance variable `server`, `system_number`, `client_id`, `language`, `system_id`, `user_name`, `password`, `message_server`, `message_server_service`, `snc_mode`, `snc_my_name`, `snc_partner_name`, `snc_library_path`, `snc_qop`, `x509_certificate_path`, `logon_group`, `subscriber_name` and `encrypted_credential` under property `type_properties` whose type is `SapOdpLinkedServiceTypeProperties` + - Model `SapOdpResourceDataset` moved instance variable `context` and `object_name` under property `type_properties` whose type is `SapOdpResourceDatasetTypeProperties` + - Model `SapOpenHubLinkedService` moved instance variable `server`, `system_number`, `client_id`, `language`, `system_id`, `user_name`, `password`, `message_server`, `message_server_service`, `logon_group` and `encrypted_credential` under property `type_properties` whose type is `SapOpenHubLinkedServiceTypeProperties` + - Model `SapOpenHubTableDataset` moved instance variable `open_hub_destination_name`, `exclude_last_request` and `base_request_id` under property `type_properties` whose type is `SapOpenHubTableDatasetTypeProperties` + - Model `SapTableLinkedService` moved instance variable `server`, `system_number`, `client_id`, `language`, `system_id`, `user_name`, `password`, `message_server`, `message_server_service`, `snc_mode`, `snc_my_name`, `snc_partner_name`, `snc_library_path`, `snc_qop`, `logon_group` and `encrypted_credential` under property `type_properties` whose type is `SapTableLinkedServiceTypeProperties` + - Model `SapTableResourceDataset` moved instance variable `table_name` under property `type_properties` whose type is `SapTableResourceDatasetTypeProperties` + - Model `ScheduleTrigger` moved instance variable `recurrence` under property `type_properties` whose type is `ScheduleTriggerTypeProperties` + - Model `ScriptActivity` moved instance variable `script_block_execution_timeout`, `scripts`, `log_settings`, `return_multistatement_result` and `treat_decimal_as_string` under property `type_properties` whose type is `ScriptActivityTypeProperties` + - Model `SelfHostedIntegrationRuntime` moved instance variable `linked_info` and `self_contained_interactive_authoring_enabled` under property `type_properties` whose type is `SelfHostedIntegrationRuntimeTypeProperties` + - Model `SelfHostedIntegrationRuntimeStatus` moved instance variable `create_time`, `task_queue_id`, `internal_channel_encryption`, `version`, `nodes`, `scheduled_update_date`, `update_delay_offset`, `local_time_zone_offset`, `capabilities`, `service_urls`, `auto_update`, `version_status`, `links`, `pushed_version`, `latest_version`, `auto_update_eta` and `self_contained_interactive_authoring_enabled` under property `type_properties` whose type is `SelfHostedIntegrationRuntimeStatusTypeProperties` + - Model `ServiceNowLinkedService` moved instance variable `endpoint`, `authentication_type`, `username`, `password`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ServiceNowLinkedServiceTypeProperties` + - Model `ServiceNowObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `ServiceNowV2LinkedService` moved instance variable `endpoint`, `authentication_type`, `username`, `password`, `client_id`, `client_secret`, `grant_type` and `encrypted_credential` under property `type_properties` whose type is `ServiceNowV2LinkedServiceTypeProperties` + - Model `ServiceNowV2ObjectDataset` moved instance variable `table_name` and `value_type` under property `type_properties` whose type is `ServiceNowV2DatasetTypeProperties` + - Model `ServicePrincipalCredential` moved instance variable `service_principal_id`, `service_principal_key` and `tenant` under property `type_properties` whose type is `ServicePrincipalCredentialTypeProperties` + - Model `SetVariableActivity` moved instance variable `variable_name`, `value` and `set_system_variable` under property `type_properties` whose type is `SetVariableActivityTypeProperties` + - Model `SftpServerLinkedService` moved instance variable `host`, `port`, `authentication_type`, `user_name`, `password`, `encrypted_credential`, `private_key_path`, `private_key_content`, `pass_phrase`, `skip_host_key_validation` and `host_key_fingerprint` under property `type_properties` whose type is `SftpServerLinkedServiceTypeProperties` + - Model `SharePointOnlineListLinkedService` moved instance variable `site_url`, `tenant_id`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password` and `encrypted_credential` under property `type_properties` whose type is `SharePointOnlineListLinkedServiceTypeProperties` + - Model `SharePointOnlineListResourceDataset` moved instance variable `list_name` under property `type_properties` whose type is `SharePointOnlineListDatasetTypeProperties` + - Model `ShopifyLinkedService` moved instance variable `host`, `access_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ShopifyLinkedServiceTypeProperties` + - Model `ShopifyObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `SmartsheetLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `SmartsheetLinkedServiceTypeProperties` + - Model `SnowflakeDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SnowflakeDatasetTypeProperties` + - Model `SnowflakeLinkedService` moved instance variable `connection_string`, `password` and `encrypted_credential` under property `type_properties` whose type is `SnowflakeLinkedServiceTypeProperties` + - Model `SnowflakeV2Dataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SnowflakeDatasetTypeProperties` + - Model `SnowflakeV2LinkedService` moved instance variable `account_identifier`, `user`, `password`, `database`, `warehouse`, `authentication_type`, `client_id`, `client_secret`, `tenant_id`, `scope`, `private_key`, `private_key_passphrase`, `role`, `host`, `schema`, `encrypted_credential` and `use_utc_timestamps` under property `type_properties` whose type is `SnowflakeLinkedV2ServiceTypeProperties` + - Model `SparkLinkedService` moved instance variable `host`, `port`, `server_type`, `thrift_transport_protocol`, `authentication_type`, `username`, `password`, `http_path`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `SparkLinkedServiceTypeProperties` + - Model `SparkObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `SparkDatasetTypeProperties` + - Model `SqlDWUpsertSettings` renamed its instance variable `keys` to `keys_property` + - Model `SqlServerLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `encrypted_credential`, `always_encrypted_settings` and `credential` under property `type_properties` whose type is `SqlServerLinkedServiceTypeProperties` + - Model `SqlServerStoredProcedureActivity` moved instance variable `stored_procedure_name` and `stored_procedure_parameters` under property `type_properties` whose type is `SqlServerStoredProcedureActivityTypeProperties` + - Model `SqlServerTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SqlServerTableDatasetTypeProperties` + - Model `SqlUpsertSettings` renamed its instance variable `keys` to `keys_property` + - Model `SquareLinkedService` moved instance variable `connection_properties`, `host`, `client_id`, `client_secret`, `redirect_uri`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `SquareLinkedServiceTypeProperties` + - Model `SquareObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `SwitchActivity` moved instance variable `on`, `cases` and `default_activities` under property `type_properties` whose type is `SwitchActivityTypeProperties` + - Model `SybaseLinkedService` moved instance variable `server`, `database`, `schema`, `authentication_type`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `SybaseLinkedServiceTypeProperties` + - Model `SybaseTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `SybaseTableDatasetTypeProperties` + - Model `SynapseNotebookActivity` moved instance variable `notebook`, `spark_pool`, `parameters`, `executor_size`, `conf`, `driver_size`, `num_executors`, `configuration_type`, `target_spark_configuration` and `spark_config` under property `type_properties` whose type is `SynapseNotebookActivityTypeProperties` + - Model `SynapseSparkJobDefinitionActivity` moved instance variable `spark_job`, `arguments`, `file`, `scan_folder`, `class_name`, `files`, `python_code_reference`, `files_v2`, `target_big_data_pool`, `executor_size`, `conf`, `driver_size`, `num_executors`, `configuration_type`, `target_spark_configuration` and `spark_config` under property `type_properties` whose type is `SynapseSparkJobActivityTypeProperties` + - Model `TeamDeskLinkedService` moved instance variable `authentication_type`, `url`, `user_name`, `password`, `api_token` and `encrypted_credential` under property `type_properties` whose type is `TeamDeskLinkedServiceTypeProperties` + - Model `TeradataLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `username`, `password`, `ssl_mode`, `port_number`, `https_port_number`, `use_data_encryption`, `character_set`, `max_resp_size` and `encrypted_credential` under property `type_properties` whose type is `TeradataLinkedServiceTypeProperties` + - Model `TeradataTableDataset` moved instance variable `database` and `table` under property `type_properties` whose type is `TeradataTableDatasetTypeProperties` + - Model `TumblingWindowTrigger` moved instance variable `frequency`, `interval`, `start_time`, `end_time`, `delay`, `max_concurrency`, `retry_policy` and `depends_on` under property `type_properties` whose type is `TumblingWindowTriggerTypeProperties` + - Model `TwilioLinkedService` moved instance variable `user_name` and `password` under property `type_properties` whose type is `TwilioLinkedServiceTypeProperties` + - Model `UntilActivity` moved instance variable `expression`, `timeout` and `activities` under property `type_properties` whose type is `UntilActivityTypeProperties` + - Model `ValidationActivity` moved instance variable `timeout`, `sleep`, `minimum_size`, `child_items` and `dataset` under property `type_properties` whose type is `ValidationActivityTypeProperties` + - Model `VerticaLinkedService` moved instance variable `connection_string`, `server`, `port`, `uid`, `database`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `VerticaLinkedServiceTypeProperties` + - Model `VerticaTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `VerticaDatasetTypeProperties` + - Model `WaitActivity` moved instance variable `wait_time_in_seconds` under property `type_properties` whose type is `WaitActivityTypeProperties` + - Model `WarehouseLinkedService` moved instance variable `artifact_id`, `endpoint`, `workspace_id`, `authentication_type`, `service_principal_id`, `service_principal_key`, `tenant`, `encrypted_credential`, `service_principal_credential_type`, `service_principal_credential` and `credential` under property `type_properties` whose type is `WarehouseLinkedServiceTypeProperties` + - Model `WarehouseTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `WarehouseTableDatasetTypeProperties` + - Model `WebActivity` moved instance variable `method`, `url`, `headers`, `body`, `authentication`, `disable_cert_validation`, `http_request_timeout`, `turn_off_async`, `datasets`, `linked_services` and `connect_via` under property `type_properties` whose type is `WebActivityTypeProperties` + - Model `WebHookActivity` moved instance variable `method`, `url`, `timeout`, `headers`, `body`, `authentication` and `report_status_on_call_back` under property `type_properties` whose type is `WebHookActivityTypeProperties` + - Model `WebTableDataset` moved instance variable `index` and `path` under property `type_properties` whose type is `WebTableDatasetTypeProperties` + - Model `WranglingDataFlow` moved instance variable `sources`, `script` and `document_locale` under property `type_properties` whose type is `PowerQueryTypeProperties` + - Model `XeroLinkedService` moved instance variable `connection_properties`, `host`, `consumer_key`, `private_key`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `XeroLinkedServiceTypeProperties` + - Model `XeroObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `XmlDataset` moved instance variable `location`, `encoding_name`, `null_value` and `compression` under property `type_properties` whose type is `XmlDatasetTypeProperties` + - Model `ZendeskLinkedService` moved instance variable `authentication_type`, `url`, `user_name`, `password`, `api_token` and `encrypted_credential` under property `type_properties` whose type is `ZendeskLinkedServiceTypeProperties` + - Model `ZohoLinkedService` moved instance variable `connection_properties`, `endpoint`, `access_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ZohoLinkedServiceTypeProperties` + - Model `ZohoObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Method `ChangeDataCaptureOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `ChangeDataCaptureOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `CredentialOperationsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `CredentialOperationsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `DataFlowsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `DataFlowsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `DatasetsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `DatasetsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `FactoriesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `FactoriesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `IntegrationRuntimesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `IntegrationRuntimesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `LinkedServicesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `LinkedServicesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedPrivateEndpointsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedPrivateEndpointsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedVirtualNetworksOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedVirtualNetworksOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `PipelineRunsOperations.cancel` changed its parameter `is_recursive` from `positional_or_keyword` to `keyword_only` + - Method `PipelinesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `PipelinesOperations.create_run` changed its parameter `reference_pipeline_run_id`/`is_recovery`/`start_activity_name`/`start_from_failure` from `positional_or_keyword` to `keyword_only` + - Method `PipelinesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `PrivateEndpointConnectionOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `PrivateEndpointConnectionOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `TriggersOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `TriggersOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + +### Other Changes + + - Deleted model `ChangeDataCaptureListResponse`/`CredentialListResponse`/`DataFlowListResponse`/`DatasetListResponse`/`FactoryListResponse`/`GlobalParameterListResponse`/`IntegrationRuntimeListResponse`/`IntegrationRuntimeStatusListResponse`/`LinkedServiceListResponse`/`ManagedPrivateEndpointListResponse`/`ManagedVirtualNetworkListResponse`/`OperationListResponse`/`PipelineListResponse`/`PrivateEndpointConnectionListResponse`/`QueryDataFlowDebugSessionsResponse`/`TriggerListResponse` which actually were not used by SDK users + - Deleted model `CopyTranslator`/`GetDataFactoryOperationStatusResponse`/`TabularTranslator`/`TypeConversionSettings`/`AdditionalColumns`/`DatasetDataElement`/`DatasetSchemaDataElement`/`OutputColumn`/`StoredProcedureParameter` which actually were not used by SDK users + - Deleted enum `AmazonRdsForOraclePartitionOption`/`AvroCompressionCodec`/`CompressionCodec`/`CopyBehaviorType`/`DatasetCompressionLevel`/`DynamicsAuthenticationType`/`DynamicsDeploymentType`/`HdiNodeTypes`/`JsonFormatFilePattern`/`JsonWriteFilePattern`/`NetezzaPartitionOption`/`OraclePartitionOption`/`OrcCompressionCodec`/`SalesforceSourceReadBehavior`/`SapHanaPartitionOption`/`SapTablePartitionOption`/`ServicePrincipalCredentialType`/`SqlPartitionOption`/`StoredProcedureParameterType`/`TeradataPartitionOption`/`ScriptType`/`SqlDWWriteBehaviorEnum`/`SqlWriteBehaviorEnum` which actually were not used by SDK users + +## 9.3.0 (2026-03-10) + +### Features Added + + - Model `DataFactoryManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `DataFactoryManagementClient` added operation group `integration_runtime` + - Model `AmazonRdsForOracleLinkedService` added property `server` + - Model `AmazonRdsForOracleLinkedService` added property `authentication_type` + - Model `AmazonRdsForOracleLinkedService` added property `username` + - Model `AmazonRdsForOracleLinkedService` added property `encryption_client` + - Model `AmazonRdsForOracleLinkedService` added property `encryption_types_client` + - Model `AmazonRdsForOracleLinkedService` added property `crypto_checksum_client` + - Model `AmazonRdsForOracleLinkedService` added property `crypto_checksum_types_client` + - Model `AmazonRdsForOracleLinkedService` added property `initial_lob_fetch_size` + - Model `AmazonRdsForOracleLinkedService` added property `fetch_size` + - Model `AmazonRdsForOracleLinkedService` added property `statement_cache_size` + - Model `AmazonRdsForOracleLinkedService` added property `initialization_string` + - Model `AmazonRdsForOracleLinkedService` added property `enable_bulk_load` + - Model `AmazonRdsForOracleLinkedService` added property `support_v1_data_types` + - Model `AmazonRdsForOracleLinkedService` added property `fetch_tswtz_as_timestamp` + - Model `AmazonRdsForOracleSource` added property `number_precision` + - Model `AmazonRdsForOracleSource` added property `number_scale` + - Model `AzureDatabricksLinkedService` added property `data_security_mode` + - Model `HDInsightLinkedService` added property `cluster_auth_type` + - Model `HDInsightLinkedService` added property `credential` + - Model `HDInsightOnDemandLinkedService` added property `cluster_resource_group_auth_type` + - Model `HiveLinkedService` added property `enable_server_certificate_validation` + - Model `ImpalaLinkedService` added property `thrift_transport_protocol` + - Model `ImpalaLinkedService` added property `enable_server_certificate_validation` + - Model `JiraObjectDataset` added property `schema_type_properties_schema` + - Model `JiraObjectDataset` added property `table` + - Model `LakeHouseLinkedService` added property `authentication_type` + - Model `LakeHouseLinkedService` added property `credential` + - Model `LookupActivity` added property `treat_decimal_as_string` + - Model `ManagedIntegrationRuntime` added property `interactive_query` + - Model `NetezzaLinkedService` added property `server` + - Model `NetezzaLinkedService` added property `port` + - Model `NetezzaLinkedService` added property `uid` + - Model `NetezzaLinkedService` added property `database` + - Model `NetezzaLinkedService` added property `security_level` + - Model `Office365LinkedService` added property `service_principal_credential_type` + - Model `Office365LinkedService` added property `service_principal_embedded_cert` + - Model `Office365LinkedService` added property `service_principal_embedded_cert_password` + - Model `OracleSource` added property `number_precision` + - Model `OracleSource` added property `number_scale` + - Model `QuickBooksLinkedService` added property `refresh_token` + - Model `SalesforceV2Source` added property `partition_option` + - Model `ScriptActivity` added property `treat_decimal_as_string` + - Model `SnowflakeV2LinkedService` added property `role` + - Model `SnowflakeV2LinkedService` added property `schema` + - Model `SnowflakeV2LinkedService` added property `use_utc_timestamps` + - Model `SparkLinkedService` added property `enable_server_certificate_validation` + - Model `WarehouseLinkedService` added property `authentication_type` + - Model `WarehouseLinkedService` added property `credential` + - Added enum `AmazonRdsForOracleAuthenticationType` + - Added model `DatabricksJobActivity` + - Added model `EnableInteractiveQueryRequest` + - Added model `ErrorAdditionalInfo` + - Added model `ErrorDetail` + - Added model `ErrorResponse` + - Added enum `HDInsightClusterAuthenticationType` + - Added enum `HDInsightOndemandClusterResourceGroupAuthenticationType` + - Added enum `ImpalaThriftTransportProtocol` + - Added enum `InteractiveCapabilityStatus` + - Added model `InteractiveQueryProperties` + - Added enum `LakehouseAuthenticationType` + - Added enum `NetezzaSecurityLevelType` + - Added enum `WarehouseAuthenticationType` + +## 9.2.0 (2025-04-20) + +### Features Added + + - Model AzurePostgreSqlLinkedService has a new parameter azure_cloud_type + - Model AzurePostgreSqlLinkedService has a new parameter credential + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_credential_type + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_embedded_cert + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_embedded_cert_password + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_id + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_key + - Model AzurePostgreSqlLinkedService has a new parameter tenant + - Model AzurePostgreSqlSink has a new parameter upsert_settings + - Model AzurePostgreSqlSink has a new parameter write_method + - Model CommonDataServiceForAppsSink has a new parameter bypass_business_logic_execution + - Model CommonDataServiceForAppsSink has a new parameter bypass_power_automate_flows + - Model DynamicsCrmSink has a new parameter bypass_business_logic_execution + - Model DynamicsCrmSink has a new parameter bypass_power_automate_flows + - Model DynamicsSink has a new parameter bypass_business_logic_execution + - Model DynamicsSink has a new parameter bypass_power_automate_flows + - Model GreenplumLinkedService has a new parameter authentication_type + - Model GreenplumLinkedService has a new parameter command_timeout + - Model GreenplumLinkedService has a new parameter connection_timeout + - Model GreenplumLinkedService has a new parameter database + - Model GreenplumLinkedService has a new parameter host + - Model GreenplumLinkedService has a new parameter port + - Model GreenplumLinkedService has a new parameter ssl_mode + - Model GreenplumLinkedService has a new parameter username + - Model Office365LinkedService has a new parameter service_principal_credential_type + - Model Office365LinkedService has a new parameter service_principal_embedded_cert + - Model Office365LinkedService has a new parameter service_principal_embedded_cert_password + - Model OracleLinkedService has a new parameter authentication_type + - Model OracleLinkedService has a new parameter crypto_checksum_client + - Model OracleLinkedService has a new parameter crypto_checksum_types_client + - Model OracleLinkedService has a new parameter enable_bulk_load + - Model OracleLinkedService has a new parameter encryption_client + - Model OracleLinkedService has a new parameter encryption_types_client + - Model OracleLinkedService has a new parameter fetch_size + - Model OracleLinkedService has a new parameter fetch_tswtz_as_timestamp + - Model OracleLinkedService has a new parameter initial_lob_fetch_size + - Model OracleLinkedService has a new parameter initialization_string + - Model OracleLinkedService has a new parameter server + - Model OracleLinkedService has a new parameter statement_cache_size + - Model OracleLinkedService has a new parameter support_v1_data_types + - Model OracleLinkedService has a new parameter username + - Model PrestoLinkedService has a new parameter enable_server_certificate_validation + - Model ScriptActivity has a new parameter return_multistatement_result + - Model ServiceNowV2ObjectDataset has a new parameter value_type + - Model SnowflakeV2LinkedService has a new parameter role + - Model SnowflakeV2LinkedService has a new parameter schema + - Model TeradataLinkedService has a new parameter character_set + - Model TeradataLinkedService has a new parameter https_port_number + - Model TeradataLinkedService has a new parameter max_resp_size + - Model TeradataLinkedService has a new parameter port_number + - Model TeradataLinkedService has a new parameter ssl_mode + - Model TeradataLinkedService has a new parameter use_data_encryption + - Model TypeConversionSettings has a new parameter date_format + - Model TypeConversionSettings has a new parameter time_format + +## 9.1.0 (2024-12-16) + +### Features Added + + - Model `AzurePostgreSqlLinkedService` added property `server` + - Model `AzurePostgreSqlLinkedService` added property `port` + - Model `AzurePostgreSqlLinkedService` added property `username` + - Model `AzurePostgreSqlLinkedService` added property `database` + - Model `AzurePostgreSqlLinkedService` added property `ssl_mode` + - Model `AzurePostgreSqlLinkedService` added property `timeout` + - Model `AzurePostgreSqlLinkedService` added property `command_timeout` + - Model `AzurePostgreSqlLinkedService` added property `trust_server_certificate` + - Model `AzurePostgreSqlLinkedService` added property `read_buffer_size` + - Model `AzurePostgreSqlLinkedService` added property `timezone` + - Model `AzurePostgreSqlLinkedService` added property `encoding` + - Model `MariaDBLinkedService` added property `ssl_mode` + - Model `MariaDBLinkedService` added property `use_system_trust_store` + - Model `MySqlLinkedService` added property `allow_zero_date_time` + - Model `MySqlLinkedService` added property `connection_timeout` + - Model `MySqlLinkedService` added property `convert_zero_date_time` + - Model `MySqlLinkedService` added property `guid_format` + - Model `MySqlLinkedService` added property `ssl_cert` + - Model `MySqlLinkedService` added property `ssl_key` + - Model `MySqlLinkedService` added property `treat_tiny_as_boolean` + - Model `PostgreSqlV2LinkedService` added property `authentication_type` + - Model `SalesforceV2Source` added property `page_size` + - Model `ServiceNowV2Source` added property `page_size` + - Model `SnowflakeV2LinkedService` added property `host` + - Added model `IcebergDataset` + - Added model `IcebergSink` + - Added model `IcebergWriteSettings` + +## 9.0.0 (2024-08-19) + +### Features Added + + - The model or publicly exposed class 'AmazonMWSLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AmazonRdsForOracleLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AmazonRdsForSqlServerLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AmazonRedshiftLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AmazonS3CompatibleLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AmazonS3LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AppFiguresLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AsanaLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureBatchLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureBlobFSLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureBlobStorageLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureDataExplorerLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureDataLakeAnalyticsLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureDataLakeStoreLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureDatabricksDeltaLakeLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureDatabricksLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureFileStorageLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureFileStorageLinkedService' had property 'service_endpoint' added in the current version + - The model or publicly exposed class 'AzureFileStorageLinkedService' had property 'credential' added in the current version + - The model or publicly exposed class 'AzureFunctionLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureKeyVaultLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureMLLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureMLServiceLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureMariaDBLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureMySqlLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzurePostgreSqlLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureSearchLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureSqlDWLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureSqlDatabaseLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureSqlMILinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureStorageLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureSynapseArtifactsLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureTableStorageLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureTableStorageLinkedService' had property 'service_endpoint' added in the current version + - The model or publicly exposed class 'AzureTableStorageLinkedService' had property 'credential' added in the current version + - The model or publicly exposed class 'CassandraLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'CommonDataServiceForAppsLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'CommonDataServiceForAppsLinkedService' had property 'domain' added in the current version + - The model or publicly exposed class 'ConcurLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'CosmosDbLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'CosmosDbMongoDbApiLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'CouchbaseLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'CustomDataSourceLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'DataworldLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'Db2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'DrillLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'DynamicsAXLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'DynamicsAuthenticationType' had property 'ACTIVE_DIRECTORY' added in the current version + - The model or publicly exposed class 'DynamicsCrmLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'DynamicsCrmLinkedService' had property 'domain' added in the current version + - The model or publicly exposed class 'DynamicsLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'DynamicsLinkedService' had property 'domain' added in the current version + - The model or publicly exposed class 'EloquaLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ExecuteDataFlowActivity' had property 'continuation_settings' added in the current version + - The model or publicly exposed class 'ExecuteDataFlowActivityTypeProperties' had property 'continuation_settings' added in the current version + - The model or publicly exposed class 'ExecutePowerQueryActivityTypeProperties' had property 'continuation_settings' added in the __init__ method in the current version + - The model or publicly exposed class 'ExecuteWranglingDataflowActivity' had property 'continuation_settings' added in the current version + - The model or publicly exposed class 'FileServerLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'FtpServerLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'GlobalParameterType' had property 'INT' added in the current version + - The model or publicly exposed class 'GoogleAdWordsLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'GoogleBigQueryLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'GoogleBigQueryV2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'GoogleCloudStorageLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'GoogleSheetsLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'GreenplumLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'HBaseLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'HDInsightLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'HDInsightOnDemandLinkedService' had property 'version_type_properties_version' added in the current version + - The model or publicly exposed class 'HdfsLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'HiveLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'HttpLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'HubspotLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ImpalaLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'InformixLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'JiraLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'LakeHouseLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'LinkedService' had property 'version' added in the current version + - The model or publicly exposed class 'MagentoLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'MariaDBLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'MarketoLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'MicrosoftAccessLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'MongoDbAtlasLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'MongoDbLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'MongoDbV2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'MySqlLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'NetezzaLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'NotebookParameterType' had property 'INT' added in the current version + - The model or publicly exposed class 'ODataLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'OdbcLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'Office365LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'OracleCloudStorageLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'OracleLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'OracleServiceCloudLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ParameterType' had property 'INT' added in the current version + - The model or publicly exposed class 'PaypalLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'PhoenixLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'PostgreSqlLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'PostgreSqlV2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'PrestoLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'QuickBooksLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'QuickbaseLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ResponsysLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'RestServiceLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'RestServiceLinkedService' had property 'service_principal_credential_type' added in the current version + - The model or publicly exposed class 'RestServiceLinkedService' had property 'service_principal_embedded_cert' added in the current version + - The model or publicly exposed class 'RestServiceLinkedService' had property 'service_principal_embedded_cert_password' added in the current version + - The model or publicly exposed class 'RunQueryFilterOperator' had property 'IN' added in the current version + - The model or publicly exposed class 'SalesforceLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SalesforceMarketingCloudLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SalesforceServiceCloudLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SalesforceServiceCloudV2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SalesforceV2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SapBWLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SapCloudForCustomerLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SapEccLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SapHanaLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SapOdpLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SapOpenHubLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SapTableLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ServiceNowLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ServiceNowV2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SftpServerLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SharePointOnlineListLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SharePointOnlineListLinkedService' had property 'service_principal_credential_type' added in the current version + - The model or publicly exposed class 'SharePointOnlineListLinkedService' had property 'service_principal_embedded_cert' added in the current version + - The model or publicly exposed class 'SharePointOnlineListLinkedService' had property 'service_principal_embedded_cert_password' added in the current version + - The model or publicly exposed class 'ShopifyLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SmartsheetLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SnowflakeExportCopyCommand' had property 'storage_integration' added in the current version + - The model or publicly exposed class 'SnowflakeImportCopyCommand' had property 'storage_integration' added in the current version + - The model or publicly exposed class 'SnowflakeLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SnowflakeV2LinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SparkLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SqlServerAuthenticationType' had property 'USER_ASSIGNED_MANAGED_IDENTITY' added in the current version + - The model or publicly exposed class 'SqlServerLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'SqlServerLinkedService' had property 'credential' added in the current version + - The model or publicly exposed class 'SqlServerLinkedServiceTypeProperties' had property 'credential' added in the current version + - The model or publicly exposed class 'SquareLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'StoredProcedureParameterType' had property 'INT' added in the current version + - The model or publicly exposed class 'SybaseLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'TeamDeskLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'TeradataLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'TwilioLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'VerticaLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'VerticaLinkedService' had property 'server' added in the current version + - The model or publicly exposed class 'VerticaLinkedService' had property 'port' added in the current version + - The model or publicly exposed class 'VerticaLinkedService' had property 'uid' added in the current version + - The model or publicly exposed class 'VerticaLinkedService' had property 'database' added in the current version + - The model or publicly exposed class 'WarehouseLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'WebLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'XeroLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ZendeskLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'ZohoLinkedService' had property 'version' added in the __init__ method in the current version + - The model or publicly exposed class 'AzureStorageLinkedServiceTypeProperties' was added in the current version + - The model or publicly exposed class 'AzureTableStorageLinkedServiceTypeProperties' was added in the current version + - The model or publicly exposed class 'ContinuationSettingsReference' was added in the current version + +### Breaking Changes + + - The 'GlobalParameterType' enum had its value 'INT_ENUM' deleted or renamed in the current version + - The model or publicly exposed class 'HDInsightOnDemandLinkedService' had its instance variable 'version' deleted or renamed in the current version + - The 'NotebookParameterType' enum had its value 'INT_ENUM' deleted or renamed in the current version + - The 'ParameterType' enum had its value 'INT_ENUM' deleted or renamed in the current version + - The 'RunQueryFilterOperator' enum had its value 'IN_ENUM' deleted or renamed in the current version + - The 'StoredProcedureParameterType' enum had its value 'INT_ENUM' deleted or renamed in the current version + +## 8.0.0 (2024-06-06) + +### Features Added + + - Model DynamicsCrmLinkedService has a new parameter credential + - Model ExpressionV2 has a new parameter operators + - Model LakeHouseTableDataset has a new parameter schema_type_properties_schema + - Model SalesforceServiceCloudV2Source has a new parameter query + - Model SalesforceV2Source has a new parameter query + +### Breaking Changes + + - Model ExpressionV2 no longer has parameter operator + +## 7.1.0 (2024-05-08) + +### Features Added + + - Model AmazonRdsForSqlServerLinkedService has a new parameter application_intent + - Model AmazonRdsForSqlServerLinkedService has a new parameter authentication_type + - Model AmazonRdsForSqlServerLinkedService has a new parameter command_timeout + - Model AmazonRdsForSqlServerLinkedService has a new parameter connect_retry_count + - Model AmazonRdsForSqlServerLinkedService has a new parameter connect_retry_interval + - Model AmazonRdsForSqlServerLinkedService has a new parameter connect_timeout + - Model AmazonRdsForSqlServerLinkedService has a new parameter database + - Model AmazonRdsForSqlServerLinkedService has a new parameter encrypt + - Model AmazonRdsForSqlServerLinkedService has a new parameter failover_partner + - Model AmazonRdsForSqlServerLinkedService has a new parameter host_name_in_certificate + - Model AmazonRdsForSqlServerLinkedService has a new parameter integrated_security + - Model AmazonRdsForSqlServerLinkedService has a new parameter load_balance_timeout + - Model AmazonRdsForSqlServerLinkedService has a new parameter max_pool_size + - Model AmazonRdsForSqlServerLinkedService has a new parameter min_pool_size + - Model AmazonRdsForSqlServerLinkedService has a new parameter multi_subnet_failover + - Model AmazonRdsForSqlServerLinkedService has a new parameter multiple_active_result_sets + - Model AmazonRdsForSqlServerLinkedService has a new parameter packet_size + - Model AmazonRdsForSqlServerLinkedService has a new parameter pooling + - Model AmazonRdsForSqlServerLinkedService has a new parameter server + - Model AmazonRdsForSqlServerLinkedService has a new parameter trust_server_certificate + - Model AzureSqlDWLinkedService has a new parameter application_intent + - Model AzureSqlDWLinkedService has a new parameter authentication_type + - Model AzureSqlDWLinkedService has a new parameter command_timeout + - Model AzureSqlDWLinkedService has a new parameter connect_retry_count + - Model AzureSqlDWLinkedService has a new parameter connect_retry_interval + - Model AzureSqlDWLinkedService has a new parameter connect_timeout + - Model AzureSqlDWLinkedService has a new parameter database + - Model AzureSqlDWLinkedService has a new parameter encrypt + - Model AzureSqlDWLinkedService has a new parameter failover_partner + - Model AzureSqlDWLinkedService has a new parameter host_name_in_certificate + - Model AzureSqlDWLinkedService has a new parameter integrated_security + - Model AzureSqlDWLinkedService has a new parameter load_balance_timeout + - Model AzureSqlDWLinkedService has a new parameter max_pool_size + - Model AzureSqlDWLinkedService has a new parameter min_pool_size + - Model AzureSqlDWLinkedService has a new parameter multi_subnet_failover + - Model AzureSqlDWLinkedService has a new parameter multiple_active_result_sets + - Model AzureSqlDWLinkedService has a new parameter packet_size + - Model AzureSqlDWLinkedService has a new parameter pooling + - Model AzureSqlDWLinkedService has a new parameter server + - Model AzureSqlDWLinkedService has a new parameter service_principal_credential + - Model AzureSqlDWLinkedService has a new parameter service_principal_credential_type + - Model AzureSqlDWLinkedService has a new parameter trust_server_certificate + - Model AzureSqlDWLinkedService has a new parameter user_name + - Model AzureSqlDatabaseLinkedService has a new parameter application_intent + - Model AzureSqlDatabaseLinkedService has a new parameter authentication_type + - Model AzureSqlDatabaseLinkedService has a new parameter command_timeout + - Model AzureSqlDatabaseLinkedService has a new parameter connect_retry_count + - Model AzureSqlDatabaseLinkedService has a new parameter connect_retry_interval + - Model AzureSqlDatabaseLinkedService has a new parameter connect_timeout + - Model AzureSqlDatabaseLinkedService has a new parameter database + - Model AzureSqlDatabaseLinkedService has a new parameter encrypt + - Model AzureSqlDatabaseLinkedService has a new parameter failover_partner + - Model AzureSqlDatabaseLinkedService has a new parameter host_name_in_certificate + - Model AzureSqlDatabaseLinkedService has a new parameter integrated_security + - Model AzureSqlDatabaseLinkedService has a new parameter load_balance_timeout + - Model AzureSqlDatabaseLinkedService has a new parameter max_pool_size + - Model AzureSqlDatabaseLinkedService has a new parameter min_pool_size + - Model AzureSqlDatabaseLinkedService has a new parameter multi_subnet_failover + - Model AzureSqlDatabaseLinkedService has a new parameter multiple_active_result_sets + - Model AzureSqlDatabaseLinkedService has a new parameter packet_size + - Model AzureSqlDatabaseLinkedService has a new parameter pooling + - Model AzureSqlDatabaseLinkedService has a new parameter server + - Model AzureSqlDatabaseLinkedService has a new parameter service_principal_credential + - Model AzureSqlDatabaseLinkedService has a new parameter service_principal_credential_type + - Model AzureSqlDatabaseLinkedService has a new parameter trust_server_certificate + - Model AzureSqlDatabaseLinkedService has a new parameter user_name + - Model AzureSqlMILinkedService has a new parameter application_intent + - Model AzureSqlMILinkedService has a new parameter authentication_type + - Model AzureSqlMILinkedService has a new parameter command_timeout + - Model AzureSqlMILinkedService has a new parameter connect_retry_count + - Model AzureSqlMILinkedService has a new parameter connect_retry_interval + - Model AzureSqlMILinkedService has a new parameter connect_timeout + - Model AzureSqlMILinkedService has a new parameter database + - Model AzureSqlMILinkedService has a new parameter encrypt + - Model AzureSqlMILinkedService has a new parameter failover_partner + - Model AzureSqlMILinkedService has a new parameter host_name_in_certificate + - Model AzureSqlMILinkedService has a new parameter integrated_security + - Model AzureSqlMILinkedService has a new parameter load_balance_timeout + - Model AzureSqlMILinkedService has a new parameter max_pool_size + - Model AzureSqlMILinkedService has a new parameter min_pool_size + - Model AzureSqlMILinkedService has a new parameter multi_subnet_failover + - Model AzureSqlMILinkedService has a new parameter multiple_active_result_sets + - Model AzureSqlMILinkedService has a new parameter packet_size + - Model AzureSqlMILinkedService has a new parameter pooling + - Model AzureSqlMILinkedService has a new parameter server + - Model AzureSqlMILinkedService has a new parameter service_principal_credential + - Model AzureSqlMILinkedService has a new parameter service_principal_credential_type + - Model AzureSqlMILinkedService has a new parameter trust_server_certificate + - Model AzureSqlMILinkedService has a new parameter user_name + - Model ManagedIdentityCredential has a new parameter resource_id + - Model SqlServerLinkedService has a new parameter application_intent + - Model SqlServerLinkedService has a new parameter authentication_type + - Model SqlServerLinkedService has a new parameter command_timeout + - Model SqlServerLinkedService has a new parameter connect_retry_count + - Model SqlServerLinkedService has a new parameter connect_retry_interval + - Model SqlServerLinkedService has a new parameter connect_timeout + - Model SqlServerLinkedService has a new parameter database + - Model SqlServerLinkedService has a new parameter encrypt + - Model SqlServerLinkedService has a new parameter failover_partner + - Model SqlServerLinkedService has a new parameter host_name_in_certificate + - Model SqlServerLinkedService has a new parameter integrated_security + - Model SqlServerLinkedService has a new parameter load_balance_timeout + - Model SqlServerLinkedService has a new parameter max_pool_size + - Model SqlServerLinkedService has a new parameter min_pool_size + - Model SqlServerLinkedService has a new parameter multi_subnet_failover + - Model SqlServerLinkedService has a new parameter multiple_active_result_sets + - Model SqlServerLinkedService has a new parameter packet_size + - Model SqlServerLinkedService has a new parameter pooling + - Model SqlServerLinkedService has a new parameter server + - Model SqlServerLinkedService has a new parameter trust_server_certificate + +## 7.0.0 (2024-04-22) + +### Breaking Changes + + - Model ManagedIdentityCredential no longer has parameter resource_id + +## 6.1.0 (2024-03-18) + +### Features Added + + - Added model ExpressionV2 + - Added model ExpressionV2Type + - Added model GoogleBigQueryV2AuthenticationType + - Added model GoogleBigQueryV2LinkedService + - Added model GoogleBigQueryV2ObjectDataset + - Added model GoogleBigQueryV2Source + - Added model PostgreSqlV2LinkedService + - Added model PostgreSqlV2Source + - Added model PostgreSqlV2TableDataset + - Added model ServiceNowV2AuthenticationType + - Added model ServiceNowV2LinkedService + - Added model ServiceNowV2ObjectDataset + - Added model ServiceNowV2Source + +## 6.0.0 (2024-03-04) + +### Features Added + + - Model SalesforceServiceCloudV2LinkedService has a new parameter authentication_type + - Model SalesforceServiceCloudV2Source has a new parameter include_deleted_objects + - Model SalesforceV2LinkedService has a new parameter authentication_type + - Model SalesforceV2Source has a new parameter include_deleted_objects + +### Breaking Changes + + - Model SalesforceServiceCloudV2Source no longer has parameter read_behavior + - Model SalesforceV2Source no longer has parameter read_behavior + +## 5.0.0 (2024-01-26) + +### Features Added + + - Model AzureBlobFSWriteSettings has a new parameter metadata + - Model AzureBlobStorageWriteSettings has a new parameter metadata + - Model AzureDataLakeStoreWriteSettings has a new parameter metadata + - Model AzureFileStorageWriteSettings has a new parameter metadata + - Model FileServerWriteSettings has a new parameter metadata + - Model LakeHouseWriteSettings has a new parameter metadata + - Model MariaDBLinkedService has a new parameter database + - Model MariaDBLinkedService has a new parameter driver_version + - Model MariaDBLinkedService has a new parameter password + - Model MariaDBLinkedService has a new parameter port + - Model MariaDBLinkedService has a new parameter server + - Model MariaDBLinkedService has a new parameter username + - Model MySqlLinkedService has a new parameter database + - Model MySqlLinkedService has a new parameter driver_version + - Model MySqlLinkedService has a new parameter port + - Model MySqlLinkedService has a new parameter server + - Model MySqlLinkedService has a new parameter ssl_mode + - Model MySqlLinkedService has a new parameter use_system_trust_store + - Model MySqlLinkedService has a new parameter username + - Model SftpWriteSettings has a new parameter metadata + - Model StoreWriteSettings has a new parameter metadata + - Model WebActivity has a new parameter http_request_timeout + - Model WebActivity has a new parameter turn_off_async + +### Breaking Changes + + - Model MariaDBLinkedService no longer has parameter pwd + +## 4.0.0 (2023-11-20) + +### Features Added + + - Added operation group ChangeDataCaptureOperations + - Model Activity has a new parameter on_inactive_mark_as + - Model Activity has a new parameter state + - Model AmazonRdsForSqlServerSource has a new parameter isolation_level + - Model AppendVariableActivity has a new parameter on_inactive_mark_as + - Model AppendVariableActivity has a new parameter state + - Model AzureDataExplorerCommandActivity has a new parameter on_inactive_mark_as + - Model AzureDataExplorerCommandActivity has a new parameter state + - Model AzureFunctionActivity has a new parameter on_inactive_mark_as + - Model AzureFunctionActivity has a new parameter state + - Model AzureMLBatchExecutionActivity has a new parameter on_inactive_mark_as + - Model AzureMLBatchExecutionActivity has a new parameter state + - Model AzureMLExecutePipelineActivity has a new parameter on_inactive_mark_as + - Model AzureMLExecutePipelineActivity has a new parameter state + - Model AzureMLServiceLinkedService has a new parameter authentication + - Model AzureMLUpdateResourceActivity has a new parameter on_inactive_mark_as + - Model AzureMLUpdateResourceActivity has a new parameter state + - Model AzureSqlSource has a new parameter isolation_level + - Model ControlActivity has a new parameter on_inactive_mark_as + - Model ControlActivity has a new parameter state + - Model CopyActivity has a new parameter on_inactive_mark_as + - Model CopyActivity has a new parameter state + - Model CustomActivity has a new parameter on_inactive_mark_as + - Model CustomActivity has a new parameter state + - Model DataLakeAnalyticsUSQLActivity has a new parameter on_inactive_mark_as + - Model DataLakeAnalyticsUSQLActivity has a new parameter state + - Model DatabricksNotebookActivity has a new parameter on_inactive_mark_as + - Model DatabricksNotebookActivity has a new parameter state + - Model DatabricksSparkJarActivity has a new parameter on_inactive_mark_as + - Model DatabricksSparkJarActivity has a new parameter state + - Model DatabricksSparkPythonActivity has a new parameter on_inactive_mark_as + - Model DatabricksSparkPythonActivity has a new parameter state + - Model DeleteActivity has a new parameter on_inactive_mark_as + - Model DeleteActivity has a new parameter state + - Model ExecuteDataFlowActivity has a new parameter on_inactive_mark_as + - Model ExecuteDataFlowActivity has a new parameter state + - Model ExecutePipelineActivity has a new parameter on_inactive_mark_as + - Model ExecutePipelineActivity has a new parameter state + - Model ExecuteSSISPackageActivity has a new parameter on_inactive_mark_as + - Model ExecuteSSISPackageActivity has a new parameter state + - Model ExecuteWranglingDataflowActivity has a new parameter on_inactive_mark_as + - Model ExecuteWranglingDataflowActivity has a new parameter state + - Model ExecutionActivity has a new parameter on_inactive_mark_as + - Model ExecutionActivity has a new parameter state + - Model FailActivity has a new parameter on_inactive_mark_as + - Model FailActivity has a new parameter state + - Model FilterActivity has a new parameter on_inactive_mark_as + - Model FilterActivity has a new parameter state + - Model ForEachActivity has a new parameter on_inactive_mark_as + - Model ForEachActivity has a new parameter state + - Model GetMetadataActivity has a new parameter on_inactive_mark_as + - Model GetMetadataActivity has a new parameter state + - Model GoogleAdWordsLinkedService has a new parameter google_ads_api_version + - Model GoogleAdWordsLinkedService has a new parameter login_customer_id + - Model GoogleAdWordsLinkedService has a new parameter private_key + - Model GoogleAdWordsLinkedService has a new parameter support_legacy_data_types + - Model HDInsightHiveActivity has a new parameter on_inactive_mark_as + - Model HDInsightHiveActivity has a new parameter state + - Model HDInsightMapReduceActivity has a new parameter on_inactive_mark_as + - Model HDInsightMapReduceActivity has a new parameter state + - Model HDInsightPigActivity has a new parameter on_inactive_mark_as + - Model HDInsightPigActivity has a new parameter state + - Model HDInsightSparkActivity has a new parameter on_inactive_mark_as + - Model HDInsightSparkActivity has a new parameter state + - Model HDInsightStreamingActivity has a new parameter on_inactive_mark_as + - Model HDInsightStreamingActivity has a new parameter state + - Model HttpReadSettings has a new parameter additional_columns + - Model IfConditionActivity has a new parameter on_inactive_mark_as + - Model IfConditionActivity has a new parameter state + - Model IntegrationRuntimeDataFlowProperties has a new parameter custom_properties + - Model LookupActivity has a new parameter on_inactive_mark_as + - Model LookupActivity has a new parameter state + - Model MongoDbAtlasLinkedService has a new parameter driver_version + - Model ParquetSource has a new parameter format_settings + - Model PipelineExternalComputeScaleProperties has a new parameter number_of_external_nodes + - Model PipelineExternalComputeScaleProperties has a new parameter number_of_pipeline_nodes + - Model ScriptActivity has a new parameter on_inactive_mark_as + - Model ScriptActivity has a new parameter state + - Model SelfHostedIntegrationRuntime has a new parameter self_contained_interactive_authoring_enabled + - Model SelfHostedIntegrationRuntimeStatus has a new parameter self_contained_interactive_authoring_enabled + - Model SetVariableActivity has a new parameter on_inactive_mark_as + - Model SetVariableActivity has a new parameter policy + - Model SetVariableActivity has a new parameter set_system_variable + - Model SetVariableActivity has a new parameter state + - Model SqlDWSource has a new parameter isolation_level + - Model SqlMISource has a new parameter isolation_level + - Model SqlServerSource has a new parameter isolation_level + - Model SqlServerStoredProcedureActivity has a new parameter on_inactive_mark_as + - Model SqlServerStoredProcedureActivity has a new parameter state + - Model SwitchActivity has a new parameter on_inactive_mark_as + - Model SwitchActivity has a new parameter state + - Model SynapseNotebookActivity has a new parameter configuration_type + - Model SynapseNotebookActivity has a new parameter on_inactive_mark_as + - Model SynapseNotebookActivity has a new parameter spark_config + - Model SynapseNotebookActivity has a new parameter state + - Model SynapseNotebookActivity has a new parameter target_spark_configuration + - Model SynapseSparkJobDefinitionActivity has a new parameter on_inactive_mark_as + - Model SynapseSparkJobDefinitionActivity has a new parameter state + - Model UntilActivity has a new parameter on_inactive_mark_as + - Model UntilActivity has a new parameter state + - Model ValidationActivity has a new parameter on_inactive_mark_as + - Model ValidationActivity has a new parameter state + - Model WaitActivity has a new parameter on_inactive_mark_as + - Model WaitActivity has a new parameter state + - Model WebActivity has a new parameter on_inactive_mark_as + - Model WebActivity has a new parameter state + - Model WebHookActivity has a new parameter on_inactive_mark_as + - Model WebHookActivity has a new parameter policy + - Model WebHookActivity has a new parameter state + +### Breaking Changes + + - Model HttpReadSettings no longer has parameter enable_partition_discovery + - Model HttpReadSettings no longer has parameter partition_root_path + +## 3.1.0 (2023-03-20) + +### Features Added + + - Model AzureBlobFSLinkedService has a new parameter sas_token + - Model AzureBlobFSLinkedService has a new parameter sas_uri + +## 3.0.0 (2023-02-20) + +### Features Added + + - Added operation group CredentialOperationsOperations + - Model AzureBlobStorageLinkedService has a new parameter authentication_type + - Model AzureBlobStorageLinkedService has a new parameter container_uri + - Model IntegrationRuntimeComputeProperties has a new parameter copy_compute_scale_properties + - Model IntegrationRuntimeComputeProperties has a new parameter pipeline_external_compute_scale_properties + - Model SynapseSparkJobDefinitionActivity has a new parameter configuration_type + - Model SynapseSparkJobDefinitionActivity has a new parameter scan_folder + - Model SynapseSparkJobDefinitionActivity has a new parameter spark_config + - Model SynapseSparkJobDefinitionActivity has a new parameter target_spark_configuration + +### Breaking Changes + + - Parameter export_settings of model SnowflakeSource is now required + +## 2.10.0 (2022-11-22) + +### Features Added + + - Model ScriptActivity has a new parameter script_block_execution_timeout + +## 2.9.0 (2022-10-24) + +### Features Added + + - Model AzureSynapseArtifactsLinkedService has a new parameter workspace_resource_id + - Model FactoryGitHubConfiguration has a new parameter disable_publish + - Model FactoryRepoConfiguration has a new parameter disable_publish + - Model FactoryVSTSConfiguration has a new parameter disable_publish + - Model SynapseSparkJobDefinitionActivity has a new parameter files_v2 + - Model SynapseSparkJobDefinitionActivity has a new parameter python_code_reference + +## 2.8.1 (2022-10-17) + +### Other Changes + + - Changed type of stored_procedure_parameters to json-like object + +## 2.8.0 (2022-09-13) + +### Features Added + + - Added model AzureSynapseArtifactsLinkedService + - Added model BigDataPoolParametrizationReference + - Added model BigDataPoolReferenceType + - Added model DatasetReferenceType + - Added model ExpressionType + - Added model GoogleSheetsLinkedService + - Added model IntegrationRuntimeReferenceType + - Added model NotebookParameter + - Added model NotebookParameterType + - Added model NotebookReferenceType + - Added model PipelineReferenceType + - Added model SparkJobReferenceType + - Added model SynapseNotebookActivity + - Added model SynapseNotebookReference + - Added model SynapseSparkJobDefinitionActivity + - Added model SynapseSparkJobReference + - Added model Type + +## 2.7.0 (2022-06-15) + +**Features** + + - Model RestServiceLinkedService has a new parameter client_id + - Model RestServiceLinkedService has a new parameter client_secret + - Model RestServiceLinkedService has a new parameter resource + - Model RestServiceLinkedService has a new parameter scope + - Model RestServiceLinkedService has a new parameter token_endpoint + +## 2.6.0 (2022-05-27) + +**Features** + + - Added operation group GlobalParametersOperations + - Model DataFlowSink has a new parameter rejected_data_linked_service + - Model ExecuteDataFlowActivity has a new parameter source_staging_concurrency + - Model ExecuteDataFlowActivityTypeProperties has a new parameter source_staging_concurrency + - Model ExecutePowerQueryActivityTypeProperties has a new parameter source_staging_concurrency + - Model ExecuteWranglingDataflowActivity has a new parameter source_staging_concurrency + - Model Factory has a new parameter purview_configuration + - Model PowerQuerySink has a new parameter rejected_data_linked_service + +## 2.5.0 (2022-05-12) + +**Features** + + - Model PrivateLinkConnectionApprovalRequest has a new parameter private_endpoint + +## 2.4.0 (2022-04-15) + +**Features** + + - Model ExecutePipelineActivity has a new parameter policy + - Model WebActivity has a new parameter disable_cert_validation + +## 2.3.0 (2022-03-02) + +**Features** + + - Added model QuickbaseLinkedService + - Added model ScriptActivity + - Added model ScriptActivityLogDestination + - Added model ScriptActivityParameter + - Added model ScriptActivityParameterDirection + - Added model ScriptActivityParameterType + - Added model ScriptActivityScriptBlock + - Added model ScriptActivityTypePropertiesLogSettings + - Added model ScriptType + - Added model SmartsheetLinkedService + - Added model TeamDeskAuthenticationType + - Added model TeamDeskLinkedService + - Added model ZendeskAuthenticationType + - Added model ZendeskLinkedService + +## 2.2.1 (2022-02-14) + +**Fixes** + - Fix parameter public_network_access mapping type in Model FactoryUpdateParameters + +## 2.2.0 (2022-01-06) + +**Features** + + - Model AzureBlobFSLinkedService has a new parameter service_principal_credential + - Model AzureBlobFSLinkedService has a new parameter service_principal_credential_type + - Model AzureDatabricksDeltaLakeLinkedService has a new parameter credential + - Model AzureDatabricksDeltaLakeLinkedService has a new parameter workspace_resource_id + - Model CosmosDbLinkedService has a new parameter credential + - Model DynamicsLinkedService has a new parameter credential + - Model GoogleAdWordsLinkedService has a new parameter connection_properties + - Model LinkedIntegrationRuntimeRbacAuthorization has a new parameter credential + +## 2.1.0 (2021-11-20) + +**Features** + + - Model PowerQuerySink has a new parameter flowlet + - Model DatasetCompression has a new parameter level + - Model SftpReadSettings has a new parameter disable_chunking + - Model DataFlowSink has a new parameter flowlet + - Model PowerQuerySource has a new parameter flowlet + - Model Transformation has a new parameter linked_service + - Model Transformation has a new parameter dataset + - Model Transformation has a new parameter flowlet + - Model DataFlowDebugPackage has a new parameter data_flows + - Model FtpReadSettings has a new parameter disable_chunking + - Model MappingDataFlow has a new parameter script_lines + - Model DataFlowReference has a new parameter parameters + - Model DataFlowSource has a new parameter flowlet + +## 2.0.0 (2021-10-09) + +**Features** + + - Model HubspotSource has a new parameter disable_metrics_collection + - Model SquareSource has a new parameter disable_metrics_collection + - Model SqlDWSink has a new parameter upsert_settings + - Model SqlDWSink has a new parameter disable_metrics_collection + - Model SqlDWSink has a new parameter write_behavior + - Model SqlDWSink has a new parameter sql_writer_use_table_lock + - Model GoogleAdWordsSource has a new parameter disable_metrics_collection + - Model SparkSource has a new parameter disable_metrics_collection + - Model GoogleCloudStorageReadSettings has a new parameter disable_metrics_collection + - Model MongoDbV2Source has a new parameter disable_metrics_collection + - Model CopySource has a new parameter disable_metrics_collection + - Model BinarySink has a new parameter disable_metrics_collection + - Model FactoryGitHubConfiguration has a new parameter client_id + - Model FactoryGitHubConfiguration has a new parameter client_secret + - Model DrillSource has a new parameter disable_metrics_collection + - Model OracleCloudStorageReadSettings has a new parameter disable_metrics_collection + - Model AzureBlobFSSource has a new parameter disable_metrics_collection + - Model ShopifySource has a new parameter disable_metrics_collection + - Model AzureBlobStorageLinkedService has a new parameter credential + - Model StoreReadSettings has a new parameter disable_metrics_collection + - Model SalesforceMarketingCloudSource has a new parameter disable_metrics_collection + - Model AzureBlobFSReadSettings has a new parameter disable_metrics_collection + - Model HiveSource has a new parameter disable_metrics_collection + - Model VerticaSource has a new parameter disable_metrics_collection + - Model AzureDataExplorerSource has a new parameter disable_metrics_collection + - Model SapEccSource has a new parameter disable_metrics_collection + - Model GreenplumSource has a new parameter disable_metrics_collection + - Model HDInsightOnDemandLinkedService has a new parameter credential + - Model AzureDataExplorerSink has a new parameter disable_metrics_collection + - Model AzureBlobStorageReadSettings has a new parameter disable_metrics_collection + - Model OrcSink has a new parameter disable_metrics_collection + - Model HBaseSource has a new parameter disable_metrics_collection + - Model CopySink has a new parameter disable_metrics_collection + - Model SapTableSource has a new parameter disable_metrics_collection + - Model SqlMISink has a new parameter upsert_settings + - Model SqlMISink has a new parameter disable_metrics_collection + - Model SqlMISink has a new parameter write_behavior + - Model SqlMISink has a new parameter sql_writer_use_table_lock + - Model ZohoSource has a new parameter disable_metrics_collection + - Model RestSource has a new parameter disable_metrics_collection + - Model InformixSink has a new parameter disable_metrics_collection + - Model MicrosoftAccessSink has a new parameter disable_metrics_collection + - Model DelimitedTextSink has a new parameter disable_metrics_collection + - Model StoreWriteSettings has a new parameter disable_metrics_collection + - Model JiraSource has a new parameter disable_metrics_collection + - Model DocumentDbCollectionSource has a new parameter disable_metrics_collection + - Model SqlSink has a new parameter upsert_settings + - Model SqlSink has a new parameter disable_metrics_collection + - Model SqlSink has a new parameter write_behavior + - Model SqlSink has a new parameter sql_writer_use_table_lock + - Model AzureDatabricksLinkedService has a new parameter credential + - Model SnowflakeSink has a new parameter disable_metrics_collection + - Model AzureQueueSink has a new parameter disable_metrics_collection + - Model SalesforceServiceCloudSink has a new parameter disable_metrics_collection + - Model SapBwSource has a new parameter disable_metrics_collection + - Model DynamicsAXSource has a new parameter disable_metrics_collection + - Model SftpWriteSettings has a new parameter disable_metrics_collection + - Model WebActivityAuthentication has a new parameter credential + - Model CassandraSource has a new parameter disable_metrics_collection + - Model HdfsReadSettings has a new parameter disable_metrics_collection + - Model SqlMISource has a new parameter disable_metrics_collection + - Model RestServiceLinkedService has a new parameter credential + - Model Db2Source has a new parameter disable_metrics_collection + - Model SqlServerLinkedService has a new parameter always_encrypted_settings + - Model SalesforceSink has a new parameter disable_metrics_collection + - Model HdfsSource has a new parameter disable_metrics_collection + - Model ConcurSource has a new parameter disable_metrics_collection + - Model ParquetSink has a new parameter disable_metrics_collection + - Model AzureBlobFSLinkedService has a new parameter credential + - Model MongoDbAtlasSource has a new parameter disable_metrics_collection + - Model SapHanaSource has a new parameter disable_metrics_collection + - Model AzureDataLakeStoreWriteSettings has a new parameter disable_metrics_collection + - Model DocumentDbCollectionSink has a new parameter disable_metrics_collection + - Model GitHubAccessTokenRequest has a new parameter git_hub_client_secret + - Model AzureTableSink has a new parameter disable_metrics_collection + - Model HttpReadSettings has a new parameter disable_metrics_collection + - Model MongoDbSource has a new parameter disable_metrics_collection + - Model AzureDataLakeStoreSource has a new parameter disable_metrics_collection + - Model AzureSqlSource has a new parameter disable_metrics_collection + - Model OracleServiceCloudSource has a new parameter disable_metrics_collection + - Model AzureTableSource has a new parameter disable_metrics_collection + - Model AzureSqlMILinkedService has a new parameter always_encrypted_settings + - Model AzureSqlMILinkedService has a new parameter credential + - Model CouchbaseSource has a new parameter disable_metrics_collection + - Model AzureBatchLinkedService has a new parameter credential + - Model QuickBooksSource has a new parameter disable_metrics_collection + - Model CommonDataServiceForAppsSink has a new parameter disable_metrics_collection + - Model MicrosoftAccessSource has a new parameter disable_metrics_collection + - Model HttpSource has a new parameter disable_metrics_collection + - Model BlobSource has a new parameter disable_metrics_collection + - Model PipelineRunInvokedBy has a new parameter pipeline_name + - Model PipelineRunInvokedBy has a new parameter pipeline_run_id + - Model FactoryUpdateParameters has a new parameter public_network_access + - Model ODataSource has a new parameter disable_metrics_collection + - Model SapCloudForCustomerSource has a new parameter disable_metrics_collection + - Model PostgreSqlSource has a new parameter disable_metrics_collection + - Model AzureFileStorageReadSettings has a new parameter disable_metrics_collection + - Model TabularSource has a new parameter disable_metrics_collection + - Model AzurePostgreSqlSource has a new parameter disable_metrics_collection + - Model AzureBlobFSWriteSettings has a new parameter disable_metrics_collection + - Model AzureSearchIndexSink has a new parameter disable_metrics_collection + - Model IntegrationRuntimeVNetProperties has a new parameter subnet_id + - Model ManagedIntegrationRuntime has a new parameter customer_virtual_network + - Model WebSource has a new parameter disable_metrics_collection + - Model DelimitedTextSource has a new parameter disable_metrics_collection + - Model AmazonS3CompatibleReadSettings has a new parameter disable_metrics_collection + - Model GoogleBigQuerySource has a new parameter disable_metrics_collection + - Model OracleSource has a new parameter disable_metrics_collection + - Model AzureDataLakeStoreSink has a new parameter disable_metrics_collection + - Model DynamicsSink has a new parameter disable_metrics_collection + - Model SalesforceSource has a new parameter disable_metrics_collection + - Model SalesforceServiceCloudSource has a new parameter disable_metrics_collection + - Model AzureMLLinkedService has a new parameter authentication + - Model AzureFunctionLinkedService has a new parameter authentication + - Model AzureFunctionLinkedService has a new parameter resource_id + - Model AzureFunctionLinkedService has a new parameter credential + - Model CosmosDbSqlApiSource has a new parameter disable_metrics_collection + - Model XmlSource has a new parameter disable_metrics_collection + - Model XeroSource has a new parameter disable_metrics_collection + - Model ParquetSource has a new parameter disable_metrics_collection + - Model JsonSink has a new parameter disable_metrics_collection + - Model MySqlSource has a new parameter disable_metrics_collection + - Model AzureBlobStorageWriteSettings has a new parameter disable_metrics_collection + - Model Office365Source has a new parameter disable_metrics_collection + - Model AzureBlobFSSink has a new parameter disable_metrics_collection + - Model AzureBlobFSSink has a new parameter metadata + - Model BlobSink has a new parameter disable_metrics_collection + - Model BlobSink has a new parameter metadata + - Model MariaDBSource has a new parameter disable_metrics_collection + - Model OdbcSource has a new parameter disable_metrics_collection + - Model DynamicsSource has a new parameter disable_metrics_collection + - Model ExcelDataset has a new parameter sheet_index + - Model TeradataSource has a new parameter disable_metrics_collection + - Model InformixSource has a new parameter disable_metrics_collection + - Model CosmosDbMongoDbApiLinkedService has a new parameter is_server_version_above32 + - Model DynamicsCrmSink has a new parameter disable_metrics_collection + - Model AmazonS3ReadSettings has a new parameter disable_metrics_collection + - Model SqlDWSource has a new parameter disable_metrics_collection + - Model AzureSqlDWLinkedService has a new parameter credential + - Model FtpReadSettings has a new parameter disable_metrics_collection + - Model AzureDatabricksDeltaLakeSource has a new parameter disable_metrics_collection + - Model EloquaSource has a new parameter disable_metrics_collection + - Model AzureMySqlSink has a new parameter disable_metrics_collection + - Model CosmosDbMongoDbApiSource has a new parameter disable_metrics_collection + - Model AmazonMWSSource has a new parameter disable_metrics_collection + - Model MarketoSource has a new parameter disable_metrics_collection + - Model CommonDataServiceForAppsSource has a new parameter disable_metrics_collection + - Model AvroSource has a new parameter disable_metrics_collection + - Model AzureSqlSink has a new parameter upsert_settings + - Model AzureSqlSink has a new parameter disable_metrics_collection + - Model AzureSqlSink has a new parameter write_behavior + - Model AzureSqlSink has a new parameter sql_writer_use_table_lock + - Model AzureFileStorageWriteSettings has a new parameter disable_metrics_collection + - Model PrestoSource has a new parameter disable_metrics_collection + - Model BinarySource has a new parameter disable_metrics_collection + - Model AzureDataExplorerLinkedService has a new parameter credential + - Model ResponsysSource has a new parameter disable_metrics_collection + - Model ImpalaSource has a new parameter disable_metrics_collection + - Model FileServerReadSettings has a new parameter disable_metrics_collection + - Model SqlServerSink has a new parameter upsert_settings + - Model SqlServerSink has a new parameter disable_metrics_collection + - Model SqlServerSink has a new parameter write_behavior + - Model SqlServerSink has a new parameter sql_writer_use_table_lock + - Model SapOpenHubSource has a new parameter disable_metrics_collection + - Model AzurePostgreSqlSink has a new parameter disable_metrics_collection + - Model FileSystemSource has a new parameter disable_metrics_collection + - Model OracleSink has a new parameter disable_metrics_collection + - Model AzureSqlDatabaseLinkedService has a new parameter always_encrypted_settings + - Model AzureSqlDatabaseLinkedService has a new parameter credential + - Model PhoenixSource has a new parameter disable_metrics_collection + - Model AzureMariaDBSource has a new parameter disable_metrics_collection + - Model OdbcSink has a new parameter disable_metrics_collection + - Model SharePointOnlineListSource has a new parameter disable_metrics_collection + - Model FileSystemSink has a new parameter disable_metrics_collection + - Model RestSink has a new parameter disable_metrics_collection + - Model DynamicsCrmSource has a new parameter disable_metrics_collection + - Model AzureDataLakeStoreReadSettings has a new parameter disable_metrics_collection + - Model OrcSource has a new parameter disable_metrics_collection + - Model FileServerWriteSettings has a new parameter disable_metrics_collection + - Model AvroSink has a new parameter disable_metrics_collection + - Model CosmosDbSqlApiSink has a new parameter disable_metrics_collection + - Model SapCloudForCustomerSink has a new parameter disable_metrics_collection + - Model AmazonRedshiftSource has a new parameter disable_metrics_collection + - Model SybaseSource has a new parameter disable_metrics_collection + - Model PaypalSource has a new parameter disable_metrics_collection + - Model AzureKeyVaultLinkedService has a new parameter credential + - Model SqlServerSource has a new parameter disable_metrics_collection + - Model IntegrationRuntimeSsisProperties has a new parameter credential + - Model SftpReadSettings has a new parameter disable_metrics_collection + - Model SnowflakeSource has a new parameter disable_metrics_collection + - Model RelationalSource has a new parameter disable_metrics_collection + - Model IntegrationRuntimeDataFlowProperties has a new parameter cleanup + - Model ServiceNowSource has a new parameter disable_metrics_collection + - Model MagentoSource has a new parameter disable_metrics_collection + - Model NetezzaSource has a new parameter disable_metrics_collection + - Model AzureDatabricksDeltaLakeSink has a new parameter disable_metrics_collection + - Model AzureDataLakeStoreLinkedService has a new parameter credential + - Model AzureMySqlSource has a new parameter disable_metrics_collection + - Model SqlSource has a new parameter disable_metrics_collection + - Model CosmosDbMongoDbApiSink has a new parameter disable_metrics_collection + - Model JsonSource has a new parameter disable_metrics_collection + - Model ExcelSource has a new parameter disable_metrics_collection + - Added operation IntegrationRuntimesOperations.list_outbound_network_dependencies_endpoints + - Added operation group PrivateLinkResourcesOperations + - Added operation group PrivateEndpointConnectionOperations + - Added operation group PrivateEndPointConnectionsOperations + +**Breaking changes** + + - Parameter type of model MappingDataFlow is now required + - Parameter type of model DataFlow is now required + +## 1.1.0 (2021-03-12) + +**Features** + + - Model PipelineResource has a new parameter policy + - Model ManagedIntegrationRuntime has a new parameter managed_virtual_network + - Model CustomActivity has a new parameter auto_user_specification + - Model HttpLinkedService has a new parameter auth_headers + - Model AzureDatabricksLinkedService has a new parameter workspace_resource_id + - Model AzureDatabricksLinkedService has a new parameter authentication + - Model AzureDatabricksLinkedService has a new parameter policy_id + - Model RestServiceLinkedService has a new parameter auth_headers + - Model AzureBlobStorageLinkedService has a new parameter account_kind + - Model AzureMLExecutePipelineActivity has a new parameter version + - Model AzureMLExecutePipelineActivity has a new parameter ml_pipeline_endpoint_id + - Model AzureMLExecutePipelineActivity has a new parameter data_path_assignments + - Model IntegrationRuntimeSsisCatalogInfo has a new parameter dual_standby_pair_name + - Model WebActivityAuthentication has a new parameter user_tenant + - Model ODataLinkedService has a new parameter auth_headers + - Model CosmosDbLinkedService has a new parameter connection_mode + - Model CosmosDbLinkedService has a new parameter service_principal_credential_type + - Model CosmosDbLinkedService has a new parameter service_principal_id + - Model CosmosDbLinkedService has a new parameter tenant + - Model CosmosDbLinkedService has a new parameter service_principal_credential + - Model CosmosDbLinkedService has a new parameter azure_cloud_type + +## 1.0.0 (2020-12-17) + +**Features** + + - Model Factory has a new parameter encryption + - Model FactoryIdentity has a new parameter user_assigned_identities + - Model ExecuteDataFlowActivity has a new parameter trace_level + - Model ExecuteDataFlowActivity has a new parameter continue_on_error + - Model ExecuteDataFlowActivity has a new parameter run_concurrently + +## 1.0.0b1 (2020-11-06) + +This is beta preview version. + +This version uses a next-generation code generator that introduces important breaking changes, but also important new features (like unified authentication and async programming). + +**General breaking changes** + +- Credential system has been completly revamped: + + - `azure.common.credentials` or `msrestazure.azure_active_directory` instances are no longer supported, use the `azure-identity` classes instead: https://pypi.org/project/azure-identity/ + - `credentials` parameter has been renamed `credential` + +- The `config` attribute no longer exists on a client, configuration should be passed as kwarg. Example: `MyClient(credential, subscription_id, enable_logging=True)`. For a complete set of + supported options, see the [parameters accept in init documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) +- You can't import a `version` module anymore, use `__version__` instead +- Operations that used to return a `msrest.polling.LROPoller` now returns a `azure.core.polling.LROPoller` and are prefixed with `begin_`. +- Exceptions tree have been simplified and most exceptions are now `azure.core.exceptions.HttpResponseError` (`CloudError` has been removed). +- Most of the operation kwarg have changed. Some of the most noticeable: + + - `raw` has been removed. Equivalent feature can be found using `cls`, a callback that will give access to internal HTTP response for advanced user + - For a complete set of + supported options, see the [parameters accept in Request documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) + +**General new features** + +- Type annotations support using `typing`. SDKs are mypy ready. +- This client has now stable and official support for async. Check the `aio` namespace of your package to find the async client. +- This client now support natively tracing library like OpenCensus or OpenTelemetry. See this [tracing quickstart](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core-tracing-opentelemetry) for an overview. + +## 0.14.0 (2020-10-23) + +**Features** + + - Model OrcSink has a new parameter format_settings + - Model DelimitedTextWriteSettings has a new parameter max_rows_per_file + - Model DelimitedTextWriteSettings has a new parameter file_name_prefix + - Model RestSink has a new parameter http_compression_type + - Model ParquetSink has a new parameter format_settings + - Model AvroWriteSettings has a new parameter max_rows_per_file + - Model AvroWriteSettings has a new parameter file_name_prefix + +**Breaking changes** + + - Model RestSink no longer has parameter wrap_request_json_in_an_object + - Model RestSink no longer has parameter compression_type + + +## 0.13.0 (2020-08-25) + +**Features** + + - Model LogStorageSettings has a new parameter enable_reliable_logging + - Model LogStorageSettings has a new parameter log_level + - Model HdfsReadSettings has a new parameter delete_files_after_completion + - Model XmlReadSettings has a new parameter detect_data_type + - Model XmlReadSettings has a new parameter namespaces + - Model CosmosDbSqlApiSource has a new parameter detect_datetime + - Added operation ExposureControlOperations.query_feature_values_by_factory + - Added operation group ManagedPrivateEndpointsOperations + - Added operation group ManagedVirtualNetworksOperations + +## 0.12.0 (2020-07-29) + +**Features** + + - Model SalesforceMarketingCloudLinkedService has a new parameter connection_properties + - Model ODataLinkedService has a new parameter azure_cloud_type + - Model SapOpenHubSource has a new parameter custom_rfc_read_table_function_module + - Model SapOpenHubSource has a new parameter sap_data_column_delimiter + - Model AzureBlobStorageLinkedService has a new parameter azure_cloud_type + - Model XeroLinkedService has a new parameter connection_properties + - Model SapTableSource has a new parameter sap_data_column_delimiter + - Model AzureSqlDatabaseLinkedService has a new parameter azure_cloud_type + - Model SapOpenHubLinkedService has a new parameter logon_group + - Model SapOpenHubLinkedService has a new parameter system_id + - Model SapOpenHubLinkedService has a new parameter message_server_service + - Model SapOpenHubLinkedService has a new parameter message_server + - Model AzureSqlDWLinkedService has a new parameter azure_cloud_type + - Model AzureDataLakeStoreLinkedService has a new parameter azure_cloud_type + - Model QuickBooksLinkedService has a new parameter connection_properties + - Model RestServiceLinkedService has a new parameter azure_cloud_type + - Model AzureSqlMILinkedService has a new parameter azure_cloud_type + - Model SquareLinkedService has a new parameter connection_properties + - Model AzureBlobFSLinkedService has a new parameter azure_cloud_type + - Model AzureFileStorageLinkedService has a new parameter snapshot + - Model AzureDatabricksLinkedService has a new parameter new_cluster_log_destination + - Model ZohoLinkedService has a new parameter connection_properties + - Added operation TriggerRunsOperations.cancel + +## 0.11.0 (2020-06-16) + +**Features** + + - Model AzureBlobStorageReadSettings has a new parameter partition_root_path + - Model AzureBlobStorageReadSettings has a new parameter delete_files_after_completion + - Model SqlSource has a new parameter partition_option + - Model SqlSource has a new parameter partition_settings + - Model JsonSource has a new parameter format_settings + - Model DynamicsAXSource has a new parameter http_request_timeout + - Model AzureFileStorageReadSettings has a new parameter partition_root_path + - Model AzureFileStorageReadSettings has a new parameter prefix + - Model AzureFileStorageReadSettings has a new parameter delete_files_after_completion + - Model AzureSqlSource has a new parameter partition_option + - Model AzureSqlSource has a new parameter partition_settings + - Model GetMetadataActivity has a new parameter format_settings + - Model GetMetadataActivity has a new parameter store_settings + - Model SapCloudForCustomerSink has a new parameter http_request_timeout + - Model DataFlowSource has a new parameter schema_linked_service + - Model DataFlowSource has a new parameter linked_service + - Model SftpReadSettings has a new parameter enable_partition_discovery + - Model SftpReadSettings has a new parameter partition_root_path + - Model SftpReadSettings has a new parameter delete_files_after_completion + - Model FtpReadSettings has a new parameter enable_partition_discovery + - Model FtpReadSettings has a new parameter partition_root_path + - Model FtpReadSettings has a new parameter delete_files_after_completion + - Model IntegrationRuntimeSsisProperties has a new parameter package_stores + - Model SSISPackageLocation has a new parameter configuration_access_credential + - Model SqlMISource has a new parameter partition_option + - Model SqlMISource has a new parameter partition_settings + - Model SapCloudForCustomerSource has a new parameter http_request_timeout + - Model AzureDataLakeStoreReadSettings has a new parameter delete_files_after_completion + - Model AzureDataLakeStoreReadSettings has a new parameter list_before + - Model AzureDataLakeStoreReadSettings has a new parameter partition_root_path + - Model AzureDataLakeStoreReadSettings has a new parameter list_after + - Model AzureBlobFSReadSettings has a new parameter partition_root_path + - Model AzureBlobFSReadSettings has a new parameter delete_files_after_completion + - Model SapEccSource has a new parameter http_request_timeout + - Model DeleteActivity has a new parameter store_settings + - Model FileServerReadSettings has a new parameter delete_files_after_completion + - Model FileServerReadSettings has a new parameter partition_root_path + - Model FileServerReadSettings has a new parameter file_filter + - Model HttpReadSettings has a new parameter enable_partition_discovery + - Model HttpReadSettings has a new parameter partition_root_path + - Model AzureFileStorageLinkedService has a new parameter connection_string + - Model AzureFileStorageLinkedService has a new parameter file_share + - Model AzureFileStorageLinkedService has a new parameter account_key + - Model AzureFileStorageLinkedService has a new parameter sas_uri + - Model AzureFileStorageLinkedService has a new parameter sas_token + - Model AmazonS3ReadSettings has a new parameter partition_root_path + - Model AmazonS3ReadSettings has a new parameter delete_files_after_completion + - Model GoogleCloudStorageReadSettings has a new parameter partition_root_path + - Model GoogleCloudStorageReadSettings has a new parameter delete_files_after_completion + - Model ODataSource has a new parameter http_request_timeout + - Model SqlDWSource has a new parameter partition_option + - Model SqlDWSource has a new parameter partition_settings + - Model BinarySource has a new parameter format_settings + - Model DataFlowSink has a new parameter schema_linked_service + - Model DataFlowSink has a new parameter linked_service + - Model DelimitedTextReadSettings has a new parameter compression_properties + - Model Factory has a new parameter global_parameters + - Model SqlServerSource has a new parameter partition_option + - Model SqlServerSource has a new parameter partition_settings + - Model HdfsReadSettings has a new parameter partition_root_path + +## 0.10.0 (2020-03-10) + +**Features** + +- Model SqlSource has a new parameter isolation_level +- Model SqlSource has a new parameter additional_columns +- Model SapHanaSource has a new parameter additional_columns +- Model SalesforceMarketingCloudSource has a new parameter additional_columns +- Model Db2Source has a new parameter additional_columns +- Model DynamicsAXSource has a new parameter additional_columns +- Model MicrosoftAccessSource has a new parameter additional_columns +- Model AzureMySqlSource has a new parameter additional_columns +- Model CouchbaseSource has a new parameter additional_columns +- Model CassandraSource has a new parameter additional_columns +- Model NetezzaSource has a new parameter additional_columns +- Model CopyActivity has a new parameter validate_data_consistency +- Model CopyActivity has a new parameter log_storage_settings +- Model CopyActivity has a new parameter skip_error_file +- Model JsonSource has a new parameter additional_columns +- Model AmazonRedshiftSource has a new parameter additional_columns +- Model SapEccSource has a new parameter additional_columns +- Model TabularSource has a new parameter additional_columns +- Model AvroSource has a new parameter additional_columns +- Model DocumentDbCollectionSource has a new parameter additional_columns +- Model SalesforceLinkedService has a new parameter api_version +- Model SybaseSource has a new parameter additional_columns +- Model AzureFileStorageReadSettings has a new parameter file_list_path +- Model SapBwSource has a new parameter additional_columns +- Model MariaDBSource has a new parameter additional_columns +- Model CosmosDbMongoDbApiSource has a new parameter additional_columns +- Model SqlDWSource has a new parameter additional_columns +- Model ConcurSource has a new parameter additional_columns +- Model MongoDbSource has a new parameter additional_columns +- Model AzureSqlSource has a new parameter additional_columns +- Model DynamicsCrmSource has a new parameter additional_columns +- Model JiraSource has a new parameter additional_columns +- Model SftpReadSettings has a new parameter file_list_path +- Model HiveSource has a new parameter additional_columns +- Model OdbcSource has a new parameter additional_columns +- Model SalesforceServiceCloudLinkedService has a new parameter api_version +- Model AzureBlobStorageReadSettings has a new parameter file_list_path +- Model AzureTableSource has a new parameter additional_columns +- Model PaypalSource has a new parameter additional_columns +- Model RelationalSource has a new parameter additional_columns +- Model HBaseSource has a new parameter additional_columns +- Model GoogleCloudStorageReadSettings has a new parameter file_list_path +- Model HubspotSource has a new parameter additional_columns +- Model ResponsysSource has a new parameter additional_columns +- Model CommonDataServiceForAppsSource has a new parameter additional_columns +- Model WebSource has a new parameter additional_columns +- Model Db2LinkedService has a new parameter connection_string +- Model QuickBooksSource has a new parameter additional_columns +- Model FtpReadSettings has a new parameter file_list_path +- Model AzureBlobFSReadSettings has a new parameter file_list_path +- Model SparkSource has a new parameter additional_columns +- Model MagentoSource has a new parameter additional_columns +- Model DrillSource has a new parameter additional_columns +- Model AzureMariaDBSource has a new parameter additional_columns +- Model FileServerReadSettings has a new parameter file_list_path +- Model TeradataSource has a new parameter additional_columns +- Model MarketoSource has a new parameter additional_columns +- Model CosmosDbSqlApiSource has a new parameter additional_columns +- Model AzureDataLakeStoreReadSettings has a new parameter file_list_path +- Model OracleSource has a new parameter additional_columns +- Model VerticaSource has a new parameter additional_columns +- Model PhoenixSource has a new parameter additional_columns +- Model ParquetSource has a new parameter additional_columns +- Model GoogleAdWordsSource has a new parameter additional_columns +- Model SapTableSource has a new parameter additional_columns +- Model FileSystemSource has a new parameter additional_columns +- Model AzureDataLakeStoreWriteSettings has a new parameter expiry_date_time +- Model PrestoSource has a new parameter additional_columns +- Model MongoDbV2Source has a new parameter additional_columns +- Model AzurePostgreSqlSource has a new parameter additional_columns +- Model PostgreSqlSource has a new parameter additional_columns +- Model SquareSource has a new parameter additional_columns +- Model DelimitedTextSource has a new parameter additional_columns +- Model SftpWriteSettings has a new parameter use_temp_file_rename +- Model ZohoSource has a new parameter additional_columns +- Model OracleServiceCloudSource has a new parameter additional_columns +- Model HdfsReadSettings has a new parameter file_list_path +- Model DynamicsSource has a new parameter additional_columns +- Model GoogleBigQuerySource has a new parameter additional_columns +- Model ShopifySource has a new parameter additional_columns +- Model OrcSource has a new parameter additional_columns +- Model AmazonS3ReadSettings has a new parameter file_list_path +- Model EloquaSource has a new parameter additional_columns +- Model ServiceNowSource has a new parameter additional_columns +- Model SalesforceSource has a new parameter additional_columns +- Model ImpalaSource has a new parameter additional_columns +- Model RestSource has a new parameter additional_columns +- Model SqlMISource has a new parameter additional_columns +- Model SapCloudForCustomerSource has a new parameter additional_columns +- Model GreenplumSource has a new parameter additional_columns +- Model SqlServerSource has a new parameter additional_columns +- Model AzureDataExplorerSource has a new parameter additional_columns +- Model SalesforceServiceCloudSource has a new parameter additional_columns +- Model AmazonMWSSource has a new parameter additional_columns +- Model ODataSource has a new parameter additional_columns +- Model SapOpenHubSource has a new parameter additional_columns +- Model InformixSource has a new parameter additional_columns +- Model MySqlSource has a new parameter additional_columns +- Model XeroSource has a new parameter additional_columns +- Added operation TriggersOperations.query_by_factory + +**Breaking changes** + +- Parameter parent_trigger of model RerunTumblingWindowTrigger is now required +- Operation PipelinesOperations.create_run has a new signature +- Model RerunTumblingWindowTrigger no longer has parameter max_concurrency +- Model RerunTumblingWindowTrigger has a new required parameter rerun_concurrency +- Removed operation group RerunTriggersOperations + +## 0.9.0 (2020-02-07) + +**Features** + +- Model BlobEventsTrigger has a new parameter ignore_empty_blobs +- Model MongoDbV2Source has a new parameter query_timeout +- Model DynamicsCrmLinkedService has a new parameter service_principal_credential_type +- Model DynamicsCrmLinkedService has a new parameter service_principal_id +- Model DynamicsCrmLinkedService has a new parameter service_principal_credential +- Model Office365Source has a new parameter output_columns +- Model DynamicsLinkedService has a new parameter service_principal_credential_type +- Model DynamicsLinkedService has a new parameter service_principal_id +- Model DynamicsLinkedService has a new parameter service_principal_credential +- Model AzureMySqlTableDataset has a new parameter table +- Model HubspotSource has a new parameter query_timeout +- Model TriggerRun has a new parameter dependency_status +- Model TriggerRun has a new parameter run_dimension +- Model DynamicsAXSource has a new parameter query_timeout +- Model DocumentDbCollectionSource has a new parameter query_timeout +- Model AzureSqlSource has a new parameter query_timeout +- Model SapTableSource has a new parameter query_timeout +- Model SybaseSource has a new parameter query_timeout +- Model CommonDataServiceForAppsLinkedService has a new parameter service_principal_credential_type +- Model CommonDataServiceForAppsLinkedService has a new parameter service_principal_id +- Model CommonDataServiceForAppsLinkedService has a new parameter service_principal_credential +- Model HiveSource has a new parameter query_timeout +- Model SapEccSource has a new parameter query_timeout +- Model MySqlSource has a new parameter query_timeout +- Model AzureMySqlSource has a new parameter query_timeout +- Model SparkSource has a new parameter query_timeout +- Model TeradataSource has a new parameter query_timeout +- Model Db2Source has a new parameter query_timeout +- Model AzurePostgreSqlSource has a new parameter query_timeout +- Model DynamicsCrmSink has a new parameter alternate_key_name +- Model MariaDBSource has a new parameter query_timeout +- Model IntegrationRuntimeVNetProperties has a new parameter public_ips +- Model CommonDataServiceForAppsSink has a new parameter alternate_key_name +- Model EloquaSource has a new parameter query_timeout +- Model VerticaSource has a new parameter query_timeout +- Model PhoenixSource has a new parameter query_timeout +- Model PaypalSource has a new parameter query_timeout +- Model PipelineResource has a new parameter run_dimensions +- Model WebActivity has a new parameter connect_via +- Model NetezzaSource has a new parameter query_timeout +- Model XeroSource has a new parameter query_timeout +- Model DrillSource has a new parameter query_timeout +- Model GoogleAdWordsSource has a new parameter query_timeout +- Model ImpalaSource has a new parameter query_timeout +- Model SqlDWSink has a new parameter allow_copy_command +- Model SqlDWSink has a new parameter copy_command_settings +- Model CouchbaseSource has a new parameter query_timeout +- Model DynamicsSink has a new parameter alternate_key_name +- Model Db2LinkedService has a new parameter package_collection +- Model Db2LinkedService has a new parameter certificate_common_name +- Model WebHookActivity has a new parameter report_status_on_call_back +- Model HBaseSource has a new parameter query_timeout +- Model PostgreSqlSource has a new parameter query_timeout +- Model IntegrationRuntimeComputeProperties has a new parameter data_flow_properties +- Model CosmosDbMongoDbApiSource has a new parameter query_timeout +- Model JiraSource has a new parameter query_timeout +- Model AmazonRedshiftSource has a new parameter query_timeout +- Model SqlServerSource has a new parameter query_timeout +- Model SapOpenHubSource has a new parameter query_timeout +- Model MagentoSource has a new parameter query_timeout +- Model CassandraSource has a new parameter query_timeout +- Model SquareSource has a new parameter query_timeout +- Model IntegrationRuntimeSsisProperties has a new parameter express_custom_setup_properties +- Model ShopifySource has a new parameter query_timeout +- Model ResponsysSource has a new parameter query_timeout +- Model MarketoSource has a new parameter query_timeout +- Model SalesforceSource has a new parameter query_timeout +- Model AzureDatabricksLinkedService has a new parameter instance_pool_id +- Model SqlDWSource has a new parameter query_timeout +- Model SalesforceMarketingCloudSource has a new parameter query_timeout +- Model SapCloudForCustomerSource has a new parameter query_timeout +- Model SSISPackageLocation has a new parameter package_last_modified_date +- Model SSISPackageLocation has a new parameter package_content +- Model SSISPackageLocation has a new parameter package_name +- Model SSISPackageLocation has a new parameter child_packages +- Model SapHanaSource has a new parameter partition_settings +- Model SapHanaSource has a new parameter partition_option +- Model SapHanaSource has a new parameter query_timeout +- Model SqlSource has a new parameter query_timeout +- Model PrestoSource has a new parameter query_timeout +- Model ConcurSource has a new parameter query_timeout +- Model GoogleBigQuerySource has a new parameter query_timeout +- Model ServiceNowSource has a new parameter query_timeout +- Model InformixSource has a new parameter query_timeout +- Model AzureTableSource has a new parameter query_timeout +- Model ZohoSource has a new parameter query_timeout +- Model QuickBooksSource has a new parameter query_timeout +- Model OdbcSource has a new parameter query_timeout +- Model AmazonMWSSource has a new parameter query_timeout +- Model OracleServiceCloudSource has a new parameter query_timeout +- Model SqlMISource has a new parameter query_timeout +- Model PipelineRun has a new parameter run_dimensions +- Model SapBwSource has a new parameter query_timeout +- Model GreenplumSource has a new parameter query_timeout +- Model CosmosDbLinkedService has a new parameter database +- Model CosmosDbLinkedService has a new parameter account_endpoint +- Model AzureMariaDBSource has a new parameter query_timeout +- Model AzureBlobStorageReadSettings has a new parameter prefix +- Added operation group DataFlowDebugSessionOperations +- Added operation group DataFlowsOperations + +**General Breaking changes** + +This version uses a next-generation code generator that might introduce breaking changes for some imports. In summary, some modules were incorrectly visible/importable and have been renamed. This fixed several issues caused by usage of classes that were not supposed to be used in the first place. + +- DataFactoryManagementClient cannot be imported from azure.mgmt.datafactory.datafactory_management_client anymore (import from azure.mgmt.datafactory works like before) +- DataFactoryManagementClientConfiguration import has been moved from azure.mgmt.datafactory.datafactory_management_client to azure.mgmt.datafactory +- A model MyClass from a "models" sub-module cannot be imported anymore using azure.mgmt.datafactory.models.my_class (import from azure.mgmt.datafactory.models works like before) +- An operation class MyClassOperations from an operations sub-module cannot be imported anymore using azure.mgmt.datafactory.operations.my_class_operations (import from azure.mgmt.datafactory.operations works like before) + +Last but not least, HTTP connection pooling is now enabled by default. You should always use a client as a context manager, or call close(), or use no more than one client per process. + +## 0.8.0 (2019-08-30) + +**Features** + + - Model HubspotSource has a new parameter max_concurrent_connections + - Model CouchbaseSource has a new parameter + max_concurrent_connections + - Model HttpSource has a new parameter max_concurrent_connections + - Model AzureDataLakeStoreSource has a new parameter + max_concurrent_connections + - Model ConcurSource has a new parameter max_concurrent_connections + - Model FileShareDataset has a new parameter modified_datetime_start + - Model FileShareDataset has a new parameter modified_datetime_end + - Model SalesforceSource has a new parameter + max_concurrent_connections + - Model NetezzaSource has a new parameter partition_option + - Model NetezzaSource has a new parameter max_concurrent_connections + - Model NetezzaSource has a new parameter partition_settings + - Model AzureMySqlSource has a new parameter + max_concurrent_connections + - Model OdbcSink has a new parameter max_concurrent_connections + - Model ImpalaObjectDataset has a new parameter + impala_object_dataset_schema + - Model ImpalaObjectDataset has a new parameter table + - Model AzureSqlDWTableDataset has a new parameter + azure_sql_dw_table_dataset_schema + - Model AzureSqlDWTableDataset has a new parameter table + - Model SapEccSource has a new parameter max_concurrent_connections + - Model CopySource has a new parameter max_concurrent_connections + - Model ServiceNowSource has a new parameter + max_concurrent_connections + - Model Trigger has a new parameter annotations + - Model CassandraSource has a new parameter + max_concurrent_connections + - Model AzureQueueSink has a new parameter + max_concurrent_connections + - Model DrillSource has a new parameter max_concurrent_connections + - Model DocumentDbCollectionSink has a new parameter write_behavior + - Model DocumentDbCollectionSink has a new parameter + max_concurrent_connections + - Model SapHanaLinkedService has a new parameter connection_string + - Model SalesforceSink has a new parameter + max_concurrent_connections + - Model HiveObjectDataset has a new parameter + hive_object_dataset_schema + - Model HiveObjectDataset has a new parameter table + - Model GoogleBigQueryObjectDataset has a new parameter dataset + - Model GoogleBigQueryObjectDataset has a new parameter table + - Model FileSystemSource has a new parameter + max_concurrent_connections + - Model SqlSink has a new parameter + stored_procedure_table_type_parameter_name + - Model SqlSink has a new parameter max_concurrent_connections + - Model CopySink has a new parameter max_concurrent_connections + - Model SapCloudForCustomerSource has a new parameter + max_concurrent_connections + - Model CopyActivity has a new parameter preserve_rules + - Model CopyActivity has a new parameter preserve + - Model AmazonMWSSource has a new parameter + max_concurrent_connections + - Model SqlDWSink has a new parameter max_concurrent_connections + - Model MagentoSource has a new parameter max_concurrent_connections + - Model BlobEventsTrigger has a new parameter annotations + - Model DynamicsSink has a new parameter max_concurrent_connections + - Model AzurePostgreSqlTableDataset has a new parameter table + - Model AzurePostgreSqlTableDataset has a new parameter + azure_postgre_sql_table_dataset_schema + - Model SqlServerTableDataset has a new parameter + sql_server_table_dataset_schema + - Model SqlServerTableDataset has a new parameter table + - Model DocumentDbCollectionSource has a new parameter + max_concurrent_connections + - Model AzurePostgreSqlSource has a new parameter + max_concurrent_connections + - Model BlobSource has a new parameter max_concurrent_connections + - Model VerticaTableDataset has a new parameter + vertica_table_dataset_schema + - Model VerticaTableDataset has a new parameter table + - Model PhoenixObjectDataset has a new parameter + phoenix_object_dataset_schema + - Model PhoenixObjectDataset has a new parameter table + - Model AzureSearchIndexSink has a new parameter + max_concurrent_connections + - Model MarketoSource has a new parameter max_concurrent_connections + - Model DynamicsSource has a new parameter + max_concurrent_connections + - Model SparkObjectDataset has a new parameter + spark_object_dataset_schema + - Model SparkObjectDataset has a new parameter table + - Model XeroSource has a new parameter max_concurrent_connections + - Model AmazonRedshiftSource has a new parameter + max_concurrent_connections + - Model CustomActivity has a new parameter retention_time_in_days + - Model WebSource has a new parameter max_concurrent_connections + - Model GreenplumTableDataset has a new parameter + greenplum_table_dataset_schema + - Model GreenplumTableDataset has a new parameter table + - Model SalesforceMarketingCloudSource has a new parameter + max_concurrent_connections + - Model GoogleBigQuerySource has a new parameter + max_concurrent_connections + - Model JiraSource has a new parameter max_concurrent_connections + - Model MongoDbSource has a new parameter max_concurrent_connections + - Model DrillTableDataset has a new parameter + drill_table_dataset_schema + - Model DrillTableDataset has a new parameter table + - Model ExecuteSSISPackageActivity has a new parameter log_location + - Model SparkSource has a new parameter max_concurrent_connections + - Model AzureTableSink has a new parameter + max_concurrent_connections + - Model AzureDataLakeStoreSink has a new parameter + enable_adls_single_file_parallel + - Model AzureDataLakeStoreSink has a new parameter + max_concurrent_connections + - Model PrestoSource has a new parameter max_concurrent_connections + - Model RelationalSource has a new parameter + max_concurrent_connections + - Model TumblingWindowTrigger has a new parameter annotations + - Model ImpalaSource has a new parameter max_concurrent_connections + - Model ScheduleTrigger has a new parameter annotations + - Model QuickBooksSource has a new parameter + max_concurrent_connections + - Model PrestoObjectDataset has a new parameter + presto_object_dataset_schema + - Model PrestoObjectDataset has a new parameter table + - Model OracleSink has a new parameter max_concurrent_connections + - Model HdfsSource has a new parameter max_concurrent_connections + - Model PhoenixSource has a new parameter max_concurrent_connections + - Model SapCloudForCustomerSink has a new parameter + max_concurrent_connections + - Model SquareSource has a new parameter max_concurrent_connections + - Model OracleSource has a new parameter partition_option + - Model OracleSource has a new parameter max_concurrent_connections + - Model OracleSource has a new parameter partition_settings + - Model BlobTrigger has a new parameter annotations + - Model HDInsightOnDemandLinkedService has a new parameter + virtual_network_id + - Model HDInsightOnDemandLinkedService has a new parameter + subnet_name + - Model AmazonS3LinkedService has a new parameter service_url + - Model HDInsightLinkedService has a new parameter file_system + - Model MultiplePipelineTrigger has a new parameter annotations + - Model HBaseSource has a new parameter max_concurrent_connections + - Model OracleTableDataset has a new parameter + oracle_table_dataset_schema + - Model OracleTableDataset has a new parameter table + - Model RerunTumblingWindowTrigger has a new parameter annotations + - Model EloquaSource has a new parameter max_concurrent_connections + - Model AzureSqlTableDataset has a new parameter + azure_sql_table_dataset_schema + - Model AzureSqlTableDataset has a new parameter table + - Model BlobSink has a new parameter max_concurrent_connections + - Model HiveSource has a new parameter max_concurrent_connections + - Model SqlSource has a new parameter max_concurrent_connections + - Model PaypalSource has a new parameter max_concurrent_connections + - Model AzureBlobDataset has a new parameter modified_datetime_start + - Model AzureBlobDataset has a new parameter modified_datetime_end + - Model VerticaSource has a new parameter max_concurrent_connections + - Model AmazonS3Dataset has a new parameter modified_datetime_start + - Model AmazonS3Dataset has a new parameter modified_datetime_end + - Model PipelineRun has a new parameter run_group_id + - Model PipelineRun has a new parameter is_latest + - Model ShopifySource has a new parameter max_concurrent_connections + - Model MariaDBSource has a new parameter max_concurrent_connections + - Model TeradataLinkedService has a new parameter connection_string + - Model ODataLinkedService has a new parameter + service_principal_embedded_cert + - Model ODataLinkedService has a new parameter + aad_service_principal_credential_type + - Model ODataLinkedService has a new parameter service_principal_key + - Model ODataLinkedService has a new parameter service_principal_id + - Model ODataLinkedService has a new parameter aad_resource_id + - Model ODataLinkedService has a new parameter + service_principal_embedded_cert_password + - Model ODataLinkedService has a new parameter tenant + - Model AzureTableSource has a new parameter + max_concurrent_connections + - Model IntegrationRuntimeSsisProperties has a new parameter + data_proxy_properties + - Model ZohoSource has a new parameter max_concurrent_connections + - Model ResponsysSource has a new parameter + max_concurrent_connections + - Model FileSystemSink has a new parameter + max_concurrent_connections + - Model SqlDWSource has a new parameter max_concurrent_connections + - Model GreenplumSource has a new parameter + max_concurrent_connections + - Model AzureDatabricksLinkedService has a new parameter + new_cluster_init_scripts + - Model AzureDatabricksLinkedService has a new parameter + new_cluster_driver_node_type + - Model AzureDatabricksLinkedService has a new parameter + new_cluster_enable_elastic_disk + - Added operation TriggerRunsOperations.rerun + - Added operation + ExposureControlOperations.get_feature_value_by_factory + - Added model Office365Dataset + - Added model AzureBlobFSDataset + - Added model CommonDataServiceForAppsEntityDataset + - Added model DynamicsCrmEntityDataset + - Added model AzureSqlMITableDataset + - Added model HdfsLocation + - Added model HttpServerLocation + - Added model SftpLocation + - Added model FtpServerLocation + - Added model FileServerLocation + - Added model AmazonS3Location + - Added model AzureDataLakeStoreLocation + - Added model AzureBlobFSLocation + - Added model AzureBlobStorageLocation + - Added model DatasetLocation + - Added model BinaryDataset + - Added model JsonDataset + - Added model DelimitedTextDataset + - Added model ParquetDataset + - Added model AvroDataset + - Added model GoogleAdWordsSource + - Added model OracleServiceCloudSource + - Added model DynamicsAXSource + - Added model NetezzaPartitionSettings + - Added model AzureMariaDBSource + - Added model AzureBlobFSSource + - Added model Office365Source + - Added model MongoDbCursorMethodsProperties + - Added model CosmosDbMongoDbApiSource + - Added model MongoDbV2Source + - Added model TeradataPartitionSettings + - Added model TeradataSource + - Added model OraclePartitionSettings + - Added model AzureDataExplorerSource + - Added model SqlMISource + - Added model AzureSqlSource + - Added model SqlServerSource + - Added model RestSource + - Added model SapTablePartitionSettings + - Added model SapTableSource + - Added model SapOpenHubSource + - Added model SapHanaSource + - Added model SalesforceServiceCloudSource + - Added model ODataSource + - Added model SapBwSource + - Added model SybaseSource + - Added model PostgreSqlSource + - Added model MySqlSource + - Added model OdbcSource + - Added model Db2Source + - Added model MicrosoftAccessSource + - Added model InformixSource + - Added model CommonDataServiceForAppsSource + - Added model DynamicsCrmSource + - Added model HdfsReadSettings + - Added model HttpReadSettings + - Added model SftpReadSettings + - Added model FtpReadSettings + - Added model FileServerReadSettings + - Added model AmazonS3ReadSettings + - Added model AzureDataLakeStoreReadSettings + - Added model AzureBlobFSReadSettings + - Added model AzureBlobStorageReadSettings + - Added model StoreReadSettings + - Added model BinarySource + - Added model JsonSource + - Added model FormatReadSettings + - Added model DelimitedTextReadSettings + - Added model DelimitedTextSource + - Added model ParquetSource + - Added model AvroSource + - Added model AzureDataExplorerCommandActivity + - Added model SSISAccessCredential + - Added model SSISLogLocation + - Added model CosmosDbMongoDbApiSink + - Added model SalesforceServiceCloudSink + - Added model AzureDataExplorerSink + - Added model CommonDataServiceForAppsSink + - Added model DynamicsCrmSink + - Added model MicrosoftAccessSink + - Added model InformixSink + - Added model AzureBlobFSSink + - Added model SqlMISink + - Added model AzureSqlSink + - Added model SqlServerSink + - Added model FileServerWriteSettings + - Added model AzureDataLakeStoreWriteSettings + - Added model AzureBlobFSWriteSettings + - Added model AzureBlobStorageWriteSettings + - Added model StoreWriteSettings + - Added model BinarySink + - Added model ParquetSink + - Added model JsonWriteSettings + - Added model DelimitedTextWriteSettings + - Added model FormatWriteSettings + - Added model AvroWriteSettings + - Added model AvroSink + - Added model AzureMySqlSink + - Added model AzurePostgreSqlSink + - Added model JsonSink + - Added model DelimitedTextSink + - Added model WebHookActivity + - Added model ValidationActivity + - Added model EntityReference + - Added model IntegrationRuntimeDataProxyProperties + - Added model SsisVariable + - Added model SsisEnvironment + - Added model SsisParameter + - Added model SsisPackage + - Added model SsisEnvironmentReference + - Added model SsisProject + - Added model SsisFolder + +**Breaking changes** + + - Operation PipelinesOperations.create_run has a new signature + - Model SSISPackageLocation has a new signature + +## 0.7.0 (2019-01-31) + +**Features** + + - Model MarketoObjectDataset has a new parameter folder + - Model MarketoObjectDataset has a new parameter schema + - Model MarketoObjectDataset has a new parameter table_name + - Model AzureTableDataset has a new parameter folder + - Model AzureTableDataset has a new parameter schema + - Model VerticaTableDataset has a new parameter folder + - Model VerticaTableDataset has a new parameter schema + - Model VerticaTableDataset has a new parameter table_name + - Model VerticaLinkedService has a new parameter pwd + - Model DocumentDbCollectionDataset has a new parameter folder + - Model DocumentDbCollectionDataset has a new parameter schema + - Model HubspotObjectDataset has a new parameter folder + - Model HubspotObjectDataset has a new parameter schema + - Model HubspotObjectDataset has a new parameter table_name + - Model GetMetadataActivity has a new parameter user_properties + - Model SalesforceObjectDataset has a new parameter folder + - Model SalesforceObjectDataset has a new parameter schema + - Model AzureStorageLinkedService has a new parameter account_key + - Model AzureStorageLinkedService has a new parameter sas_token + - Model OracleLinkedService has a new parameter password + - Model ZohoObjectDataset has a new parameter folder + - Model ZohoObjectDataset has a new parameter schema + - Model ZohoObjectDataset has a new parameter table_name + - Model HDInsightHiveActivity has a new parameter variables + - Model HDInsightHiveActivity has a new parameter query_timeout + - Model HDInsightHiveActivity has a new parameter user_properties + - Model AmazonS3Dataset has a new parameter folder + - Model AmazonS3Dataset has a new parameter schema + - Model AzureSqlTableDataset has a new parameter folder + - Model AzureSqlTableDataset has a new parameter schema + - Model Activity has a new parameter user_properties + - Model AzurePostgreSqlLinkedService has a new parameter password + - Model HDInsightMapReduceActivity has a new parameter + user_properties + - Model HttpDataset has a new parameter folder + - Model HttpDataset has a new parameter schema + - Model MagentoObjectDataset has a new parameter folder + - Model MagentoObjectDataset has a new parameter schema + - Model MagentoObjectDataset has a new parameter table_name + - Model NetezzaLinkedService has a new parameter pwd + - Model ImpalaObjectDataset has a new parameter folder + - Model ImpalaObjectDataset has a new parameter schema + - Model ImpalaObjectDataset has a new parameter table_name + - Model DrillLinkedService has a new parameter pwd + - Model XeroObjectDataset has a new parameter folder + - Model XeroObjectDataset has a new parameter schema + - Model XeroObjectDataset has a new parameter table_name + - Model ODataResourceDataset has a new parameter folder + - Model ODataResourceDataset has a new parameter schema + - Model MariaDBTableDataset has a new parameter folder + - Model MariaDBTableDataset has a new parameter schema + - Model MariaDBTableDataset has a new parameter table_name + - Model PhoenixObjectDataset has a new parameter folder + - Model PhoenixObjectDataset has a new parameter schema + - Model PhoenixObjectDataset has a new parameter table_name + - Model ShopifyObjectDataset has a new parameter folder + - Model ShopifyObjectDataset has a new parameter schema + - Model ShopifyObjectDataset has a new parameter table_name + - Model DatabricksNotebookActivity has a new parameter libraries + - Model DatabricksNotebookActivity has a new parameter + user_properties + - Model HDInsightStreamingActivity has a new parameter + user_properties + - Model MariaDBLinkedService has a new parameter pwd + - Model OracleTableDataset has a new parameter folder + - Model OracleTableDataset has a new parameter schema + - Model AzureDatabricksLinkedService has a new parameter + new_cluster_spark_env_vars + - Model AzureDatabricksLinkedService has a new parameter + new_cluster_custom_tags + - Model ControlActivity has a new parameter user_properties + - Model AzurePostgreSqlTableDataset has a new parameter folder + - Model AzurePostgreSqlTableDataset has a new parameter schema + - Model AzurePostgreSqlTableDataset has a new parameter table_name + - Model EloquaObjectDataset has a new parameter folder + - Model EloquaObjectDataset has a new parameter schema + - Model EloquaObjectDataset has a new parameter table_name + - Model ForEachActivity has a new parameter user_properties + - Model HDInsightPigActivity has a new parameter user_properties + - Model WaitActivity has a new parameter user_properties + - Model DrillTableDataset has a new parameter folder + - Model DrillTableDataset has a new parameter schema + - Model DrillTableDataset has a new parameter table_name + - Model ExecutePipelineActivity has a new parameter user_properties + - Model UntilActivity has a new parameter user_properties + - Model AzureDataLakeStoreDataset has a new parameter folder + - Model AzureDataLakeStoreDataset has a new parameter schema + - Model HDInsightLinkedService has a new parameter is_esp_enabled + - Model SelfHostedIntegrationRuntimeStatus has a new parameter + auto_update_eta + - Model SelfHostedIntegrationRuntimeStatus has a new parameter + pushed_version + - Model SelfHostedIntegrationRuntimeStatus has a new parameter + latest_version + - Model ServiceNowObjectDataset has a new parameter folder + - Model ServiceNowObjectDataset has a new parameter schema + - Model ServiceNowObjectDataset has a new parameter table_name + - Model WebActivity has a new parameter user_properties + - Model QuickBooksObjectDataset has a new parameter folder + - Model QuickBooksObjectDataset has a new parameter schema + - Model QuickBooksObjectDataset has a new parameter table_name + - Model CustomDataset has a new parameter folder + - Model CustomDataset has a new parameter schema + - Model GreenplumTableDataset has a new parameter folder + - Model GreenplumTableDataset has a new parameter schema + - Model GreenplumTableDataset has a new parameter table_name + - Model JiraObjectDataset has a new parameter folder + - Model JiraObjectDataset has a new parameter schema + - Model JiraObjectDataset has a new parameter table_name + - Model CouchbaseLinkedService has a new parameter cred_string + - Model PrestoObjectDataset has a new parameter folder + - Model PrestoObjectDataset has a new parameter schema + - Model PrestoObjectDataset has a new parameter table_name + - Model TabularTranslator has a new parameter schema_mapping + - Model Factory has a new parameter e_tag + - Model Factory has a new parameter repo_configuration + - Model AzureSearchIndexDataset has a new parameter folder + - Model AzureSearchIndexDataset has a new parameter schema + - Model WebTableDataset has a new parameter folder + - Model WebTableDataset has a new parameter schema + - Model FilterActivity has a new parameter user_properties + - Model PipelineRunInvokedBy has a new parameter invoked_by_type + - Model Resource has a new parameter e_tag + - Model RelationalTableDataset has a new parameter folder + - Model RelationalTableDataset has a new parameter schema + - Model AzureSqlDWTableDataset has a new parameter folder + - Model AzureSqlDWTableDataset has a new parameter schema + - Model Dataset has a new parameter folder + - Model Dataset has a new parameter schema + - Model AzureMLBatchExecutionActivity has a new parameter + user_properties + - Model CouchbaseTableDataset has a new parameter folder + - Model CouchbaseTableDataset has a new parameter schema + - Model CouchbaseTableDataset has a new parameter table_name + - Model HDInsightSparkActivity has a new parameter user_properties + - Model AzureSqlDWLinkedService has a new parameter password + - Model AzureMLUpdateResourceActivity has a new parameter + user_properties + - Model SapEccResourceDataset has a new parameter folder + - Model SapEccResourceDataset has a new parameter schema + - Model LookupActivity has a new parameter user_properties + - Model AzureMySqlLinkedService has a new parameter password + - Model DataLakeAnalyticsUSQLActivity has a new parameter + user_properties + - Model CassandraTableDataset has a new parameter folder + - Model CassandraTableDataset has a new parameter schema + - Model SquareObjectDataset has a new parameter folder + - Model SquareObjectDataset has a new parameter schema + - Model SquareObjectDataset has a new parameter table_name + - Model HDInsightOnDemandLinkedService has a new parameter + script_actions + - Model PaypalObjectDataset has a new parameter folder + - Model PaypalObjectDataset has a new parameter schema + - Model PaypalObjectDataset has a new parameter table_name + - Model PipelineResource has a new parameter variables + - Model PipelineResource has a new parameter folder + - Model DynamicsEntityDataset has a new parameter folder + - Model DynamicsEntityDataset has a new parameter schema + - Model ActivityPolicy has a new parameter secure_input + - Model FileShareDataset has a new parameter folder + - Model FileShareDataset has a new parameter schema + - Model AzureMySqlTableDataset has a new parameter folder + - Model AzureMySqlTableDataset has a new parameter schema + - Model ExecuteSSISPackageActivity has a new parameter + project_connection_managers + - Model ExecuteSSISPackageActivity has a new parameter + user_properties + - Model ExecuteSSISPackageActivity has a new parameter + package_connection_managers + - Model ExecuteSSISPackageActivity has a new parameter + package_parameters + - Model ExecuteSSISPackageActivity has a new parameter + property_overrides + - Model ExecuteSSISPackageActivity has a new parameter + project_parameters + - Model ExecuteSSISPackageActivity has a new parameter + execution_credential + - Model HiveObjectDataset has a new parameter folder + - Model HiveObjectDataset has a new parameter schema + - Model HiveObjectDataset has a new parameter table_name + - Model IfConditionActivity has a new parameter user_properties + - Model CosmosDbLinkedService has a new parameter account_key + - Model GoogleBigQueryObjectDataset has a new parameter folder + - Model GoogleBigQueryObjectDataset has a new parameter schema + - Model GoogleBigQueryObjectDataset has a new parameter table_name + - Model SqlServerTableDataset has a new parameter folder + - Model SqlServerTableDataset has a new parameter schema + - Model SparkObjectDataset has a new parameter folder + - Model SparkObjectDataset has a new parameter schema + - Model SparkObjectDataset has a new parameter table_name + - Model CustomActivity has a new parameter user_properties + - Model SapCloudForCustomerResourceDataset has a new parameter folder + - Model SapCloudForCustomerResourceDataset has a new parameter schema + - Model TumblingWindowTrigger has a new parameter depends_on + - Model SqlServerStoredProcedureActivity has a new parameter + user_properties + - Model ConcurObjectDataset has a new parameter folder + - Model ConcurObjectDataset has a new parameter schema + - Model ConcurObjectDataset has a new parameter table_name + - Model OperationMetricSpecification has a new parameter dimensions + - Model HBaseObjectDataset has a new parameter folder + - Model HBaseObjectDataset has a new parameter schema + - Model HBaseObjectDataset has a new parameter table_name + - Model AmazonMWSObjectDataset has a new parameter folder + - Model AmazonMWSObjectDataset has a new parameter schema + - Model AmazonMWSObjectDataset has a new parameter table_name + - Model ExecutionActivity has a new parameter user_properties + - Model AzureBlobDataset has a new parameter folder + - Model AzureBlobDataset has a new parameter schema + - Model AzureSqlDatabaseLinkedService has a new parameter password + - Model MongoDbCollectionDataset has a new parameter folder + - Model MongoDbCollectionDataset has a new parameter schema + - Model CopyActivity has a new parameter data_integration_units + - Model CopyActivity has a new parameter user_properties + - Model SalesforceMarketingCloudObjectDataset has a new parameter + folder + - Model SalesforceMarketingCloudObjectDataset has a new parameter + schema + - Model SalesforceMarketingCloudObjectDataset has a new parameter + table_name + - Model GreenplumLinkedService has a new parameter pwd + - Model NetezzaTableDataset has a new parameter folder + - Model NetezzaTableDataset has a new parameter schema + - Model NetezzaTableDataset has a new parameter table_name + - Added operation PipelineRunsOperations.cancel + - Added operation FactoriesOperations.configure_factory_repo + - Added operation FactoriesOperations.get_data_plane_access + - Added operation FactoriesOperations.get_git_hub_access_token + - Added operation IntegrationRuntimeNodesOperations.get + - Added operation + IntegrationRuntimesOperations.create_linked_integration_runtime + - Added operation IntegrationRuntimesOperations.remove_links + - Added operation ActivityRunsOperations.query_by_pipeline_run + - Added operation group RerunTriggersOperations + - Added operation group TriggerRunsOperations + - Added operation group IntegrationRuntimeObjectMetadataOperations + - Added operation group ExposureControlOperations + +**Breaking changes** + + - Parameter access_token_secret of model QuickBooksLinkedService is + now required + - Parameter access_token of model QuickBooksLinkedService is now + required + - Operation DatasetsOperations.get has a new signature + - Operation FactoriesOperations.create_or_update has a new signature + - Operation FactoriesOperations.get has a new signature + - Operation IntegrationRuntimesOperations.get has a new signature + - Operation LinkedServicesOperations.get has a new signature + - Operation PipelinesOperations.get has a new signature + - Operation TriggersOperations.get has a new signature + - Operation PipelinesOperations.create_run has a new signature + - Model Db2LinkedService no longer has parameter schema + - Model QuickBooksLinkedService has a new required parameter + consumer_key + - Model QuickBooksLinkedService has a new required parameter + consumer_secret + - Model PostgreSqlLinkedService no longer has parameter database + - Model PostgreSqlLinkedService no longer has parameter username + - Model PostgreSqlLinkedService no longer has parameter schema + - Model PostgreSqlLinkedService no longer has parameter server + - Model PostgreSqlLinkedService has a new required parameter + connection_string + - Model TeradataLinkedService no longer has parameter schema + - Model CopyActivity no longer has parameter + cloud_data_movement_units + - Model MySqlLinkedService no longer has parameter database + - Model MySqlLinkedService no longer has parameter username + - Model MySqlLinkedService no longer has parameter schema + - Model MySqlLinkedService no longer has parameter server + - Model MySqlLinkedService has a new required parameter + connection_string + - Removed operation FactoriesOperations.cancel_pipeline_run + - Removed operation IntegrationRuntimesOperations.remove_node + - Removed operation TriggersOperations.list_runs + - Removed operation ActivityRunsOperations.list_by_pipeline_run + +## 0.6.0 (2018-03-22) + + - Added new AzureDatabricks LinkedService and DatabricksNotebook + Activity + - Added headNodeSize and dataNodeSize properties in HDInsightOnDemand + LinkedService + - Added LinkedService, Dataset, CopySource for + SalesforceMarketingCloud + - Added support for SecureOutput on all activities + - Added new BatchCount property on ForEach activity which controls how + many concurrent activities to run + - Added DELETE method for Web Activity + - Added new Filter Activity + - Added Linked Service Parameters support + +## 0.5.0 (2018-02-16) + + - Enable AAD auth via service principal and management service + identity for Azure SQL DB/DW linked service types + - Support integration runtime sharing across subscription and data + factory + - Enable Azure Key Vault for all compute linked service + - Add SAP ECC Source + - GoogleBigQuery support clientId and clientSecret for + UserAuthentication + - Add LinkedService, Dataset, CopySource for Vertica and Netezza + +## 0.4.0 (2018-02-02) + +**Features** + + - Add readBehavior to Salesforce Source + - Enable Azure Key Vault support for all data store linked services + - Add license type property to Azure SSIS integration runtime + +## 0.3.0 (2017-12-12) + +**Features** + + - Add SAP Cloud For Customer Source  + - Add SAP Cloud For Customer Dataset  + - Add SAP Cloud For Customer Sink  + - Support providing a Dynamics password as a SecureString, a secret in + Azure Key Vault, or as an encrypted credential.  + - App model for Tumbling Window Trigger  + - Add LinkedService, Dataset, Source for 26 RFI connectors, including: + PostgreSQL,Google + BigQuery,Impala,ServiceNow,Greenplum/Hawq,HBase,Hive ODBC,Spark + ODBC,HBase Phoenix,MariaDB,Presto,Couchbase,Concur,Zoho CRM,Amazon + Marketplace Services,PayPal,Square,Shopify,QuickBooks + Online,Hubspot,Atlassian Jira,Magento,Xero,Drill,Marketo,Eloqua.  + - Support round tripping of new properties using additionalProperties + for some types  + - Add new integration runtime API's: patch integration runtime; patch + integration runtime node; upgrade integration runtime, get node IP + address  + - Add integration runtime naming validation + +## 0.2.2 (2017-11-13) + +**Features** + + - Added new connectors: AzureMySql, Salesforce and JSONFormat, + Dynamics Sink + - Added support providing Salesforce passwords and security tokens as + SecureString and AzureKeyVaultSecret for Dynamics/Salesforce + - Added cancel pipeline run api + +## 0.2.1 (2017-10-03) + +**Features** + + - Add factories.cancel_pipeline_run + +## 0.2.0 (2017-09-22) + + - Initial Release diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-datafactory-10.0.0b1-CHANGELOG.trimmed.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-datafactory-10.0.0b1-CHANGELOG.trimmed.md new file mode 100644 index 000000000000..e39076a8e237 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-datafactory-10.0.0b1-CHANGELOG.trimmed.md @@ -0,0 +1,514 @@ +# Release History + +## 10.0.0b1 (2026-05-28) + +### Features Added + + - Client `DataFactoryManagementClient` added method `send_request` + - Model `ChangeDataCaptureResource` added property `system_data` + - Model `CredentialResource` added property `system_data` + - Model `DataFlowResource` added property `system_data` + - Model `DatasetResource` added property `system_data` + - Model `Factory` added property `system_data` + - Model `GlobalParameterResource` added property `system_data` + - Model `IntegrationRuntimeResource` added property `system_data` + - Model `LinkedServiceResource` added property `system_data` + - Model `ManagedPrivateEndpointResource` added property `system_data` + - Model `ManagedVirtualNetworkResource` added property `system_data` + - Model `PipelineResource` added property `system_data` + - Model `PrivateEndpointConnectionResource` added property `system_data` + - Model `TriggerResource` added property `system_data` + - Added enum `CreatedByType` + - Added model `ProxyResource` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Model `AmazonMWSLinkedService` moved instance variable `endpoint`, `marketplace_id`, `seller_id`, `mws_auth_token`, `access_key_id`, `secret_key`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `AmazonMWSLinkedServiceTypeProperties` + - Model `AmazonMWSObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `AmazonRdsForOracleLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `username`, `password`, `encryption_client`, `encryption_types_client`, `crypto_checksum_client`, `crypto_checksum_types_client`, `initial_lob_fetch_size`, `fetch_size`, `statement_cache_size`, `initialization_string`, `enable_bulk_load`, `support_v1_data_types`, `fetch_tswtz_as_timestamp` and `encrypted_credential` under property `type_properties` whose type is `AmazonRdsForLinkedServiceTypeProperties` + - Model `AmazonRdsForOracleTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AmazonRdsForOracleTableDatasetTypeProperties` + - Model `AmazonRdsForSqlServerLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `encrypted_credential` and `always_encrypted_settings` under property `type_properties` whose type is `AmazonRdsForSqlServerLinkedServiceTypeProperties` + - Model `AmazonRdsForSqlServerTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AmazonRdsForSqlServerTableDatasetTypeProperties` + - Model `AmazonRedshiftLinkedService` moved instance variable `server`, `username`, `password`, `database`, `port` and `encrypted_credential` under property `type_properties` whose type is `AmazonRedshiftLinkedServiceTypeProperties` + - Model `AmazonRedshiftTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `AmazonRedshiftTableDatasetTypeProperties` + - Model `AmazonS3CompatibleLinkedService` moved instance variable `access_key_id`, `secret_access_key`, `service_url`, `force_path_style` and `encrypted_credential` under property `type_properties` whose type is `AmazonS3CompatibleLinkedServiceTypeProperties` + - Model `AmazonS3Dataset` moved instance variable `bucket_name`, `key`, `prefix`, `version`, `modified_datetime_start`, `modified_datetime_end`, `format` and `compression` under property `type_properties` whose type is `AmazonS3DatasetTypeProperties` + - Model `AmazonS3LinkedService` moved instance variable `authentication_type`, `access_key_id`, `secret_access_key`, `service_url`, `session_token` and `encrypted_credential` under property `type_properties` whose type is `AmazonS3LinkedServiceTypeProperties` + - Model `AppFiguresLinkedService` moved instance variable `user_name`, `password` and `client_key` under property `type_properties` whose type is `AppFiguresLinkedServiceTypeProperties` + - Model `AppendVariableActivity` moved instance variable `variable_name` and `value` under property `type_properties` whose type is `AppendVariableActivityTypeProperties` + - Model `AsanaLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `AsanaLinkedServiceTypeProperties` + - Model `AvroDataset` moved instance variable `location`, `avro_compression_codec` and `avro_compression_level` under property `type_properties` whose type is `AvroDatasetTypeProperties` + - Model `AzPowerShellSetup` moved instance variable `version` under property `type_properties` whose type is `AzPowerShellSetupTypeProperties` + - Model `AzureBatchLinkedService` moved instance variable `account_name`, `access_key`, `batch_uri`, `pool_name`, `linked_service_name`, `encrypted_credential` and `credential` under property `type_properties` whose type is `AzureBatchLinkedServiceTypeProperties` + - Model `AzureBlobDataset` moved instance variable `folder_path`, `table_root_location`, `file_name`, `modified_datetime_start`, `modified_datetime_end`, `format` and `compression` under property `type_properties` whose type is `AzureBlobDatasetTypeProperties` + - Model `AzureBlobFSDataset` moved instance variable `folder_path`, `file_name`, `format` and `compression` under property `type_properties` whose type is `AzureBlobFSDatasetTypeProperties` + - Model `AzureBlobFSLinkedService` moved instance variable `url`, `account_key`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `encrypted_credential`, `credential`, `service_principal_credential_type`, `service_principal_credential`, `sas_uri` and `sas_token` under property `type_properties` whose type is `AzureBlobFSLinkedServiceTypeProperties` + - Model `AzureBlobStorageLinkedService` moved instance variable `connection_string`, `account_key`, `sas_uri`, `sas_token`, `service_endpoint`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `account_kind`, `encrypted_credential`, `credential`, `authentication_type` and `container_uri` under property `type_properties` whose type is `AzureBlobStorageLinkedServiceTypeProperties` + - Model `AzureDataExplorerCommandActivity` moved instance variable `command` and `command_timeout` under property `type_properties` whose type is `AzureDataExplorerCommandActivityTypeProperties` + - Model `AzureDataExplorerLinkedService` moved instance variable `endpoint`, `service_principal_id`, `service_principal_key`, `database`, `tenant` and `credential` under property `type_properties` whose type is `AzureDataExplorerLinkedServiceTypeProperties` + - Model `AzureDataExplorerTableDataset` moved instance variable `table` under property `type_properties` whose type is `AzureDataExplorerDatasetTypeProperties` + - Model `AzureDataLakeAnalyticsLinkedService` moved instance variable `account_name`, `service_principal_id`, `service_principal_key`, `tenant`, `subscription_id`, `resource_group_name`, `data_lake_analytics_uri` and `encrypted_credential` under property `type_properties` whose type is `AzureDataLakeAnalyticsLinkedServiceTypeProperties` + - Model `AzureDataLakeStoreDataset` moved instance variable `folder_path`, `file_name`, `format` and `compression` under property `type_properties` whose type is `AzureDataLakeStoreDatasetTypeProperties` + - Model `AzureDataLakeStoreLinkedService` moved instance variable `data_lake_store_uri`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `account_name`, `subscription_id`, `resource_group_name`, `encrypted_credential` and `credential` under property `type_properties` whose type is `AzureDataLakeStoreLinkedServiceTypeProperties` + - Model `AzureDatabricksDeltaLakeDataset` moved instance variable `table` and `database` under property `type_properties` whose type is `AzureDatabricksDeltaLakeDatasetTypeProperties` + - Model `AzureDatabricksDeltaLakeLinkedService` moved instance variable `domain`, `access_token`, `cluster_id`, `encrypted_credential`, `credential` and `workspace_resource_id` under property `type_properties` whose type is `AzureDatabricksDetltaLakeLinkedServiceTypeProperties` + - Model `AzureDatabricksLinkedService` moved instance variable `domain`, `access_token`, `authentication`, `workspace_resource_id`, `existing_cluster_id`, `instance_pool_id`, `new_cluster_version`, `new_cluster_num_of_worker`, `new_cluster_node_type`, `new_cluster_spark_conf`, `new_cluster_spark_env_vars`, `new_cluster_custom_tags`, `new_cluster_log_destination`, `new_cluster_driver_node_type`, `new_cluster_init_scripts`, `new_cluster_enable_elastic_disk`, `encrypted_credential`, `policy_id`, `credential` and `data_security_mode` under property `type_properties` whose type is `AzureDatabricksLinkedServiceTypeProperties` + - Model `AzureFileStorageLinkedService` moved instance variable `host`, `user_id`, `password`, `connection_string`, `account_key`, `sas_uri`, `sas_token`, `file_share`, `snapshot`, `encrypted_credential`, `service_endpoint` and `credential` under property `type_properties` whose type is `AzureFileStorageLinkedServiceTypeProperties` + - Model `AzureFunctionActivity` moved instance variable `method`, `function_name`, `headers` and `body` under property `type_properties` whose type is `AzureFunctionActivityTypeProperties` + - Model `AzureFunctionLinkedService` moved instance variable `function_app_url`, `function_key`, `encrypted_credential`, `credential`, `resource_id` and `authentication` under property `type_properties` whose type is `AzureFunctionLinkedServiceTypeProperties` + - Model `AzureKeyVaultLinkedService` moved instance variable `base_url` and `credential` under property `type_properties` whose type is `AzureKeyVaultLinkedServiceTypeProperties` + - Model `AzureMLBatchExecutionActivity` moved instance variable `global_parameters`, `web_service_outputs` and `web_service_inputs` under property `type_properties` whose type is `AzureMLBatchExecutionActivityTypeProperties` + - Model `AzureMLExecutePipelineActivity` moved instance variable `ml_pipeline_id`, `ml_pipeline_endpoint_id`, `version`, `experiment_name`, `ml_pipeline_parameters`, `data_path_assignments`, `ml_parent_run_id` and `continue_on_step_failure` under property `type_properties` whose type is `AzureMLExecutePipelineActivityTypeProperties` + - Model `AzureMLLinkedService` moved instance variable `ml_endpoint`, `api_key`, `update_resource_endpoint`, `service_principal_id`, `service_principal_key`, `tenant`, `encrypted_credential` and `authentication` under property `type_properties` whose type is `AzureMLLinkedServiceTypeProperties` + - Model `AzureMLServiceLinkedService` moved instance variable `subscription_id`, `resource_group_name`, `ml_workspace_name`, `authentication`, `service_principal_id`, `service_principal_key`, `tenant` and `encrypted_credential` under property `type_properties` whose type is `AzureMLServiceLinkedServiceTypeProperties` + - Model `AzureMLUpdateResourceActivity` moved instance variable `trained_model_name`, `trained_model_linked_service_name` and `trained_model_file_path` under property `type_properties` whose type is `AzureMLUpdateResourceActivityTypeProperties` + - Model `AzureMariaDBLinkedService` moved instance variable `connection_string`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `AzureMariaDBLinkedServiceTypeProperties` + - Model `AzureMariaDBTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `AzureMySqlLinkedService` moved instance variable `connection_string`, `password` and `encrypted_credential` under property `type_properties` whose type is `AzureMySqlLinkedServiceTypeProperties` + - Model `AzureMySqlTableDataset` moved instance variable `table_name` and `table` under property `type_properties` whose type is `AzureMySqlTableDatasetTypeProperties` + - Model `AzurePostgreSqlLinkedService` moved instance variable `connection_string`, `server`, `port`, `username`, `database`, `ssl_mode`, `timeout`, `command_timeout`, `trust_server_certificate`, `read_buffer_size`, `timezone`, `encoding`, `password`, `encrypted_credential`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password`, `tenant`, `azure_cloud_type` and `credential` under property `type_properties` whose type is `AzurePostgreSqlLinkedServiceTypeProperties` + - Model `AzurePostgreSqlSinkUpsertSettings` renamed its instance variable `keys` to `keys_property` + - Model `AzurePostgreSqlTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `AzurePostgreSqlTableDatasetTypeProperties` + - Model `AzureSearchIndexDataset` moved instance variable `index_name` under property `type_properties` whose type is `AzureSearchIndexDatasetTypeProperties` + - Model `AzureSearchLinkedService` moved instance variable `url`, `key` and `encrypted_credential` under property `type_properties` whose type is `AzureSearchLinkedServiceTypeProperties` + - Model `AzureSqlDWLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `encrypted_credential` and `credential` under property `type_properties` whose type is `AzureSqlDWLinkedServiceTypeProperties` + - Model `AzureSqlDWTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AzureSqlDWTableDatasetTypeProperties` + - Model `AzureSqlDatabaseLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `encrypted_credential`, `always_encrypted_settings` and `credential` under property `type_properties` whose type is `AzureSqlDatabaseLinkedServiceTypeProperties` + - Model `AzureSqlMILinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `encrypted_credential`, `always_encrypted_settings` and `credential` under property `type_properties` whose type is `AzureSqlMILinkedServiceTypeProperties` + - Model `AzureSqlMITableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AzureSqlMITableDatasetTypeProperties` + - Model `AzureSqlTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `AzureSqlTableDatasetTypeProperties` + - Model `AzureStorageLinkedService` moved instance variable `connection_string`, `account_key`, `sas_uri`, `sas_token` and `encrypted_credential` under property `type_properties` whose type is `AzureStorageLinkedServiceTypeProperties` + - Model `AzureSynapseArtifactsLinkedService` moved instance variable `endpoint`, `authentication` and `workspace_resource_id` under property `type_properties` whose type is `AzureSynapseArtifactsLinkedServiceTypeProperties` + - Model `AzureTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `AzureTableDatasetTypeProperties` + - Model `AzureTableStorageLinkedService` moved instance variable `connection_string`, `account_key`, `sas_uri`, `sas_token`, `encrypted_credential`, `service_endpoint` and `credential` under property `type_properties` whose type is `AzureTableStorageLinkedServiceTypeProperties` + - Model `BinaryDataset` moved instance variable `location` and `compression` under property `type_properties` whose type is `BinaryDatasetTypeProperties` + - Model `BlobEventsTrigger` moved instance variable `blob_path_begins_with`, `blob_path_ends_with`, `ignore_empty_blobs`, `events` and `scope` under property `type_properties` whose type is `BlobEventsTriggerTypeProperties` + - Model `BlobTrigger` moved instance variable `folder_path`, `max_concurrency` and `linked_service` under property `type_properties` whose type is `BlobTriggerTypeProperties` + - Model `CassandraLinkedService` moved instance variable `host`, `authentication_type`, `port`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `CassandraLinkedServiceTypeProperties` + - Model `CassandraTableDataset` moved instance variable `table_name` and `keyspace` under property `type_properties` whose type is `CassandraTableDatasetTypeProperties` + - Model `ChainingTrigger` moved instance variable `depends_on` and `run_dimension` under property `type_properties` whose type is `ChainingTriggerTypeProperties` + - Model `ChangeDataCaptureResource` moved instance variable `folder`, `description`, `source_connections_info`, `target_connections_info`, `policy`, `allow_v_net_override` and `status` under property `properties` whose type is `ChangeDataCapture` + - Model `CloudError` moved instance variable `code`, `message`, `target` and `details` under property `error` whose type is `CloudErrorBody` + - Model `CmdkeySetup` moved instance variable `target_name`, `user_name` and `password` under property `type_properties` whose type is `CmdkeySetupTypeProperties` + - Model `CommonDataServiceForAppsEntityDataset` moved instance variable `entity_name` under property `type_properties` whose type is `CommonDataServiceForAppsEntityDatasetTypeProperties` + - Model `CommonDataServiceForAppsLinkedService` moved instance variable `deployment_type`, `host_name`, `port`, `service_uri`, `organization_name`, `authentication_type`, `domain`, `username`, `password`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential` and `encrypted_credential` under property `type_properties` whose type is `CommonDataServiceForAppsLinkedServiceTypeProperties` + - Model `ComponentSetup` moved instance variable `component_name` and `license_key` under property `type_properties` whose type is `LicensedComponentSetupTypeProperties` + - Model `ConcurLinkedService` moved instance variable `connection_properties`, `client_id`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ConcurLinkedServiceTypeProperties` + - Model `ConcurObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `CopyActivity` moved instance variable `source`, `sink`, `translator`, `enable_staging`, `staging_settings`, `parallel_copies`, `data_integration_units`, `enable_skip_incompatible_row`, `redirect_incompatible_row_settings`, `log_storage_settings`, `log_settings`, `preserve_rules`, `preserve`, `validate_data_consistency` and `skip_error_file` under property `type_properties` whose type is `CopyActivityTypeProperties` + - Model `CosmosDbLinkedService` moved instance variable `connection_string`, `account_endpoint`, `database`, `account_key`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential`, `tenant`, `azure_cloud_type`, `connection_mode`, `encrypted_credential` and `credential` under property `type_properties` whose type is `CosmosDbLinkedServiceTypeProperties` + - Model `CosmosDbMongoDbApiCollectionDataset` moved instance variable `collection` under property `type_properties` whose type is `CosmosDbMongoDbApiCollectionDatasetTypeProperties` + - Model `CosmosDbMongoDbApiLinkedService` moved instance variable `is_server_version_above32`, `connection_string` and `database` under property `type_properties` whose type is `CosmosDbMongoDbApiLinkedServiceTypeProperties` + - Model `CosmosDbSqlApiCollectionDataset` moved instance variable `collection_name` under property `type_properties` whose type is `CosmosDbSqlApiCollectionDatasetTypeProperties` + - Model `CouchbaseLinkedService` moved instance variable `connection_string`, `cred_string` and `encrypted_credential` under property `type_properties` whose type is `CouchbaseLinkedServiceTypeProperties` + - Model `CouchbaseTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `CustomActivity` moved instance variable `command`, `resource_linked_service`, `folder_path`, `reference_objects`, `extended_properties`, `retention_time_in_days` and `auto_user_specification` under property `type_properties` whose type is `CustomActivityTypeProperties` + - Model `CustomEventsTrigger` moved instance variable `subject_begins_with`, `subject_ends_with`, `events` and `scope` under property `type_properties` whose type is `CustomEventsTriggerTypeProperties` + - Model `DataLakeAnalyticsUSQLActivity` moved instance variable `script_path`, `script_linked_service`, `degree_of_parallelism`, `priority`, `parameters`, `runtime_version` and `compilation_mode` under property `type_properties` whose type is `DataLakeAnalyticsUSQLActivityTypeProperties` + - Model `DatabricksJobActivity` moved instance variable `job_id` and `job_parameters` under property `type_properties` whose type is `DatabricksJobActivityTypeProperties` + - Model `DatabricksNotebookActivity` moved instance variable `notebook_path`, `base_parameters` and `libraries` under property `type_properties` whose type is `DatabricksNotebookActivityTypeProperties` + - Model `DatabricksSparkJarActivity` moved instance variable `main_class_name`, `parameters` and `libraries` under property `type_properties` whose type is `DatabricksSparkJarActivityTypeProperties` + - Model `DatabricksSparkPythonActivity` moved instance variable `python_file`, `parameters` and `libraries` under property `type_properties` whose type is `DatabricksSparkPythonActivityTypeProperties` + - Model `DataworldLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `DataworldLinkedServiceTypeProperties` + - Model `Db2LinkedService` moved instance variable `connection_string`, `server`, `database`, `authentication_type`, `username`, `password`, `package_collection`, `certificate_common_name` and `encrypted_credential` under property `type_properties` whose type is `Db2LinkedServiceTypeProperties` + - Model `Db2TableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `Db2TableDatasetTypeProperties` + - Model `DeleteActivity` moved instance variable `recursive`, `max_concurrent_connections`, `enable_logging`, `log_storage_settings`, `dataset` and `store_settings` under property `type_properties` whose type is `DeleteActivityTypeProperties` + - Model `DelimitedTextDataset` moved instance variable `location`, `column_delimiter`, `row_delimiter`, `encoding_name`, `compression_codec`, `compression_level`, `quote_char`, `escape_char`, `first_row_as_header` and `null_value` under property `type_properties` whose type is `DelimitedTextDatasetTypeProperties` + - Model `DocumentDbCollectionDataset` moved instance variable `collection_name` under property `type_properties` whose type is `DocumentDbCollectionDatasetTypeProperties` + - Model `DrillLinkedService` moved instance variable `connection_string`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `DrillLinkedServiceTypeProperties` + - Model `DrillTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `DrillDatasetTypeProperties` + - Model `DynamicsAXLinkedService` moved instance variable `url`, `service_principal_id`, `service_principal_key`, `tenant`, `aad_resource_id` and `encrypted_credential` under property `type_properties` whose type is `DynamicsAXLinkedServiceTypeProperties` + - Model `DynamicsAXResourceDataset` moved instance variable `path` under property `type_properties` whose type is `DynamicsAXResourceDatasetTypeProperties` + - Model `DynamicsCrmEntityDataset` moved instance variable `entity_name` under property `type_properties` whose type is `DynamicsCrmEntityDatasetTypeProperties` + - Model `DynamicsCrmLinkedService` moved instance variable `deployment_type`, `host_name`, `port`, `service_uri`, `organization_name`, `authentication_type`, `domain`, `username`, `password`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential`, `credential` and `encrypted_credential` under property `type_properties` whose type is `DynamicsCrmLinkedServiceTypeProperties` + - Model `DynamicsEntityDataset` moved instance variable `entity_name` under property `type_properties` whose type is `DynamicsEntityDatasetTypeProperties` + - Model `DynamicsLinkedService` moved instance variable `deployment_type`, `host_name`, `port`, `service_uri`, `organization_name`, `authentication_type`, `domain`, `username`, `password`, `service_principal_id`, `service_principal_credential_type`, `service_principal_credential`, `encrypted_credential` and `credential` under property `type_properties` whose type is `DynamicsLinkedServiceTypeProperties` + - Model `EloquaLinkedService` moved instance variable `endpoint`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `EloquaLinkedServiceTypeProperties` + - Model `EloquaObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `EnvironmentVariableSetup` moved instance variable `variable_name` and `variable_value` under property `type_properties` whose type is `EnvironmentVariableSetupTypeProperties` + - Model `ExcelDataset` moved instance variable `location`, `sheet_name`, `sheet_index`, `range`, `first_row_as_header`, `compression` and `null_value` under property `type_properties` whose type is `ExcelDatasetTypeProperties` + - Model `ExecuteDataFlowActivity` moved instance variable `data_flow`, `staging`, `integration_runtime`, `continuation_settings`, `compute`, `trace_level`, `continue_on_error`, `run_concurrently` and `source_staging_concurrency` under property `type_properties` whose type is `ExecuteDataFlowActivityTypeProperties` + - Model `ExecutePipelineActivity` moved instance variable `pipeline`, `parameters` and `wait_on_completion` under property `type_properties` whose type is `ExecutePipelineActivityTypeProperties` + - Model `ExecuteSSISPackageActivity` moved instance variable `package_location`, `runtime`, `logging_level`, `environment_path`, `execution_credential`, `connect_via`, `project_parameters`, `package_parameters`, `project_connection_managers`, `package_connection_managers`, `property_overrides` and `log_location` under property `type_properties` whose type is `ExecuteSSISPackageActivityTypeProperties` + - Model `ExecuteWranglingDataflowActivity` moved instance variable `data_flow`, `staging`, `integration_runtime`, `continuation_settings`, `compute`, `trace_level`, `continue_on_error`, `run_concurrently`, `source_staging_concurrency`, `sinks` and `queries` under property `type_properties` whose type is `ExecutePowerQueryActivityTypeProperties` + - Model `FactoryUpdateParameters` moved instance variable `public_network_access` under property `properties` whose type is `FactoryUpdateProperties` + - Model `FailActivity` moved instance variable `message` and `error_code` under property `type_properties` whose type is `FailActivityTypeProperties` + - Model `FileServerLinkedService` moved instance variable `host`, `user_id`, `password` and `encrypted_credential` under property `type_properties` whose type is `FileServerLinkedServiceTypeProperties` + - Model `FileShareDataset` moved instance variable `folder_path`, `file_name`, `modified_datetime_start`, `modified_datetime_end`, `format`, `file_filter` and `compression` under property `type_properties` whose type is `FileShareDatasetTypeProperties` + - Model `FilterActivity` moved instance variable `items` and `condition` under property `type_properties` whose type is `FilterActivityTypeProperties` + - Model `Flowlet` moved instance variable `sources`, `sinks`, `transformations`, `script` and `script_lines` under property `type_properties` whose type is `FlowletTypeProperties` + - Model `ForEachActivity` moved instance variable `is_sequential`, `batch_count`, `items` and `activities` under property `type_properties` whose type is `ForEachActivityTypeProperties` + - Model `FtpServerLinkedService` moved instance variable `host`, `port`, `authentication_type`, `user_name`, `password`, `encrypted_credential`, `enable_ssl` and `enable_server_certificate_validation` under property `type_properties` whose type is `FtpServerLinkedServiceTypeProperties` + - Model `GetMetadataActivity` moved instance variable `dataset`, `field_list`, `store_settings` and `format_settings` under property `type_properties` whose type is `GetMetadataActivityTypeProperties` + - Model `GoogleAdWordsLinkedService` moved instance variable `connection_properties`, `client_customer_id`, `developer_token`, `authentication_type`, `refresh_token`, `client_id`, `client_secret`, `email`, `key_file_path`, `trusted_cert_path`, `use_system_trust_store`, `private_key`, `login_customer_id`, `google_ads_api_version`, `support_legacy_data_types` and `encrypted_credential` under property `type_properties` whose type is `GoogleAdWordsLinkedServiceTypeProperties` + - Model `GoogleAdWordsObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `GoogleBigQueryLinkedService` moved instance variable `project`, `additional_projects`, `request_google_drive_scope`, `authentication_type`, `refresh_token`, `client_id`, `client_secret`, `email`, `key_file_path`, `trusted_cert_path`, `use_system_trust_store` and `encrypted_credential` under property `type_properties` whose type is `GoogleBigQueryLinkedServiceTypeProperties` + - Model `GoogleBigQueryObjectDataset` moved instance variable `table_name`, `table` and `dataset` under property `type_properties` whose type is `GoogleBigQueryDatasetTypeProperties` + - Model `GoogleBigQueryV2LinkedService` moved instance variable `project_id`, `authentication_type`, `client_id`, `client_secret`, `refresh_token`, `key_file_content` and `encrypted_credential` under property `type_properties` whose type is `GoogleBigQueryV2LinkedServiceTypeProperties` + - Model `GoogleBigQueryV2ObjectDataset` moved instance variable `table` and `dataset` under property `type_properties` whose type is `GoogleBigQueryV2DatasetTypeProperties` + - Model `GoogleCloudStorageLinkedService` moved instance variable `access_key_id`, `secret_access_key`, `service_url` and `encrypted_credential` under property `type_properties` whose type is `GoogleCloudStorageLinkedServiceTypeProperties` + - Model `GoogleSheetsLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `GoogleSheetsLinkedServiceTypeProperties` + - Model `GreenplumLinkedService` moved instance variable `connection_string`, `pwd`, `encrypted_credential`, `authentication_type`, `host`, `port`, `username`, `database`, `ssl_mode`, `connection_timeout` and `command_timeout` under property `type_properties` whose type is `GreenplumLinkedServiceTypeProperties` + - Model `GreenplumTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `GreenplumDatasetTypeProperties` + - Model `HBaseLinkedService` moved instance variable `host`, `port`, `http_path`, `authentication_type`, `username`, `password`, `enable_ssl`, `trusted_cert_path`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `HBaseLinkedServiceTypeProperties` + - Model `HBaseObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `HDInsightHiveActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `script_path`, `script_linked_service`, `defines`, `variables` and `query_timeout` under property `type_properties` whose type is `HDInsightHiveActivityTypeProperties` + - Model `HDInsightLinkedService` moved instance variable `cluster_uri`, `cluster_auth_type`, `user_name`, `password`, `linked_service_name`, `hcatalog_linked_service_name`, `encrypted_credential`, `is_esp_enabled`, `file_system` and `credential` under property `type_properties` whose type is `HDInsightLinkedServiceTypeProperties` + - Model `HDInsightMapReduceActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `class_name`, `jar_file_path`, `jar_linked_service`, `jar_libs` and `defines` under property `type_properties` whose type is `HDInsightMapReduceActivityTypeProperties` + - Model `HDInsightOnDemandLinkedService` moved instance variable `cluster_size`, `time_to_live`, `version_type_properties_version`, `linked_service_name`, `host_subscription_id`, `service_principal_id`, `service_principal_key`, `tenant`, `cluster_resource_group`, `cluster_resource_group_auth_type`, `cluster_name_prefix`, `cluster_user_name`, `cluster_password`, `cluster_ssh_user_name`, `cluster_ssh_password`, `additional_linked_service_names`, `hcatalog_linked_service_name`, `cluster_type`, `spark_version`, `core_configuration`, `h_base_configuration`, `hdfs_configuration`, `hive_configuration`, `map_reduce_configuration`, `oozie_configuration`, `storm_configuration`, `yarn_configuration`, `encrypted_credential`, `head_node_size`, `data_node_size`, `zookeeper_node_size`, `script_actions`, `virtual_network_id`, `subnet_name` and `credential` under property `type_properties` whose type is `HDInsightOnDemandLinkedServiceTypeProperties` + - Model `HDInsightPigActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `script_path`, `script_linked_service` and `defines` under property `type_properties` whose type is `HDInsightPigActivityTypeProperties` + - Model `HDInsightSparkActivity` moved instance variable `root_path`, `entry_file_path`, `arguments`, `get_debug_info`, `spark_job_linked_service`, `class_name`, `proxy_user` and `spark_config` under property `type_properties` whose type is `HDInsightSparkActivityTypeProperties` + - Model `HDInsightStreamingActivity` moved instance variable `storage_linked_services`, `arguments`, `get_debug_info`, `mapper`, `reducer`, `input`, `output`, `file_paths`, `file_linked_service`, `combiner`, `command_environment` and `defines` under property `type_properties` whose type is `HDInsightStreamingActivityTypeProperties` + - Model `HdfsLinkedService` moved instance variable `url`, `authentication_type`, `encrypted_credential`, `user_name` and `password` under property `type_properties` whose type is `HdfsLinkedServiceTypeProperties` + - Model `HiveLinkedService` moved instance variable `host`, `port`, `server_type`, `thrift_transport_protocol`, `authentication_type`, `service_discovery_mode`, `zoo_keeper_name_space`, `use_native_query`, `username`, `password`, `http_path`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `HiveLinkedServiceTypeProperties` + - Model `HiveObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `HiveDatasetTypeProperties` + - Model `HttpDataset` moved instance variable `relative_url`, `request_method`, `request_body`, `additional_headers`, `format` and `compression` under property `type_properties` whose type is `HttpDatasetTypeProperties` + - Model `HttpLinkedService` moved instance variable `url`, `authentication_type`, `user_name`, `password`, `auth_headers`, `embedded_cert_data`, `cert_thumbprint`, `encrypted_credential` and `enable_server_certificate_validation` under property `type_properties` whose type is `HttpLinkedServiceTypeProperties` + - Model `HubspotLinkedService` moved instance variable `client_id`, `client_secret`, `access_token`, `refresh_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `HubspotLinkedServiceTypeProperties` + - Model `HubspotObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `IcebergDataset` moved instance variable `location` under property `type_properties` whose type is `IcebergDatasetTypeProperties` + - Model `IfConditionActivity` moved instance variable `expression`, `if_true_activities` and `if_false_activities` under property `type_properties` whose type is `IfConditionActivityTypeProperties` + - Model `ImpalaLinkedService` moved instance variable `host`, `port`, `authentication_type`, `username`, `password`, `thrift_transport_protocol`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `ImpalaLinkedServiceTypeProperties` + - Model `ImpalaObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `ImpalaDatasetTypeProperties` + - Model `InformixLinkedService` moved instance variable `connection_string`, `authentication_type`, `credential`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `InformixLinkedServiceTypeProperties` + - Model `InformixTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `InformixTableDatasetTypeProperties` + - Model `JiraLinkedService` moved instance variable `host`, `port`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `JiraLinkedServiceTypeProperties` + - Model `JiraObjectDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `JiraTableDatasetTypeProperties` + - Model `JsonDataset` moved instance variable `location`, `encoding_name` and `compression` under property `type_properties` whose type is `JsonDatasetTypeProperties` + - Model `LakeHouseLinkedService` moved instance variable `workspace_id`, `artifact_id`, `authentication_type`, `service_principal_id`, `service_principal_key`, `tenant`, `encrypted_credential`, `service_principal_credential_type`, `service_principal_credential` and `credential` under property `type_properties` whose type is `LakeHouseLinkedServiceTypeProperties` + - Model `LakeHouseTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `LakeHouseTableDatasetTypeProperties` + - Model `LookupActivity` moved instance variable `source`, `dataset`, `first_row_only` and `treat_decimal_as_string` under property `type_properties` whose type is `LookupActivityTypeProperties` + - Model `MagentoLinkedService` moved instance variable `host`, `access_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `MagentoLinkedServiceTypeProperties` + - Model `MagentoObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `ManagedIdentityCredential` moved instance variable `resource_id` under property `type_properties` whose type is `ManagedIdentityTypeProperties` + - Model `ManagedIntegrationRuntime` moved instance variable `compute_properties`, `ssis_properties`, `customer_virtual_network` and `interactive_query` under property `type_properties` whose type is `ManagedIntegrationRuntimeTypeProperties` + - Model `ManagedIntegrationRuntimeStatus` moved instance variable `create_time`, `nodes`, `other_errors` and `last_operation` under property `type_properties` whose type is `ManagedIntegrationRuntimeStatusTypeProperties` + - Model `MappingDataFlow` moved instance variable `sources`, `sinks`, `transformations`, `script` and `script_lines` under property `type_properties` whose type is `MappingDataFlowTypeProperties` + - Model `MariaDBLinkedService` moved instance variable `driver_version`, `connection_string`, `server`, `port`, `username`, `database`, `ssl_mode`, `use_system_trust_store`, `password` and `encrypted_credential` under property `type_properties` whose type is `MariaDBLinkedServiceTypeProperties` + - Model `MariaDBTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `MarketoLinkedService` moved instance variable `endpoint`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `MarketoLinkedServiceTypeProperties` + - Model `MarketoObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `MicrosoftAccessLinkedService` moved instance variable `connection_string`, `authentication_type`, `credential`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `MicrosoftAccessLinkedServiceTypeProperties` + - Model `MicrosoftAccessTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `MicrosoftAccessTableDatasetTypeProperties` + - Model `MongoDbAtlasCollectionDataset` moved instance variable `collection` under property `type_properties` whose type is `MongoDbAtlasCollectionDatasetTypeProperties` + - Model `MongoDbAtlasLinkedService` moved instance variable `connection_string`, `database` and `driver_version` under property `type_properties` whose type is `MongoDbAtlasLinkedServiceTypeProperties` + - Model `MongoDbCollectionDataset` moved instance variable `collection_name` under property `type_properties` whose type is `MongoDbCollectionDatasetTypeProperties` + - Model `MongoDbLinkedService` moved instance variable `server`, `authentication_type`, `database_name`, `username`, `password`, `auth_source`, `port`, `enable_ssl`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `MongoDbLinkedServiceTypeProperties` + - Model `MongoDbV2CollectionDataset` moved instance variable `collection` under property `type_properties` whose type is `MongoDbV2CollectionDatasetTypeProperties` + - Model `MongoDbV2LinkedService` moved instance variable `connection_string` and `database` under property `type_properties` whose type is `MongoDbV2LinkedServiceTypeProperties` + - Model `MySqlLinkedService` moved instance variable `driver_version`, `connection_string`, `server`, `port`, `username`, `database`, `ssl_mode`, `use_system_trust_store`, `password`, `encrypted_credential`, `allow_zero_date_time`, `connection_timeout`, `convert_zero_date_time`, `guid_format`, `ssl_cert`, `ssl_key` and `treat_tiny_as_boolean` under property `type_properties` whose type is `MySqlLinkedServiceTypeProperties` + - Model `MySqlTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `MySqlTableDatasetTypeProperties` + - Model `NetezzaLinkedService` moved instance variable `connection_string`, `server`, `port`, `uid`, `database`, `security_level`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `NetezzaLinkedServiceTypeProperties` + - Model `NetezzaTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `NetezzaTableDatasetTypeProperties` + - Model `ODataLinkedService` moved instance variable `url`, `authentication_type`, `user_name`, `password`, `auth_headers`, `tenant`, `service_principal_id`, `azure_cloud_type`, `aad_resource_id`, `aad_service_principal_credential_type`, `service_principal_key`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password` and `encrypted_credential` under property `type_properties` whose type is `ODataLinkedServiceTypeProperties` + - Model `ODataResourceDataset` moved instance variable `path` under property `type_properties` whose type is `ODataResourceDatasetTypeProperties` + - Model `OdbcLinkedService` moved instance variable `connection_string`, `authentication_type`, `credential`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `OdbcLinkedServiceTypeProperties` + - Model `OdbcTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `OdbcTableDatasetTypeProperties` + - Model `Office365Dataset` moved instance variable `table_name` and `predicate` under property `type_properties` whose type is `Office365DatasetTypeProperties` + - Model `Office365LinkedService` moved instance variable `office365_tenant_id`, `service_principal_tenant_id`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password` and `encrypted_credential` under property `type_properties` whose type is `Office365LinkedServiceTypeProperties` + - Model `OracleCloudStorageLinkedService` moved instance variable `access_key_id`, `secret_access_key`, `service_url` and `encrypted_credential` under property `type_properties` whose type is `OracleCloudStorageLinkedServiceTypeProperties` + - Model `OracleLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `username`, `password`, `encryption_client`, `encryption_types_client`, `crypto_checksum_client`, `crypto_checksum_types_client`, `initial_lob_fetch_size`, `fetch_size`, `statement_cache_size`, `initialization_string`, `enable_bulk_load`, `support_v1_data_types`, `fetch_tswtz_as_timestamp` and `encrypted_credential` under property `type_properties` whose type is `OracleLinkedServiceTypeProperties` + - Model `OracleServiceCloudLinkedService` moved instance variable `host`, `username`, `password`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `OracleServiceCloudLinkedServiceTypeProperties` + - Model `OracleServiceCloudObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `OracleTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `OracleTableDatasetTypeProperties` + - Model `OrcDataset` moved instance variable `location` and `orc_compression_codec` under property `type_properties` whose type is `OrcDatasetTypeProperties` + - Model `ParquetDataset` moved instance variable `location` and `compression_codec` under property `type_properties` whose type is `ParquetDatasetTypeProperties` + - Model `PaypalLinkedService` moved instance variable `host`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `PaypalLinkedServiceTypeProperties` + - Model `PaypalObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `PhoenixLinkedService` moved instance variable `host`, `port`, `http_path`, `authentication_type`, `username`, `password`, `enable_ssl`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `PhoenixLinkedServiceTypeProperties` + - Model `PhoenixObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PhoenixDatasetTypeProperties` + - Model `PipelineResource` moved instance variable `description`, `activities`, `parameters`, `variables`, `concurrency`, `annotations`, `run_dimensions`, `folder` and `policy` under property `properties` whose type is `Pipeline` + - Model `PostgreSqlLinkedService` moved instance variable `connection_string`, `password` and `encrypted_credential` under property `type_properties` whose type is `PostgreSqlLinkedServiceTypeProperties` + - Model `PostgreSqlTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PostgreSqlTableDatasetTypeProperties` + - Model `PostgreSqlV2LinkedService` moved instance variable `server`, `port`, `username`, `database`, `authentication_type`, `ssl_mode`, `schema`, `pooling`, `connection_timeout`, `command_timeout`, `trust_server_certificate`, `ssl_certificate`, `ssl_key`, `ssl_password`, `read_buffer_size`, `log_parameters`, `timezone`, `encoding`, `password` and `encrypted_credential` under property `type_properties` whose type is `PostgreSqlV2LinkedServiceTypeProperties` + - Model `PostgreSqlV2TableDataset` moved instance variable `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PostgreSqlV2TableDatasetTypeProperties` + - Model `PrestoLinkedService` moved instance variable `host`, `server_version`, `catalog`, `port`, `authentication_type`, `username`, `password`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert`, `time_zone_id` and `encrypted_credential` under property `type_properties` whose type is `PrestoLinkedServiceTypeProperties` + - Model `PrestoObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `PrestoDatasetTypeProperties` + - Model `QuickBooksLinkedService` moved instance variable `connection_properties`, `endpoint`, `company_id`, `consumer_key`, `consumer_secret`, `access_token`, `access_token_secret`, `refresh_token`, `use_encrypted_endpoints` and `encrypted_credential` under property `type_properties` whose type is `QuickBooksLinkedServiceTypeProperties` + - Model `QuickBooksObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `QuickbaseLinkedService` moved instance variable `url`, `user_token` and `encrypted_credential` under property `type_properties` whose type is `QuickbaseLinkedServiceTypeProperties` + - Model `RelationalTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `RelationalTableDatasetTypeProperties` + - Model `RerunTumblingWindowTrigger` moved instance variable `parent_trigger`, `requested_start_time`, `requested_end_time` and `rerun_concurrency` under property `type_properties` whose type is `RerunTumblingWindowTriggerTypeProperties` + - Model `Resource` moved instance variable `location`, `tags` and `e_tag` under property `system_data` whose type is `SystemData` + - Model `ResponsysLinkedService` moved instance variable `endpoint`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ResponsysLinkedServiceTypeProperties` + - Model `ResponsysObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `RestResourceDataset` moved instance variable `relative_url`, `request_method`, `request_body`, `additional_headers` and `pagination_rules` under property `type_properties` whose type is `RestResourceDatasetTypeProperties` + - Model `RestServiceLinkedService` moved instance variable `url`, `enable_server_certificate_validation`, `authentication_type`, `user_name`, `password`, `auth_headers`, `service_principal_id`, `service_principal_key`, `tenant`, `azure_cloud_type`, `aad_resource_id`, `encrypted_credential`, `credential`, `client_id`, `client_secret`, `token_endpoint`, `resource`, `scope`, `service_principal_credential_type`, `service_principal_embedded_cert` and `service_principal_embedded_cert_password` under property `type_properties` whose type is `RestServiceLinkedServiceTypeProperties` + - Model `RunQueryFilter` renamed its instance variable `values` to `values_property` + - Model `SSISLogLocation` moved instance variable `access_credential` and `log_refresh_interval` under property `type_properties` whose type is `SSISLogLocationTypeProperties` + - Model `SSISPackageLocation` moved instance variable `package_password`, `access_credential`, `configuration_path`, `configuration_access_credential`, `package_name`, `package_content`, `package_last_modified_date` and `child_packages` under property `type_properties` whose type is `SSISPackageLocationTypeProperties` + - Model `SalesforceLinkedService` moved instance variable `environment_url`, `username`, `password`, `security_token`, `api_version` and `encrypted_credential` under property `type_properties` whose type is `SalesforceLinkedServiceTypeProperties` + - Model `SalesforceMarketingCloudLinkedService` moved instance variable `connection_properties`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `SalesforceMarketingCloudLinkedServiceTypeProperties` + - Model `SalesforceMarketingCloudObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `SalesforceObjectDataset` moved instance variable `object_api_name` under property `type_properties` whose type is `SalesforceObjectDatasetTypeProperties` + - Model `SalesforceServiceCloudLinkedService` moved instance variable `environment_url`, `username`, `password`, `security_token`, `api_version`, `extended_properties` and `encrypted_credential` under property `type_properties` whose type is `SalesforceServiceCloudLinkedServiceTypeProperties` + - Model `SalesforceServiceCloudObjectDataset` moved instance variable `object_api_name` under property `type_properties` whose type is `SalesforceServiceCloudObjectDatasetTypeProperties` + - Model `SalesforceServiceCloudV2LinkedService` moved instance variable `environment_url`, `authentication_type`, `client_id`, `client_secret`, `api_version` and `encrypted_credential` under property `type_properties` whose type is `SalesforceServiceCloudV2LinkedServiceTypeProperties` + - Model `SalesforceServiceCloudV2ObjectDataset` moved instance variable `object_api_name` and `report_id` under property `type_properties` whose type is `SalesforceServiceCloudV2ObjectDatasetTypeProperties` + - Model `SalesforceV2LinkedService` moved instance variable `environment_url`, `authentication_type`, `client_id`, `client_secret`, `api_version` and `encrypted_credential` under property `type_properties` whose type is `SalesforceV2LinkedServiceTypeProperties` + - Model `SalesforceV2ObjectDataset` moved instance variable `object_api_name` and `report_id` under property `type_properties` whose type is `SalesforceV2ObjectDatasetTypeProperties` + - Model `SapBWLinkedService` moved instance variable `server`, `system_number`, `client_id`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapBWLinkedServiceTypeProperties` + - Model `SapCloudForCustomerLinkedService` moved instance variable `url`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapCloudForCustomerLinkedServiceTypeProperties` + - Model `SapCloudForCustomerResourceDataset` moved instance variable `path` under property `type_properties` whose type is `SapCloudForCustomerResourceDatasetTypeProperties` + - Model `SapEccLinkedService` moved instance variable `url`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapEccLinkedServiceTypeProperties` + - Model `SapEccResourceDataset` moved instance variable `path` under property `type_properties` whose type is `SapEccResourceDatasetTypeProperties` + - Model `SapHanaLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `user_name`, `password` and `encrypted_credential` under property `type_properties` whose type is `SapHanaLinkedServiceProperties` + - Model `SapHanaTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SapHanaTableDatasetTypeProperties` + - Model `SapOdpLinkedService` moved instance variable `server`, `system_number`, `client_id`, `language`, `system_id`, `user_name`, `password`, `message_server`, `message_server_service`, `snc_mode`, `snc_my_name`, `snc_partner_name`, `snc_library_path`, `snc_qop`, `x509_certificate_path`, `logon_group`, `subscriber_name` and `encrypted_credential` under property `type_properties` whose type is `SapOdpLinkedServiceTypeProperties` + - Model `SapOdpResourceDataset` moved instance variable `context` and `object_name` under property `type_properties` whose type is `SapOdpResourceDatasetTypeProperties` + - Model `SapOpenHubLinkedService` moved instance variable `server`, `system_number`, `client_id`, `language`, `system_id`, `user_name`, `password`, `message_server`, `message_server_service`, `logon_group` and `encrypted_credential` under property `type_properties` whose type is `SapOpenHubLinkedServiceTypeProperties` + - Model `SapOpenHubTableDataset` moved instance variable `open_hub_destination_name`, `exclude_last_request` and `base_request_id` under property `type_properties` whose type is `SapOpenHubTableDatasetTypeProperties` + - Model `SapTableLinkedService` moved instance variable `server`, `system_number`, `client_id`, `language`, `system_id`, `user_name`, `password`, `message_server`, `message_server_service`, `snc_mode`, `snc_my_name`, `snc_partner_name`, `snc_library_path`, `snc_qop`, `logon_group` and `encrypted_credential` under property `type_properties` whose type is `SapTableLinkedServiceTypeProperties` + - Model `SapTableResourceDataset` moved instance variable `table_name` under property `type_properties` whose type is `SapTableResourceDatasetTypeProperties` + - Model `ScheduleTrigger` moved instance variable `recurrence` under property `type_properties` whose type is `ScheduleTriggerTypeProperties` + - Model `ScriptActivity` moved instance variable `script_block_execution_timeout`, `scripts`, `log_settings`, `return_multistatement_result` and `treat_decimal_as_string` under property `type_properties` whose type is `ScriptActivityTypeProperties` + - Model `SelfHostedIntegrationRuntime` moved instance variable `linked_info` and `self_contained_interactive_authoring_enabled` under property `type_properties` whose type is `SelfHostedIntegrationRuntimeTypeProperties` + - Model `SelfHostedIntegrationRuntimeStatus` moved instance variable `create_time`, `task_queue_id`, `internal_channel_encryption`, `version`, `nodes`, `scheduled_update_date`, `update_delay_offset`, `local_time_zone_offset`, `capabilities`, `service_urls`, `auto_update`, `version_status`, `links`, `pushed_version`, `latest_version`, `auto_update_eta` and `self_contained_interactive_authoring_enabled` under property `type_properties` whose type is `SelfHostedIntegrationRuntimeStatusTypeProperties` + - Model `ServiceNowLinkedService` moved instance variable `endpoint`, `authentication_type`, `username`, `password`, `client_id`, `client_secret`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ServiceNowLinkedServiceTypeProperties` + - Model `ServiceNowObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `ServiceNowV2LinkedService` moved instance variable `endpoint`, `authentication_type`, `username`, `password`, `client_id`, `client_secret`, `grant_type` and `encrypted_credential` under property `type_properties` whose type is `ServiceNowV2LinkedServiceTypeProperties` + - Model `ServiceNowV2ObjectDataset` moved instance variable `table_name` and `value_type` under property `type_properties` whose type is `ServiceNowV2DatasetTypeProperties` + - Model `ServicePrincipalCredential` moved instance variable `service_principal_id`, `service_principal_key` and `tenant` under property `type_properties` whose type is `ServicePrincipalCredentialTypeProperties` + - Model `SetVariableActivity` moved instance variable `variable_name`, `value` and `set_system_variable` under property `type_properties` whose type is `SetVariableActivityTypeProperties` + - Model `SftpServerLinkedService` moved instance variable `host`, `port`, `authentication_type`, `user_name`, `password`, `encrypted_credential`, `private_key_path`, `private_key_content`, `pass_phrase`, `skip_host_key_validation` and `host_key_fingerprint` under property `type_properties` whose type is `SftpServerLinkedServiceTypeProperties` + - Model `SharePointOnlineListLinkedService` moved instance variable `site_url`, `tenant_id`, `service_principal_id`, `service_principal_key`, `service_principal_credential_type`, `service_principal_embedded_cert`, `service_principal_embedded_cert_password` and `encrypted_credential` under property `type_properties` whose type is `SharePointOnlineListLinkedServiceTypeProperties` + - Model `SharePointOnlineListResourceDataset` moved instance variable `list_name` under property `type_properties` whose type is `SharePointOnlineListDatasetTypeProperties` + - Model `ShopifyLinkedService` moved instance variable `host`, `access_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ShopifyLinkedServiceTypeProperties` + - Model `ShopifyObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `SmartsheetLinkedService` moved instance variable `api_token` and `encrypted_credential` under property `type_properties` whose type is `SmartsheetLinkedServiceTypeProperties` + - Model `SnowflakeDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SnowflakeDatasetTypeProperties` + - Model `SnowflakeLinkedService` moved instance variable `connection_string`, `password` and `encrypted_credential` under property `type_properties` whose type is `SnowflakeLinkedServiceTypeProperties` + - Model `SnowflakeV2Dataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SnowflakeDatasetTypeProperties` + - Model `SnowflakeV2LinkedService` moved instance variable `account_identifier`, `user`, `password`, `database`, `warehouse`, `authentication_type`, `client_id`, `client_secret`, `tenant_id`, `scope`, `private_key`, `private_key_passphrase`, `role`, `host`, `schema`, `encrypted_credential` and `use_utc_timestamps` under property `type_properties` whose type is `SnowflakeLinkedV2ServiceTypeProperties` + - Model `SparkLinkedService` moved instance variable `host`, `port`, `server_type`, `thrift_transport_protocol`, `authentication_type`, `username`, `password`, `http_path`, `enable_ssl`, `enable_server_certificate_validation`, `trusted_cert_path`, `use_system_trust_store`, `allow_host_name_cn_mismatch`, `allow_self_signed_server_cert` and `encrypted_credential` under property `type_properties` whose type is `SparkLinkedServiceTypeProperties` + - Model `SparkObjectDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `SparkDatasetTypeProperties` + - Model `SqlDWUpsertSettings` renamed its instance variable `keys` to `keys_property` + - Model `SqlServerLinkedService` moved instance variable `server`, `database`, `encrypt`, `trust_server_certificate`, `host_name_in_certificate`, `application_intent`, `connect_timeout`, `connect_retry_count`, `connect_retry_interval`, `load_balance_timeout`, `command_timeout`, `integrated_security`, `failover_partner`, `max_pool_size`, `min_pool_size`, `multiple_active_result_sets`, `multi_subnet_failover`, `packet_size`, `pooling`, `connection_string`, `authentication_type`, `user_name`, `password`, `encrypted_credential`, `always_encrypted_settings` and `credential` under property `type_properties` whose type is `SqlServerLinkedServiceTypeProperties` + - Model `SqlServerStoredProcedureActivity` moved instance variable `stored_procedure_name` and `stored_procedure_parameters` under property `type_properties` whose type is `SqlServerStoredProcedureActivityTypeProperties` + - Model `SqlServerTableDataset` moved instance variable `table_name`, `schema_type_properties_schema` and `table` under property `type_properties` whose type is `SqlServerTableDatasetTypeProperties` + - Model `SqlUpsertSettings` renamed its instance variable `keys` to `keys_property` + - Model `SquareLinkedService` moved instance variable `connection_properties`, `host`, `client_id`, `client_secret`, `redirect_uri`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `SquareLinkedServiceTypeProperties` + - Model `SquareObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `SwitchActivity` moved instance variable `on`, `cases` and `default_activities` under property `type_properties` whose type is `SwitchActivityTypeProperties` + - Model `SybaseLinkedService` moved instance variable `server`, `database`, `schema`, `authentication_type`, `username`, `password` and `encrypted_credential` under property `type_properties` whose type is `SybaseLinkedServiceTypeProperties` + - Model `SybaseTableDataset` moved instance variable `table_name` under property `type_properties` whose type is `SybaseTableDatasetTypeProperties` + - Model `SynapseNotebookActivity` moved instance variable `notebook`, `spark_pool`, `parameters`, `executor_size`, `conf`, `driver_size`, `num_executors`, `configuration_type`, `target_spark_configuration` and `spark_config` under property `type_properties` whose type is `SynapseNotebookActivityTypeProperties` + - Model `SynapseSparkJobDefinitionActivity` moved instance variable `spark_job`, `arguments`, `file`, `scan_folder`, `class_name`, `files`, `python_code_reference`, `files_v2`, `target_big_data_pool`, `executor_size`, `conf`, `driver_size`, `num_executors`, `configuration_type`, `target_spark_configuration` and `spark_config` under property `type_properties` whose type is `SynapseSparkJobActivityTypeProperties` + - Model `TeamDeskLinkedService` moved instance variable `authentication_type`, `url`, `user_name`, `password`, `api_token` and `encrypted_credential` under property `type_properties` whose type is `TeamDeskLinkedServiceTypeProperties` + - Model `TeradataLinkedService` moved instance variable `connection_string`, `server`, `authentication_type`, `username`, `password`, `ssl_mode`, `port_number`, `https_port_number`, `use_data_encryption`, `character_set`, `max_resp_size` and `encrypted_credential` under property `type_properties` whose type is `TeradataLinkedServiceTypeProperties` + - Model `TeradataTableDataset` moved instance variable `database` and `table` under property `type_properties` whose type is `TeradataTableDatasetTypeProperties` + - Model `TumblingWindowTrigger` moved instance variable `frequency`, `interval`, `start_time`, `end_time`, `delay`, `max_concurrency`, `retry_policy` and `depends_on` under property `type_properties` whose type is `TumblingWindowTriggerTypeProperties` + - Model `TwilioLinkedService` moved instance variable `user_name` and `password` under property `type_properties` whose type is `TwilioLinkedServiceTypeProperties` + - Model `UntilActivity` moved instance variable `expression`, `timeout` and `activities` under property `type_properties` whose type is `UntilActivityTypeProperties` + - Model `ValidationActivity` moved instance variable `timeout`, `sleep`, `minimum_size`, `child_items` and `dataset` under property `type_properties` whose type is `ValidationActivityTypeProperties` + - Model `VerticaLinkedService` moved instance variable `connection_string`, `server`, `port`, `uid`, `database`, `pwd` and `encrypted_credential` under property `type_properties` whose type is `VerticaLinkedServiceTypeProperties` + - Model `VerticaTableDataset` moved instance variable `table_name`, `table` and `schema_type_properties_schema` under property `type_properties` whose type is `VerticaDatasetTypeProperties` + - Model `WaitActivity` moved instance variable `wait_time_in_seconds` under property `type_properties` whose type is `WaitActivityTypeProperties` + - Model `WarehouseLinkedService` moved instance variable `artifact_id`, `endpoint`, `workspace_id`, `authentication_type`, `service_principal_id`, `service_principal_key`, `tenant`, `encrypted_credential`, `service_principal_credential_type`, `service_principal_credential` and `credential` under property `type_properties` whose type is `WarehouseLinkedServiceTypeProperties` + - Model `WarehouseTableDataset` moved instance variable `schema_type_properties_schema` and `table` under property `type_properties` whose type is `WarehouseTableDatasetTypeProperties` + - Model `WebActivity` moved instance variable `method`, `url`, `headers`, `body`, `authentication`, `disable_cert_validation`, `http_request_timeout`, `turn_off_async`, `datasets`, `linked_services` and `connect_via` under property `type_properties` whose type is `WebActivityTypeProperties` + - Model `WebHookActivity` moved instance variable `method`, `url`, `timeout`, `headers`, `body`, `authentication` and `report_status_on_call_back` under property `type_properties` whose type is `WebHookActivityTypeProperties` + - Model `WebTableDataset` moved instance variable `index` and `path` under property `type_properties` whose type is `WebTableDatasetTypeProperties` + - Model `WranglingDataFlow` moved instance variable `sources`, `script` and `document_locale` under property `type_properties` whose type is `PowerQueryTypeProperties` + - Model `XeroLinkedService` moved instance variable `connection_properties`, `host`, `consumer_key`, `private_key`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `XeroLinkedServiceTypeProperties` + - Model `XeroObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Model `XmlDataset` moved instance variable `location`, `encoding_name`, `null_value` and `compression` under property `type_properties` whose type is `XmlDatasetTypeProperties` + - Model `ZendeskLinkedService` moved instance variable `authentication_type`, `url`, `user_name`, `password`, `api_token` and `encrypted_credential` under property `type_properties` whose type is `ZendeskLinkedServiceTypeProperties` + - Model `ZohoLinkedService` moved instance variable `connection_properties`, `endpoint`, `access_token`, `use_encrypted_endpoints`, `use_host_verification`, `use_peer_verification` and `encrypted_credential` under property `type_properties` whose type is `ZohoLinkedServiceTypeProperties` + - Model `ZohoObjectDataset` moved instance variable `table_name` under property `type_properties` whose type is `GenericDatasetTypeProperties` + - Method `ChangeDataCaptureOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `ChangeDataCaptureOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `CredentialOperationsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `CredentialOperationsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `DataFlowsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `DataFlowsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `DatasetsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `DatasetsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `FactoriesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `FactoriesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `IntegrationRuntimesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `IntegrationRuntimesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `LinkedServicesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `LinkedServicesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedPrivateEndpointsOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedPrivateEndpointsOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedVirtualNetworksOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `ManagedVirtualNetworksOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `PipelineRunsOperations.cancel` changed its parameter `is_recursive` from `positional_or_keyword` to `keyword_only` + - Method `PipelinesOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `PipelinesOperations.create_run` changed its parameter `reference_pipeline_run_id`/`is_recovery`/`start_activity_name`/`start_from_failure` from `positional_or_keyword` to `keyword_only` + - Method `PipelinesOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `PrivateEndpointConnectionOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `PrivateEndpointConnectionOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + - Method `TriggersOperations.create_or_update` replaced positional_or_keyword parameter `if_match` to keyword_only parameter `etag`/`match_condition` + - Method `TriggersOperations.get` replaced positional_or_keyword parameter `if_none_match` to keyword_only parameter `etag`/`match_condition` + +### Other Changes + + - Deleted model `ChangeDataCaptureListResponse`/`CredentialListResponse`/`DataFlowListResponse`/`DatasetListResponse`/`FactoryListResponse`/`GlobalParameterListResponse`/`IntegrationRuntimeListResponse`/`IntegrationRuntimeStatusListResponse`/`LinkedServiceListResponse`/`ManagedPrivateEndpointListResponse`/`ManagedVirtualNetworkListResponse`/`OperationListResponse`/`PipelineListResponse`/`PrivateEndpointConnectionListResponse`/`QueryDataFlowDebugSessionsResponse`/`TriggerListResponse` which actually were not used by SDK users + - Deleted model `CopyTranslator`/`GetDataFactoryOperationStatusResponse`/`TabularTranslator`/`TypeConversionSettings`/`AdditionalColumns`/`DatasetDataElement`/`DatasetSchemaDataElement`/`OutputColumn`/`StoredProcedureParameter` which actually were not used by SDK users + - Deleted enum `AmazonRdsForOraclePartitionOption`/`AvroCompressionCodec`/`CompressionCodec`/`CopyBehaviorType`/`DatasetCompressionLevel`/`DynamicsAuthenticationType`/`DynamicsDeploymentType`/`HdiNodeTypes`/`JsonFormatFilePattern`/`JsonWriteFilePattern`/`NetezzaPartitionOption`/`OraclePartitionOption`/`OrcCompressionCodec`/`SalesforceSourceReadBehavior`/`SapHanaPartitionOption`/`SapTablePartitionOption`/`ServicePrincipalCredentialType`/`SqlPartitionOption`/`StoredProcedureParameterType`/`TeradataPartitionOption`/`ScriptType`/`SqlDWWriteBehaviorEnum`/`SqlWriteBehaviorEnum` which actually were not used by SDK users + +## 9.3.0 (2026-03-10) + +### Features Added + + - Model `DataFactoryManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `DataFactoryManagementClient` added operation group `integration_runtime` + - Model `AmazonRdsForOracleLinkedService` added property `server` + - Model `AmazonRdsForOracleLinkedService` added property `authentication_type` + - Model `AmazonRdsForOracleLinkedService` added property `username` + - Model `AmazonRdsForOracleLinkedService` added property `encryption_client` + - Model `AmazonRdsForOracleLinkedService` added property `encryption_types_client` + - Model `AmazonRdsForOracleLinkedService` added property `crypto_checksum_client` + - Model `AmazonRdsForOracleLinkedService` added property `crypto_checksum_types_client` + - Model `AmazonRdsForOracleLinkedService` added property `initial_lob_fetch_size` + - Model `AmazonRdsForOracleLinkedService` added property `fetch_size` + - Model `AmazonRdsForOracleLinkedService` added property `statement_cache_size` + - Model `AmazonRdsForOracleLinkedService` added property `initialization_string` + - Model `AmazonRdsForOracleLinkedService` added property `enable_bulk_load` + - Model `AmazonRdsForOracleLinkedService` added property `support_v1_data_types` + - Model `AmazonRdsForOracleLinkedService` added property `fetch_tswtz_as_timestamp` + - Model `AmazonRdsForOracleSource` added property `number_precision` + - Model `AmazonRdsForOracleSource` added property `number_scale` + - Model `AzureDatabricksLinkedService` added property `data_security_mode` + - Model `HDInsightLinkedService` added property `cluster_auth_type` + - Model `HDInsightLinkedService` added property `credential` + - Model `HDInsightOnDemandLinkedService` added property `cluster_resource_group_auth_type` + - Model `HiveLinkedService` added property `enable_server_certificate_validation` + - Model `ImpalaLinkedService` added property `thrift_transport_protocol` + - Model `ImpalaLinkedService` added property `enable_server_certificate_validation` + - Model `JiraObjectDataset` added property `schema_type_properties_schema` + - Model `JiraObjectDataset` added property `table` + - Model `LakeHouseLinkedService` added property `authentication_type` + - Model `LakeHouseLinkedService` added property `credential` + - Model `LookupActivity` added property `treat_decimal_as_string` + - Model `ManagedIntegrationRuntime` added property `interactive_query` + - Model `NetezzaLinkedService` added property `server` + - Model `NetezzaLinkedService` added property `port` + - Model `NetezzaLinkedService` added property `uid` + - Model `NetezzaLinkedService` added property `database` + - Model `NetezzaLinkedService` added property `security_level` + - Model `Office365LinkedService` added property `service_principal_credential_type` + - Model `Office365LinkedService` added property `service_principal_embedded_cert` + - Model `Office365LinkedService` added property `service_principal_embedded_cert_password` + - Model `OracleSource` added property `number_precision` + - Model `OracleSource` added property `number_scale` + - Model `QuickBooksLinkedService` added property `refresh_token` + - Model `SalesforceV2Source` added property `partition_option` + - Model `ScriptActivity` added property `treat_decimal_as_string` + - Model `SnowflakeV2LinkedService` added property `role` + - Model `SnowflakeV2LinkedService` added property `schema` + - Model `SnowflakeV2LinkedService` added property `use_utc_timestamps` + - Model `SparkLinkedService` added property `enable_server_certificate_validation` + - Model `WarehouseLinkedService` added property `authentication_type` + - Model `WarehouseLinkedService` added property `credential` + - Added enum `AmazonRdsForOracleAuthenticationType` + - Added model `DatabricksJobActivity` + - Added model `EnableInteractiveQueryRequest` + - Added model `ErrorAdditionalInfo` + - Added model `ErrorDetail` + - Added model `ErrorResponse` + - Added enum `HDInsightClusterAuthenticationType` + - Added enum `HDInsightOndemandClusterResourceGroupAuthenticationType` + - Added enum `ImpalaThriftTransportProtocol` + - Added enum `InteractiveCapabilityStatus` + - Added model `InteractiveQueryProperties` + - Added enum `LakehouseAuthenticationType` + - Added enum `NetezzaSecurityLevelType` + - Added enum `WarehouseAuthenticationType` + +## 9.2.0 (2025-04-20) + +### Features Added + + - Model AzurePostgreSqlLinkedService has a new parameter azure_cloud_type + - Model AzurePostgreSqlLinkedService has a new parameter credential + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_credential_type + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_embedded_cert + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_embedded_cert_password + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_id + - Model AzurePostgreSqlLinkedService has a new parameter service_principal_key + - Model AzurePostgreSqlLinkedService has a new parameter tenant + - Model AzurePostgreSqlSink has a new parameter upsert_settings + - Model AzurePostgreSqlSink has a new parameter write_method + - Model CommonDataServiceForAppsSink has a new parameter bypass_business_logic_execution + - Model CommonDataServiceForAppsSink has a new parameter bypass_power_automate_flows + - Model DynamicsCrmSink has a new parameter bypass_business_logic_execution + - Model DynamicsCrmSink has a new parameter bypass_power_automate_flows + - Model DynamicsSink has a new parameter bypass_business_logic_execution + - Model DynamicsSink has a new parameter bypass_power_automate_flows + - Model GreenplumLinkedService has a new parameter authentication_type + - Model GreenplumLinkedService has a new parameter command_timeout + - Model GreenplumLinkedService has a new parameter connection_timeout + - Model GreenplumLinkedService has a new parameter database + - Model GreenplumLinkedService has a new parameter host + - Model GreenplumLinkedService has a new parameter port + - Model GreenplumLinkedService has a new parameter ssl_mode + - Model GreenplumLinkedService has a new parameter username + - Model Office365LinkedService has a new parameter service_principal_credential_type + - Model Office365LinkedService has a new parameter service_principal_embedded_cert + - Model Office365LinkedService has a new parameter service_principal_embedded_cert_password + - Model OracleLinkedService has a new parameter authentication_type + - Model OracleLinkedService has a new parameter crypto_checksum_client + - Model OracleLinkedService has a new parameter crypto_checksum_types_client + - Model OracleLinkedService has a new parameter enable_bulk_load + - Model OracleLinkedService has a new parameter encryption_client + - Model OracleLinkedService has a new parameter encryption_types_client + - Model OracleLinkedService has a new parameter fetch_size + - Model OracleLinkedService has a new parameter fetch_tswtz_as_timestamp + - Model OracleLinkedService has a new parameter initial_lob_fetch_size + - Model OracleLinkedService has a new parameter initialization_string + - Model OracleLinkedService has a new parameter server + - Model OracleLinkedService has a new parameter statement_cache_size + - Model OracleLinkedService has a new parameter support_v1_data_types + - Model OracleLinkedService has a new parameter username + - Model PrestoLinkedService has a new parameter enable_server_certificate_validation + - Model ScriptActivity has a new parameter return_multistatement_result + - Model ServiceNowV2ObjectDataset has a new parameter value_type + - Model SnowflakeV2LinkedService has a new parameter role + - Model SnowflakeV2LinkedService has a new parameter schema + - Model TeradataLinkedService has a new parameter character_set + - Model TeradataLinkedService has a new parameter https_port_number + - Model TeradataLinkedService has a new parameter max_resp_size + - Model TeradataLinkedService has a new parameter port_number + - Model TeradataLinkedService has a new parameter ssl_mode + - Model TeradataLinkedService has a new parameter use_data_encryption + - Model TypeConversionSettings has a new parameter date_format + - Model TypeConversionSettings has a new parameter time_format + +## 9.1.0 (2024-12-16) + +### Features Added + + - Model `AzurePostgreSqlLinkedService` added property `server` + - Model `AzurePostgreSqlLinkedService` added property `port` + - Model `AzurePostgreSqlLinkedService` added property `username` + - Model `AzurePostgreSqlLinkedService` added property `database` + - Model `AzurePostgreSqlLinkedService` added property `ssl_mode` + - Model `AzurePostgreSqlLinkedService` added property `timeout` + - Model `AzurePostgreSqlLinkedService` added property `command_timeout` + - Model `AzurePostgreSqlLinkedService` added property `trust_server_certificate` + - Model `AzurePostgreSqlLinkedService` added property `read_buffer_size` + - Model `AzurePostgreSqlLinkedService` added property `timezone` + - Model `AzurePostgreSqlLinkedService` added property `encoding` + - Model `MariaDBLinkedService` added property `ssl_mode` + - Model `MariaDBLinkedService` added property `use_system_trust_store` + - Model `MySqlLinkedService` added property `allow_zero_date_time` + - Model `MySqlLinkedService` added property `connection_timeout` + - Model `MySqlLinkedService` added property `convert_zero_date_time` + - Model `MySqlLinkedService` added property `guid_format` + - Model `MySqlLinkedService` added property `ssl_cert` + - Model `MySqlLinkedService` added property `ssl_key` + - Model `MySqlLinkedService` added property `treat_tiny_as_boolean` + - Model `PostgreSqlV2LinkedService` added property `authentication_type` + - Model `SalesforceV2Source` added property `page_size` + - Model `ServiceNowV2Source` added property `page_size` + - Model `SnowflakeV2LinkedService` added property `host` + - Added model `IcebergDataset` + - Added model `IcebergSink` + - Added model `IcebergWriteSettings` + +> Changelog entries prior to 9.1.0 were removed to reduce file size. See https://pypi.org/project/azure-mgmt-datafactory/9.1.0/ for the older history. diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-network-31.0.0-CHANGELOG.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-network-31.0.0-CHANGELOG.md new file mode 100644 index 000000000000..218f241341c0 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-network-31.0.0-CHANGELOG.md @@ -0,0 +1,2513 @@ +# Release History + +## 31.0.0 (2026-06-29) + +### Features Added + + - Client `NetworkManagementClient` added method `send_request` + - Client `NetworkManagementClient` added operation group `commits` + - Client `NetworkManagementClient` added operation group `connection_policies` + - Client `NetworkManagementClient` added operation group `interconnect_groups` + - Client `NetworkManagementClient` added operation group `subgroups` + - Model `DdosSettings` added property `ddos_custom_policy` + - Enum `NextHopType` added member `VIRTUAL_APPLIANCE_ECMP` + - Enum `RouteNextHopType` added member `VIRTUAL_APPLIANCE_ECMP` + - Added model `AfcConfiguration` + - Added model `ApplicationGatewayManagedHsm` + - Added model `CloudError` + - Added model `Commit` + - Added model `CommitProperties` + - Added model `ConnectionPolicy` + - Added model `ConnectionPolicyProperties` + - Added model `DdosFrontendIpConfigurationSettings` + - Added model `DefaultRuleSetPropertyFormat` + - Added enum `DisablePeeringRoute` + - Added enum `ExpressRouteFailoverBgpStatusAddressFamily` + - Added enum `ExpressRouteFailoverLinkType` + - Added model `ExpressRouteLinkFailoverAllTestsDetails` + - Added enum `ExpressRouteLinkFailoverBgpStatus` + - Added model `ExpressRouteLinkFailoverRoute` + - Added model `ExpressRouteLinkFailoverRouteList` + - Added model `ExpressRouteLinkFailoverSingleTestDetails` + - Added model `ExpressRouteLinkFailoverStopApiParameters` + - Added model `ExpressRouteLinkFailoverTestBgpStatus` + - Added model `InterconnectGroup` + - Added model `InterconnectGroupNodeAvailability` + - Added model `InterconnectGroupPropertiesFormat` + - Added enum `InterconnectGroupScope` + - Added enum `LoadBalancerDetailLevel` + - Added enum `MaintenanceTestCategory` + - Added model `ManagedServiceIdentityUserAssignedIdentities` + - Added enum `Nat64State` + - Added enum `NspReadinessState` + - Added enum `PrivateEndpointBillingSku` + - Added model `ProxyResourceWithReadOnlyID` + - Added model `ProxyResourceWithSettableId` + - Added model `ReadOnlySubResourceModel` + - Added model `RouteNextHopEcmp` + - Added model `SecurityPerimeterTrackedResource` + - Added model `StopCircuitLinkFailoverTestParameterBody` + - Added model `StopSiteFailoverTestParameterBody` + - Added model `SubResourceModel` + - Added model `Subgroup` + - Added model `SubgroupNodeAvailabilityEntry` + - Added model `SubgroupProfile` + - Added enum `SubgroupProfileScope` + - Added model `SubgroupProperties` + - Added model `TrackedResourceWithEtag` + - Added model `TrackedResourceWithOptionalLocation` + - Added model `TrackedResourceWithSettableIdOptionalLocation` + - Added model `TrackedResourceWithSettableName` + - Added enum `VirtualNetworkApplianceIpVersionType` + - Added model `WritableResource` + - Operation group `AzureFirewallsOperations` added parameter `create_afc_control_plane` in method `begin_create_or_update` + - Operation group `DdosCustomPoliciesOperations` added method `list` + - Operation group `DdosCustomPoliciesOperations` added method `list_all` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_get_circuit_link_failover_all_tests_details` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_get_circuit_link_failover_single_test_details` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_start_circuit_link_failover_test` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_stop_circuit_link_failover_test` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_failover_all_tests_details` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_failover_single_test_details` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_resiliency_information` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_routes_information` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_start_site_failover_test` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_stop_site_failover_test` + - Operation group `LoadBalancersOperations` added parameter `detail_level` in method `get` + - Added operation group `CommitsOperations` + - Added operation group `ConnectionPoliciesOperations` + - Added operation group `InterconnectGroupsOperations` + - Added operation group `SubgroupsOperations` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Method `IpamPoolsOperations.begin_create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `NetworkGroupsOperations.create_or_update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Model `ConnectionMonitorEndpointFilter` renamed its instance variable `items` to `items_property` + - Model `ExceptionEntry` renamed its instance variable `values` to `values_property` + - Model `FilterItems` renamed its instance variable `values` to `values_property` + - Model `PolicySettings` renamed its instance variable `captcha_cookie_expiration_in_mins` to `captcha_expiration_in_mins` + - Model `ServiceTagsListResult` renamed its instance variable `values` to `values_property` + - Model `ActiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` whose type is `ConnectivityConfigurationProperties` + - Model `ActiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `ActiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `AdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `AdminRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminRuleCollectionPropertiesFormat` + - Model `ApplicationGateway` moved instance variable `sku`, `ssl_policy`, `operational_state`, `gateway_ip_configurations`, `authentication_certificates`, `trusted_root_certificates`, `trusted_client_certificates`, `ssl_certificates`, `frontend_ip_configurations`, `frontend_ports`, `probes`, `backend_address_pools`, `backend_http_settings_collection`, `backend_settings_collection`, `http_listeners`, `listeners`, `ssl_profiles`, `url_path_maps`, `request_routing_rules`, `routing_rules`, `rewrite_rule_sets`, `redirect_configurations`, `web_application_firewall_configuration`, `firewall_policy`, `enable_http2`, `enable_fips`, `autoscale_configuration`, `private_link_configurations`, `private_endpoint_connections`, `resource_guid`, `provisioning_state`, `custom_error_configurations`, `force_firewall_policy_association`, `load_distribution_policies`, `entra_jwt_validation_configs`, `global_configuration` and `default_predefined_ssl_policy` under property `properties` whose type is `ApplicationGatewayPropertiesFormat` + - Model `ApplicationGatewayAuthenticationCertificate` moved instance variable `data` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayAuthenticationCertificatePropertiesFormat` + - Model `ApplicationGatewayAvailableSslOptions` moved instance variable `predefined_policies`, `default_policy`, `available_cipher_suites` and `available_protocols` under property `properties` whose type is `ApplicationGatewayAvailableSslOptionsPropertiesFormat` + - Model `ApplicationGatewayBackendAddressPool` moved instance variable `backend_ip_configurations`, `backend_addresses` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendAddressPoolPropertiesFormat` + - Model `ApplicationGatewayBackendHttpSettings` moved instance variable `port`, `protocol`, `cookie_based_affinity`, `request_timeout`, `probe`, `authentication_certificates`, `trusted_root_certificates`, `connection_draining`, `host_name`, `pick_host_name_from_backend_address`, `affinity_cookie_name`, `probe_enabled`, `path`, `dedicated_backend_connection`, `validate_cert_chain_and_expiry`, `validate_sni`, `sni_name` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendHttpSettingsPropertiesFormat` + - Model `ApplicationGatewayBackendSettings` moved instance variable `port`, `protocol`, `timeout`, `probe`, `trusted_root_certificates`, `host_name`, `pick_host_name_from_backend_address`, `enable_l4_client_ip_preservation` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendSettingsPropertiesFormat` + - Model `ApplicationGatewayEntraJWTValidationConfig` moved instance variable `un_authorized_request_action`, `tenant_id`, `client_id`, `audiences` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayEntraJWTValidationConfigPropertiesFormat` + - Model `ApplicationGatewayFirewallRuleSet` moved instance variable `provisioning_state`, `rule_set_type`, `rule_set_version`, `rule_groups` and `tiers` under property `properties` whose type is `ApplicationGatewayFirewallRuleSetPropertiesFormat` + - Model `ApplicationGatewayFrontendIPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_link_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayFrontendPort` moved instance variable `port` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendPortPropertiesFormat` + - Model `ApplicationGatewayHttpListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `host_name`, `ssl_certificate`, `ssl_profile`, `require_server_name_indication`, `provisioning_state`, `custom_error_configurations`, `firewall_policy` and `host_names` under property `properties` whose type is `ApplicationGatewayHttpListenerPropertiesFormat` + - Model `ApplicationGatewayIPConfiguration` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `ssl_certificate`, `ssl_profile`, `provisioning_state` and `host_names` under property `properties` whose type is `ApplicationGatewayListenerPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionPolicy` moved instance variable `load_distribution_targets`, `load_distribution_algorithm` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayLoadDistributionPolicyPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionTarget` moved instance variable `weight_per_server` and `backend_address_pool` under property `properties` whose type is `ApplicationGatewayLoadDistributionTargetPropertiesFormat` + - Model `ApplicationGatewayPathRule` moved instance variable `paths`, `backend_address_pool`, `backend_http_settings`, `redirect_configuration`, `rewrite_rule_set`, `load_distribution_policy`, `provisioning_state` and `firewall_policy` under property `properties` whose type is `ApplicationGatewayPathRulePropertiesFormat` + - Model `ApplicationGatewayPrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state`, `provisioning_state` and `link_identifier` under property `properties` whose type is `ApplicationGatewayPrivateEndpointConnectionProperties` + - Model `ApplicationGatewayPrivateLinkConfiguration` moved instance variable `ip_configurations` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayPrivateLinkConfigurationProperties` + - Model `ApplicationGatewayPrivateLinkIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `primary` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayPrivateLinkIpConfigurationProperties` + - Model `ApplicationGatewayPrivateLinkResource` moved instance variable `group_id`, `required_members` and `required_zone_names` under property `properties` whose type is `ApplicationGatewayPrivateLinkResourceProperties` + - Model `ApplicationGatewayProbe` moved instance variable `protocol`, `host`, `path`, `interval`, `timeout`, `unhealthy_threshold`, `pick_host_name_from_backend_http_settings`, `pick_host_name_from_backend_settings`, `min_servers`, `match`, `enable_probe_proxy_protocol_header`, `provisioning_state` and `port` under property `properties` whose type is `ApplicationGatewayProbePropertiesFormat` + - Model `ApplicationGatewayRedirectConfiguration` moved instance variable `redirect_type`, `target_listener`, `target_url`, `include_path`, `include_query_string`, `request_routing_rules`, `url_path_maps` and `path_rules` under property `properties` whose type is `ApplicationGatewayRedirectConfigurationPropertiesFormat` + - Model `ApplicationGatewayRequestRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_http_settings`, `http_listener`, `url_path_map`, `rewrite_rule_set`, `redirect_configuration`, `load_distribution_policy`, `entra_jwt_validation_config` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRequestRoutingRulePropertiesFormat` + - Model `ApplicationGatewayRewriteRuleSet` moved instance variable `rewrite_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRewriteRuleSetPropertiesFormat` + - Model `ApplicationGatewayRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_settings`, `listener` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRoutingRulePropertiesFormat` + - Model `ApplicationGatewaySslCertificate` moved instance variable `data`, `password`, `public_cert_data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslCertificatePropertiesFormat` + - Model `ApplicationGatewaySslPredefinedPolicy` moved instance variable `cipher_suites` and `min_protocol_version` under property `properties` whose type is `ApplicationGatewaySslPredefinedPolicyPropertiesFormat` + - Model `ApplicationGatewaySslProfile` moved instance variable `trusted_client_certificates`, `ssl_policy`, `client_auth_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslProfilePropertiesFormat` + - Model `ApplicationGatewayTrustedClientCertificate` moved instance variable `data`, `validated_cert_data`, `client_cert_issuer_dn` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedClientCertificatePropertiesFormat` + - Model `ApplicationGatewayTrustedRootCertificate` moved instance variable `data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedRootCertificatePropertiesFormat` + - Model `ApplicationGatewayUrlPathMap` moved instance variable `default_backend_address_pool`, `default_backend_http_settings`, `default_rewrite_rule_set`, `default_redirect_configuration`, `default_load_distribution_policy`, `path_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayUrlPathMapPropertiesFormat` + - Model `ApplicationGatewayWafDynamicManifestResult` moved instance variable `available_rule_sets`, `rule_set_type` and `rule_set_version` under property `properties` whose type is `ApplicationGatewayWafDynamicManifestPropertiesResult` + - Model `ApplicationSecurityGroup` moved instance variable `resource_guid` and `provisioning_state` under property `properties` whose type is `ApplicationSecurityGroupPropertiesFormat` + - Model `AzureFirewall` moved instance variable `application_rule_collections`, `nat_rule_collections`, `network_rule_collections`, `ip_configurations`, `management_ip_configuration`, `provisioning_state`, `threat_intel_mode`, `virtual_hub`, `firewall_policy`, `hub_ip_addresses`, `ip_groups`, `sku` and `autoscale_configuration` under property `properties` whose type is `AzureFirewallPropertiesFormat` + - Model `AzureFirewallApplicationRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallApplicationRuleCollectionPropertiesFormat` + - Model `AzureFirewallFqdnTag` moved instance variable `provisioning_state` and `fqdn_tag_name` under property `properties` whose type is `AzureFirewallFqdnTagPropertiesFormat` + - Model `AzureFirewallIPConfiguration` moved instance variable `private_ip_address`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `AzureFirewallIPConfigurationPropertiesFormat` + - Model `AzureFirewallNatRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallNatRuleCollectionProperties` + - Model `AzureFirewallNetworkRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallNetworkRuleCollectionPropertiesFormat` + - Model `AzureWebCategory` moved instance variable `group` under property `properties` whose type is `AzureWebCategoryPropertiesFormat` + - Model `BackendAddressPool` moved instance variable `location`, `tunnel_interfaces`, `load_balancer_backend_addresses`, `backend_ip_configurations`, `load_balancing_rules`, `outbound_rule`, `outbound_rules`, `inbound_nat_rules`, `provisioning_state`, `drain_period_in_seconds`, `virtual_network` and `sync_mode` under property `properties` whose type is `BackendAddressPoolPropertiesFormat` + - Model `BastionHost` moved instance variable `ip_configurations`, `dns_name`, `virtual_network`, `network_acls`, `provisioning_state`, `scale_units`, `disable_copy_paste`, `enable_file_copy`, `enable_ip_connect`, `enable_shareable_link`, `enable_tunneling`, `enable_kerberos`, `enable_session_recording` and `enable_private_only_bastion` under property `properties` whose type is `BastionHostPropertiesFormat` + - Model `BastionHostIPConfiguration` moved instance variable `subnet`, `public_ip_address`, `provisioning_state` and `private_ip_allocation_method` under property `properties` whose type is `BastionHostIPConfigurationPropertiesFormat` + - Model `BgpConnection` moved instance variable `peer_asn`, `peer_ip`, `hub_virtual_network_connection`, `provisioning_state` and `connection_state` under property `properties` whose type is `BgpConnectionProperties` + - Model `BgpServiceCommunity` moved instance variable `service_name` and `bgp_communities` under property `properties` whose type is `BgpServiceCommunityPropertiesFormat` + - Model `ConfigurationGroup` moved instance variable `description`, `member_type`, `provisioning_state` and `resource_guid` under property `properties` whose type is `NetworkGroupProperties` + - Model `ConnectionMonitor` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs` and `notes` under property `properties` whose type is `ConnectionMonitorParameters` + - Model `ConnectionMonitorResult` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs`, `notes`, `provisioning_state`, `start_time`, `monitoring_status` and `connection_monitor_type` under property `properties` whose type is `ConnectionMonitorResultProperties` + - Model `ConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` whose type is `ConnectivityConfigurationProperties` + - Model `ContainerNetworkInterface` moved instance variable `container_network_interface_configuration`, `container`, `ip_configurations` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfacePropertiesFormat` + - Model `ContainerNetworkInterfaceConfiguration` moved instance variable `ip_configurations`, `container_network_interfaces` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceConfigurationPropertiesFormat` + - Model `ContainerNetworkInterfaceIpConfiguration` moved instance variable `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceIpConfigurationPropertiesFormat` + - Model `CustomIpPrefix` moved instance variable `asn`, `cidr`, `signed_message`, `authorization_message`, `custom_ip_prefix_parent`, `child_custom_ip_prefixes`, `commissioned_state`, `express_route_advertise`, `geo`, `no_internet_advertise`, `prefix_type`, `public_ip_prefixes`, `resource_guid`, `failed_reason` and `provisioning_state` under property `properties` whose type is `CustomIpPrefixPropertiesFormat` + - Model `DdosCustomPolicy` moved instance variable `resource_guid`, `provisioning_state`, `detection_rules` and `front_end_ip_configuration` under property `properties` whose type is `DdosCustomPolicyPropertiesFormat` + - Model `DdosDetectionRule` moved instance variable `provisioning_state`, `detection_mode` and `traffic_detection_rule` under property `properties` whose type is `DdosDetectionRulePropertiesFormat` + - Model `DdosProtectionPlan` moved instance variable `resource_guid`, `provisioning_state`, `public_ip_addresses` and `virtual_networks` under property `properties` whose type is `DdosProtectionPlanPropertiesFormat` + - Model `DefaultAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `Delegation` moved instance variable `service_name`, `actions` and `provisioning_state` under property `properties` whose type is `ServiceDelegationPropertiesFormat` + - Model `DscpConfiguration` moved instance variable `markings`, `source_ip_ranges`, `destination_ip_ranges`, `source_port_ranges`, `destination_port_ranges`, `protocol`, `qos_definition_collection`, `qos_collection_id`, `associated_network_interfaces`, `resource_guid` and `provisioning_state` under property `properties` whose type is `DscpConfigurationPropertiesFormat` + - Model `EffectiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` whose type is `ConnectivityConfigurationProperties` + - Model `EffectiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `EffectiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `ExpressRouteCircuit` moved instance variable `allow_classic_operations`, `circuit_provisioning_state`, `service_provider_provisioning_state`, `authorizations`, `peerings`, `service_key`, `service_provider_notes`, `service_provider_properties`, `express_route_port`, `bandwidth_in_gbps`, `stag`, `provisioning_state`, `gateway_manager_etag`, `global_reach_enabled`, `authorization_key`, `authorization_status` and `enable_direct_port_rate_limit` under property `properties` whose type is `ExpressRouteCircuitPropertiesFormat` + - Model `ExpressRouteCircuitAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `connection_resource_uri` and `provisioning_state` under property `properties` whose type is `AuthorizationPropertiesFormat` + - Model `ExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `authorization_key`, `ipv6_circuit_connection_config`, `circuit_connection_status` and `provisioning_state` under property `properties` whose type is `ExpressRouteCircuitConnectionPropertiesFormat` + - Model `ExpressRouteCircuitPeering` moved instance variable `peering_type`, `state`, `azure_asn`, `peer_asn`, `primary_peer_address_prefix`, `secondary_peer_address_prefix`, `primary_azure_port`, `secondary_azure_port`, `shared_key`, `vlan_id`, `microsoft_peering_config`, `stats`, `provisioning_state`, `gateway_manager_etag`, `last_modified_by`, `route_filter`, `ipv6_peering_config`, `express_route_connection`, `connections` and `peered_connections` under property `properties` whose type is `ExpressRouteCircuitPeeringPropertiesFormat` + - Model `ExpressRouteConnection` moved instance variable `provisioning_state`, `express_route_circuit_peering`, `authorization_key`, `routing_weight`, `enable_internet_security`, `express_route_gateway_bypass`, `enable_private_link_fast_path` and `routing_configuration` under property `properties` whose type is `ExpressRouteConnectionProperties` + - Model `ExpressRouteCrossConnection` moved instance variable `primary_azure_port`, `secondary_azure_port`, `s_tag`, `peering_location`, `bandwidth_in_mbps`, `express_route_circuit`, `service_provider_provisioning_state`, `service_provider_notes`, `provisioning_state` and `peerings` under property `properties` whose type is `ExpressRouteCrossConnectionProperties` + - Model `ExpressRouteCrossConnectionPeering` moved instance variable `peering_type`, `state`, `azure_asn`, `peer_asn`, `primary_peer_address_prefix`, `secondary_peer_address_prefix`, `primary_azure_port`, `secondary_azure_port`, `shared_key`, `vlan_id`, `microsoft_peering_config`, `provisioning_state`, `gateway_manager_etag`, `last_modified_by` and `ipv6_peering_config` under property `properties` whose type is `ExpressRouteCrossConnectionPeeringProperties` + - Model `ExpressRouteGateway` moved instance variable `auto_scale_configuration`, `express_route_connections`, `provisioning_state`, `virtual_hub` and `allow_non_virtual_wan_traffic` under property `properties` whose type is `ExpressRouteGatewayProperties` + - Model `ExpressRouteLink` moved instance variable `router_name`, `interface_name`, `patch_panel_id`, `rack_id`, `colo_location`, `connector_type`, `admin_state`, `provisioning_state` and `mac_sec_config` under property `properties` whose type is `ExpressRouteLinkPropertiesFormat` + - Model `ExpressRoutePort` moved instance variable `peering_location`, `bandwidth_in_gbps`, `provisioned_bandwidth_in_gbps`, `mtu`, `encapsulation`, `ether_type`, `allocation_date`, `links`, `circuits`, `provisioning_state`, `resource_guid` and `billing_type` under property `properties` whose type is `ExpressRoutePortPropertiesFormat` + - Model `ExpressRoutePortAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `circuit_resource_uri` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortAuthorizationPropertiesFormat` + - Model `ExpressRoutePortsLocation` moved instance variable `address`, `contact`, `available_bandwidths` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortsLocationPropertiesFormat` + - Model `ExpressRouteProviderPort` moved instance variable `port_pair_descriptor`, `primary_azure_port`, `secondary_azure_port`, `peering_location`, `overprovision_factor`, `port_bandwidth_in_mbps`, `used_bandwidth_in_mbps` and `remaining_bandwidth_in_mbps` under property `properties` whose type is `ExpressRouteProviderPortProperties` + - Model `ExpressRouteServiceProvider` moved instance variable `peering_locations`, `bandwidths_offered` and `provisioning_state` under property `properties` whose type is `ExpressRouteServiceProviderPropertiesFormat` + - Model `FirewallPolicy` moved instance variable `size`, `rule_collection_groups`, `provisioning_state`, `base_policy`, `firewalls`, `child_policies`, `threat_intel_mode`, `threat_intel_whitelist`, `insights`, `snat`, `sql`, `dns_settings`, `explicit_proxy`, `intrusion_detection`, `transport_security` and `sku` under property `properties` whose type is `FirewallPolicyPropertiesFormat` + - Model `FirewallPolicyDraft` moved instance variable `base_policy`, `threat_intel_mode`, `threat_intel_whitelist`, `insights`, `snat`, `sql`, `dns_settings`, `explicit_proxy` and `intrusion_detection` under property `properties` whose type is `FirewallPolicyDraftProperties` + - Model `FirewallPolicyRuleCollectionGroup` moved instance variable `size`, `priority`, `rule_collections` and `provisioning_state` under property `properties` whose type is `FirewallPolicyRuleCollectionGroupProperties` + - Model `FirewallPolicyRuleCollectionGroupDraft` moved instance variable `size`, `priority` and `rule_collections` under property `properties` whose type is `FirewallPolicyRuleCollectionGroupDraftProperties` + - Model `FlowLog` moved instance variable `target_resource_id`, `target_resource_guid`, `storage_id`, `enabled_filtering_criteria`, `record_types`, `enabled`, `retention_policy`, `format`, `flow_analytics_configuration` and `provisioning_state` under property `properties` whose type is `FlowLogPropertiesFormat` + - Model `FlowLogInformation` moved instance variable `storage_id`, `enabled_filtering_criteria`, `record_types`, `enabled`, `retention_policy` and `format` under property `properties` whose type is `FlowLogProperties` + - Model `FrontendIPConfiguration` moved instance variable `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `load_balancing_rules`, `private_ip_address`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `public_ip_address`, `public_ip_prefix`, `gateway_load_balancer` and `provisioning_state` under property `properties` whose type is `FrontendIPConfigurationPropertiesFormat` + - Model `HopLink` moved instance variable `round_trip_time_min`, `round_trip_time_avg` and `round_trip_time_max` under property `properties` whose type is `HopLinkProperties` + - Model `HubIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `HubIPConfigurationPropertiesFormat` + - Model `HubRouteTable` moved instance variable `routes`, `labels`, `associated_connections`, `propagating_connections` and `provisioning_state` under property `properties` whose type is `HubRouteTableProperties` + - Model `HubVirtualNetworkConnection` moved instance variable `remote_virtual_network`, `allow_hub_to_remote_vnet_transit`, `allow_remote_vnet_to_use_hub_vnet_gateways`, `enable_internet_security`, `routing_configuration` and `provisioning_state` under property `properties` whose type is `HubVirtualNetworkConnectionProperties` + - Model `IPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `IPConfigurationPropertiesFormat` + - Model `IPConfigurationProfile` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `IPConfigurationProfilePropertiesFormat` + - Model `InboundNatPool` moved instance variable `frontend_ip_configuration`, `protocol`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset` and `provisioning_state` under property `properties` whose type is `InboundNatPoolPropertiesFormat` + - Model `InboundNatRule` moved instance variable `frontend_ip_configuration`, `backend_ip_configuration`, `protocol`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_address_pool` and `provisioning_state` under property `properties` whose type is `InboundNatRulePropertiesFormat` + - Model `InboundSecurityRule` moved instance variable `rule_type`, `rules` and `provisioning_state` under property `properties` whose type is `InboundSecurityRuleProperties` + - Model `IpAllocation` moved instance variable `subnet`, `virtual_network`, `type_properties_type`, `prefix`, `prefix_length`, `prefix_type`, `ipam_allocation_id` and `allocation_tags` under property `properties` whose type is `IpAllocationPropertiesFormat` + - Model `IpGroup` moved instance variable `provisioning_state`, `ip_addresses`, `firewalls` and `firewall_policies` under property `properties` whose type is `IpGroupPropertiesFormat` + - Model `IpamPoolPrefixAllocation` moved instance variable `id` under property `pool` whose type is `IpamPoolPrefixAllocationPool` + - Model `LoadBalancer` moved instance variable `frontend_ip_configurations`, `backend_address_pools`, `load_balancing_rules`, `probes`, `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `resource_guid`, `provisioning_state` and `scope` under property `properties` whose type is `LoadBalancerPropertiesFormat` + - Model `LoadBalancerBackendAddress` moved instance variable `virtual_network`, `subnet`, `ip_address`, `network_interface_ip_configuration`, `load_balancer_frontend_ip_configuration`, `inbound_nat_rules_port_mapping` and `admin_state` under property `properties` whose type is `LoadBalancerBackendAddressPropertiesFormat` + - Model `LoadBalancerVipSwapRequestFrontendIPConfiguration` moved instance variable `public_ip_address` under property `properties` whose type is `LoadBalancerVipSwapRequestFrontendIPConfigurationProperties` + - Model `LoadBalancingRule` moved instance variable `frontend_ip_configuration`, `backend_address_pool`, `backend_address_pools`, `probe`, `protocol`, `load_distribution`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `disable_outbound_snat`, `enable_connection_tracking` and `provisioning_state` under property `properties` whose type is `LoadBalancingRulePropertiesFormat` + - Model `LocalNetworkGateway` moved instance variable `local_network_address_space`, `gateway_ip_address`, `fqdn`, `bgp_settings`, `resource_guid` and `provisioning_state` under property `properties` whose type is `LocalNetworkGatewayPropertiesFormat` + - Model `NatGateway` moved instance variable `idle_timeout_in_minutes`, `public_ip_addresses`, `public_ip_addresses_v6`, `public_ip_prefixes`, `public_ip_prefixes_v6`, `subnets`, `source_virtual_network`, `service_gateway`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NatGatewayPropertiesFormat` + - Model `NetworkGroup` moved instance variable `description`, `member_type`, `provisioning_state` and `resource_guid` under property `properties` whose type is `NetworkGroupProperties` + - Model `NetworkInterface` moved instance variable `virtual_machine`, `network_security_group`, `private_endpoint`, `ip_configurations`, `tap_configurations`, `dns_settings`, `mac_address`, `primary`, `vnet_encryption_supported`, `default_outbound_connectivity_enabled`, `enable_accelerated_networking`, `disable_tcp_state_tracking`, `enable_ip_forwarding`, `hosted_workloads`, `dscp_configuration`, `resource_guid`, `provisioning_state`, `workload_type`, `nic_type`, `private_link_service`, `migration_phase`, `auxiliary_mode` and `auxiliary_sku` under property `properties` whose type is `NetworkInterfacePropertiesFormat` + - Model `NetworkInterfaceIPConfiguration` moved instance variable `gateway_load_balancer`, `virtual_network_taps`, `application_gateway_backend_address_pools`, `load_balancer_backend_address_pools`, `load_balancer_inbound_nat_rules`, `private_ip_address`, `private_ip_address_prefix_length`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `primary`, `public_ip_address`, `application_security_groups`, `provisioning_state` and `private_link_connection_properties` under property `properties` whose type is `NetworkInterfaceIPConfigurationPropertiesFormat` + - Model `NetworkInterfaceTapConfiguration` moved instance variable `virtual_network_tap` and `provisioning_state` under property `properties` whose type is `NetworkInterfaceTapConfigurationPropertiesFormat` + - Model `NetworkManager` moved instance variable `description`, `network_manager_scopes`, `network_manager_scope_accesses`, `provisioning_state` and `resource_guid` under property `properties` whose type is `NetworkManagerProperties` + - Model `NetworkManagerConnection` moved instance variable `network_manager_id`, `connection_state` and `description` under property `properties` whose type is `NetworkManagerConnectionProperties` + - Model `NetworkManagerRoutingConfiguration` moved instance variable `description`, `provisioning_state`, `resource_guid` and `route_table_usage_mode` under property `properties` whose type is `NetworkManagerRoutingConfigurationPropertiesFormat` + - Model `NetworkProfile` moved instance variable `container_network_interfaces`, `container_network_interface_configurations`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkProfilePropertiesFormat` + - Model `NetworkSecurityGroup` moved instance variable `flush_connection`, `security_rules`, `default_security_rules`, `network_interfaces`, `subnets`, `flow_logs`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkSecurityGroupPropertiesFormat` + - Model `NetworkSecurityPerimeter` moved instance variable `provisioning_state` and `perimeter_guid` under property `properties` whose type is `NetworkSecurityPerimeterProperties` + - Model `NetworkVirtualAppliance` moved instance variable `nva_sku`, `address_prefix`, `boot_strap_configuration_blobs`, `virtual_hub`, `cloud_init_configuration_blobs`, `cloud_init_configuration`, `virtual_appliance_asn`, `ssh_public_key`, `virtual_appliance_nics`, `network_profile`, `additional_nics`, `internet_ingress_public_ips`, `virtual_appliance_sites`, `virtual_appliance_connections`, `inbound_security_rules`, `provisioning_state`, `deployment_type`, `delegation`, `partner_managed_resource`, `nva_interface_configurations` and `private_ip_address` under property `properties` whose type is `NetworkVirtualAppliancePropertiesFormat` + - Model `NetworkVirtualApplianceConnection` moved instance variable `name_properties_name`, `provisioning_state`, `asn`, `tunnel_identifier`, `bgp_peer_address`, `enable_internet_security` and `routing_configuration` under property `properties` whose type is `NetworkVirtualApplianceConnectionProperties` + - Model `NetworkVirtualApplianceSku` moved instance variable `vendor`, `available_versions` and `available_scale_units` under property `properties` whose type is `NetworkVirtualApplianceSkuPropertiesFormat` + - Model `NetworkWatcher` moved instance variable `provisioning_state` under property `properties` whose type is `NetworkWatcherPropertiesFormat` + - Model `NspAccessRule` moved instance variable `provisioning_state`, `direction`, `address_prefixes`, `fully_qualified_domain_names`, `subscriptions`, `network_security_perimeters`, `email_addresses`, `phone_numbers` and `service_tags` under property `properties` whose type is `NspAccessRuleProperties` + - Model `NspAssociation` moved instance variable `provisioning_state`, `private_link_resource`, `profile`, `access_mode` and `has_provisioning_issues` under property `properties` whose type is `NspAssociationProperties` + - Model `NspLink` moved instance variable `provisioning_state`, `auto_approved_remote_perimeter_resource_id`, `remote_perimeter_guid`, `remote_perimeter_location`, `local_inbound_profiles`, `local_outbound_profiles`, `remote_inbound_profiles`, `remote_outbound_profiles`, `description` and `status` under property `properties` whose type is `NspLinkProperties` + - Model `NspLinkReference` moved instance variable `provisioning_state`, `remote_perimeter_resource_id`, `remote_perimeter_guid`, `remote_perimeter_location`, `local_inbound_profiles`, `local_outbound_profiles`, `remote_inbound_profiles`, `remote_outbound_profiles`, `description` and `status` under property `properties` whose type is `NspLinkReferenceProperties` + - Model `NspLoggingConfiguration` moved instance variable `enabled_log_categories` and `version` under property `properties` whose type is `NspLoggingConfigurationProperties` + - Model `NspProfile` moved instance variable `access_rules_version` and `diagnostic_settings_version` under property `properties` whose type is `NspProfileProperties` + - Model `Operation` moved instance variable `service_specification` under property `properties` whose type is `OperationPropertiesFormat` + - Model `OutboundRule` moved instance variable `allocated_outbound_ports`, `frontend_ip_configurations`, `backend_address_pool`, `provisioning_state`, `protocol`, `enable_tcp_reset` and `idle_timeout_in_minutes` under property `properties` whose type is `OutboundRulePropertiesFormat` + - Model `P2SConnectionConfiguration` moved instance variable `vpn_client_address_pool`, `routing_configuration`, `enable_internet_security`, `configuration_policy_group_associations`, `previous_configuration_policy_group_associations` and `provisioning_state` under property `properties` whose type is `P2SConnectionConfigurationProperties` + - Model `P2SVpnGateway` moved instance variable `virtual_hub`, `p2_s_connection_configurations`, `provisioning_state`, `vpn_gateway_scale_unit`, `vpn_server_configuration`, `vpn_client_connection_health`, `custom_dns_servers` and `is_routing_preference_internet` under property `properties` whose type is `P2SVpnGatewayProperties` + - Model `PacketCapture` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture` and `capture_settings` under property `properties` whose type is `PacketCaptureParameters` + - Model `PacketCaptureResult` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture`, `capture_settings` and `provisioning_state` under property `properties` whose type is `PacketCaptureResultProperties` + - Model `PeerExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `circuit_connection_status`, `connection_name`, `auth_resource_guid` and `provisioning_state` under property `properties` whose type is `PeerExpressRouteCircuitConnectionPropertiesFormat` + - Model `PerimeterAssociableResource` moved instance variable `display_name`, `resource_type` and `public_dns_zones` under property `properties` whose type is `PerimeterAssociableResourceProperties` + - Model `PrivateDnsZoneConfig` moved instance variable `private_dns_zone_id` and `record_sets` under property `properties` whose type is `PrivateDnsZonePropertiesFormat` + - Model `PrivateDnsZoneGroup` moved instance variable `provisioning_state` and `private_dns_zone_configs` under property `properties` whose type is `PrivateDnsZoneGroupPropertiesFormat` + - Model `PrivateEndpoint` moved instance variable `subnet`, `network_interfaces`, `provisioning_state`, `ip_version_type`, `private_link_service_connections`, `manual_private_link_service_connections`, `custom_dns_configs`, `application_security_groups`, `ip_configurations` and `custom_network_interface_name` under property `properties` whose type is `PrivateEndpointProperties` + - Model `PrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state`, `provisioning_state`, `link_identifier` and `private_endpoint_location` under property `properties` whose type is `PrivateEndpointConnectionProperties` + - Model `PrivateEndpointIPConfiguration` moved instance variable `group_id`, `member_name` and `private_ip_address` under property `properties` whose type is `PrivateEndpointIPConfigurationProperties` + - Model `PrivateLinkService` moved instance variable `load_balancer_frontend_ip_configurations`, `ip_configurations`, `destination_ip_address`, `access_mode`, `network_interfaces`, `provisioning_state`, `private_endpoint_connections`, `visibility`, `auto_approval`, `fqdns`, `alias` and `enable_proxy_protocol` under property `properties` whose type is `PrivateLinkServiceProperties` + - Model `PrivateLinkServiceConnection` moved instance variable `provisioning_state`, `private_link_service_id`, `group_ids`, `request_message` and `private_link_service_connection_state` under property `properties` whose type is `PrivateLinkServiceConnectionProperties` + - Model `PrivateLinkServiceIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `primary`, `provisioning_state` and `private_ip_address_version` under property `properties` whose type is `PrivateLinkServiceIpConfigurationProperties` + - Model `Probe` moved instance variable `load_balancing_rules`, `protocol`, `port`, `interval_in_seconds`, `no_healthy_backends_behavior`, `number_of_probes`, `probe_threshold`, `request_path` and `provisioning_state` under property `properties` whose type is `ProbePropertiesFormat` + - Model `PublicIPAddress` moved instance variable `public_ip_allocation_method`, `public_ip_address_version`, `ip_configuration`, `dns_settings`, `ddos_settings`, `ip_tags`, `ip_address`, `public_ip_prefix`, `idle_timeout_in_minutes`, `resource_guid`, `provisioning_state`, `service_public_ip_address`, `nat_gateway`, `migration_phase`, `linked_public_ip_address` and `delete_option` under property `properties` whose type is `PublicIPAddressPropertiesFormat` + - Model `PublicIPPrefix` moved instance variable `public_ip_address_version`, `ip_tags`, `prefix_length`, `ip_prefix`, `public_ip_addresses`, `load_balancer_frontend_ip_configuration`, `custom_ip_prefix`, `resource_guid`, `provisioning_state` and `nat_gateway` under property `properties` whose type is `PublicIPPrefixPropertiesFormat` + - Model `ResourceNavigationLink` moved instance variable `linked_resource_type`, `link` and `provisioning_state` under property `properties` whose type is `ResourceNavigationLinkFormat` + - Model `Route` moved instance variable `address_prefix`, `next_hop_type`, `next_hop_ip_address`, `provisioning_state` and `has_bgp_override` under property `properties` whose type is `RoutePropertiesFormat` + - Model `RouteFilter` moved instance variable `rules`, `peerings`, `ipv6_peerings` and `provisioning_state` under property `properties` whose type is `RouteFilterPropertiesFormat` + - Model `RouteFilterRule` moved instance variable `access`, `route_filter_rule_type`, `communities` and `provisioning_state` under property `properties` whose type is `RouteFilterRulePropertiesFormat` + - Model `RouteMap` moved instance variable `associated_inbound_connections`, `associated_outbound_connections`, `rules` and `provisioning_state` under property `properties` whose type is `RouteMapProperties` + - Model `RouteTable` moved instance variable `routes`, `subnets`, `disable_bgp_route_propagation`, `provisioning_state` and `resource_guid` under property `properties` whose type is `RouteTablePropertiesFormat` + - Model `RoutingIntent` moved instance variable `routing_policies` and `provisioning_state` under property `properties` whose type is `RoutingIntentProperties` + - Model `RoutingRule` moved instance variable `description`, `provisioning_state`, `resource_guid`, `destination` and `next_hop` under property `properties` whose type is `RoutingRulePropertiesFormat` + - Model `RoutingRuleCollection` moved instance variable `description`, `provisioning_state`, `resource_guid`, `applies_to` and `disable_bgp_route_propagation` under property `properties` whose type is `RoutingRuleCollectionPropertiesFormat` + - Model `ScopeConnection` moved instance variable `tenant_id`, `resource_id`, `connection_state` and `description` under property `properties` whose type is `ScopeConnectionProperties` + - Model `SecurityAdminConfiguration` moved instance variable `description`, `apply_on_network_intent_policy_based_services`, `network_group_address_space_aggregation_option`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityAdminConfigurationPropertiesFormat` + - Model `SecurityPartnerProvider` moved instance variable `provisioning_state`, `security_provider_name`, `connection_status` and `virtual_hub` under property `properties` whose type is `SecurityPartnerProviderPropertiesFormat` + - Model `SecurityRule` moved instance variable `description`, `protocol`, `source_port_range`, `destination_port_range`, `source_address_prefix`, `source_address_prefixes`, `source_application_security_groups`, `destination_address_prefix`, `destination_address_prefixes`, `destination_application_security_groups`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction` and `provisioning_state` under property `properties` whose type is `SecurityRulePropertiesFormat` + - Model `SecurityUserConfiguration` moved instance variable `description`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserConfigurationPropertiesFormat` + - Model `SecurityUserRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRulePropertiesFormat` + - Model `SecurityUserRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRuleCollectionPropertiesFormat` + - Model `ServiceAssociationLink` moved instance variable `linked_resource_type`, `link`, `provisioning_state`, `allow_delete` and `locations` under property `properties` whose type is `ServiceAssociationLinkPropertiesFormat` + - Model `ServiceEndpointPolicy` moved instance variable `service_endpoint_policy_definitions`, `subnets`, `resource_guid`, `provisioning_state`, `service_alias` and `contextual_service_endpoint_policies` under property `properties` whose type is `ServiceEndpointPolicyPropertiesFormat` + - Model `ServiceEndpointPolicyDefinition` moved instance variable `description`, `service`, `service_resources` and `provisioning_state` under property `properties` whose type is `ServiceEndpointPolicyDefinitionPropertiesFormat` + - Model `ServiceGateway` moved instance variable `virtual_network`, `route_target_address`, `route_target_address_v6`, `resource_guid` and `provisioning_state` under property `properties` whose type is `ServiceGatewayPropertiesFormat` + - Model `ServiceGatewayService` moved instance variable `service_type`, `is_default`, `load_balancer_backend_pools` and `public_nat_gateway_id` under property `properties` whose type is `ServiceGatewayServicePropertiesFormat` + - Model `StaticMember` moved instance variable `resource_id`, `region` and `provisioning_state` under property `properties` whose type is `StaticMemberProperties` + - Model `Subnet` moved instance variable `address_prefix`, `address_prefixes`, `network_security_group`, `route_table`, `nat_gateway`, `service_endpoints`, `service_endpoint_policies`, `private_endpoints`, `ip_configurations`, `ip_configuration_profiles`, `ip_allocations`, `resource_navigation_links`, `service_association_links`, `delegations`, `purpose`, `provisioning_state`, `private_endpoint_network_policies`, `private_link_service_network_policies`, `application_gateway_ip_configurations`, `sharing_scope`, `default_outbound_access`, `ipam_pool_prefix_allocations` and `service_gateway` under property `properties` whose type is `SubnetPropertiesFormat` + - Model `TroubleshootingParameters` moved instance variable `storage_id` and `storage_path` under property `properties` whose type is `TroubleshootingProperties` + - Model `VirtualApplianceSite` moved instance variable `address_prefix`, `o365_policy` and `provisioning_state` under property `properties` whose type is `VirtualApplianceSiteProperties` + - Model `VirtualHub` moved instance variable `virtual_wan`, `vpn_gateway`, `p2_s_vpn_gateway`, `express_route_gateway`, `azure_firewall`, `security_partner_provider`, `address_prefix`, `route_table`, `provisioning_state`, `security_provider_name`, `virtual_hub_route_table_v2_s`, `sku`, `routing_state`, `bgp_connections`, `ip_configurations`, `route_maps`, `virtual_router_asn`, `virtual_router_ips`, `allow_branch_to_branch_traffic`, `preferred_routing_gateway`, `hub_routing_preference` and `virtual_router_auto_scale_configuration` under property `properties` whose type is `VirtualHubProperties` + - Model `VirtualHubRouteTableV2` moved instance variable `routes`, `attached_connections` and `provisioning_state` under property `properties` whose type is `VirtualHubRouteTableV2Properties` + - Model `VirtualNetwork` moved instance variable `address_space`, `dhcp_options`, `flow_timeout_in_minutes`, `subnets`, `virtual_network_peerings`, `resource_guid`, `provisioning_state`, `enable_ddos_protection`, `enable_vm_protection`, `ddos_protection_plan`, `bgp_communities`, `encryption`, `ip_allocations`, `flow_logs`, `private_endpoint_v_net_policies` and `default_public_nat_gateway` under property `properties` whose type is `VirtualNetworkPropertiesFormat` + - Model `VirtualNetworkAppliance` moved instance variable `bandwidth_in_gbps`, `ip_configurations`, `provisioning_state`, `resource_guid` and `subnet` under property `properties` whose type is `VirtualNetworkAppliancePropertiesFormat` + - Model `VirtualNetworkApplianceIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `primary`, `provisioning_state` and `private_ip_address_version` under property `properties` whose type is `VirtualNetworkApplianceIpConfigurationProperties` + - Model `VirtualNetworkGateway` moved instance variable `auto_scale_configuration`, `ip_configurations`, `gateway_type`, `vpn_type`, `vpn_gateway_generation`, `enable_bgp`, `enable_private_ip_address`, `virtual_network_gateway_migration_status`, `active`, `enable_high_bandwidth_vpn_gateway`, `disable_ip_sec_replay_protection`, `gateway_default_site`, `sku`, `vpn_client_configuration`, `virtual_network_gateway_policy_groups`, `bgp_settings`, `custom_routes`, `resource_guid`, `provisioning_state`, `enable_dns_forwarding`, `inbound_dns_forwarding_endpoint`, `v_net_extended_location_resource_id`, `nat_rules`, `enable_bgp_route_translation_for_nat`, `allow_virtual_wan_traffic`, `allow_remote_vnet_traffic`, `admin_state` and `resiliency_model` under property `properties` whose type is `VirtualNetworkGatewayPropertiesFormat` + - Model `VirtualNetworkGatewayConnection` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `ingress_nat_rules`, `egress_nat_rules`, `connection_type`, `connection_protocol`, `routing_weight`, `dpd_timeout_seconds`, `connection_mode`, `tunnel_properties`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_local_azure_ip_address`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass`, `enable_private_link_fast_path`, `authentication_type` and `certificate_authentication` under property `properties` whose type is `VirtualNetworkGatewayConnectionPropertiesFormat` + - Model `VirtualNetworkGatewayConnectionListEntity` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `connection_type`, `connection_protocol`, `routing_weight`, `connection_mode`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass` and `enable_private_link_fast_path` under property `properties` whose type is `VirtualNetworkGatewayConnectionListEntityPropertiesFormat` + - Model `VirtualNetworkGatewayIPConfiguration` moved instance variable `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_ip_address` and `provisioning_state` under property `properties` whose type is `VirtualNetworkGatewayIPConfigurationPropertiesFormat` + - Model `VirtualNetworkGatewayNatRule` moved instance variable `provisioning_state`, `type_properties_type`, `mode`, `internal_mappings`, `external_mappings` and `ip_configuration_id` under property `properties` whose type is `VirtualNetworkGatewayNatRuleProperties` + - Model `VirtualNetworkGatewayPolicyGroup` moved instance variable `is_default`, `priority`, `policy_members`, `vng_client_connection_configurations` and `provisioning_state` under property `properties` whose type is `VirtualNetworkGatewayPolicyGroupProperties` + - Model `VirtualNetworkPeering` moved instance variable `allow_virtual_network_access`, `allow_forwarded_traffic`, `allow_gateway_transit`, `use_remote_gateways`, `remote_virtual_network`, `local_address_space`, `local_virtual_network_address_space`, `remote_address_space`, `remote_virtual_network_address_space`, `remote_bgp_communities`, `remote_virtual_network_encryption`, `peering_state`, `peering_sync_level`, `provisioning_state`, `do_not_verify_remote_gateways`, `resource_guid`, `peer_complete_vnets`, `enable_only_i_pv6_peering`, `local_subnet_names` and `remote_subnet_names` under property `properties` whose type is `VirtualNetworkPeeringPropertiesFormat` + - Model `VirtualNetworkTap` moved instance variable `network_interface_tap_configurations`, `resource_guid`, `provisioning_state`, `destination_network_interface_ip_configuration`, `destination_load_balancer_front_end_ip_configuration` and `destination_port` under property `properties` whose type is `VirtualNetworkTapPropertiesFormat` + - Model `VirtualRouter` moved instance variable `virtual_router_asn`, `virtual_router_ips`, `hosted_subnet`, `hosted_gateway`, `peerings` and `provisioning_state` under property `properties` whose type is `VirtualRouterPropertiesFormat` + - Model `VirtualRouterPeering` moved instance variable `peer_asn`, `peer_ip` and `provisioning_state` under property `properties` whose type is `VirtualRouterPeeringProperties` + - Model `VirtualWAN` moved instance variable `disable_vpn_encryption`, `virtual_hubs`, `vpn_sites`, `allow_branch_to_branch_traffic`, `allow_vnet_to_vnet_traffic`, `office365_local_breakout_category`, `provisioning_state` and `type_properties_type` under property `properties` whose type is `VirtualWanProperties` + - Model `VngClientConnectionConfiguration` moved instance variable `vpn_client_address_pool`, `virtual_network_gateway_policy_groups` and `provisioning_state` under property `properties` whose type is `VngClientConnectionConfigurationProperties` + - Model `VpnClientRevokedCertificate` moved instance variable `thumbprint` and `provisioning_state` under property `properties` whose type is `VpnClientRevokedCertificatePropertiesFormat` + - Model `VpnClientRootCertificate` moved instance variable `public_cert_data` and `provisioning_state` under property `properties` whose type is `VpnClientRootCertificatePropertiesFormat` + - Model `VpnConnection` moved instance variable `remote_vpn_site`, `routing_weight`, `dpd_timeout_seconds`, `connection_status`, `vpn_connection_protocol_type`, `ingress_bytes_transferred`, `egress_bytes_transferred`, `connection_bandwidth`, `shared_key`, `enable_bgp`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `enable_rate_limiting`, `enable_internet_security`, `use_local_azure_ip_address`, `provisioning_state`, `vpn_link_connections` and `routing_configuration` under property `properties` whose type is `VpnConnectionProperties` + - Model `VpnGateway` moved instance variable `virtual_hub`, `connections`, `bgp_settings`, `provisioning_state`, `vpn_gateway_scale_unit`, `ip_configurations`, `enable_bgp_route_translation_for_nat`, `is_routing_preference_internet` and `nat_rules` under property `properties` whose type is `VpnGatewayProperties` + - Model `VpnGatewayNatRule` moved instance variable `provisioning_state`, `type_properties_type`, `mode`, `internal_mappings`, `external_mappings`, `ip_configuration_id`, `egress_vpn_site_link_connections` and `ingress_vpn_site_link_connections` under property `properties` whose type is `VpnGatewayNatRuleProperties` + - Model `VpnServerConfiguration` moved instance variable `name_properties_name`, `vpn_protocols`, `vpn_authentication_types`, `vpn_client_root_certificates`, `vpn_client_revoked_certificates`, `radius_server_root_certificates`, `radius_client_root_certificates`, `vpn_client_ipsec_policies`, `radius_server_address`, `radius_server_secret`, `radius_servers`, `aad_authentication_parameters`, `provisioning_state`, `p2_s_vpn_gateways`, `configuration_policy_groups` and `etag_properties_etag` under property `properties` whose type is `VpnServerConfigurationProperties` + - Model `VpnServerConfigurationPolicyGroup` moved instance variable `is_default`, `priority`, `policy_members`, `p2_s_connection_configurations` and `provisioning_state` under property `properties` whose type is `VpnServerConfigurationPolicyGroupProperties` + - Model `VpnSite` moved instance variable `virtual_wan`, `device_properties`, `ip_address`, `site_key`, `address_space`, `bgp_properties`, `provisioning_state`, `is_security_site`, `vpn_site_links` and `o365_policy` under property `properties` whose type is `VpnSiteProperties` + - Model `VpnSiteLink` moved instance variable `link_properties`, `ip_address`, `fqdn`, `bgp_properties` and `provisioning_state` under property `properties` whose type is `VpnSiteLinkProperties` + - Model `VpnSiteLinkConnection` moved instance variable `vpn_site_link`, `routing_weight`, `vpn_link_connection_mode`, `connection_status`, `vpn_connection_protocol_type`, `ingress_bytes_transferred`, `egress_bytes_transferred`, `connection_bandwidth`, `shared_key`, `enable_bgp`, `vpn_gateway_custom_bgp_addresses`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `enable_rate_limiting`, `use_local_azure_ip_address`, `provisioning_state`, `ingress_nat_rules`, `egress_nat_rules` and `dpd_timeout_seconds` under property `properties` whose type is `VpnSiteLinkConnectionProperties` + - Model `WebApplicationFirewallPolicy` moved instance variable `policy_settings`, `custom_rules`, `application_gateways`, `provisioning_state`, `resource_state`, `managed_rules`, `http_listeners`, `path_based_rules` and `application_gateway_for_containers` under property `properties` whose type is `WebApplicationFirewallPolicyPropertiesFormat` + - Deleted or renamed model `AzureAsyncOperationResult` + - Deleted or renamed model `Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties` + - Deleted or renamed model `ConnectionMonitorQueryResult` + - Deleted or renamed model `ConnectionMonitorSourceStatus` + - Deleted or renamed model `ConnectionState` + - Deleted or renamed model `ConnectionStateSnapshot` + - Deleted or renamed model `EvaluationState` + - Deleted or renamed model `HubVirtualNetworkConnectionStatus` + - Deleted or renamed model `NetworkOperationStatus` + - Deleted or renamed model `PatchRouteFilter` + - Deleted or renamed model `PatchRouteFilterRule` + - Deleted or renamed model `SecurityPerimeterSystemData` + - Deleted or renamed model `TrackedResource` + - Deleted or renamed model `TunnelConnectionStatus` + - Deleted or renamed model `VpnSiteId` + +### Other Changes + + - Method `NetworkSecurityPerimeterAccessRulesOperations.reconcile` changed return type from `JSON` to `Any` + - Method `NetworkSecurityPerimeterAssociationsOperations.reconcile` changed return type from `JSON` to `Any` + - Deleted model `AdminRuleCollectionListResult`/`AdminRuleListResult`/`ApplicationGatewayAvailableSslPredefinedPolicies`/`ApplicationGatewayListResult`/`ApplicationGatewayPrivateEndpointConnectionListResult`/`ApplicationGatewayPrivateLinkResourceListResult`/`ApplicationGatewayWafDynamicManifestResultList`/`ApplicationSecurityGroupListResult`/`AuthorizationListResult`/`AutoApprovedPrivateLinkServicesResult`/`AvailableDelegationsResult`/`AvailablePrivateEndpointTypesResult`/`AvailableServiceAliasesResult`/`AzureFirewallFqdnTagListResult`/`AzureFirewallListResult`/`AzureWebCategoryListResult`/`BastionActiveSessionListResult`/`BastionHostListResult`/`BastionSessionDeleteResult`/`BastionShareableLinkListResult`/`BgpServiceCommunityListResult`/`ConnectionMonitorListResult`/`ConnectionSharedKeyResultList`/`ConnectivityConfigurationListResult`/`CustomIpPrefixListResult`/`DdosProtectionPlanListResult`/`DscpConfigurationListResult`/`EndpointServicesListResult`/`ExpressRouteCircuitConnectionListResult`/`ExpressRouteCircuitListResult`/`ExpressRouteCircuitPeeringListResult`/`ExpressRouteCrossConnectionListResult`/`ExpressRouteCrossConnectionPeeringList`/`ExpressRouteLinkListResult`/`ExpressRoutePortAuthorizationListResult`/`ExpressRoutePortListResult`/`ExpressRoutePortsLocationListResult`/`ExpressRouteServiceProviderListResult`/`FirewallPolicyListResult`/`FirewallPolicyRuleCollectionGroupListResult`/`FlowLogListResult`/`GetServiceGatewayAddressLocationsResult`/`GetServiceGatewayServicesResult`/`InboundNatRuleListResult`/`IpAllocationListResult`/`IpGroupListResult`/`IpamPoolList`/`ListHubRouteTablesResult`/`ListHubVirtualNetworkConnectionsResult`/`ListP2SVpnGatewaysResult`/`ListRouteMapsResult`/`ListRoutingIntentResult`/`ListVirtualHubBgpConnectionResults`/`ListVirtualHubIpConfigurationResults`/`ListVirtualHubRouteTableV2SResult`/`ListVirtualHubsResult`/`ListVirtualNetworkGatewayNatRulesResult`/`ListVirtualWANsResult`/`ListVpnConnectionsResult`/`ListVpnGatewayNatRulesResult`/`ListVpnGatewaysResult`/`ListVpnServerConfigurationPolicyGroupsResult`/`ListVpnServerConfigurationsResult`/`ListVpnSiteLinkConnectionsResult`/`ListVpnSiteLinksResult`/`ListVpnSitesResult`/`LoadBalancerBackendAddressPoolListResult`/`LoadBalancerFrontendIPConfigurationListResult`/`LoadBalancerListResult`/`LoadBalancerLoadBalancingRuleListResult`/`LoadBalancerOutboundRuleListResult`/`LoadBalancerProbeListResult`/`LocalNetworkGatewayListResult`/`NatGatewayListResult`/`NetworkGroupListResult`/`NetworkInterfaceIPConfigurationListResult`/`NetworkInterfaceListResult`/`NetworkInterfaceLoadBalancerListResult`/`NetworkInterfaceTapConfigurationListResult`/`NetworkManagerConnectionListResult`/`NetworkManagerListResult`/`NetworkManagerRoutingConfigurationListResult`/`NetworkProfileListResult`/`NetworkSecurityGroupListResult`/`NetworkSecurityPerimeterListResult`/`NetworkVirtualApplianceConnectionList`/`NetworkVirtualApplianceListResult`/`NetworkVirtualApplianceSiteListResult`/`NetworkVirtualApplianceSkuListResult`/`NetworkWatcherListResult`/`NspAccessRuleListResult`/`NspAssociationsListResult`/`NspLinkListResult`/`NspLinkReferenceListResult`/`NspLoggingConfigurationListResult`/`NspProfileListResult`/`NspServiceTagsListResult`/`OperationListResult`/`PacketCaptureListResult`/`PeerExpressRouteCircuitConnectionListResult`/`PerimeterAssociableResourcesListResult`/`PoolAssociationList`/`PrivateDnsZoneGroupListResult`/`PrivateEndpointConnectionListResult`/`PrivateEndpointListResult`/`PrivateLinkServiceListResult`/`PublicIPAddressListResult`/`PublicIPPrefixListResult`/`ReachabilityAnalysisIntentListResult`/`ReachabilityAnalysisRunListResult`/`RouteFilterListResult`/`RouteFilterRuleListResult`/`RouteListResult`/`RouteTableListResult`/`RoutingRuleCollectionListResult`/`RoutingRuleListResult`/`ScopeConnectionListResult`/`SecurityAdminConfigurationListResult`/`SecurityPartnerProviderListResult`/`SecurityRuleListResult`/`SecurityUserConfigurationListResult`/`SecurityUserRuleCollectionListResult`/`SecurityUserRuleListResult`/`ServiceEndpointPolicyDefinitionListResult`/`ServiceEndpointPolicyListResult`/`ServiceGatewayListResult`/`ServiceTagInformationListResult`/`StaticCidrList`/`StaticMemberListResult`/`SubnetListResult`/`UsagesListResult`/`VerifierWorkspaceListResult`/`VirtualNetworkApplianceListResult`/`VirtualNetworkDdosProtectionStatusResult`/`VirtualNetworkGatewayConnectionListResult`/`VirtualNetworkGatewayListConnectionsResult`/`VirtualNetworkGatewayListResult`/`VirtualNetworkListResult`/`VirtualNetworkListUsageResult`/`VirtualNetworkPeeringListResult`/`VirtualNetworkTapListResult`/`VirtualRouterListResult`/`VirtualRouterPeeringListResult`/`WebApplicationFirewallPolicyListResult` which actually was not used by SDK users + +## 31.0.0b1 (2026-05-08) + +### Features Added + + - Client `NetworkManagementClient` added method `send_request` + - Added model `CloudError` + - Added model `DefaultRuleSetPropertyFormat` + - Added model `ManagedServiceIdentityUserAssignedIdentities` + - Added model `ProxyResourceWithReadOnlyID` + - Added model `ProxyResourceWithSettableId` + - Added model `ReadOnlySubResourceModel` + - Added model `SecurityPerimeterTrackedResource` + - Added model `SubResourceModel` + - Added model `TrackedResourceWithEtag` + - Added model `TrackedResourceWithOptionalLocation` + - Added model `TrackedResourceWithSettableIdOptionalLocation` + - Added model `TrackedResourceWithSettableName` + - Added model `WritableResource` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Method `IpamPoolsOperations.begin_create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `NetworkGroupsOperations.create_or_update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Model `ConnectionMonitorEndpointFilter` renamed its instance variable `items` to `items_property` + - Model `ExceptionEntry` renamed its instance variable `values` to `values_property` + - Model `FilterItems` renamed its instance variable `values` to `values_property` + - Model `ServiceTagsListResult` renamed its instance variable `values` to `values_property` + - Model `AdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `AdminRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminRuleCollectionPropertiesFormat` + - Model `ApplicationGateway` moved instance variable `sku`, `ssl_policy`, `operational_state`, `gateway_ip_configurations`, `authentication_certificates`, `trusted_root_certificates`, `trusted_client_certificates`, `ssl_certificates`, `frontend_ip_configurations`, `frontend_ports`, `probes`, `backend_address_pools`, `backend_http_settings_collection`, `backend_settings_collection`, `http_listeners`, `listeners`, `ssl_profiles`, `url_path_maps`, `request_routing_rules`, `routing_rules`, `rewrite_rule_sets`, `redirect_configurations`, `web_application_firewall_configuration`, `firewall_policy`, `enable_http2`, `enable_fips`, `autoscale_configuration`, `private_link_configurations`, `private_endpoint_connections`, `resource_guid`, `provisioning_state`, `custom_error_configurations`, `force_firewall_policy_association`, `load_distribution_policies`, `entra_jwt_validation_configs`, `global_configuration` and `default_predefined_ssl_policy` under property `properties` whose type is `ApplicationGatewayPropertiesFormat` + - Model `ApplicationGatewayAuthenticationCertificate` moved instance variable `data` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayAuthenticationCertificatePropertiesFormat` + - Model `ApplicationGatewayAvailableSslOptions` moved instance variable `predefined_policies`, `default_policy`, `available_cipher_suites` and `available_protocols` under property `properties` whose type is `ApplicationGatewayAvailableSslOptionsPropertiesFormat` + - Model `ApplicationGatewayBackendAddressPool` moved instance variable `backend_ip_configurations`, `backend_addresses` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendAddressPoolPropertiesFormat` + - Model `ApplicationGatewayBackendHttpSettings` moved instance variable `port`, `protocol`, `cookie_based_affinity`, `request_timeout`, `probe`, `authentication_certificates`, `trusted_root_certificates`, `connection_draining`, `host_name`, `pick_host_name_from_backend_address`, `affinity_cookie_name`, `probe_enabled`, `path`, `dedicated_backend_connection`, `validate_cert_chain_and_expiry`, `validate_sni`, `sni_name` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendHttpSettingsPropertiesFormat` + - Model `ApplicationGatewayBackendSettings` moved instance variable `port`, `protocol`, `timeout`, `probe`, `trusted_root_certificates`, `host_name`, `pick_host_name_from_backend_address`, `enable_l4_client_ip_preservation` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendSettingsPropertiesFormat` + - Model `ApplicationGatewayEntraJWTValidationConfig` moved instance variable `un_authorized_request_action`, `tenant_id`, `client_id`, `audiences` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayEntraJWTValidationConfigPropertiesFormat` + - Model `ApplicationGatewayFirewallRuleSet` moved instance variable `provisioning_state`, `rule_set_type`, `rule_set_version`, `rule_groups` and `tiers` under property `properties` whose type is `ApplicationGatewayFirewallRuleSetPropertiesFormat` + - Model `ApplicationGatewayFrontendIPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_link_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayFrontendPort` moved instance variable `port` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendPortPropertiesFormat` + - Model `ApplicationGatewayHttpListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `host_name`, `ssl_certificate`, `ssl_profile`, `require_server_name_indication`, `provisioning_state`, `custom_error_configurations`, `firewall_policy` and `host_names` under property `properties` whose type is `ApplicationGatewayHttpListenerPropertiesFormat` + - Model `ApplicationGatewayIPConfiguration` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `ssl_certificate`, `ssl_profile`, `provisioning_state` and `host_names` under property `properties` whose type is `ApplicationGatewayListenerPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionPolicy` moved instance variable `load_distribution_targets`, `load_distribution_algorithm` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayLoadDistributionPolicyPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionTarget` moved instance variable `weight_per_server` and `backend_address_pool` under property `properties` whose type is `ApplicationGatewayLoadDistributionTargetPropertiesFormat` + - Model `ApplicationGatewayPathRule` moved instance variable `paths`, `backend_address_pool`, `backend_http_settings`, `redirect_configuration`, `rewrite_rule_set`, `load_distribution_policy`, `provisioning_state` and `firewall_policy` under property `properties` whose type is `ApplicationGatewayPathRulePropertiesFormat` + - Model `ApplicationGatewayProbe` moved instance variable `protocol`, `host`, `path`, `interval`, `timeout`, `unhealthy_threshold`, `pick_host_name_from_backend_http_settings`, `pick_host_name_from_backend_settings`, `min_servers`, `match`, `enable_probe_proxy_protocol_header`, `provisioning_state` and `port` under property `properties` whose type is `ApplicationGatewayProbePropertiesFormat` + - Model `ApplicationGatewayRedirectConfiguration` moved instance variable `redirect_type`, `target_listener`, `target_url`, `include_path`, `include_query_string`, `request_routing_rules`, `url_path_maps` and `path_rules` under property `properties` whose type is `ApplicationGatewayRedirectConfigurationPropertiesFormat` + - Model `ApplicationGatewayRequestRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_http_settings`, `http_listener`, `url_path_map`, `rewrite_rule_set`, `redirect_configuration`, `load_distribution_policy`, `entra_jwt_validation_config` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRequestRoutingRulePropertiesFormat` + - Model `ApplicationGatewayRewriteRuleSet` moved instance variable `rewrite_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRewriteRuleSetPropertiesFormat` + - Model `ApplicationGatewayRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_settings`, `listener` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRoutingRulePropertiesFormat` + - Model `ApplicationGatewaySslCertificate` moved instance variable `data`, `password`, `public_cert_data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslCertificatePropertiesFormat` + - Model `ApplicationGatewaySslPredefinedPolicy` moved instance variable `cipher_suites` and `min_protocol_version` under property `properties` whose type is `ApplicationGatewaySslPredefinedPolicyPropertiesFormat` + - Model `ApplicationGatewaySslProfile` moved instance variable `trusted_client_certificates`, `ssl_policy`, `client_auth_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslProfilePropertiesFormat` + - Model `ApplicationGatewayTrustedClientCertificate` moved instance variable `data`, `validated_cert_data`, `client_cert_issuer_dn` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedClientCertificatePropertiesFormat` + - Model `ApplicationGatewayTrustedRootCertificate` moved instance variable `data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedRootCertificatePropertiesFormat` + - Model `ApplicationGatewayUrlPathMap` moved instance variable `default_backend_address_pool`, `default_backend_http_settings`, `default_rewrite_rule_set`, `default_redirect_configuration`, `default_load_distribution_policy`, `path_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayUrlPathMapPropertiesFormat` + - Model `ApplicationGatewayWafDynamicManifestResult` moved instance variable `available_rule_sets`, `rule_set_type` and `rule_set_version` under property `properties` whose type is `ApplicationGatewayWafDynamicManifestPropertiesResult` + - Model `ApplicationSecurityGroup` moved instance variable `resource_guid` and `provisioning_state` under property `properties` whose type is `ApplicationSecurityGroupPropertiesFormat` + - Model `AzureFirewall` moved instance variable `application_rule_collections`, `nat_rule_collections`, `network_rule_collections`, `ip_configurations`, `management_ip_configuration`, `provisioning_state`, `threat_intel_mode`, `virtual_hub`, `firewall_policy`, `hub_ip_addresses`, `ip_groups`, `sku` and `autoscale_configuration` under property `properties` whose type is `AzureFirewallPropertiesFormat` + - Model `AzureFirewallApplicationRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallApplicationRuleCollectionPropertiesFormat` + - Model `AzureFirewallFqdnTag` moved instance variable `provisioning_state` and `fqdn_tag_name` under property `properties` whose type is `AzureFirewallFqdnTagPropertiesFormat` + - Model `AzureFirewallIPConfiguration` moved instance variable `private_ip_address`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `AzureFirewallIPConfigurationPropertiesFormat` + - Model `AzureFirewallNetworkRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallNetworkRuleCollectionPropertiesFormat` + - Model `AzureWebCategory` moved instance variable `group` under property `properties` whose type is `AzureWebCategoryPropertiesFormat` + - Model `BackendAddressPool` moved instance variable `location`, `tunnel_interfaces`, `load_balancer_backend_addresses`, `backend_ip_configurations`, `load_balancing_rules`, `outbound_rule`, `outbound_rules`, `inbound_nat_rules`, `provisioning_state`, `drain_period_in_seconds`, `virtual_network` and `sync_mode` under property `properties` whose type is `BackendAddressPoolPropertiesFormat` + - Model `BastionHost` moved instance variable `ip_configurations`, `dns_name`, `virtual_network`, `network_acls`, `provisioning_state`, `scale_units`, `disable_copy_paste`, `enable_file_copy`, `enable_ip_connect`, `enable_shareable_link`, `enable_tunneling`, `enable_kerberos`, `enable_session_recording` and `enable_private_only_bastion` under property `properties` whose type is `BastionHostPropertiesFormat` + - Model `BastionHostIPConfiguration` moved instance variable `subnet`, `public_ip_address`, `provisioning_state` and `private_ip_allocation_method` under property `properties` whose type is `BastionHostIPConfigurationPropertiesFormat` + - Model `BgpServiceCommunity` moved instance variable `service_name` and `bgp_communities` under property `properties` whose type is `BgpServiceCommunityPropertiesFormat` + - Model `ContainerNetworkInterface` moved instance variable `container_network_interface_configuration`, `container`, `ip_configurations` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfacePropertiesFormat` + - Model `ContainerNetworkInterfaceConfiguration` moved instance variable `ip_configurations`, `container_network_interfaces` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceConfigurationPropertiesFormat` + - Model `ContainerNetworkInterfaceIpConfiguration` moved instance variable `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceIpConfigurationPropertiesFormat` + - Model `CustomIpPrefix` moved instance variable `asn`, `cidr`, `signed_message`, `authorization_message`, `custom_ip_prefix_parent`, `child_custom_ip_prefixes`, `commissioned_state`, `express_route_advertise`, `geo`, `no_internet_advertise`, `prefix_type`, `public_ip_prefixes`, `resource_guid`, `failed_reason` and `provisioning_state` under property `properties` whose type is `CustomIpPrefixPropertiesFormat` + - Model `DdosCustomPolicy` moved instance variable `resource_guid`, `provisioning_state`, `detection_rules` and `front_end_ip_configuration` under property `properties` whose type is `DdosCustomPolicyPropertiesFormat` + - Model `DdosDetectionRule` moved instance variable `provisioning_state`, `detection_mode` and `traffic_detection_rule` under property `properties` whose type is `DdosDetectionRulePropertiesFormat` + - Model `DdosProtectionPlan` moved instance variable `resource_guid`, `provisioning_state`, `public_ip_addresses` and `virtual_networks` under property `properties` whose type is `DdosProtectionPlanPropertiesFormat` + - Model `DefaultAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `Delegation` moved instance variable `service_name`, `actions` and `provisioning_state` under property `properties` whose type is `ServiceDelegationPropertiesFormat` + - Model `DscpConfiguration` moved instance variable `markings`, `source_ip_ranges`, `destination_ip_ranges`, `source_port_ranges`, `destination_port_ranges`, `protocol`, `qos_definition_collection`, `qos_collection_id`, `associated_network_interfaces`, `resource_guid` and `provisioning_state` under property `properties` whose type is `DscpConfigurationPropertiesFormat` + - Model `ExpressRouteCircuit` moved instance variable `allow_classic_operations`, `circuit_provisioning_state`, `service_provider_provisioning_state`, `authorizations`, `peerings`, `service_key`, `service_provider_notes`, `service_provider_properties`, `express_route_port`, `bandwidth_in_gbps`, `stag`, `provisioning_state`, `gateway_manager_etag`, `global_reach_enabled`, `authorization_key`, `authorization_status` and `enable_direct_port_rate_limit` under property `properties` whose type is `ExpressRouteCircuitPropertiesFormat` + - Model `ExpressRouteCircuitAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `connection_resource_uri` and `provisioning_state` under property `properties` whose type is `AuthorizationPropertiesFormat` + - Model `ExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `authorization_key`, `ipv6_circuit_connection_config`, `circuit_connection_status` and `provisioning_state` under property `properties` whose type is `ExpressRouteCircuitConnectionPropertiesFormat` + - Model `ExpressRouteCircuitPeering` moved instance variable `peering_type`, `state`, `azure_asn`, `peer_asn`, `primary_peer_address_prefix`, `secondary_peer_address_prefix`, `primary_azure_port`, `secondary_azure_port`, `shared_key`, `vlan_id`, `microsoft_peering_config`, `stats`, `provisioning_state`, `gateway_manager_etag`, `last_modified_by`, `route_filter`, `ipv6_peering_config`, `express_route_connection`, `connections` and `peered_connections` under property `properties` whose type is `ExpressRouteCircuitPeeringPropertiesFormat` + - Model `ExpressRouteLink` moved instance variable `router_name`, `interface_name`, `patch_panel_id`, `rack_id`, `colo_location`, `connector_type`, `admin_state`, `provisioning_state` and `mac_sec_config` under property `properties` whose type is `ExpressRouteLinkPropertiesFormat` + - Model `ExpressRoutePort` moved instance variable `peering_location`, `bandwidth_in_gbps`, `provisioned_bandwidth_in_gbps`, `mtu`, `encapsulation`, `ether_type`, `allocation_date`, `links`, `circuits`, `provisioning_state`, `resource_guid` and `billing_type` under property `properties` whose type is `ExpressRoutePortPropertiesFormat` + - Model `ExpressRoutePortAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `circuit_resource_uri` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortAuthorizationPropertiesFormat` + - Model `ExpressRoutePortsLocation` moved instance variable `address`, `contact`, `available_bandwidths` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortsLocationPropertiesFormat` + - Model `ExpressRouteServiceProvider` moved instance variable `peering_locations`, `bandwidths_offered` and `provisioning_state` under property `properties` whose type is `ExpressRouteServiceProviderPropertiesFormat` + - Model `FirewallPolicy` moved instance variable `size`, `rule_collection_groups`, `provisioning_state`, `base_policy`, `firewalls`, `child_policies`, `threat_intel_mode`, `threat_intel_whitelist`, `insights`, `snat`, `sql`, `dns_settings`, `explicit_proxy`, `intrusion_detection`, `transport_security` and `sku` under property `properties` whose type is `FirewallPolicyPropertiesFormat` + - Model `FlowLogInformation` moved instance variable `storage_id`, `enabled_filtering_criteria`, `record_types`, `enabled`, `retention_policy` and `format` under property `properties` whose type is `FlowLogPropertiesFormat` + - Model `FrontendIPConfiguration` moved instance variable `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `load_balancing_rules`, `private_ip_address`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `public_ip_address`, `public_ip_prefix`, `gateway_load_balancer` and `provisioning_state` under property `properties` whose type is `FrontendIPConfigurationPropertiesFormat` + - Model `HubIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `HubIPConfigurationPropertiesFormat` + - Model `IPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `IPConfigurationPropertiesFormat` + - Model `IPConfigurationProfile` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `IPConfigurationProfilePropertiesFormat` + - Model `InboundNatPool` moved instance variable `frontend_ip_configuration`, `protocol`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset` and `provisioning_state` under property `properties` whose type is `InboundNatPoolPropertiesFormat` + - Model `InboundNatRule` moved instance variable `frontend_ip_configuration`, `backend_ip_configuration`, `protocol`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_address_pool` and `provisioning_state` under property `properties` whose type is `InboundNatRulePropertiesFormat` + - Model `IpAllocation` moved instance variable `subnet`, `virtual_network`, `type_properties_type`, `prefix`, `prefix_length`, `prefix_type`, `ipam_allocation_id` and `allocation_tags` under property `properties` whose type is `IpAllocationPropertiesFormat` + - Model `IpGroup` moved instance variable `provisioning_state`, `ip_addresses`, `firewalls` and `firewall_policies` under property `properties` whose type is `IpGroupPropertiesFormat` + - Model `IpamPoolPrefixAllocation` moved instance variable `id` under property `pool` whose type is `IpamPoolPrefixAllocationPool` + - Model `LoadBalancer` moved instance variable `frontend_ip_configurations`, `backend_address_pools`, `load_balancing_rules`, `probes`, `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `resource_guid`, `provisioning_state` and `scope` under property `properties` whose type is `LoadBalancerPropertiesFormat` + - Model `LoadBalancerBackendAddress` moved instance variable `virtual_network`, `subnet`, `ip_address`, `network_interface_ip_configuration`, `load_balancer_frontend_ip_configuration`, `inbound_nat_rules_port_mapping` and `admin_state` under property `properties` whose type is `LoadBalancerBackendAddressPropertiesFormat` + - Model `LoadBalancingRule` moved instance variable `frontend_ip_configuration`, `backend_address_pool`, `backend_address_pools`, `probe`, `protocol`, `load_distribution`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `disable_outbound_snat`, `enable_connection_tracking` and `provisioning_state` under property `properties` whose type is `LoadBalancingRulePropertiesFormat` + - Model `LocalNetworkGateway` moved instance variable `local_network_address_space`, `gateway_ip_address`, `fqdn`, `bgp_settings`, `resource_guid` and `provisioning_state` under property `properties` whose type is `LocalNetworkGatewayPropertiesFormat` + - Model `NatGateway` moved instance variable `idle_timeout_in_minutes`, `public_ip_addresses`, `public_ip_addresses_v6`, `public_ip_prefixes`, `public_ip_prefixes_v6`, `subnets`, `source_virtual_network`, `service_gateway`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NatGatewayPropertiesFormat` + - Model `NetworkInterface` moved instance variable `virtual_machine`, `network_security_group`, `private_endpoint`, `ip_configurations`, `tap_configurations`, `dns_settings`, `mac_address`, `primary`, `vnet_encryption_supported`, `default_outbound_connectivity_enabled`, `enable_accelerated_networking`, `disable_tcp_state_tracking`, `enable_ip_forwarding`, `hosted_workloads`, `dscp_configuration`, `resource_guid`, `provisioning_state`, `workload_type`, `nic_type`, `private_link_service`, `migration_phase`, `auxiliary_mode` and `auxiliary_sku` under property `properties` whose type is `NetworkInterfacePropertiesFormat` + - Model `NetworkInterfaceIPConfiguration` moved instance variable `gateway_load_balancer`, `virtual_network_taps`, `application_gateway_backend_address_pools`, `load_balancer_backend_address_pools`, `load_balancer_inbound_nat_rules`, `private_ip_address`, `private_ip_address_prefix_length`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `primary`, `public_ip_address`, `application_security_groups`, `provisioning_state` and `private_link_connection_properties` under property `properties` whose type is `NetworkInterfaceIPConfigurationPropertiesFormat` + - Model `NetworkInterfaceTapConfiguration` moved instance variable `virtual_network_tap` and `provisioning_state` under property `properties` whose type is `NetworkInterfaceTapConfigurationPropertiesFormat` + - Model `NetworkManagerRoutingConfiguration` moved instance variable `description`, `provisioning_state`, `resource_guid` and `route_table_usage_mode` under property `properties` whose type is `NetworkManagerRoutingConfigurationPropertiesFormat` + - Model `NetworkProfile` moved instance variable `container_network_interfaces`, `container_network_interface_configurations`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkProfilePropertiesFormat` + - Model `NetworkSecurityGroup` moved instance variable `flush_connection`, `security_rules`, `default_security_rules`, `network_interfaces`, `subnets`, `flow_logs`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkSecurityGroupPropertiesFormat` + - Model `NetworkVirtualAppliance` moved instance variable `nva_sku`, `address_prefix`, `boot_strap_configuration_blobs`, `virtual_hub`, `cloud_init_configuration_blobs`, `cloud_init_configuration`, `virtual_appliance_asn`, `ssh_public_key`, `virtual_appliance_nics`, `network_profile`, `additional_nics`, `internet_ingress_public_ips`, `virtual_appliance_sites`, `virtual_appliance_connections`, `inbound_security_rules`, `provisioning_state`, `deployment_type`, `delegation`, `partner_managed_resource`, `nva_interface_configurations` and `private_ip_address` under property `properties` whose type is `NetworkVirtualAppliancePropertiesFormat` + - Model `NetworkVirtualApplianceSku` moved instance variable `vendor`, `available_versions` and `available_scale_units` under property `properties` whose type is `NetworkVirtualApplianceSkuPropertiesFormat` + - Model `NetworkWatcher` moved instance variable `provisioning_state` under property `properties` whose type is `NetworkWatcherPropertiesFormat` + - Model `Operation` moved instance variable `service_specification` under property `properties` whose type is `OperationPropertiesFormat` + - Model `OutboundRule` moved instance variable `allocated_outbound_ports`, `frontend_ip_configurations`, `backend_address_pool`, `provisioning_state`, `protocol`, `enable_tcp_reset` and `idle_timeout_in_minutes` under property `properties` whose type is `OutboundRulePropertiesFormat` + - Model `PeerExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `circuit_connection_status`, `connection_name`, `auth_resource_guid` and `provisioning_state` under property `properties` whose type is `PeerExpressRouteCircuitConnectionPropertiesFormat` + - Model `PrivateDnsZoneConfig` moved instance variable `private_dns_zone_id` and `record_sets` under property `properties` whose type is `PrivateDnsZonePropertiesFormat` + - Model `PrivateDnsZoneGroup` moved instance variable `provisioning_state` and `private_dns_zone_configs` under property `properties` whose type is `PrivateDnsZoneGroupPropertiesFormat` + - Model `Probe` moved instance variable `load_balancing_rules`, `protocol`, `port`, `interval_in_seconds`, `no_healthy_backends_behavior`, `number_of_probes`, `probe_threshold`, `request_path` and `provisioning_state` under property `properties` whose type is `ProbePropertiesFormat` + - Model `PublicIPAddress` moved instance variable `public_ip_allocation_method`, `public_ip_address_version`, `ip_configuration`, `dns_settings`, `ddos_settings`, `ip_tags`, `ip_address`, `public_ip_prefix`, `idle_timeout_in_minutes`, `resource_guid`, `provisioning_state`, `service_public_ip_address`, `nat_gateway`, `migration_phase`, `linked_public_ip_address` and `delete_option` under property `properties` whose type is `PublicIPAddressPropertiesFormat` + - Model `PublicIPPrefix` moved instance variable `public_ip_address_version`, `ip_tags`, `prefix_length`, `ip_prefix`, `public_ip_addresses`, `load_balancer_frontend_ip_configuration`, `custom_ip_prefix`, `resource_guid`, `provisioning_state` and `nat_gateway` under property `properties` whose type is `PublicIPPrefixPropertiesFormat` + - Model `ResourceNavigationLink` moved instance variable `linked_resource_type`, `link` and `provisioning_state` under property `properties` whose type is `ResourceNavigationLinkFormat` + - Model `Route` moved instance variable `address_prefix`, `next_hop_type`, `next_hop_ip_address`, `provisioning_state` and `has_bgp_override` under property `properties` whose type is `RoutePropertiesFormat` + - Model `RouteFilter` moved instance variable `rules`, `peerings`, `ipv6_peerings` and `provisioning_state` under property `properties` whose type is `RouteFilterPropertiesFormat` + - Model `RouteFilterRule` moved instance variable `access`, `route_filter_rule_type`, `communities` and `provisioning_state` under property `properties` whose type is `RouteFilterRulePropertiesFormat` + - Model `RouteTable` moved instance variable `routes`, `subnets`, `disable_bgp_route_propagation`, `provisioning_state` and `resource_guid` under property `properties` whose type is `RouteTablePropertiesFormat` + - Model `RoutingRule` moved instance variable `description`, `provisioning_state`, `resource_guid`, `destination` and `next_hop` under property `properties` whose type is `RoutingRulePropertiesFormat` + - Model `RoutingRuleCollection` moved instance variable `description`, `provisioning_state`, `resource_guid`, `applies_to` and `disable_bgp_route_propagation` under property `properties` whose type is `RoutingRuleCollectionPropertiesFormat` + - Model `SecurityAdminConfiguration` moved instance variable `description`, `apply_on_network_intent_policy_based_services`, `network_group_address_space_aggregation_option`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityAdminConfigurationPropertiesFormat` + - Model `SecurityPartnerProvider` moved instance variable `provisioning_state`, `security_provider_name`, `connection_status` and `virtual_hub` under property `properties` whose type is `SecurityPartnerProviderPropertiesFormat` + - Model `SecurityRule` moved instance variable `description`, `protocol`, `source_port_range`, `destination_port_range`, `source_address_prefix`, `source_address_prefixes`, `source_application_security_groups`, `destination_address_prefix`, `destination_address_prefixes`, `destination_application_security_groups`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction` and `provisioning_state` under property `properties` whose type is `SecurityRulePropertiesFormat` + - Model `SecurityUserConfiguration` moved instance variable `description`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserConfigurationPropertiesFormat` + - Model `SecurityUserRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRulePropertiesFormat` + - Model `SecurityUserRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRuleCollectionPropertiesFormat` + - Model `ServiceAssociationLink` moved instance variable `linked_resource_type`, `link`, `provisioning_state`, `allow_delete` and `locations` under property `properties` whose type is `ServiceAssociationLinkPropertiesFormat` + - Model `ServiceEndpointPolicy` moved instance variable `service_endpoint_policy_definitions`, `subnets`, `resource_guid`, `provisioning_state`, `service_alias` and `contextual_service_endpoint_policies` under property `properties` whose type is `ServiceEndpointPolicyPropertiesFormat` + - Model `ServiceEndpointPolicyDefinition` moved instance variable `description`, `service`, `service_resources` and `provisioning_state` under property `properties` whose type is `ServiceEndpointPolicyDefinitionPropertiesFormat` + - Model `ServiceGateway` moved instance variable `virtual_network`, `route_target_address`, `route_target_address_v6`, `resource_guid` and `provisioning_state` under property `properties` whose type is `ServiceGatewayPropertiesFormat` + - Model `ServiceGatewayService` moved instance variable `service_type`, `is_default`, `load_balancer_backend_pools` and `public_nat_gateway_id` under property `properties` whose type is `ServiceGatewayServicePropertiesFormat` + - Model `Subnet` moved instance variable `address_prefix`, `address_prefixes`, `network_security_group`, `route_table`, `nat_gateway`, `service_endpoints`, `service_endpoint_policies`, `private_endpoints`, `ip_configurations`, `ip_configuration_profiles`, `ip_allocations`, `resource_navigation_links`, `service_association_links`, `delegations`, `purpose`, `provisioning_state`, `private_endpoint_network_policies`, `private_link_service_network_policies`, `application_gateway_ip_configurations`, `sharing_scope`, `default_outbound_access`, `ipam_pool_prefix_allocations` and `service_gateway` under property `properties` whose type is `SubnetPropertiesFormat` + - Model `TroubleshootingParameters` moved instance variable `storage_id` and `storage_path` under property `properties` whose type is `TroubleshootingProperties` + - Model `VirtualNetwork` moved instance variable `address_space`, `dhcp_options`, `flow_timeout_in_minutes`, `subnets`, `virtual_network_peerings`, `resource_guid`, `provisioning_state`, `enable_ddos_protection`, `enable_vm_protection`, `ddos_protection_plan`, `bgp_communities`, `encryption`, `ip_allocations`, `flow_logs`, `private_endpoint_v_net_policies` and `default_public_nat_gateway` under property `properties` whose type is `VirtualNetworkPropertiesFormat` + - Model `VirtualNetworkAppliance` moved instance variable `bandwidth_in_gbps`, `ip_configurations`, `provisioning_state`, `resource_guid` and `subnet` under property `properties` whose type is `VirtualNetworkAppliancePropertiesFormat` + - Model `VirtualNetworkGateway` moved instance variable `auto_scale_configuration`, `ip_configurations`, `gateway_type`, `vpn_type`, `vpn_gateway_generation`, `enable_bgp`, `enable_private_ip_address`, `virtual_network_gateway_migration_status`, `active`, `enable_high_bandwidth_vpn_gateway`, `disable_ip_sec_replay_protection`, `gateway_default_site`, `sku`, `vpn_client_configuration`, `virtual_network_gateway_policy_groups`, `bgp_settings`, `custom_routes`, `resource_guid`, `provisioning_state`, `enable_dns_forwarding`, `inbound_dns_forwarding_endpoint`, `v_net_extended_location_resource_id`, `nat_rules`, `enable_bgp_route_translation_for_nat`, `allow_virtual_wan_traffic`, `allow_remote_vnet_traffic`, `admin_state` and `resiliency_model` under property `properties` whose type is `VirtualNetworkGatewayPropertiesFormat` + - Model `VirtualNetworkGatewayConnection` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `ingress_nat_rules`, `egress_nat_rules`, `connection_type`, `connection_protocol`, `routing_weight`, `dpd_timeout_seconds`, `connection_mode`, `tunnel_properties`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_local_azure_ip_address`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass`, `enable_private_link_fast_path`, `authentication_type` and `certificate_authentication` under property `properties` whose type is `VirtualNetworkGatewayConnectionPropertiesFormat` + - Model `VirtualNetworkGatewayConnectionListEntity` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `connection_type`, `connection_protocol`, `routing_weight`, `connection_mode`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass` and `enable_private_link_fast_path` under property `properties` whose type is `VirtualNetworkGatewayConnectionListEntityPropertiesFormat` + - Model `VirtualNetworkGatewayIPConfiguration` moved instance variable `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_ip_address` and `provisioning_state` under property `properties` whose type is `VirtualNetworkGatewayIPConfigurationPropertiesFormat` + - Model `VirtualNetworkPeering` moved instance variable `allow_virtual_network_access`, `allow_forwarded_traffic`, `allow_gateway_transit`, `use_remote_gateways`, `remote_virtual_network`, `local_address_space`, `local_virtual_network_address_space`, `remote_address_space`, `remote_virtual_network_address_space`, `remote_bgp_communities`, `remote_virtual_network_encryption`, `peering_state`, `peering_sync_level`, `provisioning_state`, `do_not_verify_remote_gateways`, `resource_guid`, `peer_complete_vnets`, `enable_only_i_pv6_peering`, `local_subnet_names` and `remote_subnet_names` under property `properties` whose type is `VirtualNetworkPeeringPropertiesFormat` + - Model `VirtualNetworkTap` moved instance variable `network_interface_tap_configurations`, `resource_guid`, `provisioning_state`, `destination_network_interface_ip_configuration`, `destination_load_balancer_front_end_ip_configuration` and `destination_port` under property `properties` whose type is `VirtualNetworkTapPropertiesFormat` + - Model `VirtualRouter` moved instance variable `virtual_router_asn`, `virtual_router_ips`, `hosted_subnet`, `hosted_gateway`, `peerings` and `provisioning_state` under property `properties` whose type is `VirtualRouterPropertiesFormat` + - Model `VirtualWAN` moved instance variable `disable_vpn_encryption`, `virtual_hubs`, `vpn_sites`, `allow_branch_to_branch_traffic`, `allow_vnet_to_vnet_traffic`, `office365_local_breakout_category`, `provisioning_state` and `type_properties_type` under property `properties` whose type is `VirtualWanProperties` + - Model `VpnClientRevokedCertificate` moved instance variable `thumbprint` and `provisioning_state` under property `properties` whose type is `VpnClientRevokedCertificatePropertiesFormat` + - Model `VpnClientRootCertificate` moved instance variable `public_cert_data` and `provisioning_state` under property `properties` whose type is `VpnClientRootCertificatePropertiesFormat` + - Model `WebApplicationFirewallPolicy` moved instance variable `policy_settings`, `custom_rules`, `application_gateways`, `provisioning_state`, `resource_state`, `managed_rules`, `http_listeners`, `path_based_rules` and `application_gateway_for_containers` under property `properties` whose type is `WebApplicationFirewallPolicyPropertiesFormat` + - Model `ActiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` + - Model `ActiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `ActiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `ConfigurationGroup` moved instance variable `description`, `member_type`, `provisioning_state` and `resource_guid` under property `properties` + - Model `ConnectionMonitor` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs` and `notes` under property `properties` whose type is `ConnectionMonitorParameters` + - Model `ConnectionMonitorResult` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs`, `notes`, `provisioning_state`, `start_time`, `monitoring_status` and `connection_monitor_type` under property `properties` whose type is `ConnectionMonitorResultProperties` + - Model `EffectiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` + - Model `EffectiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `EffectiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `PacketCapture` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture` and `capture_settings` under property `properties` whose type is `PacketCaptureParameters` + - Model `PacketCaptureResult` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture`, `capture_settings` and `provisioning_state` under property `properties` whose type is `PacketCaptureResultProperties` + - Deleted or renamed model `AzureAsyncOperationResult` + - Deleted or renamed model `BastionSessionDeleteResult` + - Deleted or renamed model `Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties` + - Deleted or renamed model `ConnectionMonitorQueryResult` + - Deleted or renamed model `ConnectionMonitorSourceStatus` + - Deleted or renamed model `ConnectionState` + - Deleted or renamed model `ConnectionStateSnapshot` + - Deleted or renamed model `EvaluationState` + - Deleted or renamed model `HubVirtualNetworkConnectionStatus` + - Deleted or renamed model `NetworkOperationStatus` + - Deleted or renamed model `PatchRouteFilter` + - Deleted or renamed model `PatchRouteFilterRule` + - Deleted or renamed model `TrackedResource` + - Deleted or renamed model `TunnelConnectionStatus` + - Deleted or renamed model `VpnSiteId` + +### Other Changes + + - Deleted model `ApplicationGatewayAvailableSslPredefinedPolicies`/`ApplicationGatewayWafDynamicManifestResultList`/`AutoApprovedPrivateLinkServicesResult`/`AvailableDelegationsResult`/`AvailablePrivateEndpointTypesResult`/`AvailableServiceAliasesResult`/`ConnectionSharedKeyResultList`/`ExpressRouteCrossConnectionPeeringList`/`GetServiceGatewayAddressLocationsResult`/`GetServiceGatewayServicesResult`/`IpamPoolList`/`ListHubRouteTablesResult`/`ListHubVirtualNetworkConnectionsResult`/`ListP2SVpnGatewaysResult`/`ListRouteMapsResult`/`ListRoutingIntentResult`/`ListVirtualHubBgpConnectionResults`/`ListVirtualHubIpConfigurationResults`/`ListVirtualHubRouteTableV2SResult`/`ListVirtualHubsResult`/`ListVirtualNetworkGatewayNatRulesResult`/`ListVirtualWANsResult`/`ListVpnConnectionsResult`/`ListVpnGatewayNatRulesResult`/`ListVpnGatewaysResult`/`ListVpnServerConfigurationPolicyGroupsResult`/`ListVpnServerConfigurationsResult`/`ListVpnSiteLinkConnectionsResult`/`ListVpnSiteLinksResult`/`ListVpnSitesResult`/`NetworkVirtualApplianceConnectionList`/`PoolAssociationList`/`StaticCidrList`/`VirtualNetworkDdosProtectionStatusResult`/`VirtualNetworkGatewayListConnectionsResult`/`VirtualNetworkListUsageResult` which actually was not used by SDK users + +## 30.2.0 (2026-02-11) + +### Features Added + + - Client `NetworkManagementClient` added operation group `service_gateways` + - Client `NetworkManagementClient` added operation group `virtual_network_appliances` + - Enum `ActionType` added member `CAPTCHA` + - Enum `FirewallPolicyIntrusionDetectionProfileType` added member `CORE` + - Enum `FirewallPolicyIntrusionDetectionProfileType` added member `EMERGING` + - Enum `FirewallPolicyIntrusionDetectionProfileType` added member `OFF` + - Model `NatGateway` added property `service_gateway` + - Model `PolicySettings` added property `captcha_cookie_expiration_in_mins` + - Model `Subnet` added property `service_gateway` + - Enum `WebApplicationFirewallAction` added member `CAPTCHA` + - Added enum `AddressUpdateAction` + - Added model `GetServiceGatewayAddressLocationsResult` + - Added model `GetServiceGatewayServicesResult` + - Added model `RouteTargetAddressPropertiesFormat` + - Added model `ServiceGateway` + - Added model `ServiceGatewayAddress` + - Added model `ServiceGatewayAddressLocation` + - Added model `ServiceGatewayAddressLocationResponse` + - Added model `ServiceGatewayListResult` + - Added model `ServiceGatewayService` + - Added model `ServiceGatewayServiceRequest` + - Added model `ServiceGatewaySku` + - Added enum `ServiceGatewaySkuName` + - Added enum `ServiceGatewaySkuTier` + - Added model `ServiceGatewayUpdateAddressLocationsRequest` + - Added model `ServiceGatewayUpdateServicesRequest` + - Added enum `ServiceType` + - Added enum `ServiceUpdateAction` + - Added enum `UpdateAction` + - Added model `VirtualNetworkAppliance` + - Added model `VirtualNetworkApplianceIpConfiguration` + - Added model `VirtualNetworkApplianceListResult` + - Added operation group `ServiceGatewaysOperations` + - Added operation group `VirtualNetworkAppliancesOperations` + +### Breaking Changes + + - Deleted or renamed enum value `FirewallPolicyIntrusionDetectionProfileType.ADVANCED` + - Deleted or renamed enum value `FirewallPolicyIntrusionDetectionProfileType.BASIC` + - Deleted or renamed enum value `FirewallPolicyIntrusionDetectionProfileType.STANDARD` + +## 30.1.0 (2025-11-19) + +### Features Added + + - Added operation PublicIPAddressesOperations.begin_disassociate_cloud_service_reserved_public_ip + - Added operation PublicIPAddressesOperations.begin_reserve_cloud_service_public_ip_address + - Model ApplicationGateway has a new parameter entra_jwt_validation_configs + - Model ApplicationGatewayBackendSettings has a new parameter enable_l4_client_ip_preservation + - Model ApplicationGatewayClientAuthConfiguration has a new parameter verify_client_auth_mode + - Model ApplicationGatewayOnDemandProbe has a new parameter enable_probe_proxy_protocol_header + - Model ApplicationGatewayProbe has a new parameter enable_probe_proxy_protocol_header + - Model ApplicationGatewayRequestRoutingRule has a new parameter entra_jwt_validation_config + - Model DdosCustomPolicy has a new parameter detection_rules + - Model DdosCustomPolicy has a new parameter front_end_ip_configuration + - Model FlowLog has a new parameter record_types + - Model FlowLogInformation has a new parameter record_types + - Model LoadBalancer has a new parameter scope + - Model NetworkManagerRoutingConfiguration has a new parameter route_table_usage_mode + - Model PrivateEndpoint has a new parameter ip_version_type + - Model PrivateLinkService has a new parameter access_mode + - Model VirtualNetworkGatewayConnection has a new parameter authentication_type + - Model VirtualNetworkGatewayConnection has a new parameter certificate_authentication + +## 30.0.0 (2025-10-24) + +### Features Added + + - Added operation AzureFirewallsOperations.begin_packet_capture_operation + - Added operation VirtualNetworkGatewaysOperations.list_radius_secrets + - Added operation VpnServerConfigurationsOperations.list_radius_secrets + - Added operation group NetworkSecurityPerimeterServiceTagsOperations + - Model ApplicationGatewayBackendHttpSettings has a new parameter dedicated_backend_connection + - Model ApplicationGatewayBackendHttpSettings has a new parameter sni_name + - Model ApplicationGatewayBackendHttpSettings has a new parameter validate_cert_chain_and_expiry + - Model ApplicationGatewayBackendHttpSettings has a new parameter validate_sni + - Model AzureFirewall has a new parameter extended_location + - Model FirewallPacketCaptureParameters has a new parameter operation + - Model NetworkVirtualAppliance has a new parameter nva_interface_configurations + - Model NetworkVirtualAppliance has a new parameter private_ip_address + +### Breaking Changes + + - Removed operation group NetworkManagementClientOperationsMixin + +## 29.0.0 (2025-05-22) + +### Features Added + + - Added operation NetworkVirtualAppliancesOperations.begin_get_boot_diagnostic_logs + - Added operation NetworkVirtualAppliancesOperations.begin_reimage + - Added operation VirtualNetworkGatewaysOperations.begin_get_resiliency_information + - Added operation VirtualNetworkGatewaysOperations.begin_get_routes_information + - Added operation VirtualNetworkGatewaysOperations.begin_invoke_abort_migration + - Added operation VirtualNetworkGatewaysOperations.begin_invoke_commit_migration + - Added operation VirtualNetworkGatewaysOperations.begin_invoke_execute_migration + - Added operation VirtualNetworkGatewaysOperations.begin_invoke_prepare_migration + - Added operation group NetworkSecurityPerimeterAccessRulesOperations + - Added operation group NetworkSecurityPerimeterAssociableResourceTypesOperations + - Added operation group NetworkSecurityPerimeterAssociationsOperations + - Added operation group NetworkSecurityPerimeterLinkReferencesOperations + - Added operation group NetworkSecurityPerimeterLinksOperations + - Added operation group NetworkSecurityPerimeterLoggingConfigurationsOperations + - Added operation group NetworkSecurityPerimeterOperationStatusesOperations + - Added operation group NetworkSecurityPerimeterProfilesOperations + - Added operation group NetworkSecurityPerimetersOperations + - Model ActiveConnectivityConfiguration has a new parameter connectivity_capabilities + - Model ConnectivityConfiguration has a new parameter connectivity_capabilities + - Model EffectiveConnectivityConfiguration has a new parameter connectivity_capabilities + - Model ExpressRouteCircuitPeeringConfig has a new parameter advertised_public_prefix_info + - Model IpamPool has a new parameter etag + - Model LoadBalancingRule has a new parameter enable_connection_tracking + - Model ManagedRuleSet has a new parameter computed_disabled_rules + - Model NatGateway has a new parameter public_ip_addresses_v6 + - Model NatGateway has a new parameter public_ip_prefixes_v6 + - Model NatGateway has a new parameter source_virtual_network + - Model VerifierWorkspace has a new parameter etag + - Model VirtualNetwork has a new parameter default_public_nat_gateway + - Model VirtualNetworkGateway has a new parameter enable_high_bandwidth_vpn_gateway + - Model VirtualNetworkGateway has a new parameter virtual_network_gateway_migration_status + - Model VirtualNetworkGatewayConnection has a new parameter tunnel_properties + - Operation IpamPoolsOperations.begin_create has a new optional parameter if_match + - Operation IpamPoolsOperations.begin_delete has a new optional parameter if_match + - Operation IpamPoolsOperations.update has a new optional parameter if_match + - Operation VerifierWorkspacesOperations.begin_delete has a new optional parameter if_match + - Operation VerifierWorkspacesOperations.create has a new optional parameter if_match + - Operation VerifierWorkspacesOperations.update has a new optional parameter if_match + +### Breaking Changes + + - Removed operation ConnectionMonitorsOperations.begin_query + - Removed operation ConnectionMonitorsOperations.begin_start + +## 28.1.0 (2024-12-20) + +### Features Added + + - Client `NetworkManagementClient` added operation group `ipam_pools` + - Client `NetworkManagementClient` added operation group `static_cidrs` + - Client `NetworkManagementClient` added operation group `reachability_analysis_intents` + - Client `NetworkManagementClient` added operation group `reachability_analysis_runs` + - Client `NetworkManagementClient` added operation group `verifier_workspaces` + - Enum `AddressPrefixType` added member `NETWORK_GROUP` + - Model `AddressSpace` added property `ipam_pool_prefix_allocations` + - Model `BastionHost` added property `enable_private_only_bastion` + - Enum `FirewallPolicyIDPSSignatureDirection` added member `FIVE` + - Model `NetworkInterface` added property `default_outbound_connectivity_enabled` + - Enum `ProvisioningState` added member `CANCELED` + - Enum `ProvisioningState` added member `CREATING` + - Model `SecurityAdminConfiguration` added property `network_group_address_space_aggregation_option` + - Model `Subnet` added property `ipam_pool_prefix_allocations` + - Added enum `AddressSpaceAggregationOption` + - Added model `CommonErrorAdditionalInfo` + - Added model `CommonErrorDetail` + - Added model `CommonErrorResponse` + - Added model `CommonProxyResource` + - Added model `CommonResource` + - Added model `CommonTrackedResource` + - Added model `ExpressRouteFailoverCircuitResourceDetails` + - Added model `ExpressRouteFailoverConnectionResourceDetails` + - Added model `ExpressRouteFailoverRedundantRoute` + - Added model `ExpressRouteFailoverSingleTestDetails` + - Added model `ExpressRouteFailoverStopApiParameters` + - Added model `ExpressRouteFailoverTestDetails` + - Added model `FailoverConnectionDetails` + - Added enum `FailoverConnectionStatus` + - Added enum `FailoverTestStatus` + - Added enum `FailoverTestStatusForSingleTest` + - Added enum `FailoverTestType` + - Added model `IPTraffic` + - Added model `IntentContent` + - Added enum `IpType` + - Added model `IpamPool` + - Added model `IpamPoolList` + - Added model `IpamPoolPrefixAllocation` + - Added model `IpamPoolProperties` + - Added model `IpamPoolUpdate` + - Added model `IpamPoolUpdateProperties` + - Added model `LoadBalancerHealthPerRule` + - Added model `LoadBalancerHealthPerRulePerBackendAddress` + - Added enum `NetworkProtocol` + - Added model `PoolAssociation` + - Added model `PoolAssociationList` + - Added model `PoolUsage` + - Added model `ReachabilityAnalysisIntent` + - Added model `ReachabilityAnalysisIntentListResult` + - Added model `ReachabilityAnalysisIntentProperties` + - Added model `ReachabilityAnalysisRun` + - Added model `ReachabilityAnalysisRunListResult` + - Added model `ReachabilityAnalysisRunProperties` + - Added model `ResourceBasics` + - Added model `StaticCidr` + - Added model `StaticCidrList` + - Added model `StaticCidrProperties` + - Added model `VerifierWorkspace` + - Added model `VerifierWorkspaceListResult` + - Added model `VerifierWorkspaceProperties` + - Added model `VerifierWorkspaceUpdate` + - Added model `VerifierWorkspaceUpdateProperties` + - Operation group `LoadBalancerLoadBalancingRulesOperations` added method `begin_health` + - Operation group `VirtualNetworkGatewaysOperations` added method `begin_get_failover_all_test_details` + - Operation group `VirtualNetworkGatewaysOperations` added method `begin_get_failover_single_test_details` + - Operation group `VirtualNetworkGatewaysOperations` added method `begin_start_express_route_site_failover_simulation` + - Operation group `VirtualNetworkGatewaysOperations` added method `begin_stop_express_route_site_failover_simulation` + - Added operation group `IpamPoolsOperations` + - Added operation group `ReachabilityAnalysisIntentsOperations` + - Added operation group `ReachabilityAnalysisRunsOperations` + - Added operation group `StaticCidrsOperations` + - Added operation group `VerifierWorkspacesOperations` + +## 28.0.0 (2024-11-01) + +### Breaking Changes + +- This package now only targets the latest Api-Version available on Azure and removes APIs of other Api-Version. After this change, the package can have much smaller size. If your application requires a specific and non-latest Api-Version, it's recommended to pin this package to the previous released version; If your application always only use latest Api-Version, please ignore this change. + +## 27.0.0 (2024-09-22) + +### Features Added + + - Added operation SecurityUserConfigurationsOperations.begin_delete + - Added operation VpnLinkConnectionsOperations.begin_set_or_init_default_shared_key + - Added operation VpnLinkConnectionsOperations.get_all_shared_keys + - Added operation VpnLinkConnectionsOperations.get_default_shared_key + - Added operation VpnLinkConnectionsOperations.list_default_shared_key + - Added operation group NetworkManagerRoutingConfigurationsOperations + - Added operation group RoutingRuleCollectionsOperations + - Added operation group RoutingRulesOperations + - Added operation group SecurityUserRuleCollectionsOperations + - Added operation group SecurityUserRulesOperations + - Model ApplicationGatewayFirewallRule has a new parameter sensitivity + - Model AzureFirewall has a new parameter autoscale_configuration + - Model ConfigurationGroup has a new parameter member_type + - Model ConnectionSharedKeyResult has a new parameter id + - Model ConnectionSharedKeyResult has a new parameter name + - Model ConnectionSharedKeyResult has a new parameter properties + - Model ConnectionSharedKeyResult has a new parameter type + - Model FlowLog has a new parameter enabled_filtering_criteria + - Model FlowLogInformation has a new parameter enabled_filtering_criteria + - Model ManagedRuleOverride has a new parameter sensitivity + - Model ManagedRulesDefinition has a new parameter exceptions + - Model NetworkGroup has a new parameter member_type + - Model PrivateLinkService has a new parameter destination_ip_address + - Model VirtualNetwork has a new parameter private_endpoint_v_net_policies + - Model VirtualNetworkGateway has a new parameter resiliency_model + - Model WebApplicationFirewallPolicy has a new parameter application_gateway_for_containers + +### Breaking Changes + + - Model ConnectionSharedKeyResult no longer has parameter value + +## 26.0.0 (2024-07-21) + +### Features Added + + - Added operation InboundSecurityRuleOperations.get + - Model BastionHost has a new parameter enable_session_recording + - Model ExpressRouteCircuitAuthorization has a new parameter connection_resource_uri + - Model FlowLog has a new parameter identity + - Model FlowLogInformation has a new parameter identity + - Model Probe has a new parameter no_healthy_backends_behavior + - Model ServiceEndpointPropertiesFormat has a new parameter network_identifier + - Model VirtualNetworkGateway has a new parameter identity + - Operation ExpressRouteCrossConnectionsOperations.list has a new optional parameter filter + +### Breaking Changes + + - Model FirewallPacketCaptureParameters no longer has parameter id + +## 25.4.0 (2024-05-27) + +### Features Added + + - Added operation NetworkVirtualAppliancesOperations.begin_restart + - Added operation group FirewallPolicyDeploymentsOperations + - Added operation group FirewallPolicyDraftsOperations + - Added operation group FirewallPolicyRuleCollectionGroupDraftsOperations + - Model ApplicationGatewayHeaderConfiguration has a new parameter header_value_matcher + - Model ApplicationGatewaySku has a new parameter family + - Model ConnectionMonitorEndpoint has a new parameter location_details + - Model ConnectionMonitorEndpoint has a new parameter subscription_id + - Model ExpressRouteCircuit has a new parameter enable_direct_port_rate_limit + - Model InboundSecurityRule has a new parameter rule_type + - Model InboundSecurityRules has a new parameter applies_on + - Model InboundSecurityRules has a new parameter destination_port_ranges + - Model InboundSecurityRules has a new parameter name + - Model NetworkInterfaceIPConfiguration has a new parameter private_ip_address_prefix_length + - Model NetworkVirtualAppliance has a new parameter network_profile + - Model PacketCapture has a new parameter capture_settings + - Model PacketCapture has a new parameter continuous_capture + - Model PacketCaptureParameters has a new parameter capture_settings + - Model PacketCaptureParameters has a new parameter continuous_capture + - Model PacketCaptureResult has a new parameter capture_settings + - Model PacketCaptureResult has a new parameter continuous_capture + - Model PacketCaptureResultProperties has a new parameter capture_settings + - Model PacketCaptureResultProperties has a new parameter continuous_capture + - Model PacketCaptureStorageLocation has a new parameter local_path + - Model PolicySettings has a new parameter js_challenge_cookie_expiration_in_mins + - Model Subnet has a new parameter sharing_scope + - Model VirtualApplianceNicProperties has a new parameter nic_type + - Model VirtualNetworkPeering has a new parameter enable_only_i_pv6_peering + - Model VirtualNetworkPeering has a new parameter local_address_space + - Model VirtualNetworkPeering has a new parameter local_subnet_names + - Model VirtualNetworkPeering has a new parameter local_virtual_network_address_space + - Model VirtualNetworkPeering has a new parameter peer_complete_vnets + - Model VirtualNetworkPeering has a new parameter remote_subnet_names + - Model VpnSiteLinkConnection has a new parameter dpd_timeout_seconds + +## 25.3.0 (2024-02-22) + +### Features Added + + - Model BastionHost has a new parameter zones + +## 25.2.0 (2023-12-18) + +### Features Added + + - Added operation NetworkManagementClientOperationsMixin.begin_delete_bastion_shareable_link_by_token + - Added operation NetworkSecurityPerimetersOperations.patch + - Model ApplicationGatewayListener has a new parameter host_names + - Model FirewallPolicyIntrusionDetection has a new parameter profile + - Model NetworkVirtualAppliance has a new parameter internet_ingress_public_ips + +## 25.1.0 (2023-09-15) + +### Features Added + + - Model BastionHost has a new parameter network_acls + - Model BastionHost has a new parameter virtual_network + - Model FirewallPolicy has a new parameter size + - Model FirewallPolicyRuleCollectionGroup has a new parameter size + - Model Subnet has a new parameter default_outbound_access + - Model VirtualNetworkGateway has a new parameter auto_scale_configuration + +## 25.0.0 (2023-08-18) + +### Features Added + + - Added operation LoadBalancersOperations.migrate_to_ip_based + - Model BackendAddressPool has a new parameter sync_mode + +### Breaking Changes + + - Removed operation group NspLinkReconcileOperations + - Removed operation group NspLinkReferenceReconcileOperations + +## 24.0.0 (2023-07-21) + +### Breaking Changes + + - Removed `HTTP_STATUS499` from enum `ApplicationGatewayCustomErrorStatusCode` + +### Features Added + + - Added enum `AdminState` + - Model ActiveConnectivityConfiguration has a new parameter resource_guid + - Model ActiveDefaultSecurityAdminRule has a new parameter resource_guid + - Model ActiveSecurityAdminRule has a new parameter resource_guid + - Model AdminRule has a new parameter resource_guid + - Model AdminRuleCollection has a new parameter resource_guid + - Model ApplicationGateway has a new parameter default_predefined_ssl_policy + - Model ConfigurationGroup has a new parameter resource_guid + - Model ConnectivityConfiguration has a new parameter resource_guid + - Model DefaultAdminRule has a new parameter resource_guid + - Model EffectiveConnectivityConfiguration has a new parameter resource_guid + - Model EffectiveDefaultSecurityAdminRule has a new parameter resource_guid + - Model EffectiveSecurityAdminRule has a new parameter resource_guid + - Model NetworkGroup has a new parameter resource_guid + - Model NetworkManager has a new parameter resource_guid + - Model SecurityAdminConfiguration has a new parameter resource_guid + - Model VirtualNetworkGateway has a new parameter admin_state + +## 23.1.0 (2023-05-20) + +### Features Added + + - Added operation AzureFirewallsOperations.begin_packet_capture + - Added operation group NetworkVirtualApplianceConnectionsOperations + - Model ApplicationRule has a new parameter http_headers_to_insert + - Model BastionHost has a new parameter enable_kerberos + - Model NetworkInterface has a new parameter auxiliary_sku + - Model NetworkVirtualAppliance has a new parameter additional_nics + - Model NetworkVirtualAppliance has a new parameter virtual_appliance_connections + - Model PolicySettings has a new parameter file_upload_enforcement + - Model PolicySettings has a new parameter log_scrubbing + - Model PolicySettings has a new parameter request_body_enforcement + - Model PolicySettings has a new parameter request_body_inspect_limit_in_kb + - Model PrivateEndpointConnection has a new parameter private_endpoint_location + - Model PublicIPAddressDnsSettings has a new parameter domain_name_label_scope + - Model VirtualApplianceNicProperties has a new parameter instance_name + - Model WebApplicationFirewallCustomRule has a new parameter group_by_user_session + - Model WebApplicationFirewallCustomRule has a new parameter rate_limit_duration + - Model WebApplicationFirewallCustomRule has a new parameter rate_limit_threshold + +## 23.0.1 (2023-04-26) + +### Bugs Fixed + + - Fix calling failure for those operations which could be called by client directly #30057 + +## 23.0.0 (2023-03-29) + +### Other Changes + + - Initial stable release with our new combined multiapi package. Package size is now 5% of what it used to be. + +### Breaking Changes + + - All query and header parameters are now keyword-only + - Removed api version subfolders. This means you can no longer access any `azure.mgmt.network.v20xx_xx_xx` modules. + - Removed `.models` method from `NetworkManagementClient`. Instead, import models from `azure.mgmt.network.models`. + +## 22.3.0 (2023-03-20) + +### Features Added + + - Model ExpressRouteCircuit has a new parameter authorization_status + - Model NspAccessRule has a new parameter email_addresses + - Model NspAccessRule has a new parameter phone_numbers + - Model NspLink has a new parameter remote_perimeter_location + - Model NspLinkReference has a new parameter remote_perimeter_location + - Model VirtualNetwork has a new parameter flow_logs + - Model WebApplicationFirewallCustomRule has a new parameter state + - Operation VpnGatewaysOperations.begin_reset has a new optional parameter ip_configuration_id + +## 23.0.0b2 (2023-02-20) + +### Other Changes + + - Continued package size improvements. The whole package is now 5% of the latest stable release + +### Breaking Changes + + - Removed api version subfolders. This means you can no longer access any `azure.mgmt.network.v20xx_xx_xx` modules + - Removed `.models` method from `NetworkManagementClient` + +## 23.0.0b1 (2022-12-19) + +### Other Changes + + - Preview package with the same multiapi support but much reduced package size. + +### Breaking Changes + + - All query and header parameters are now keyword-only + - Can not individually access each API version's client and operations + +## 22.2.0 (2022-12-15) + +### Features Added + + - Model BackendAddressPool has a new parameter virtual_network + - Model NetworkVirtualAppliance has a new parameter delegation + - Model NetworkVirtualAppliance has a new parameter deployment_type + - Model NetworkVirtualAppliance has a new parameter partner_managed_resource + - Model PolicySettings has a new parameter custom_block_response_body + - Model PolicySettings has a new parameter custom_block_response_status_code + +## 22.1.0 (2022-10-24) + +### Features Added + + - Added operation group NspLinkReconcileOperations + - Added operation group NspLinkReferenceReconcileOperations + - Added operation group NspLinkReferencesOperations + - Added operation group NspLinksOperations + +## 22.0.0 (2022-10-12) + +### Features Added + + - Added operation PublicIPAddressesOperations.begin_ddos_protection_status + - Added operation VirtualHubsOperations.begin_get_inbound_routes + - Added operation VirtualHubsOperations.begin_get_outbound_routes + - Added operation VirtualNetworksOperations.begin_list_ddos_protection_status + - Added operation group ApplicationGatewayWafDynamicManifestsDefaultOperations + - Added operation group ApplicationGatewayWafDynamicManifestsOperations + - Added operation group NspAssociationReconcileOperations + - Added operation group RouteMapsOperations + - Added operation group VipSwapOperations + - Model ApplicationGatewayClientAuthConfiguration has a new parameter verify_client_revocation + - Model ApplicationGatewayFirewallRule has a new parameter action + - Model ApplicationGatewayFirewallRule has a new parameter rule_id_string + - Model ApplicationGatewayFirewallRule has a new parameter state + - Model ApplicationGatewayFirewallRuleSet has a new parameter tiers + - Model CustomIpPrefix has a new parameter asn + - Model CustomIpPrefix has a new parameter express_route_advertise + - Model CustomIpPrefix has a new parameter geo + - Model CustomIpPrefix has a new parameter prefix_type + - Model DdosProtectionPlan has a new parameter public_ip_addresses + - Model DdosSettings has a new parameter ddos_protection_plan + - Model DdosSettings has a new parameter protection_mode + - Model ExpressRouteConnection has a new parameter enable_private_link_fast_path + - Model ExpressRouteGateway has a new parameter allow_non_virtual_wan_traffic + - Model ExpressRouteLink has a new parameter colo_location + - Model ExpressRoutePort has a new parameter billing_type + - Model ManagedRuleOverride has a new parameter action + - Model NetworkInterface has a new parameter disable_tcp_state_tracking + - Model NspProfile has a new parameter diagnostic_settings_version + - Model Probe has a new parameter probe_threshold + - Model RoutingConfiguration has a new parameter inbound_route_map + - Model RoutingConfiguration has a new parameter outbound_route_map + - Model VirtualHub has a new parameter route_maps + - Model VirtualNetworkGateway has a new parameter allow_remote_vnet_traffic + - Model VirtualNetworkGateway has a new parameter allow_virtual_wan_traffic + - Model VirtualNetworkGateway has a new parameter virtual_network_gateway_policy_groups + - Model VirtualNetworkGatewayConnection has a new parameter enable_private_link_fast_path + - Model VirtualNetworkGatewayConnectionListEntity has a new parameter enable_private_link_fast_path + - Model VnetRoute has a new parameter static_routes_config + - Model VpnClientConfiguration has a new parameter vng_client_connection_configurations + +### Breaking Changes + + - Model DdosCustomPolicy no longer has parameter protocol_custom_settings + - Model DdosCustomPolicy no longer has parameter public_ip_addresses + - Model DdosSettings no longer has parameter ddos_custom_policy + - Model DdosSettings no longer has parameter protected_ip + - Model DdosSettings no longer has parameter protection_coverage + - Operation NetworkManagementClientOperationsMixin.list_active_connectivity_configurations has a new parameter top + - Operation NetworkManagementClientOperationsMixin.list_active_security_admin_rules has a new parameter top + - Operation NetworkManagementClientOperationsMixin.list_network_manager_effective_connectivity_configurations has a new parameter top + - Operation NetworkManagementClientOperationsMixin.list_network_manager_effective_security_admin_rules has a new parameter top + - Operation NetworkManagerDeploymentStatusOperations.list has a new parameter top + - Removed operation NetworkSecurityPerimetersOperations.check_members + - Removed operation NetworkSecurityPerimetersOperations.query + - Removed operation group NspAssociationsProxyOperations + +## 21.0.1 (2022-08-17) + +### Bugs Fixed + + - Add `__version__` to `__init__.py` for package + +## 21.0.0 (2022-08-05) + +**Features** + + - Added operation AdminRuleCollectionsOperations.begin_delete + - Added operation AdminRulesOperations.begin_delete + - Added operation AzureFirewallsOperations.begin_list_learned_prefixes + - Added operation ConnectivityConfigurationsOperations.begin_delete + - Added operation NetworkGroupsOperations.begin_delete + - Added operation NetworkManagementClientOperationsMixin.express_route_provider_port + - Added operation NetworkManagementClientOperationsMixin.list_active_connectivity_configurations + - Added operation NetworkManagementClientOperationsMixin.list_active_security_admin_rules + - Added operation NetworkManagementClientOperationsMixin.list_network_manager_effective_connectivity_configurations + - Added operation NetworkManagementClientOperationsMixin.list_network_manager_effective_security_admin_rules + - Added operation NetworkManagerCommitsOperations.begin_post + - Added operation NetworkManagersOperations.begin_delete + - Added operation NetworkManagersOperations.patch + - Added operation NetworkSecurityPerimetersOperations.check_members + - Added operation NetworkSecurityPerimetersOperations.query + - Added operation SecurityAdminConfigurationsOperations.begin_delete + - Added operation group ExpressRouteProviderPortsLocationOperations + - Added operation group ManagementGroupNetworkManagerConnectionsOperations + - Added operation group NspAccessRulesReconcileOperations + - Added operation group NspAssociationsProxyOperations + - Added operation group ScopeConnectionsOperations + - Added operation group StaticMembersOperations + - Added operation group SubscriptionNetworkManagerConnectionsOperations + - Model ApplicationGatewayRoutingRule has a new parameter priority + - Model CustomIpPrefix has a new parameter no_internet_advertise + - Model FirewallPolicy has a new parameter explicit_proxy + - Model FirewallPolicySNAT has a new parameter auto_learn_private_ranges + - Model NetworkManagerPropertiesNetworkManagerScopes has a new parameter cross_tenant_scopes + - Model NetworkSecurityGroup has a new parameter flush_connection + - Model NetworkSecurityPerimeter has a new parameter perimeter_guid + - Model PacketCapture has a new parameter scope + - Model PacketCapture has a new parameter target_type + - Model PacketCaptureParameters has a new parameter scope + - Model PacketCaptureParameters has a new parameter target_type + - Model PacketCaptureResult has a new parameter scope + - Model PacketCaptureResult has a new parameter target_type + - Model PacketCaptureResultProperties has a new parameter scope + - Model PacketCaptureResultProperties has a new parameter target_type + - Model VirtualHub has a new parameter virtual_router_auto_scale_configuration + +**Breaking changes** + + - Model ActiveBaseSecurityAdminRule no longer has parameter configuration_display_name + - Model ActiveBaseSecurityAdminRule no longer has parameter rule_collection_display_name + - Model ActiveConnectivityConfiguration no longer has parameter display_name + - Model ActiveDefaultSecurityAdminRule no longer has parameter configuration_display_name + - Model ActiveDefaultSecurityAdminRule no longer has parameter display_name + - Model ActiveDefaultSecurityAdminRule no longer has parameter rule_collection_display_name + - Model ActiveSecurityAdminRule no longer has parameter configuration_display_name + - Model ActiveSecurityAdminRule no longer has parameter display_name + - Model ActiveSecurityAdminRule no longer has parameter rule_collection_display_name + - Model AdminRule no longer has parameter display_name + - Model ConfigurationGroup no longer has parameter conditional_membership + - Model ConfigurationGroup no longer has parameter display_name + - Model ConfigurationGroup no longer has parameter group_members + - Model ConfigurationGroup no longer has parameter member_type + - Model ConnectivityConfiguration no longer has parameter display_name + - Model DefaultAdminRule no longer has parameter display_name + - Model EffectiveBaseSecurityAdminRule no longer has parameter configuration_display_name + - Model EffectiveBaseSecurityAdminRule no longer has parameter rule_collection_display_name + - Model EffectiveConnectivityConfiguration no longer has parameter display_name + - Model EffectiveDefaultSecurityAdminRule no longer has parameter configuration_display_name + - Model EffectiveDefaultSecurityAdminRule no longer has parameter display_name + - Model EffectiveDefaultSecurityAdminRule no longer has parameter rule_collection_display_name + - Model EffectiveSecurityAdminRule no longer has parameter configuration_display_name + - Model EffectiveSecurityAdminRule no longer has parameter display_name + - Model EffectiveSecurityAdminRule no longer has parameter rule_collection_display_name + - Model FirewallPolicy no longer has parameter explicit_proxy_settings + - Model NetworkGroup no longer has parameter conditional_membership + - Model NetworkGroup no longer has parameter display_name + - Model NetworkGroup no longer has parameter group_members + - Model NetworkGroup no longer has parameter member_type + - Model NetworkManager no longer has parameter display_name + - Model NetworkSecurityPerimeter no longer has parameter description + - Model NetworkSecurityPerimeter no longer has parameter display_name + - Model NetworkSecurityPerimeter no longer has parameter etag + - Model NspProfile no longer has parameter enabled_log_categories + - Parameter commit_type of model NetworkManagerCommit is now required + - Parameter group_connectivity of model ConnectivityGroupItem is now required + - Parameter network_group_id of model ConnectivityGroupItem is now required + - Parameter network_group_id of model NetworkManagerSecurityGroupItem is now required + - Parameter target_locations of model NetworkManagerCommit is now required + - Removed operation AdminRuleCollectionsOperations.delete + - Removed operation AdminRulesOperations.delete + - Removed operation ConnectivityConfigurationsOperations.delete + - Removed operation NetworkGroupsOperations.delete + - Removed operation NetworkManagerCommitsOperations.post + - Removed operation NetworkManagersOperations.delete + - Removed operation NetworkManagersOperations.patch_tags + - Removed operation SecurityAdminConfigurationsOperations.delete + +## 20.0.0 (2022-05-10) + +**Features** + + - Added operation FirewallPoliciesOperations.update_tags + - Added operation PerimeterAssociableResourceTypesOperations.list + - Added operation group ConfigurationPolicyGroupsOperations + - Added operation group ExpressRoutePortAuthorizationsOperations + - Added operation group NspAccessRulesOperations + - Added operation group NspAssociationsOperations + - Added operation group NspProfilesOperations + - Model ApplicationGateway has a new parameter backend_settings_collection + - Model ApplicationGateway has a new parameter listeners + - Model ApplicationGateway has a new parameter routing_rules + - Model ApplicationGatewayProbe has a new parameter pick_host_name_from_backend_settings + - Model BackendAddressPool has a new parameter drain_period_in_seconds + - Model ExpressRouteCircuit has a new parameter authorization_key + - Model FirewallPolicyIntrusionDetectionConfiguration has a new parameter private_ranges + - Model LoadBalancerBackendAddress has a new parameter admin_state + - Model NetworkInterface has a new parameter auxiliary_mode + - Model P2SConnectionConfiguration has a new parameter configuration_policy_group_associations + - Model P2SConnectionConfiguration has a new parameter previous_configuration_policy_group_associations + - Model VirtualHub has a new parameter hub_routing_preference + - Model VirtualNetworkGatewayConnection has a new parameter gateway_custom_bgp_ip_addresses + - Model VirtualNetworkGatewayConnectionListEntity has a new parameter gateway_custom_bgp_ip_addresses + - Model VpnServerConfiguration has a new parameter configuration_policy_groups + - Model VpnSiteLinkConnection has a new parameter vpn_gateway_custom_bgp_addresses + +**Breaking changes** + + - Removed operation PerimeterAssociableResourceTypesOperations.get + +## 19.3.0 (2021-11-05) + +**Features** + + - Model LoadBalancerBackendAddress has a new parameter inbound_nat_rules_port_mapping + - Model VpnNatRuleMapping has a new parameter port_range + - Model OwaspCrsExclusionEntry has a new parameter exclusion_managed_rule_sets + - Model VirtualNetworkPeering has a new parameter remote_virtual_network_encryption + - Model NetworkInterface has a new parameter vnet_encryption_supported + - Model VirtualNetworkGateway has a new parameter disable_ip_sec_replay_protection + - Model VirtualNetwork has a new parameter encryption + - Model BackendAddressPool has a new parameter inbound_nat_rules + - Added operation LoadBalancersOperations.begin_list_inbound_nat_rule_port_mappings + - Added operation group FirewallPolicyIdpsSignaturesOverridesOperations + - Added operation group RoutingIntentOperations + - Added operation group FirewallPolicyIdpsSignaturesOperations + - Added operation group FirewallPolicyIdpsSignaturesFilterValuesOperations + +## 19.2.0 (2021-10-21) + +**Features** + + - Added operation group AdminRuleCollectionsOperations + - Added operation group SecurityUserConfigurationsOperations + - Added operation group ConnectivityConfigurationsOperations + - Added operation group ActiveSecurityUserRulesOperations + - Added operation group NetworkManagerCommitsOperations + - Added operation group NetworkManagersOperations + - Added operation group NetworkManagerDeploymentStatusOperations + - Added operation group ActiveConnectivityConfigurationsOperations + - Added operation group NetworkManagerEffectiveSecurityAdminRulesOperations + - Added operation group UserRuleCollectionsOperations + - Added operation group ActiveSecurityAdminRulesOperations + - Added operation group UserRulesOperations + - Added operation group NetworkGroupsOperations + - Added operation group EffectiveVirtualNetworksOperations + - Added operation group NetworkSecurityPerimetersOperations + - Added operation group PerimeterAssociableResourceTypesOperations + - Added operation group AdminRulesOperations + - Added operation group SecurityAdminConfigurationsOperations + - Added operation group EffectiveConnectivityConfigurationsOperations + - Removed old api-version `2017-08-01` + +## 19.1.0 (2021-10-09) + +**Features** + + - Model ServiceEndpointPolicy has a new parameter service_alias + - Model ServiceEndpointPolicy has a new parameter contextual_service_endpoint_policies + - Model ApplicationGatewayRequestRoutingRule has a new parameter load_distribution_policy + - Model BgpConnection has a new parameter hub_virtual_network_connection + - Model BastionHost has a new parameter enable_ip_connect + - Model BastionHost has a new parameter disable_copy_paste + - Model BastionHost has a new parameter enable_tunneling + - Model BastionHost has a new parameter scale_units + - Model BastionHost has a new parameter enable_file_copy + - Model BastionHost has a new parameter enable_shareable_link + - Model DscpConfiguration has a new parameter qos_definition_collection + - Model ServiceTagInformation has a new parameter service_tag_change_number + - Model VnetRoute has a new parameter bgp_connections + - Model VpnGateway has a new parameter enable_bgp_route_translation_for_nat + - Model ServiceEndpointPolicyDefinition has a new parameter type + - Model ApplicationGateway has a new parameter global_configuration + - Model ApplicationGateway has a new parameter load_distribution_policies + - Model InboundNatRule has a new parameter frontend_port_range_end + - Model InboundNatRule has a new parameter frontend_port_range_start + - Model InboundNatRule has a new parameter backend_address_pool + - Model PrivateEndpoint has a new parameter ip_configurations + - Model PrivateEndpoint has a new parameter application_security_groups + - Model PrivateEndpoint has a new parameter custom_network_interface_name + - Model NetworkVirtualAppliance has a new parameter ssh_public_key + - Model ApplicationGatewayUrlPathMap has a new parameter default_load_distribution_policy + - Model FirewallPolicy has a new parameter sql + - Model FirewallPolicy has a new parameter explicit_proxy_settings + - Model VirtualHub has a new parameter kind + - Model ApplicationGatewayPathRule has a new parameter load_distribution_policy + - Added operation BastionHostsOperations.begin_update_tags + - Added operation group ServiceTagInformationOperations + +## 19.0.0 (2021-05-14) + +**Features** + + - Model ApplicationGatewayTrustedClientCertificate has a new parameter validated_cert_data + - Model ApplicationGatewayTrustedClientCertificate has a new parameter client_cert_issuer_dn + - Model VirtualNetwork has a new parameter flow_timeout_in_minutes + - Model FrontendIPConfiguration has a new parameter gateway_load_balancer + - Model IPAddressAvailabilityResult has a new parameter is_platform_reserved + - Model CustomIpPrefix has a new parameter custom_ip_prefix_parent + - Model CustomIpPrefix has a new parameter failed_reason + - Model CustomIpPrefix has a new parameter child_custom_ip_prefixes + - Model CustomIpPrefix has a new parameter authorization_message + - Model CustomIpPrefix has a new parameter signed_message + - Model VirtualNetworkPeering has a new parameter peering_sync_level + - Model VirtualNetworkPeering has a new parameter resource_guid + - Model VirtualNetworkPeering has a new parameter do_not_verify_remote_gateways + - Model VirtualNetworkPeering has a new parameter type + - Model VirtualNetworkPeering has a new parameter remote_virtual_network_address_space + - Model Subnet has a new parameter application_gateway_ip_configurations + - Model Subnet has a new parameter type + - Model LoadBalancingRule has a new parameter backend_address_pools + - Model EffectiveNetworkSecurityGroupAssociation has a new parameter network_manager + - Model BastionHost has a new parameter sku + - Model VirtualNetworkGateway has a new parameter extended_location + - Model VirtualNetworkGateway has a new parameter nat_rules + - Model VirtualNetworkGateway has a new parameter enable_bgp_route_translation_for_nat + - Model NetworkInterface has a new parameter workload_type + - Model NetworkInterface has a new parameter private_link_service + - Model NetworkInterface has a new parameter nic_type + - Model NetworkInterface has a new parameter migration_phase + - Model Delegation has a new parameter type + - Model PublicIPPrefix has a new parameter nat_gateway + - Model VirtualNetworkGatewayConnection has a new parameter egress_nat_rules + - Model VirtualNetworkGatewayConnection has a new parameter ingress_nat_rules + - Model NetworkInterfaceIPConfiguration has a new parameter gateway_load_balancer + - Model NetworkInterfaceIPConfiguration has a new parameter type + - Model AvailablePrivateEndpointType has a new parameter display_name + - Model PublicIPAddress has a new parameter delete_option + - Model PublicIPAddress has a new parameter nat_gateway + - Model PublicIPAddress has a new parameter service_public_ip_address + - Model PublicIPAddress has a new parameter linked_public_ip_address + - Model PublicIPAddress has a new parameter migration_phase + - Model VirtualHub has a new parameter preferred_routing_gateway + - Model BackendAddressPool has a new parameter tunnel_interfaces + - Model ServiceTagInformationPropertiesFormat has a new parameter state + - Added operation LoadBalancersOperations.begin_swap_public_ip_addresses + - Added operation group VirtualNetworkGatewayNatRulesOperations + +**Breaking changes** + + - Operation VirtualNetworkPeeringsOperations.begin_create_or_update has a new signature + - Model VirtualNetworkGateway no longer has parameter virtual_network_extended_location + +## 18.0.0 (2021-03-08) + +**Features** + + - Model VpnConnection has a new parameter traffic_selector_policies + - Model VirtualNetworkGateway has a new parameter virtual_network_extended_location + - Model VirtualNetworkGateway has a new parameter v_net_extended_location_resource_id + - Model VpnClientConfiguration has a new parameter vpn_authentication_types + - Model LoadBalancerBackendAddress has a new parameter subnet + - Model ServiceEndpointPolicy has a new parameter kind + - Model FirewallPolicy has a new parameter snat + - Model FirewallPolicy has a new parameter insights + - Added operation VirtualNetworkGatewayConnectionsOperations.begin_reset_connection + - Added operation VpnLinkConnectionsOperations.begin_get_ike_sas + - Added operation VpnLinkConnectionsOperations.begin_reset_connection + +**Breaking changes** + + - Model VirtualNetworkGateway no longer has parameter extended_location + - Model VirtualNetworkGateway no longer has parameter virtual_network_extended_location_resource_id + +## 17.1.0 (2021-01-26) + +**Features** + - Model PrivateEndpoint has a new parameter extended_location + - Model VpnGateway has a new parameter nat_rules + - Model ExpressRouteConnection has a new parameter express_route_gateway_bypass + - Model SecurityRule has a new parameter type + - Model PrivateLinkService has a new parameter extended_location + - Model Route has a new parameter type + - Model Route has a new parameter has_bgp_override + - Model RouteTable has a new parameter resource_guid + - Model VpnSiteLinkConnection has a new parameter ingress_nat_rules + - Model VpnSiteLinkConnection has a new parameter vpn_link_connection_mode + - Model VpnSiteLinkConnection has a new parameter egress_nat_rules + - Model BackendAddressPool has a new parameter location + - Model CustomIpPrefix has a new parameter extended_location + - Added operation ExpressRouteGatewaysOperations.begin_update_tags + - Added operation VirtualNetworkGatewayConnectionsOperations.begin_get_ike_sas + - Added operation group NatRulesOperations + +## 17.0.0 (2020-11-25) + +**Features** + + - Model PublicIPPrefix has a new parameter extended_location + - Model PublicIPPrefixSku has a new parameter tier + - Model NatRule has a new parameter translated_fqdn + - Model NetworkInterface has a new parameter extended_location + - Model ApplicationRule has a new parameter terminate_tls + - Model ApplicationRule has a new parameter web_categories + - Model ApplicationRule has a new parameter target_urls + - Model VirtualNetworkGatewayConnection has a new parameter connection_mode + - Model LoadBalancer has a new parameter extended_location + - Model PublicIPAddress has a new parameter extended_location + - Model LoadBalancerSku has a new parameter tier + - Model VirtualNetwork has a new parameter extended_location + - Model P2SVpnGateway has a new parameter is_routing_preference_internet + - Model IpGroup has a new parameter firewall_policies + - Model VpnGateway has a new parameter is_routing_preference_internet + - Model VirtualNetworkGateway has a new parameter extended_location + - Model VirtualNetworkGateway has a new parameter virtual_network_extended_location_resource_id + - Model VirtualNetworkGatewayConnectionListEntity has a new parameter connection_mode + - Model FirewallPolicy has a new parameter sku + - Model FirewallPolicy has a new parameter transport_security + - Model FirewallPolicy has a new parameter identity + - Model FirewallPolicy has a new parameter intrusion_detection + - Model VirtualHub has a new parameter allow_branch_to_branch_traffic + - Model PublicIPAddressSku has a new parameter tier + - Model ServiceTagsListResult has a new parameter next_link + - Model LoadBalancerBackendAddress has a new parameter load_balancer_frontend_ip_configuration + - Added operation NetworkInterfacesOperations.list_cloud_service_network_interfaces + - Added operation NetworkInterfacesOperations.get_cloud_service_network_interface + - Added operation NetworkInterfacesOperations.list_cloud_service_role_instance_network_interfaces + - Added operation PublicIPAddressesOperations.list_cloud_service_role_instance_public_ip_addresses + - Added operation PublicIPAddressesOperations.list_cloud_service_public_ip_addresses + - Added operation PublicIPAddressesOperations.get_cloud_service_public_ip_address + - Added operation group WebCategoriesOperations + +**Breaking changes** + + - Operation ConnectionMonitorsOperations.begin_create_or_update has a new signature + - Model VirtualHub no longer has parameter enable_virtual_router_route_propogation + +## 16.0.0 (2020-09-15) + +**Features** + + - Model VirtualNetworkPeering has a new parameter remote_bgp_communities + - Model VirtualHub has a new parameter virtual_router_asn + - Model VirtualHub has a new parameter routing_state + - Model VirtualHub has a new parameter ip_configurations + - Model VirtualHub has a new parameter virtual_router_ips + - Model VirtualHub has a new parameter enable_virtual_router_route_propogation + - Model VirtualHub has a new parameter bgp_connections + - Model FirewallPolicyRule has a new parameter description + - Model ExpressRouteLinkMacSecConfig has a new parameter sci_state + - Model VpnGateway has a new parameter ip_configurations + - Model P2SConnectionConfiguration has a new parameter enable_internet_security + - Model ConnectionMonitorEndpoint has a new parameter type + - Model ConnectionMonitorEndpoint has a new parameter coverage_level + - Model ConnectionMonitorEndpoint has a new parameter scope + - Model FirewallPolicy has a new parameter rule_collection_groups + - Model FirewallPolicy has a new parameter dns_settings + - Model NetworkInterface has a new parameter dscp_configuration + - Model NetworkVirtualAppliance has a new parameter address_prefix + - Model NetworkVirtualAppliance has a new parameter cloud_init_configuration_blobs + - Model NetworkVirtualAppliance has a new parameter boot_strap_configuration_blobs + - Model NetworkVirtualAppliance has a new parameter cloud_init_configuration + - Model NetworkVirtualAppliance has a new parameter inbound_security_rules + - Model NetworkVirtualAppliance has a new parameter nva_sku + - Model NetworkVirtualAppliance has a new parameter virtual_appliance_sites + - Model ConnectionMonitorTcpConfiguration has a new parameter destination_port_behavior + - Model ApplicationGatewayHttpListener has a new parameter ssl_profile + - Model P2SVpnGateway has a new parameter custom_dns_servers + - Model ApplicationGateway has a new parameter private_link_configurations + - Model ApplicationGateway has a new parameter trusted_client_certificates + - Model ApplicationGateway has a new parameter private_endpoint_connections + - Model ApplicationGateway has a new parameter ssl_profiles + - Model HubIPAddresses has a new parameter public_i_ps + - Model PublicIPPrefix has a new parameter custom_ip_prefix + - Model ApplicationGatewayFrontendIPConfiguration has a new parameter private_link_configuration + - Model VpnSite has a new parameter o365_policy + - Model ConnectivityHop has a new parameter previous_links + - Model ConnectivityHop has a new parameter previous_hop_ids + - Model ConnectivityHop has a new parameter links + - Added operation ExpressRoutePortsOperations.generate_loa + - Added operation FlowLogsOperations.update_tags + - Added operation HubVirtualNetworkConnectionsOperations.begin_create_or_update + - Added operation HubVirtualNetworkConnectionsOperations.begin_delete + - Added operation VpnGatewaysOperations.begin_stop_packet_capture + - Added operation VpnGatewaysOperations.begin_start_packet_capture + - Added operation VpnGatewaysOperations.begin_update_tags + - Added operation VpnConnectionsOperations.begin_stop_packet_capture + - Added operation VpnConnectionsOperations.begin_start_packet_capture + - Added operation PrivateLinkServicesOperations.begin_check_private_link_service_visibility_by_resource_group + - Added operation PrivateLinkServicesOperations.begin_check_private_link_service_visibility + - Added operation VirtualHubsOperations.begin_get_effective_virtual_hub_routes + - Added operation P2SVpnGatewaysOperations.begin_reset + - Added operation P2SVpnGatewaysOperations.begin_update_tags + - Added operation group CustomIPPrefixesOperations + - Added operation group VirtualApplianceSitesOperations + - Added operation group DscpConfigurationOperations + - Added operation group VirtualHubIpConfigurationOperations + - Added operation group VirtualHubBgpConnectionOperations + - Added operation group InboundSecurityRuleOperations + - Added operation group VirtualApplianceSkusOperations + - Added operation group ApplicationGatewayPrivateLinkResourcesOperations + - Added operation group ApplicationGatewayPrivateEndpointConnectionsOperations + - Added operation group FirewallPolicyRuleCollectionGroupsOperations + - Added operation group VirtualHubBgpConnectionsOperations + +**Breaking changes** + + - Model VirtualHub no longer has parameter virtual_network_connections + - Model FirewallPolicyRule no longer has parameter priority + - Model FirewallPolicy no longer has parameter transport_security + - Model FirewallPolicy no longer has parameter rule_groups + - Model FirewallPolicy no longer has parameter intrusion_system_mode + - Model FirewallPolicy no longer has parameter identity + - Model NetworkVirtualAppliance no longer has parameter boot_strap_configuration_blob + - Model NetworkVirtualAppliance no longer has parameter sku + - Model NetworkVirtualAppliance no longer has parameter cloud_init_configuration_blob + - Model NatRuleCondition no longer has parameter terminate_tls + - Model HubIPAddresses no longer has parameter public_ip_addresses + - Model ApplicationRuleCondition no longer has parameter target_urls + - Removed operation VpnGatewaysOperations.update_tags + - Removed operation PrivateLinkServicesOperations.check_private_link_service_visibility_by_resource_group + - Removed operation PrivateLinkServicesOperations.check_private_link_service_visibility + - Removed operation P2SVpnGatewaysOperations.update_tags + +## 16.0.0b1 (2020-06-17) + +This is beta preview version. +For detailed changelog please refer to equivalent stable version 10.2.0 (https://pypi.org/project/azure-mgmt-network/10.2.0/) + +This version uses a next-generation code generator that introduces important breaking changes, but also important new features (like unified authentication and async programming). + +**General breaking changes** + +- Credential system has been completly revamped: + + - `azure.common.credentials` or `msrestazure.azure_active_directory` instances are no longer supported, use the `azure-identity` classes instead: https://pypi.org/project/azure-identity/ + - `credentials` parameter has been renamed `credential` + +- The `config` attribute no longer exists on a client, configuration should be passed as kwarg. Example: `MyClient(credential, subscription_id, enable_logging=True)`. For a complete set of + supported options, see the [parameters accept in init documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) +- You can't import a `version` module anymore, use `__version__` instead +- Operations that used to return a `msrest.polling.LROPoller` now returns a `azure.core.polling.LROPoller` and are prefixed with `begin_`. +- Exceptions tree have been simplified and most exceptions are now `azure.core.exceptions.HttpResponseError` (`CloudError` has been removed). +- Most of the operation kwarg have changed. Some of the most noticeable: + + - `raw` has been removed. Equivalent feature can be found using `cls`, a callback that will give access to internal HTTP response for advanced user + - For a complete set of + supported options, see the [parameters accept in Request documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) + +**General new features** + +- Type annotations support using `typing`. SDKs are mypy ready. +- This client has now stable and official support for async. Check the `aio` namespace of your package to find the async client. +- This client now support natively tracing library like OpenCensus or OpenTelemetry. See this [tracing quickstart](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core-tracing-opentelemetry) for an overview. + +## 10.2.0 (2020-04-10) + +**Features** + + - Model VpnConnection has a new parameter routing_configuration + - Model NatRuleCondition has a new parameter terminate_tls + - Model HubVirtualNetworkConnection has a new parameter routing_configuration + - Model ExpressRouteConnection has a new parameter routing_configuration + - Model FirewallPolicy has a new parameter transport_security + - Model FirewallPolicy has a new parameter identity + - Model FirewallPolicy has a new parameter threat_intel_whitelist + - Model ApplicationRuleCondition has a new parameter target_urls + - Model P2SConnectionConfiguration has a new parameter routing_configuration + - Model BackendAddressPool has a new parameter load_balancer_backend_addresses + - Added operation LoadBalancerBackendAddressPoolsOperations.create_or_update + - Added operation LoadBalancerBackendAddressPoolsOperations.delete + - Added operation group HubRouteTablesOperations + +## 10.1.0 (2020-04-10) + +**Features** + + - Model VpnConnection has a new parameter dpd_timeout_seconds + - Model FirewallPolicy has a new parameter intrusion_system_mode + - Model Subnet has a new parameter ip_allocations + - Model ApplicationGateway has a new parameter force_firewall_policy_association + - Model PrivateEndpoint has a new parameter custom_dns_configs + - Model VirtualNetworkGatewayConnection has a new parameter dpd_timeout_seconds + - Model VpnClientConfiguration has a new parameter radius_servers + - Model VirtualNetwork has a new parameter ip_allocations + - Model VirtualHub has a new parameter security_partner_provider + - Model VpnServerConfiguration has a new parameter radius_servers + - Added operation group PrivateDnsZoneGroupsOperations + - Added operation group SecurityPartnerProvidersOperations + - Added operation group IpAllocationsOperations + +## 10.0.0 (2020-03-31) + +**Features** + + - Model VirtualNetworkGatewayConnection has a new parameter use_local_azure_ip_address + - Model NetworkRuleCondition has a new parameter source_ip_groups + - Model NetworkRuleCondition has a new parameter destination_ip_groups + - Model VirtualNetworkGatewayIPConfiguration has a new parameter private_ip_address + - Model BgpSettings has a new parameter bgp_peering_addresses + - Model ExpressRouteCircuitConnection has a new parameter ipv6_circuit_connection_config + - Model ApplicationGatewayHttpListener has a new parameter host_names + - Model ApplicationRuleCondition has a new parameter source_ip_groups + - Model VirtualNetworkGateway has a new parameter enable_private_ip_address + - Model LocalNetworkGateway has a new parameter fqdn + - Model VpnSiteLink has a new parameter fqdn + - Model NetworkSecurityGroup has a new parameter flow_logs + - Added operation NetworkManagementClientOperationsMixin.put_bastion_shareable_link + - Added operation NetworkManagementClientOperationsMixin.get_bastion_shareable_link + - Added operation NetworkManagementClientOperationsMixin.delete_bastion_shareable_link + - Added operation NetworkManagementClientOperationsMixin.disconnect_active_sessions + - Added operation NetworkManagementClientOperationsMixin.get_active_sessions + - Added operation group NetworkVirtualAppliancesOperations + +**Breaking changes** + + - Model ApplicationGatewayHttpListener no longer has parameter hostnames + +## 9.0.0 (2020-01-17) + +**Features** + + - Model AzureFirewall has a new parameter ip_groups + - Model AzureFirewall has a new parameter + management_ip_configuration + - Model ConnectionMonitorResult has a new parameter endpoints + - Model ConnectionMonitorResult has a new parameter + connection_monitor_type + - Model ConnectionMonitorResult has a new parameter + test_configurations + - Model ConnectionMonitorResult has a new parameter test_groups + - Model ConnectionMonitorResult has a new parameter outputs + - Model ConnectionMonitorResult has a new parameter notes + - Model AzureFirewallIPConfiguration has a new parameter type + - Model ConnectionMonitor has a new parameter endpoints + - Model ConnectionMonitor has a new parameter test_configurations + - Model ConnectionMonitor has a new parameter test_groups + - Model ConnectionMonitor has a new parameter outputs + - Model ConnectionMonitor has a new parameter notes + - Model DdosSettings has a new parameter protected_ip + - Model ApplicationGatewayRewriteRuleActionSet has a new parameter + url_configuration + - Added operation + P2sVpnGatewaysOperations.disconnect_p2s_vpn_connections + - Added operation + VirtualNetworkGatewaysOperations.disconnect_virtual_network_gateway_vpn_connections + - Added operation group FlowLogsOperations + +**Breaking changes** + + - Operation + ExpressRouteCircuitAuthorizationsOperations.create_or_update has a + new signature + - Model ConnectionMonitorParameters has a new signature + +## 8.0.0 (2019-11-12) + +**Features** + + - Model PrivateLinkServiceConnectionState has a new parameter + actions_required + - Model ConnectivityParameters has a new parameter + preferred_ip_version + +**Breaking changes** + + - Model PrivateLinkServiceConnectionState no longer has parameter + action_required + +## 7.0.0 (2019-10-22) + +**Features** + + - Model ApplicationGatewayHttpListener has a new parameter hostnames + - Model ApplicationGatewayHttpListener has a new parameter + firewall_policy + - Model ApplicationGatewayPathRule has a new parameter + firewall_policy + - Model P2SVpnGateway has a new parameter + p2_sconnection_configurations + - Model VpnServerConfiguration has a new parameter + vpn_client_root_certificates + - Model VpnServerConfiguration has a new parameter + radius_server_root_certificates + - Model VpnServerConfiguration has a new parameter + radius_client_root_certificates + - Model VpnServerConfiguration has a new parameter + vpn_client_revoked_certificates + - Model ExpressRouteConnection has a new parameter + enable_internet_security + - Model AzureFirewallApplicationRule has a new parameter + source_ip_groups + - Model WebApplicationFirewallPolicy has a new parameter + path_based_rules + - Model WebApplicationFirewallPolicy has a new parameter + http_listeners + - Model PrivateLinkService has a new parameter enable_proxy_protocol + - Model AzureFirewallNetworkRule has a new parameter + destination_ip_groups + - Model AzureFirewallNetworkRule has a new parameter + source_ip_groups + - Model AzureFirewallNetworkRule has a new parameter + destination_fqdns + - Model VirtualWAN has a new parameter virtual_wan_type + - Model VirtualHub has a new parameter sku + - Model VirtualHub has a new parameter virtual_hub_route_table_v2s + - Model AzureFirewallNatRule has a new parameter translated_fqdn + - Model AzureFirewallNatRule has a new parameter source_ip_groups + - Model PrivateEndpointConnection has a new parameter link_identifier + - Model AzureFirewall has a new parameter additional_properties + - Added operation RouteFiltersOperations.update_tags + - Added operation ServiceEndpointPoliciesOperations.update_tags + - Added operation + PrivateLinkServicesOperations.get_private_endpoint_connection + - Added operation + PrivateLinkServicesOperations.list_private_endpoint_connections + - Added operation group VirtualHubRouteTableV2sOperations + - Added operation group IpGroupsOperations + +**Breaking changes** + + - Operation AzureFirewallsOperations.update_tags has a new signature + - Operation + ExpressRouteCircuitAuthorizationsOperations.create_or_update has a + new signature + - Model P2SVpnGateway no longer has parameter + p2s_connection_configurations + - Model VpnServerConfiguration no longer has parameter + vpn_server_config_vpn_client_root_certificates + - Model VpnServerConfiguration no longer has parameter + vpn_server_config_radius_client_root_certificates + - Model VpnServerConfiguration no longer has parameter + vpn_server_config_vpn_client_revoked_certificates + - Model VpnServerConfiguration no longer has parameter + vpn_server_config_radius_server_root_certificates + - Removed operation RouteFiltersOperations.update + - Removed operation VirtualRoutersOperations.update + - Removed operation RouteFilterRulesOperations.update + - Removed operation VirtualRouterPeeringsOperations.update + - Removed operation FirewallPoliciesOperations.update_tags + - Removed operation ServiceEndpointPoliciesOperations.update + +## 6.0.0 (2019-10-09) + +**Features** + + - Model VirtualNetwork has a new parameter bgp_communities + - Model VirtualHub has a new parameter azure_firewall + - Model VirtualHub has a new parameter security_provider_name + - Model P2SVpnGateway has a new parameter + p2s_connection_configurations + - Model P2SVpnGateway has a new parameter vpn_server_configuration + - Model AzureFirewall has a new parameter sku + - Model VirtualNetworkGateway has a new parameter + inbound_dns_forwarding_endpoint + - Model VirtualNetworkGateway has a new parameter + enable_dns_forwarding + - Added operation + P2sVpnGatewaysOperations.get_p2s_vpn_connection_health_detailed + - Added operation + NetworkManagementClientOperationsMixin.generatevirtualwanvpnserverconfigurationvpnprofile + - Added operation group VpnServerConfigurationsOperations + - Added operation group + VpnServerConfigurationsAssociatedWithVirtualWanOperations + - Added operation group AvailableServiceAliasesOperations + +**Breaking changes** + + - Model WebApplicationFirewallPolicy has a new required parameter + managed_rules + - Model P2SVpnGateway no longer has parameter + vpn_client_address_pool + - Model P2SVpnGateway no longer has parameter custom_routes + - Model P2SVpnGateway no longer has parameter + p2_svpn_server_configuration + - Model VirtualWAN no longer has parameter security_provider_name + - Model VirtualWAN no longer has parameter + p2_svpn_server_configurations + - Model PolicySettings has a new signature + +## 5.1.0 (2019-10-03) + +**Features** + + - Model VirtualNetworkGateway has a new parameter + vpn_gateway_generation + - Model ExpressRoutePort has a new parameter identity + - Model VirtualNetworkGatewayConnection has a new parameter + traffic_selector_policies + - Model ExpressRouteLink has a new parameter mac_sec_config + - Model VirtualNetworkGatewayConnectionListEntity has a new parameter + traffic_selector_policies + - Model NetworkInterfaceIPConfiguration has a new parameter + private_link_connection_properties + - Model ApplicationGatewayRequestRoutingRule has a new parameter + priority + - Added operation + VirtualNetworkGatewayConnectionsOperations.stop_packet_capture + - Added operation + VirtualNetworkGatewayConnectionsOperations.start_packet_capture + - Added operation ConnectionMonitorsOperations.update_tags + - Added operation + VirtualNetworkGatewaysOperations.stop_packet_capture + - Added operation + VirtualNetworkGatewaysOperations.start_packet_capture + - Added operation group VirtualRoutersOperations + - Added operation group VirtualRouterPeeringsOperations + +## 5.0.0 (2019-08-27) + +**Features** + + - Model PrivateLinkServiceIpConfiguration has a new parameter primary + - Model PrivateLinkServiceIpConfiguration has a new parameter etag + - Model PrivateLinkServiceIpConfiguration has a new parameter type + - Model PrivateLinkServiceIpConfiguration has a new parameter id + - Model AzureFirewall has a new parameter virtual_hub + - Model AzureFirewall has a new parameter hub_ip_addresses + - Model AzureFirewall has a new parameter firewall_policy + - Model PrivateLinkServiceConnection has a new parameter + provisioning_state + - Model PrivateLinkServiceConnection has a new parameter etag + - Model PrivateLinkServiceConnection has a new parameter type + - Model PublicIPPrefix has a new parameter + load_balancer_frontend_ip_configuration + - Model ApplicationGatewayOnDemandProbe has a new parameter + backend_address_pool + - Model ApplicationGatewayOnDemandProbe has a new parameter + backend_http_settings + - Model PrivateEndpointConnection has a new parameter + provisioning_state + - Model PrivateEndpointConnection has a new parameter etag + - Model PrivateEndpointConnection has a new parameter type + - Added operation SubnetsOperations.unprepare_network_policies + - Added operation group FirewallPolicyRuleGroupsOperations + - Added operation group FirewallPoliciesOperations + +**Breaking changes** + + - Model PrivateLinkServiceIpConfiguration no longer has parameter + public_ip_address + - Model ApplicationGatewayOnDemandProbe no longer has parameter + backend_pool_name + - Model ApplicationGatewayOnDemandProbe no longer has parameter + backend_http_setting_name + +## 4.0.0 (2019-07-19) + +**Features** + + - Model Subnet has a new parameter + private_link_service_network_policies + - Model Subnet has a new parameter + private_endpoint_network_policies + - Model VpnSite has a new parameter vpn_site_links + - Model LoadBalancingRule has a new parameter type + - Model BackendAddressPool has a new parameter outbound_rules + - Model BackendAddressPool has a new parameter type + - Model InboundNatPool has a new parameter type + - Model OutboundRule has a new parameter type + - Model InboundNatRule has a new parameter type + - Model Probe has a new parameter type + - Model FrontendIPConfiguration has a new parameter + private_ip_address_version + - Model FrontendIPConfiguration has a new parameter type + - Model AvailablePrivateEndpointType has a new parameter name + - Model AvailablePrivateEndpointType has a new parameter + resource_name + - Model VpnConnection has a new parameter vpn_link_connections + - Added operation + AvailablePrivateEndpointTypesOperations.list_by_resource_group + - Added operation AzureFirewallsOperations.update_tags + - Added operation + PrivateLinkServicesOperations.check_private_link_service_visibility_by_resource_group + - Added operation + PrivateLinkServicesOperations.list_auto_approved_private_link_services + - Added operation + PrivateLinkServicesOperations.check_private_link_service_visibility + - Added operation + PrivateLinkServicesOperations.list_auto_approved_private_link_services_by_resource_group + - Added operation group VpnLinkConnectionsOperations + - Added operation group VpnSiteLinkConnectionsOperations + - Added operation group VpnSiteLinksOperations + +**Breaking changes** + + - Operation SubnetsOperations.prepare_network_policies has a new + signature + - Model PrepareNetworkPoliciesRequest no longer has parameter + resource_group_name + - Model AvailablePrivateEndpointType no longer has parameter + service_name + - Removed operation group + AvailableResourceGroupPrivateEndpointTypesOperations + +## 3.0.0 (2019-05-24) + +**Features** + + - Model NetworkInterface has a new parameter private_endpoint + - Model ServiceAssociationLink has a new parameter type + - Model ServiceAssociationLink has a new parameter allow_delete + - Model ServiceAssociationLink has a new parameter locations + - Model Subnet has a new parameter private_endpoints + - Model PatchRouteFilter has a new parameter ipv6_peerings + - Model ExpressRouteCircuitPeering has a new parameter type + - Model ApplicationGatewayProbe has a new parameter port + - Model RouteFilter has a new parameter ipv6_peerings + - Model ExpressRouteCircuitAuthorization has a new parameter type + - Model PeerExpressRouteCircuitConnection has a new parameter type + - Model AzureFirewall has a new parameter zones + - Model ResourceNavigationLink has a new parameter type + - Model ExpressRouteCircuitConnection has a new parameter type + - Model VpnConnection has a new parameter + use_policy_based_traffic_selectors + - Model NatGateway has a new parameter zones + - Model VpnClientConfiguration has a new parameter aad_audience + - Model VpnClientConfiguration has a new parameter aad_issuer + - Model VpnClientConfiguration has a new parameter aad_tenant + - Added operation + VirtualNetworkGatewaysOperations.get_vpnclient_connection_health + - Added operation + P2sVpnGatewaysOperations.get_p2s_vpn_connection_health + - Added operation VpnGatewaysOperations.reset + - Added operation group BastionHostsOperations + - Added operation group NetworkManagementClientOperationsMixin + - Added operation group PrivateLinkServicesOperations + - Added operation group + AvailableResourceGroupPrivateEndpointTypesOperations + - Added operation group ServiceAssociationLinksOperations + - Added operation group ResourceNavigationLinksOperations + - Added operation group ServiceTagsOperations + - Added operation group PrivateEndpointsOperations + - Added operation group AvailablePrivateEndpointTypesOperations + +**Breaking changes** + + - Model NetworkInterface no longer has parameter interface_endpoint + - Model Subnet no longer has parameter interface_endpoints + - Removed operation group InterfaceEndpointsOperations + +**General Breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes if you were importing from the v20xx_yy_zz +API folders. In summary, some modules were incorrectly +visible/importable and have been renamed. This fixed several issues +caused by usage of classes that were not supposed to be used in the +first place. + + - NetworkManagementClient cannot be imported from + `azure.mgmt.network.v20xx_yy_zz.network_management_client` + anymore (import from `azure.mgmt.network.v20xx_yy_zz` works like + before) + - NetworkManagementClientConfiguration import has been moved from + `azure.mgmt.network.v20xx_yy_zz.network_management_client` to + `azure.mgmt.network.v20xx_yy_zz` + - A model `MyClass` from a "models" sub-module cannot be imported + anymore using `azure.mgmt.network.v20xx_yy_zz.models.my_class` + (import from `azure.mgmt.network.v20xx_yy_zz.models` works like + before) + - An operation class `MyClassOperations` from an `operations` + sub-module cannot be imported anymore using + `azure.mgmt.network.v20xx_yy_zz.operations.my_class_operations` + (import from `azure.mgmt.network.v20xx_yy_zz.operations` works + like before) + +Last but not least, HTTP connection pooling is now enabled by default. +You should always use a client as a context manager, or call close(), or +use no more than one client per process. + +## 2.7.0 (2019-04-25) + +**Features** + + - Model P2SVpnGateway has a new parameter custom_routes + - Model Subnet has a new parameter nat_gateway + - Model VpnConnection has a new parameter + use_local_azure_ip_address + - Model EffectiveRoute has a new parameter + disable_bgp_route_propagation + - Model VirtualNetworkGateway has a new parameter custom_routes + - Added operation + ApplicationGatewaysOperations.backend_health_on_demand + - Added operation DdosProtectionPlansOperations.update_tags + - Added operation group NatGatewaysOperations + +**Bug fixes and preview API updates** + + - Parameter output_blob_sas_url of model + GetVpnSitesConfigurationRequest is now required + - Operation VpnSitesConfigurationOperations.download has a new + signature + - Model ExpressRouteCircuit no longer has parameter + allow_global_reach + +## 2.6.0 (2019-03-21) + +**Features** + + - Model ApplicationGateway has a new parameter firewall_policy + - Model ApplicationGatewayBackendHealthServer has a new parameter + health_probe_log + - Model ExpressRouteCircuitPeering has a new parameter + peered_connections + - Model ExpressRouteCircuit has a new parameter global_reach_enabled + - Added operation group PeerExpressRouteCircuitConnectionsOperations + - Added operation group WebApplicationFirewallPoliciesOperations + +**Bugfixes** + + - Fix incorrect operation + ApplicationGatewaysOperations.list_available_request_headers + - Fix incorrect operation + ApplicationGatewaysOperations.list_available_server_variables + - Fix incorrect operation + ApplicationGatewaysOperations.list_available_response_headers + +## 2.6.0rc1 (2019-02-15) + +**Features** + + - Model AzureFirewall has a new parameter threat_intel_mode + - Model ApplicationGatewayRewriteRule has a new parameter conditions + - Model ApplicationGatewayRewriteRule has a new parameter + rule_sequence + - Model ApplicationGatewayAutoscaleConfiguration has a new parameter + max_capacity + - Added operation SubnetsOperations.prepare_network_policies + +## 2.5.1 (2019-01-15) + +**Features** + + - Add missing ddos_custom_policies operations + +## 2.5.0 (2019-01-04) + +**Features** + + - Model PublicIPAddress has a new parameter ddos_settings + - Added operation + ApplicationGatewaysOperations.list_available_request_headers + - Added operation + ApplicationGatewaysOperations.list_available_server_variables + - Added operation + ApplicationGatewaysOperations.list_available_response_headers + - Added operation ApplicationSecurityGroupsOperations.update_tags + +## 2.4.0 (2018-11-27) + +**Features** + + - Model ApplicationGatewaySslCertificate has a new parameter + key_vault_secret_id + - Model ApplicationGatewayRequestRoutingRule has a new parameter + rewrite_rule_set + - Model FlowLogInformation has a new parameter format + - Model ApplicationGateway has a new parameter identity + - Model ApplicationGateway has a new parameter rewrite_rule_sets + - Model TrafficAnalyticsConfigurationProperties has a new parameter + traffic_analytics_interval + - Model ApplicationGatewayPathRule has a new parameter + rewrite_rule_set + - Model ApplicationGatewayUrlPathMap has a new parameter + default_rewrite_rule_set + +**Breaking changes** + + - Model ApplicationGatewayTrustedRootCertificate no longer has + parameter keyvault_secret_id (replaced by key_vault_secret_id) + +## 2.3.0 (2018-11-07) + +**Features** + + - Model ApplicationGatewayWebApplicationFirewallConfiguration has a + new parameter exclusions + - Model ApplicationGatewayWebApplicationFirewallConfiguration has a + new parameter file_upload_limit_in_mb + - Model ApplicationGatewayWebApplicationFirewallConfiguration has a + new parameter max_request_body_size_in_kb + - Model ApplicationGatewayHttpListener has a new parameter + custom_error_configurations + - Model ExpressRouteCircuit has a new parameter bandwidth_in_gbps + - Model ExpressRouteCircuit has a new parameter stag + - Model ExpressRouteCircuit has a new parameter express_route_port + - Model EvaluatedNetworkSecurityGroup has a new parameter applied_to + - Model NetworkConfigurationDiagnosticResult has a new parameter + profile + - Model ApplicationGateway has a new parameter + custom_error_configurations + - Added operation group LoadBalancerOutboundRulesOperations + - Added operation group ExpressRouteLinksOperations + - Added operation group ExpressRoutePortsOperations + - Added operation group ExpressRoutePortsLocationsOperations + +**Breaking changes** + + - Model NetworkConfigurationDiagnosticResult no longer has parameter + traffic_query + - Operation + NetworkWatchersOperations.get_network_configuration_diagnostic + has a new signature (no longer takes target_resource_id, queries, + but a NetworkConfigurationDiagnosticParameters instance) + +## 2.2.1 (2018-09-14) + +**Bugfixes** + + - Fix unexpected exception with network_profiles.delete + +## 2.2.0 (2018-09-11) + +Default API version is now 2018-08-01 + +**Features** + + - Model AzureFirewall has a new parameter nat_rule_collections + - Model VirtualHub has a new parameter route_table + - Model VirtualHub has a new parameter virtual_network_connections + - Model VirtualHub has a new parameter p2_svpn_gateway + - Model VirtualHub has a new parameter express_route_gateway + - Model VirtualHub has a new parameter vpn_gateway + - Model VirtualWAN has a new parameter allow_vnet_to_vnet_traffic + - Model VirtualWAN has a new parameter + p2_svpn_server_configurations + - Model VirtualWAN has a new parameter + office365_local_breakout_category + - Model VirtualWAN has a new parameter + allow_branch_to_branch_traffic + - Model VirtualWAN has a new parameter security_provider_name + - Model VpnSite has a new parameter is_security_site + - Model VpnConnection has a new parameter connection_bandwidth + - Model VpnConnection has a new parameter enable_internet_security + - Model VpnConnection has a new parameter + vpn_connection_protocol_type + - Model VpnConnection has a new parameter enable_rate_limiting + - Model ServiceEndpointPolicy has a new parameter subnets + - Model AzureFirewallApplicationRule has a new parameter fqdn_tags + - Model AzureFirewallApplicationRule has a new parameter target_fqdns + - Model VpnGateway has a new parameter vpn_gateway_scale_unit + - Model ApplicationGatewayBackendHttpSettings has a new parameter + trusted_root_certificates + - Model VirtualNetworkGatewayConnection has a new parameter + connection_protocol + - Model ExpressRouteCircuitPeering has a new parameter + express_route_connection + - Model Subnet has a new parameter delegations + - Model Subnet has a new parameter address_prefixes + - Model Subnet has a new parameter ip_configuration_profiles + - Model Subnet has a new parameter service_association_links + - Model Subnet has a new parameter interface_endpoints + - Model Subnet has a new parameter purpose + - Model ApplicationGateway has a new parameter + trusted_root_certificates + - Model NetworkInterface has a new parameter tap_configurations + - Model NetworkInterface has a new parameter hosted_workloads + - Model NetworkInterface has a new parameter interface_endpoint + - Model VirtualNetworkGatewayConnectionListEntity has a new parameter + connection_protocol + - Model HubVirtualNetworkConnection has a new parameter + enable_internet_security + - Model NetworkInterfaceIPConfiguration has a new parameter + virtual_network_taps + - Added operation + VirtualNetworkGatewaysOperations.reset_vpn_client_shared_key + - Added operation group ExpressRouteConnectionsOperations + - Added operation group AzureFirewallFqdnTagsOperations + - Added operation group VirtualNetworkTapsOperations + - Added operation group NetworkProfilesOperations + - Added operation group P2sVpnServerConfigurationsOperations + - Added operation group AvailableDelegationsOperations + - Added operation group InterfaceEndpointsOperations + - Added operation group P2sVpnGatewaysOperations + - Added operation group AvailableResourceGroupDelegationsOperations + - Added operation group ExpressRouteGatewaysOperations + - Added operation group NetworkInterfaceTapConfigurationsOperations + +**Breaking changes** + + - Model VirtualHub no longer has parameter + hub_virtual_network_connections + - Model VpnConnection no longer has parameter + connection_bandwidth_in_mbps + - Model AzureFirewallApplicationRule no longer has parameter + target_urls + - Model VpnGateway no longer has parameter policies + - Model AzureFirewallIPConfiguration no longer has parameter + internal_public_ip_address + - Model ApplicationGatewayAutoscaleConfiguration has a new signature + - Renamed virtual_wa_ns to virtual_wans + +## 2.1.0 (2018-08-28) + +Default API version is now 2018-07-01 + +**Features** + + - Model ExpressRouteCircuit has a new parameter allow_global_reach + - Model PublicIPAddress has a new parameter public_ip_prefix + - Model BackendAddressPool has a new parameter outbound_rule + (replaces outbound_nat_rule) + - Model FrontendIPConfiguration has a new parameter outbound_rules + (replaces outbound_nat_rule) + - Model FrontendIPConfiguration has a new parameter public_ip_prefix + - Model LoadBalancingRule has a new parameter enable_tcp_reset + - Model VirtualNetworkGatewayConnectionListEntity has a new parameter + express_route_gateway_bypass + - Model VirtualNetworkGatewayConnection has a new parameter + express_route_gateway_bypass + - Model Subnet has a new parameter service_endpoint_policies + - Model InboundNatPool has a new parameter enable_tcp_reset + - Model LoadBalancer has a new parameter outbound_rules (replaces + outbound_nat_rule) + - Model InboundNatRule has a new parameter enable_tcp_reset + - Added operation group ServiceEndpointPolicyDefinitionsOperations + - Added operation group ServiceEndpointPoliciesOperations + - Added operation group PublicIPPrefixesOperations + +**Breaking changes** + + - Model BackendAddressPool no longer has parameter outbound_nat_rule + (now outbound_rules) + - Model FrontendIPConfiguration no longer has parameter + outbound_nat_rules (now outbound_rules) + - Model LoadBalancer no longer has parameter outbound_nat_rules (now + outbound_rules) + +## 2.0.1 (2018-08-07) + +**Bugfixes** + + - Fix packet_captures.get_status empty output + +## 2.0.0 (2018-07-27) + +**Features** + + - Supports now 2018-06-01 and 2018-04-01. 2018-06-01 is the new + default. + - Client class can be used as a context manager to keep the underlying + HTTP session open for performance + +**Features starting 2018-04-01** + + - Model FlowLogInformation has a new parameter + flow_analytics_configuration + - Model ApplicationGateway has a new parameter enable_fips + - Model ApplicationGateway has a new parameter + autoscale_configuration + - Model ApplicationGateway has a new parameter zones + - Model ConnectionSharedKey has a new parameter id + - Added operation group HubVirtualNetworkConnectionsOperations + - Added operation group AzureFirewallsOperations + - Added operation group VirtualHubsOperations + - Added operation group VpnGatewaysOperations + - Added operation group VpnSitesOperations + - Added operation group VirtualWANsOperations + - Added operation group VpnSitesConfigurationOperations + - Added operation group VpnConnectionsOperations + +**Breaking changes starting 2018-04-01** + + - Operation + VirtualNetworkGatewayConnectionsOperations.set_shared_key has a + new parameter "id" + - Operation DdosProtectionPlansOperations.create_or_update parameter + "parameters" has been flatten to "tags/location" + +**Breaking changes starting 2018-06-01** + + - The new class VpnConnection introduced in 2018-04-01 renamed + "connection_bandwidth" to "connection_bandwidth_in_mbps" + +## 2.0.0rc3 (2018-06-14) + +**Bugfixes** + + - API version 2018-02-01 enum Probe now supports HTTPS (standard SKU + load balancer) + - API version 2015-06-15 adding missing "primary" in + NetworkInterfaceIPConfiguration + +## 2.0.0rc2 (2018-04-03) + +**Features** + + - All clients now support Azure profiles. + - API version 2018-02-01 is now the default + - Express Route Circuit Connection (considered preview) + - Express Route Provider APIs + - GetTopologyOperation supports query parameter + - Feature work for setting Custom IPsec/IKE policy for Virtual Network + Gateway point-to-site clients + - DDoS Protection Plans + +## 2.0.0rc1 (2018-03-07) + +**General Breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes. + + - Model signatures now use only keyword-argument syntax. All + positional arguments must be re-written as keyword-arguments. To + keep auto-completion in most cases, models are now generated for + Python 2 and Python 3. Python 3 uses the "*" syntax for + keyword-only arguments. + - Enum types now use the "str" mixin (class AzureEnum(str, Enum)) to + improve the behavior when unrecognized enum values are encountered. + While this is not a breaking change, the distinctions are important, + and are documented here: + At a glance: + - "is" should not be used at all. + - "format" will return the string value, where "%s" string + formatting will return `NameOfEnum.stringvalue`. Format syntax + should be prefered. + - New Long Running Operation: + - Return type changes from + `msrestazure.azure_operation.AzureOperationPoller` to + `msrest.polling.LROPoller`. External API is the same. + - Return type is now **always** a `msrest.polling.LROPoller`, + regardless of the optional parameters used. + - The behavior has changed when using `raw=True`. Instead of + returning the initial call result as `ClientRawResponse`, + without polling, now this returns an LROPoller. After polling, + the final resource will be returned as a `ClientRawResponse`. + - New `polling` parameter. The default behavior is + `Polling=True` which will poll using ARM algorithm. When + `Polling=False`, the response of the initial call will be + returned without polling. + - `polling` parameter accepts instances of subclasses of + `msrest.polling.PollingMethod`. + - `add_done_callback` will no longer raise if called after + polling is finished, but will instead execute the callback right + away. + +**Network Breaking changes** + + - Operation network_watcher.get_topology changed method signature + +**Features** + + - Add API Version 2018-01-01. Not default yet in this version. + - Add ConnectionMonitor operation group (2017-10/11-01) + - Add target_virtual_network / target_subnet to topology_parameter + (2017-10/11-01) + - Add idle_timeout_in_minutes / enable_floating_ip to + inbound_nat_pool (2017-11-01) + +**Bugfixes** + + - Fix peer_asn validation rules (2017-10/11-01) + +## 1.7.1 (2017-12-20) + +**Bugfixes** + +Fix `SecurityRule` constructor parameters order to respect the one +used until 1.5.0. This indeed introduces a breaking change for users of +1.6.0 and 1.7.0, but this constructor signature change was not expected, +and following semantic versionning all 1.x versions should follow the +same signature. + +This fixes third party library, like Ansible, that expects (for +excellent reasons) this SDK to follow strictly semantic versionning with +regards to breaking changes and have their dependency system asking for +`>=1.0;<2.0` + +## 1.7.0 (2017-12-14) + +**Features** + + - Add iptag. IpTag is way to restrict the range of IPaddresses to be + allocated. + - Default API version is now 2017-11-01 + +**Bug fixes** + + - Added valid ASN range in ExpressRouteCircuitPeering (#1672) + +## 1.6.0 (2017-11-28) + +**Bug fixes** + + - Accept space in location for "usage" (i.e. "west us"). + - sourceAddressPrefix, sourceAddressPrefixes and + sourceApplicationSecurityGroups are mutually exclusive and one only + is needed, meaning none of them is required by itself. Thus, + sourceAddressPrefix is not required anymore. + - destinationAddressPrefix, destinationAddressPrefixes and + destinationApplicationSecurityGroups are mutually exclusive and one + only is needed, meaning none of them is required by itself. Thus, + destinationAddressPrefix is not required anymore. + - Client now accept unicode string as a valid subscription_id + parameter + - Restore missing azure.mgmt.network.__version__ + +**Features** + + - Client now accept a "profile" parameter to define API version per + operation group. + - Add update_tags to most of the resources + - Add operations group to list all available rest API operations + - NetworkInterfaces_ListVirtualMachineScaleSetIpConfigurations + - NetworkInterfaces_GetVirtualMachineScaleSetIpConfiguration + +## 1.5.0 (2017-09-26) + +**Features** + + - Availability Zones + - Add network_watchers.get_azure_reachability_report + - Add network_watchers.list_available_providers + - Add virtual_network_gateways.supported_vpn_devices + - Add virtual_network_gateways.vpn_device_configuration_script + +## 1.5.0rc1 (2017-09-18) + +**Features** + + - Add ApiVersion 2017-09-01 (new default) + - Add application_security_groups (ASG) operations group + - Add ASG to network_interface operations + - Add ASG to IP operations + - Add source/destination ASGs to network security rules + - Add DDOS protection and VM protection to vnet operations + +**Bug fix** + + - check_dns_name_availability now correctly defines + "domain_name_label" as required and not optional + +## 1.4.0 (2017-08-23) + +**Features** + + - Add ApiVersion 2017-08-01 (new default) + - Added in both 2017-08-01 and 2017-06-01: + - virtual_network_gateways.list_connections method + - default_security_rules operations group + - inbound_nat_rules operations group + - load_balancer_backend_address_pools operations group + - load_balancer_frontend_ip_configurations operations group + - load_balancer_load_balancing_rules operations group + - load_balancer_network_interfaces operations group + - load_balancer_probes operations group + - network_interface_ip_configurations operations group + - network_interface_load_balancers operations group + - EffectiveNetworkSecurityGroup.tag_map attribute + - EffectiveNetworkSecurityRule.source_port_ranges attribute + - EffectiveNetworkSecurityRule.destination_port_ranges attribute + - EffectiveNetworkSecurityRule.source_address_prefixes attribute + - EffectiveNetworkSecurityRule.destination_address_prefixes + attribute + - SecurityRule.source_port_ranges attribute + - SecurityRule.destination_port_ranges attribute + - SecurityRule.source_address_prefixes attribute + - SecurityRule.destination_address_prefixes attribute + - Added in 2017-08-01 only + - PublicIPAddress.sku + - LoadBalancer.sku + +**Changes on preview** + +> - "available_private_access_services" is renamed +> "available_endpoint_services" +> - "radius_secret" parsing fix (was unable to work in 1.3.0) + +## 1.3.0 (2017-07-10) + +**Preview features** + + - Adding "available_private_access_services" operation group + (preview) + - Adding "radius_secret" in Virtual Network Gateway (preview) + +**Bug Fixes** + + - VMSS Network ApiVersion fix in 2017-06-01 (point to 2017-03-30) + +## 1.2.0 (2017-07-03) + +**Features** + +Adding the following features to both 2017-03-01 and 2017-06-01: + + - express route ipv6 + - VMSS Network (get, list, etc.) + - VMSS Public IP (get, list, etc.) + +## 1.1.0 (2017-06-27) + +**Features** + + - Add list_usage in virtual networks (2017-03-01) + - Add ApiVersion 2017-06-01 (new default) + +This new ApiVersion is for new Application Gateway features: + +> - ApplicationGateway Ssl Policy custom cipher suites support [new +> properties added to Sslpolicy Property of +> ApplciationGatewayPropertiesFormat] +> - Get AvailableSslOptions api [new resource +> ApplicationGatewayAvailableSslOptions and child resource +> ApplicationGatewayPredefinedPolicy] +> - Redirection support [new child resource +> ApplicationGatewayRedirectConfiguration for Application Gateway, +> new properties in UrlPathMap, PathRules and RequestRoutingRule] +> - Azure Websites feature support [new properties in +> ApplicationGatewayBackendHttpSettingsPropertiesFormat, +> ApplicationGatewayProbePropertiesFormat, schema for property +> ApplicationGatewayProbeHealthResponseMatch] + +## 1.0.0 (2017-05-15) + + - Tag 1.0.0rc3 as stable (same content) + +## 1.0.0rc3 (2017-05-03) + +**Features** + + - Added check connectivity api to network watcher + +## 1.0.0rc2 (2017-04-18) + +**Features** + + - Add ApiVersion 2016-12-01 and 2017-03-01 + - 2017-03-01 is now default ApiVersion + +**Bugfixes** + + - Restore access to NetworkWatcher and PacketCapture from 2016-09-01 + +## 1.0.0rc1 (2017-04-11) + +**Features** + +To help customers with sovereign clouds (not general Azure), this +version has official multi ApiVersion support for 2015-06-15 and +2016-09-01 + +## 0.30.1 (2017-03-27) + + - Add NetworkWatcher + - Add PacketCapture + - Add new methods to Virtualk Network Gateway + - get_bgp_peer_status + - get_learned_routes + - get_advertised_routes + +## 0.30.0 (2016-11-01) + + - Initial preview release. Based on API version 2016-09-01. + +## 0.20.0 (2015-08-31) + + - Initial preview release. Based on API version 2015-05-01-preview. diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-network-31.0.0-CHANGELOG.trimmed.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-network-31.0.0-CHANGELOG.trimmed.md new file mode 100644 index 000000000000..7e33b5f4b003 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-network-31.0.0-CHANGELOG.trimmed.md @@ -0,0 +1,577 @@ +# Release History + +## 31.0.0 (2026-06-29) + +### Features Added + + - Client `NetworkManagementClient` added method `send_request` + - Client `NetworkManagementClient` added operation group `commits` + - Client `NetworkManagementClient` added operation group `connection_policies` + - Client `NetworkManagementClient` added operation group `interconnect_groups` + - Client `NetworkManagementClient` added operation group `subgroups` + - Model `DdosSettings` added property `ddos_custom_policy` + - Enum `NextHopType` added member `VIRTUAL_APPLIANCE_ECMP` + - Enum `RouteNextHopType` added member `VIRTUAL_APPLIANCE_ECMP` + - Added model `AfcConfiguration` + - Added model `ApplicationGatewayManagedHsm` + - Added model `CloudError` + - Added model `Commit` + - Added model `CommitProperties` + - Added model `ConnectionPolicy` + - Added model `ConnectionPolicyProperties` + - Added model `DdosFrontendIpConfigurationSettings` + - Added model `DefaultRuleSetPropertyFormat` + - Added enum `DisablePeeringRoute` + - Added enum `ExpressRouteFailoverBgpStatusAddressFamily` + - Added enum `ExpressRouteFailoverLinkType` + - Added model `ExpressRouteLinkFailoverAllTestsDetails` + - Added enum `ExpressRouteLinkFailoverBgpStatus` + - Added model `ExpressRouteLinkFailoverRoute` + - Added model `ExpressRouteLinkFailoverRouteList` + - Added model `ExpressRouteLinkFailoverSingleTestDetails` + - Added model `ExpressRouteLinkFailoverStopApiParameters` + - Added model `ExpressRouteLinkFailoverTestBgpStatus` + - Added model `InterconnectGroup` + - Added model `InterconnectGroupNodeAvailability` + - Added model `InterconnectGroupPropertiesFormat` + - Added enum `InterconnectGroupScope` + - Added enum `LoadBalancerDetailLevel` + - Added enum `MaintenanceTestCategory` + - Added model `ManagedServiceIdentityUserAssignedIdentities` + - Added enum `Nat64State` + - Added enum `NspReadinessState` + - Added enum `PrivateEndpointBillingSku` + - Added model `ProxyResourceWithReadOnlyID` + - Added model `ProxyResourceWithSettableId` + - Added model `ReadOnlySubResourceModel` + - Added model `RouteNextHopEcmp` + - Added model `SecurityPerimeterTrackedResource` + - Added model `StopCircuitLinkFailoverTestParameterBody` + - Added model `StopSiteFailoverTestParameterBody` + - Added model `SubResourceModel` + - Added model `Subgroup` + - Added model `SubgroupNodeAvailabilityEntry` + - Added model `SubgroupProfile` + - Added enum `SubgroupProfileScope` + - Added model `SubgroupProperties` + - Added model `TrackedResourceWithEtag` + - Added model `TrackedResourceWithOptionalLocation` + - Added model `TrackedResourceWithSettableIdOptionalLocation` + - Added model `TrackedResourceWithSettableName` + - Added enum `VirtualNetworkApplianceIpVersionType` + - Added model `WritableResource` + - Operation group `AzureFirewallsOperations` added parameter `create_afc_control_plane` in method `begin_create_or_update` + - Operation group `DdosCustomPoliciesOperations` added method `list` + - Operation group `DdosCustomPoliciesOperations` added method `list_all` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_get_circuit_link_failover_all_tests_details` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_get_circuit_link_failover_single_test_details` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_start_circuit_link_failover_test` + - Operation group `ExpressRouteCircuitsOperations` added method `begin_stop_circuit_link_failover_test` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_failover_all_tests_details` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_failover_single_test_details` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_resiliency_information` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_get_routes_information` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_start_site_failover_test` + - Operation group `ExpressRouteGatewaysOperations` added method `begin_stop_site_failover_test` + - Operation group `LoadBalancersOperations` added parameter `detail_level` in method `get` + - Added operation group `CommitsOperations` + - Added operation group `ConnectionPoliciesOperations` + - Added operation group `InterconnectGroupsOperations` + - Added operation group `SubgroupsOperations` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Method `IpamPoolsOperations.begin_create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `NetworkGroupsOperations.create_or_update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Model `ConnectionMonitorEndpointFilter` renamed its instance variable `items` to `items_property` + - Model `ExceptionEntry` renamed its instance variable `values` to `values_property` + - Model `FilterItems` renamed its instance variable `values` to `values_property` + - Model `PolicySettings` renamed its instance variable `captcha_cookie_expiration_in_mins` to `captcha_expiration_in_mins` + - Model `ServiceTagsListResult` renamed its instance variable `values` to `values_property` + - Model `ActiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` whose type is `ConnectivityConfigurationProperties` + - Model `ActiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `ActiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `AdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `AdminRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminRuleCollectionPropertiesFormat` + - Model `ApplicationGateway` moved instance variable `sku`, `ssl_policy`, `operational_state`, `gateway_ip_configurations`, `authentication_certificates`, `trusted_root_certificates`, `trusted_client_certificates`, `ssl_certificates`, `frontend_ip_configurations`, `frontend_ports`, `probes`, `backend_address_pools`, `backend_http_settings_collection`, `backend_settings_collection`, `http_listeners`, `listeners`, `ssl_profiles`, `url_path_maps`, `request_routing_rules`, `routing_rules`, `rewrite_rule_sets`, `redirect_configurations`, `web_application_firewall_configuration`, `firewall_policy`, `enable_http2`, `enable_fips`, `autoscale_configuration`, `private_link_configurations`, `private_endpoint_connections`, `resource_guid`, `provisioning_state`, `custom_error_configurations`, `force_firewall_policy_association`, `load_distribution_policies`, `entra_jwt_validation_configs`, `global_configuration` and `default_predefined_ssl_policy` under property `properties` whose type is `ApplicationGatewayPropertiesFormat` + - Model `ApplicationGatewayAuthenticationCertificate` moved instance variable `data` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayAuthenticationCertificatePropertiesFormat` + - Model `ApplicationGatewayAvailableSslOptions` moved instance variable `predefined_policies`, `default_policy`, `available_cipher_suites` and `available_protocols` under property `properties` whose type is `ApplicationGatewayAvailableSslOptionsPropertiesFormat` + - Model `ApplicationGatewayBackendAddressPool` moved instance variable `backend_ip_configurations`, `backend_addresses` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendAddressPoolPropertiesFormat` + - Model `ApplicationGatewayBackendHttpSettings` moved instance variable `port`, `protocol`, `cookie_based_affinity`, `request_timeout`, `probe`, `authentication_certificates`, `trusted_root_certificates`, `connection_draining`, `host_name`, `pick_host_name_from_backend_address`, `affinity_cookie_name`, `probe_enabled`, `path`, `dedicated_backend_connection`, `validate_cert_chain_and_expiry`, `validate_sni`, `sni_name` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendHttpSettingsPropertiesFormat` + - Model `ApplicationGatewayBackendSettings` moved instance variable `port`, `protocol`, `timeout`, `probe`, `trusted_root_certificates`, `host_name`, `pick_host_name_from_backend_address`, `enable_l4_client_ip_preservation` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendSettingsPropertiesFormat` + - Model `ApplicationGatewayEntraJWTValidationConfig` moved instance variable `un_authorized_request_action`, `tenant_id`, `client_id`, `audiences` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayEntraJWTValidationConfigPropertiesFormat` + - Model `ApplicationGatewayFirewallRuleSet` moved instance variable `provisioning_state`, `rule_set_type`, `rule_set_version`, `rule_groups` and `tiers` under property `properties` whose type is `ApplicationGatewayFirewallRuleSetPropertiesFormat` + - Model `ApplicationGatewayFrontendIPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_link_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayFrontendPort` moved instance variable `port` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendPortPropertiesFormat` + - Model `ApplicationGatewayHttpListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `host_name`, `ssl_certificate`, `ssl_profile`, `require_server_name_indication`, `provisioning_state`, `custom_error_configurations`, `firewall_policy` and `host_names` under property `properties` whose type is `ApplicationGatewayHttpListenerPropertiesFormat` + - Model `ApplicationGatewayIPConfiguration` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `ssl_certificate`, `ssl_profile`, `provisioning_state` and `host_names` under property `properties` whose type is `ApplicationGatewayListenerPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionPolicy` moved instance variable `load_distribution_targets`, `load_distribution_algorithm` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayLoadDistributionPolicyPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionTarget` moved instance variable `weight_per_server` and `backend_address_pool` under property `properties` whose type is `ApplicationGatewayLoadDistributionTargetPropertiesFormat` + - Model `ApplicationGatewayPathRule` moved instance variable `paths`, `backend_address_pool`, `backend_http_settings`, `redirect_configuration`, `rewrite_rule_set`, `load_distribution_policy`, `provisioning_state` and `firewall_policy` under property `properties` whose type is `ApplicationGatewayPathRulePropertiesFormat` + - Model `ApplicationGatewayPrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state`, `provisioning_state` and `link_identifier` under property `properties` whose type is `ApplicationGatewayPrivateEndpointConnectionProperties` + - Model `ApplicationGatewayPrivateLinkConfiguration` moved instance variable `ip_configurations` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayPrivateLinkConfigurationProperties` + - Model `ApplicationGatewayPrivateLinkIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `primary` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayPrivateLinkIpConfigurationProperties` + - Model `ApplicationGatewayPrivateLinkResource` moved instance variable `group_id`, `required_members` and `required_zone_names` under property `properties` whose type is `ApplicationGatewayPrivateLinkResourceProperties` + - Model `ApplicationGatewayProbe` moved instance variable `protocol`, `host`, `path`, `interval`, `timeout`, `unhealthy_threshold`, `pick_host_name_from_backend_http_settings`, `pick_host_name_from_backend_settings`, `min_servers`, `match`, `enable_probe_proxy_protocol_header`, `provisioning_state` and `port` under property `properties` whose type is `ApplicationGatewayProbePropertiesFormat` + - Model `ApplicationGatewayRedirectConfiguration` moved instance variable `redirect_type`, `target_listener`, `target_url`, `include_path`, `include_query_string`, `request_routing_rules`, `url_path_maps` and `path_rules` under property `properties` whose type is `ApplicationGatewayRedirectConfigurationPropertiesFormat` + - Model `ApplicationGatewayRequestRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_http_settings`, `http_listener`, `url_path_map`, `rewrite_rule_set`, `redirect_configuration`, `load_distribution_policy`, `entra_jwt_validation_config` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRequestRoutingRulePropertiesFormat` + - Model `ApplicationGatewayRewriteRuleSet` moved instance variable `rewrite_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRewriteRuleSetPropertiesFormat` + - Model `ApplicationGatewayRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_settings`, `listener` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRoutingRulePropertiesFormat` + - Model `ApplicationGatewaySslCertificate` moved instance variable `data`, `password`, `public_cert_data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslCertificatePropertiesFormat` + - Model `ApplicationGatewaySslPredefinedPolicy` moved instance variable `cipher_suites` and `min_protocol_version` under property `properties` whose type is `ApplicationGatewaySslPredefinedPolicyPropertiesFormat` + - Model `ApplicationGatewaySslProfile` moved instance variable `trusted_client_certificates`, `ssl_policy`, `client_auth_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslProfilePropertiesFormat` + - Model `ApplicationGatewayTrustedClientCertificate` moved instance variable `data`, `validated_cert_data`, `client_cert_issuer_dn` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedClientCertificatePropertiesFormat` + - Model `ApplicationGatewayTrustedRootCertificate` moved instance variable `data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedRootCertificatePropertiesFormat` + - Model `ApplicationGatewayUrlPathMap` moved instance variable `default_backend_address_pool`, `default_backend_http_settings`, `default_rewrite_rule_set`, `default_redirect_configuration`, `default_load_distribution_policy`, `path_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayUrlPathMapPropertiesFormat` + - Model `ApplicationGatewayWafDynamicManifestResult` moved instance variable `available_rule_sets`, `rule_set_type` and `rule_set_version` under property `properties` whose type is `ApplicationGatewayWafDynamicManifestPropertiesResult` + - Model `ApplicationSecurityGroup` moved instance variable `resource_guid` and `provisioning_state` under property `properties` whose type is `ApplicationSecurityGroupPropertiesFormat` + - Model `AzureFirewall` moved instance variable `application_rule_collections`, `nat_rule_collections`, `network_rule_collections`, `ip_configurations`, `management_ip_configuration`, `provisioning_state`, `threat_intel_mode`, `virtual_hub`, `firewall_policy`, `hub_ip_addresses`, `ip_groups`, `sku` and `autoscale_configuration` under property `properties` whose type is `AzureFirewallPropertiesFormat` + - Model `AzureFirewallApplicationRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallApplicationRuleCollectionPropertiesFormat` + - Model `AzureFirewallFqdnTag` moved instance variable `provisioning_state` and `fqdn_tag_name` under property `properties` whose type is `AzureFirewallFqdnTagPropertiesFormat` + - Model `AzureFirewallIPConfiguration` moved instance variable `private_ip_address`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `AzureFirewallIPConfigurationPropertiesFormat` + - Model `AzureFirewallNatRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallNatRuleCollectionProperties` + - Model `AzureFirewallNetworkRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallNetworkRuleCollectionPropertiesFormat` + - Model `AzureWebCategory` moved instance variable `group` under property `properties` whose type is `AzureWebCategoryPropertiesFormat` + - Model `BackendAddressPool` moved instance variable `location`, `tunnel_interfaces`, `load_balancer_backend_addresses`, `backend_ip_configurations`, `load_balancing_rules`, `outbound_rule`, `outbound_rules`, `inbound_nat_rules`, `provisioning_state`, `drain_period_in_seconds`, `virtual_network` and `sync_mode` under property `properties` whose type is `BackendAddressPoolPropertiesFormat` + - Model `BastionHost` moved instance variable `ip_configurations`, `dns_name`, `virtual_network`, `network_acls`, `provisioning_state`, `scale_units`, `disable_copy_paste`, `enable_file_copy`, `enable_ip_connect`, `enable_shareable_link`, `enable_tunneling`, `enable_kerberos`, `enable_session_recording` and `enable_private_only_bastion` under property `properties` whose type is `BastionHostPropertiesFormat` + - Model `BastionHostIPConfiguration` moved instance variable `subnet`, `public_ip_address`, `provisioning_state` and `private_ip_allocation_method` under property `properties` whose type is `BastionHostIPConfigurationPropertiesFormat` + - Model `BgpConnection` moved instance variable `peer_asn`, `peer_ip`, `hub_virtual_network_connection`, `provisioning_state` and `connection_state` under property `properties` whose type is `BgpConnectionProperties` + - Model `BgpServiceCommunity` moved instance variable `service_name` and `bgp_communities` under property `properties` whose type is `BgpServiceCommunityPropertiesFormat` + - Model `ConfigurationGroup` moved instance variable `description`, `member_type`, `provisioning_state` and `resource_guid` under property `properties` whose type is `NetworkGroupProperties` + - Model `ConnectionMonitor` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs` and `notes` under property `properties` whose type is `ConnectionMonitorParameters` + - Model `ConnectionMonitorResult` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs`, `notes`, `provisioning_state`, `start_time`, `monitoring_status` and `connection_monitor_type` under property `properties` whose type is `ConnectionMonitorResultProperties` + - Model `ConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` whose type is `ConnectivityConfigurationProperties` + - Model `ContainerNetworkInterface` moved instance variable `container_network_interface_configuration`, `container`, `ip_configurations` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfacePropertiesFormat` + - Model `ContainerNetworkInterfaceConfiguration` moved instance variable `ip_configurations`, `container_network_interfaces` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceConfigurationPropertiesFormat` + - Model `ContainerNetworkInterfaceIpConfiguration` moved instance variable `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceIpConfigurationPropertiesFormat` + - Model `CustomIpPrefix` moved instance variable `asn`, `cidr`, `signed_message`, `authorization_message`, `custom_ip_prefix_parent`, `child_custom_ip_prefixes`, `commissioned_state`, `express_route_advertise`, `geo`, `no_internet_advertise`, `prefix_type`, `public_ip_prefixes`, `resource_guid`, `failed_reason` and `provisioning_state` under property `properties` whose type is `CustomIpPrefixPropertiesFormat` + - Model `DdosCustomPolicy` moved instance variable `resource_guid`, `provisioning_state`, `detection_rules` and `front_end_ip_configuration` under property `properties` whose type is `DdosCustomPolicyPropertiesFormat` + - Model `DdosDetectionRule` moved instance variable `provisioning_state`, `detection_mode` and `traffic_detection_rule` under property `properties` whose type is `DdosDetectionRulePropertiesFormat` + - Model `DdosProtectionPlan` moved instance variable `resource_guid`, `provisioning_state`, `public_ip_addresses` and `virtual_networks` under property `properties` whose type is `DdosProtectionPlanPropertiesFormat` + - Model `DefaultAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `Delegation` moved instance variable `service_name`, `actions` and `provisioning_state` under property `properties` whose type is `ServiceDelegationPropertiesFormat` + - Model `DscpConfiguration` moved instance variable `markings`, `source_ip_ranges`, `destination_ip_ranges`, `source_port_ranges`, `destination_port_ranges`, `protocol`, `qos_definition_collection`, `qos_collection_id`, `associated_network_interfaces`, `resource_guid` and `provisioning_state` under property `properties` whose type is `DscpConfigurationPropertiesFormat` + - Model `EffectiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` whose type is `ConnectivityConfigurationProperties` + - Model `EffectiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `EffectiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `ExpressRouteCircuit` moved instance variable `allow_classic_operations`, `circuit_provisioning_state`, `service_provider_provisioning_state`, `authorizations`, `peerings`, `service_key`, `service_provider_notes`, `service_provider_properties`, `express_route_port`, `bandwidth_in_gbps`, `stag`, `provisioning_state`, `gateway_manager_etag`, `global_reach_enabled`, `authorization_key`, `authorization_status` and `enable_direct_port_rate_limit` under property `properties` whose type is `ExpressRouteCircuitPropertiesFormat` + - Model `ExpressRouteCircuitAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `connection_resource_uri` and `provisioning_state` under property `properties` whose type is `AuthorizationPropertiesFormat` + - Model `ExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `authorization_key`, `ipv6_circuit_connection_config`, `circuit_connection_status` and `provisioning_state` under property `properties` whose type is `ExpressRouteCircuitConnectionPropertiesFormat` + - Model `ExpressRouteCircuitPeering` moved instance variable `peering_type`, `state`, `azure_asn`, `peer_asn`, `primary_peer_address_prefix`, `secondary_peer_address_prefix`, `primary_azure_port`, `secondary_azure_port`, `shared_key`, `vlan_id`, `microsoft_peering_config`, `stats`, `provisioning_state`, `gateway_manager_etag`, `last_modified_by`, `route_filter`, `ipv6_peering_config`, `express_route_connection`, `connections` and `peered_connections` under property `properties` whose type is `ExpressRouteCircuitPeeringPropertiesFormat` + - Model `ExpressRouteConnection` moved instance variable `provisioning_state`, `express_route_circuit_peering`, `authorization_key`, `routing_weight`, `enable_internet_security`, `express_route_gateway_bypass`, `enable_private_link_fast_path` and `routing_configuration` under property `properties` whose type is `ExpressRouteConnectionProperties` + - Model `ExpressRouteCrossConnection` moved instance variable `primary_azure_port`, `secondary_azure_port`, `s_tag`, `peering_location`, `bandwidth_in_mbps`, `express_route_circuit`, `service_provider_provisioning_state`, `service_provider_notes`, `provisioning_state` and `peerings` under property `properties` whose type is `ExpressRouteCrossConnectionProperties` + - Model `ExpressRouteCrossConnectionPeering` moved instance variable `peering_type`, `state`, `azure_asn`, `peer_asn`, `primary_peer_address_prefix`, `secondary_peer_address_prefix`, `primary_azure_port`, `secondary_azure_port`, `shared_key`, `vlan_id`, `microsoft_peering_config`, `provisioning_state`, `gateway_manager_etag`, `last_modified_by` and `ipv6_peering_config` under property `properties` whose type is `ExpressRouteCrossConnectionPeeringProperties` + - Model `ExpressRouteGateway` moved instance variable `auto_scale_configuration`, `express_route_connections`, `provisioning_state`, `virtual_hub` and `allow_non_virtual_wan_traffic` under property `properties` whose type is `ExpressRouteGatewayProperties` + - Model `ExpressRouteLink` moved instance variable `router_name`, `interface_name`, `patch_panel_id`, `rack_id`, `colo_location`, `connector_type`, `admin_state`, `provisioning_state` and `mac_sec_config` under property `properties` whose type is `ExpressRouteLinkPropertiesFormat` + - Model `ExpressRoutePort` moved instance variable `peering_location`, `bandwidth_in_gbps`, `provisioned_bandwidth_in_gbps`, `mtu`, `encapsulation`, `ether_type`, `allocation_date`, `links`, `circuits`, `provisioning_state`, `resource_guid` and `billing_type` under property `properties` whose type is `ExpressRoutePortPropertiesFormat` + - Model `ExpressRoutePortAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `circuit_resource_uri` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortAuthorizationPropertiesFormat` + - Model `ExpressRoutePortsLocation` moved instance variable `address`, `contact`, `available_bandwidths` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortsLocationPropertiesFormat` + - Model `ExpressRouteProviderPort` moved instance variable `port_pair_descriptor`, `primary_azure_port`, `secondary_azure_port`, `peering_location`, `overprovision_factor`, `port_bandwidth_in_mbps`, `used_bandwidth_in_mbps` and `remaining_bandwidth_in_mbps` under property `properties` whose type is `ExpressRouteProviderPortProperties` + - Model `ExpressRouteServiceProvider` moved instance variable `peering_locations`, `bandwidths_offered` and `provisioning_state` under property `properties` whose type is `ExpressRouteServiceProviderPropertiesFormat` + - Model `FirewallPolicy` moved instance variable `size`, `rule_collection_groups`, `provisioning_state`, `base_policy`, `firewalls`, `child_policies`, `threat_intel_mode`, `threat_intel_whitelist`, `insights`, `snat`, `sql`, `dns_settings`, `explicit_proxy`, `intrusion_detection`, `transport_security` and `sku` under property `properties` whose type is `FirewallPolicyPropertiesFormat` + - Model `FirewallPolicyDraft` moved instance variable `base_policy`, `threat_intel_mode`, `threat_intel_whitelist`, `insights`, `snat`, `sql`, `dns_settings`, `explicit_proxy` and `intrusion_detection` under property `properties` whose type is `FirewallPolicyDraftProperties` + - Model `FirewallPolicyRuleCollectionGroup` moved instance variable `size`, `priority`, `rule_collections` and `provisioning_state` under property `properties` whose type is `FirewallPolicyRuleCollectionGroupProperties` + - Model `FirewallPolicyRuleCollectionGroupDraft` moved instance variable `size`, `priority` and `rule_collections` under property `properties` whose type is `FirewallPolicyRuleCollectionGroupDraftProperties` + - Model `FlowLog` moved instance variable `target_resource_id`, `target_resource_guid`, `storage_id`, `enabled_filtering_criteria`, `record_types`, `enabled`, `retention_policy`, `format`, `flow_analytics_configuration` and `provisioning_state` under property `properties` whose type is `FlowLogPropertiesFormat` + - Model `FlowLogInformation` moved instance variable `storage_id`, `enabled_filtering_criteria`, `record_types`, `enabled`, `retention_policy` and `format` under property `properties` whose type is `FlowLogProperties` + - Model `FrontendIPConfiguration` moved instance variable `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `load_balancing_rules`, `private_ip_address`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `public_ip_address`, `public_ip_prefix`, `gateway_load_balancer` and `provisioning_state` under property `properties` whose type is `FrontendIPConfigurationPropertiesFormat` + - Model `HopLink` moved instance variable `round_trip_time_min`, `round_trip_time_avg` and `round_trip_time_max` under property `properties` whose type is `HopLinkProperties` + - Model `HubIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `HubIPConfigurationPropertiesFormat` + - Model `HubRouteTable` moved instance variable `routes`, `labels`, `associated_connections`, `propagating_connections` and `provisioning_state` under property `properties` whose type is `HubRouteTableProperties` + - Model `HubVirtualNetworkConnection` moved instance variable `remote_virtual_network`, `allow_hub_to_remote_vnet_transit`, `allow_remote_vnet_to_use_hub_vnet_gateways`, `enable_internet_security`, `routing_configuration` and `provisioning_state` under property `properties` whose type is `HubVirtualNetworkConnectionProperties` + - Model `IPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `IPConfigurationPropertiesFormat` + - Model `IPConfigurationProfile` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `IPConfigurationProfilePropertiesFormat` + - Model `InboundNatPool` moved instance variable `frontend_ip_configuration`, `protocol`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset` and `provisioning_state` under property `properties` whose type is `InboundNatPoolPropertiesFormat` + - Model `InboundNatRule` moved instance variable `frontend_ip_configuration`, `backend_ip_configuration`, `protocol`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_address_pool` and `provisioning_state` under property `properties` whose type is `InboundNatRulePropertiesFormat` + - Model `InboundSecurityRule` moved instance variable `rule_type`, `rules` and `provisioning_state` under property `properties` whose type is `InboundSecurityRuleProperties` + - Model `IpAllocation` moved instance variable `subnet`, `virtual_network`, `type_properties_type`, `prefix`, `prefix_length`, `prefix_type`, `ipam_allocation_id` and `allocation_tags` under property `properties` whose type is `IpAllocationPropertiesFormat` + - Model `IpGroup` moved instance variable `provisioning_state`, `ip_addresses`, `firewalls` and `firewall_policies` under property `properties` whose type is `IpGroupPropertiesFormat` + - Model `IpamPoolPrefixAllocation` moved instance variable `id` under property `pool` whose type is `IpamPoolPrefixAllocationPool` + - Model `LoadBalancer` moved instance variable `frontend_ip_configurations`, `backend_address_pools`, `load_balancing_rules`, `probes`, `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `resource_guid`, `provisioning_state` and `scope` under property `properties` whose type is `LoadBalancerPropertiesFormat` + - Model `LoadBalancerBackendAddress` moved instance variable `virtual_network`, `subnet`, `ip_address`, `network_interface_ip_configuration`, `load_balancer_frontend_ip_configuration`, `inbound_nat_rules_port_mapping` and `admin_state` under property `properties` whose type is `LoadBalancerBackendAddressPropertiesFormat` + - Model `LoadBalancerVipSwapRequestFrontendIPConfiguration` moved instance variable `public_ip_address` under property `properties` whose type is `LoadBalancerVipSwapRequestFrontendIPConfigurationProperties` + - Model `LoadBalancingRule` moved instance variable `frontend_ip_configuration`, `backend_address_pool`, `backend_address_pools`, `probe`, `protocol`, `load_distribution`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `disable_outbound_snat`, `enable_connection_tracking` and `provisioning_state` under property `properties` whose type is `LoadBalancingRulePropertiesFormat` + - Model `LocalNetworkGateway` moved instance variable `local_network_address_space`, `gateway_ip_address`, `fqdn`, `bgp_settings`, `resource_guid` and `provisioning_state` under property `properties` whose type is `LocalNetworkGatewayPropertiesFormat` + - Model `NatGateway` moved instance variable `idle_timeout_in_minutes`, `public_ip_addresses`, `public_ip_addresses_v6`, `public_ip_prefixes`, `public_ip_prefixes_v6`, `subnets`, `source_virtual_network`, `service_gateway`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NatGatewayPropertiesFormat` + - Model `NetworkGroup` moved instance variable `description`, `member_type`, `provisioning_state` and `resource_guid` under property `properties` whose type is `NetworkGroupProperties` + - Model `NetworkInterface` moved instance variable `virtual_machine`, `network_security_group`, `private_endpoint`, `ip_configurations`, `tap_configurations`, `dns_settings`, `mac_address`, `primary`, `vnet_encryption_supported`, `default_outbound_connectivity_enabled`, `enable_accelerated_networking`, `disable_tcp_state_tracking`, `enable_ip_forwarding`, `hosted_workloads`, `dscp_configuration`, `resource_guid`, `provisioning_state`, `workload_type`, `nic_type`, `private_link_service`, `migration_phase`, `auxiliary_mode` and `auxiliary_sku` under property `properties` whose type is `NetworkInterfacePropertiesFormat` + - Model `NetworkInterfaceIPConfiguration` moved instance variable `gateway_load_balancer`, `virtual_network_taps`, `application_gateway_backend_address_pools`, `load_balancer_backend_address_pools`, `load_balancer_inbound_nat_rules`, `private_ip_address`, `private_ip_address_prefix_length`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `primary`, `public_ip_address`, `application_security_groups`, `provisioning_state` and `private_link_connection_properties` under property `properties` whose type is `NetworkInterfaceIPConfigurationPropertiesFormat` + - Model `NetworkInterfaceTapConfiguration` moved instance variable `virtual_network_tap` and `provisioning_state` under property `properties` whose type is `NetworkInterfaceTapConfigurationPropertiesFormat` + - Model `NetworkManager` moved instance variable `description`, `network_manager_scopes`, `network_manager_scope_accesses`, `provisioning_state` and `resource_guid` under property `properties` whose type is `NetworkManagerProperties` + - Model `NetworkManagerConnection` moved instance variable `network_manager_id`, `connection_state` and `description` under property `properties` whose type is `NetworkManagerConnectionProperties` + - Model `NetworkManagerRoutingConfiguration` moved instance variable `description`, `provisioning_state`, `resource_guid` and `route_table_usage_mode` under property `properties` whose type is `NetworkManagerRoutingConfigurationPropertiesFormat` + - Model `NetworkProfile` moved instance variable `container_network_interfaces`, `container_network_interface_configurations`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkProfilePropertiesFormat` + - Model `NetworkSecurityGroup` moved instance variable `flush_connection`, `security_rules`, `default_security_rules`, `network_interfaces`, `subnets`, `flow_logs`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkSecurityGroupPropertiesFormat` + - Model `NetworkSecurityPerimeter` moved instance variable `provisioning_state` and `perimeter_guid` under property `properties` whose type is `NetworkSecurityPerimeterProperties` + - Model `NetworkVirtualAppliance` moved instance variable `nva_sku`, `address_prefix`, `boot_strap_configuration_blobs`, `virtual_hub`, `cloud_init_configuration_blobs`, `cloud_init_configuration`, `virtual_appliance_asn`, `ssh_public_key`, `virtual_appliance_nics`, `network_profile`, `additional_nics`, `internet_ingress_public_ips`, `virtual_appliance_sites`, `virtual_appliance_connections`, `inbound_security_rules`, `provisioning_state`, `deployment_type`, `delegation`, `partner_managed_resource`, `nva_interface_configurations` and `private_ip_address` under property `properties` whose type is `NetworkVirtualAppliancePropertiesFormat` + - Model `NetworkVirtualApplianceConnection` moved instance variable `name_properties_name`, `provisioning_state`, `asn`, `tunnel_identifier`, `bgp_peer_address`, `enable_internet_security` and `routing_configuration` under property `properties` whose type is `NetworkVirtualApplianceConnectionProperties` + - Model `NetworkVirtualApplianceSku` moved instance variable `vendor`, `available_versions` and `available_scale_units` under property `properties` whose type is `NetworkVirtualApplianceSkuPropertiesFormat` + - Model `NetworkWatcher` moved instance variable `provisioning_state` under property `properties` whose type is `NetworkWatcherPropertiesFormat` + - Model `NspAccessRule` moved instance variable `provisioning_state`, `direction`, `address_prefixes`, `fully_qualified_domain_names`, `subscriptions`, `network_security_perimeters`, `email_addresses`, `phone_numbers` and `service_tags` under property `properties` whose type is `NspAccessRuleProperties` + - Model `NspAssociation` moved instance variable `provisioning_state`, `private_link_resource`, `profile`, `access_mode` and `has_provisioning_issues` under property `properties` whose type is `NspAssociationProperties` + - Model `NspLink` moved instance variable `provisioning_state`, `auto_approved_remote_perimeter_resource_id`, `remote_perimeter_guid`, `remote_perimeter_location`, `local_inbound_profiles`, `local_outbound_profiles`, `remote_inbound_profiles`, `remote_outbound_profiles`, `description` and `status` under property `properties` whose type is `NspLinkProperties` + - Model `NspLinkReference` moved instance variable `provisioning_state`, `remote_perimeter_resource_id`, `remote_perimeter_guid`, `remote_perimeter_location`, `local_inbound_profiles`, `local_outbound_profiles`, `remote_inbound_profiles`, `remote_outbound_profiles`, `description` and `status` under property `properties` whose type is `NspLinkReferenceProperties` + - Model `NspLoggingConfiguration` moved instance variable `enabled_log_categories` and `version` under property `properties` whose type is `NspLoggingConfigurationProperties` + - Model `NspProfile` moved instance variable `access_rules_version` and `diagnostic_settings_version` under property `properties` whose type is `NspProfileProperties` + - Model `Operation` moved instance variable `service_specification` under property `properties` whose type is `OperationPropertiesFormat` + - Model `OutboundRule` moved instance variable `allocated_outbound_ports`, `frontend_ip_configurations`, `backend_address_pool`, `provisioning_state`, `protocol`, `enable_tcp_reset` and `idle_timeout_in_minutes` under property `properties` whose type is `OutboundRulePropertiesFormat` + - Model `P2SConnectionConfiguration` moved instance variable `vpn_client_address_pool`, `routing_configuration`, `enable_internet_security`, `configuration_policy_group_associations`, `previous_configuration_policy_group_associations` and `provisioning_state` under property `properties` whose type is `P2SConnectionConfigurationProperties` + - Model `P2SVpnGateway` moved instance variable `virtual_hub`, `p2_s_connection_configurations`, `provisioning_state`, `vpn_gateway_scale_unit`, `vpn_server_configuration`, `vpn_client_connection_health`, `custom_dns_servers` and `is_routing_preference_internet` under property `properties` whose type is `P2SVpnGatewayProperties` + - Model `PacketCapture` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture` and `capture_settings` under property `properties` whose type is `PacketCaptureParameters` + - Model `PacketCaptureResult` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture`, `capture_settings` and `provisioning_state` under property `properties` whose type is `PacketCaptureResultProperties` + - Model `PeerExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `circuit_connection_status`, `connection_name`, `auth_resource_guid` and `provisioning_state` under property `properties` whose type is `PeerExpressRouteCircuitConnectionPropertiesFormat` + - Model `PerimeterAssociableResource` moved instance variable `display_name`, `resource_type` and `public_dns_zones` under property `properties` whose type is `PerimeterAssociableResourceProperties` + - Model `PrivateDnsZoneConfig` moved instance variable `private_dns_zone_id` and `record_sets` under property `properties` whose type is `PrivateDnsZonePropertiesFormat` + - Model `PrivateDnsZoneGroup` moved instance variable `provisioning_state` and `private_dns_zone_configs` under property `properties` whose type is `PrivateDnsZoneGroupPropertiesFormat` + - Model `PrivateEndpoint` moved instance variable `subnet`, `network_interfaces`, `provisioning_state`, `ip_version_type`, `private_link_service_connections`, `manual_private_link_service_connections`, `custom_dns_configs`, `application_security_groups`, `ip_configurations` and `custom_network_interface_name` under property `properties` whose type is `PrivateEndpointProperties` + - Model `PrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state`, `provisioning_state`, `link_identifier` and `private_endpoint_location` under property `properties` whose type is `PrivateEndpointConnectionProperties` + - Model `PrivateEndpointIPConfiguration` moved instance variable `group_id`, `member_name` and `private_ip_address` under property `properties` whose type is `PrivateEndpointIPConfigurationProperties` + - Model `PrivateLinkService` moved instance variable `load_balancer_frontend_ip_configurations`, `ip_configurations`, `destination_ip_address`, `access_mode`, `network_interfaces`, `provisioning_state`, `private_endpoint_connections`, `visibility`, `auto_approval`, `fqdns`, `alias` and `enable_proxy_protocol` under property `properties` whose type is `PrivateLinkServiceProperties` + - Model `PrivateLinkServiceConnection` moved instance variable `provisioning_state`, `private_link_service_id`, `group_ids`, `request_message` and `private_link_service_connection_state` under property `properties` whose type is `PrivateLinkServiceConnectionProperties` + - Model `PrivateLinkServiceIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `primary`, `provisioning_state` and `private_ip_address_version` under property `properties` whose type is `PrivateLinkServiceIpConfigurationProperties` + - Model `Probe` moved instance variable `load_balancing_rules`, `protocol`, `port`, `interval_in_seconds`, `no_healthy_backends_behavior`, `number_of_probes`, `probe_threshold`, `request_path` and `provisioning_state` under property `properties` whose type is `ProbePropertiesFormat` + - Model `PublicIPAddress` moved instance variable `public_ip_allocation_method`, `public_ip_address_version`, `ip_configuration`, `dns_settings`, `ddos_settings`, `ip_tags`, `ip_address`, `public_ip_prefix`, `idle_timeout_in_minutes`, `resource_guid`, `provisioning_state`, `service_public_ip_address`, `nat_gateway`, `migration_phase`, `linked_public_ip_address` and `delete_option` under property `properties` whose type is `PublicIPAddressPropertiesFormat` + - Model `PublicIPPrefix` moved instance variable `public_ip_address_version`, `ip_tags`, `prefix_length`, `ip_prefix`, `public_ip_addresses`, `load_balancer_frontend_ip_configuration`, `custom_ip_prefix`, `resource_guid`, `provisioning_state` and `nat_gateway` under property `properties` whose type is `PublicIPPrefixPropertiesFormat` + - Model `ResourceNavigationLink` moved instance variable `linked_resource_type`, `link` and `provisioning_state` under property `properties` whose type is `ResourceNavigationLinkFormat` + - Model `Route` moved instance variable `address_prefix`, `next_hop_type`, `next_hop_ip_address`, `provisioning_state` and `has_bgp_override` under property `properties` whose type is `RoutePropertiesFormat` + - Model `RouteFilter` moved instance variable `rules`, `peerings`, `ipv6_peerings` and `provisioning_state` under property `properties` whose type is `RouteFilterPropertiesFormat` + - Model `RouteFilterRule` moved instance variable `access`, `route_filter_rule_type`, `communities` and `provisioning_state` under property `properties` whose type is `RouteFilterRulePropertiesFormat` + - Model `RouteMap` moved instance variable `associated_inbound_connections`, `associated_outbound_connections`, `rules` and `provisioning_state` under property `properties` whose type is `RouteMapProperties` + - Model `RouteTable` moved instance variable `routes`, `subnets`, `disable_bgp_route_propagation`, `provisioning_state` and `resource_guid` under property `properties` whose type is `RouteTablePropertiesFormat` + - Model `RoutingIntent` moved instance variable `routing_policies` and `provisioning_state` under property `properties` whose type is `RoutingIntentProperties` + - Model `RoutingRule` moved instance variable `description`, `provisioning_state`, `resource_guid`, `destination` and `next_hop` under property `properties` whose type is `RoutingRulePropertiesFormat` + - Model `RoutingRuleCollection` moved instance variable `description`, `provisioning_state`, `resource_guid`, `applies_to` and `disable_bgp_route_propagation` under property `properties` whose type is `RoutingRuleCollectionPropertiesFormat` + - Model `ScopeConnection` moved instance variable `tenant_id`, `resource_id`, `connection_state` and `description` under property `properties` whose type is `ScopeConnectionProperties` + - Model `SecurityAdminConfiguration` moved instance variable `description`, `apply_on_network_intent_policy_based_services`, `network_group_address_space_aggregation_option`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityAdminConfigurationPropertiesFormat` + - Model `SecurityPartnerProvider` moved instance variable `provisioning_state`, `security_provider_name`, `connection_status` and `virtual_hub` under property `properties` whose type is `SecurityPartnerProviderPropertiesFormat` + - Model `SecurityRule` moved instance variable `description`, `protocol`, `source_port_range`, `destination_port_range`, `source_address_prefix`, `source_address_prefixes`, `source_application_security_groups`, `destination_address_prefix`, `destination_address_prefixes`, `destination_application_security_groups`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction` and `provisioning_state` under property `properties` whose type is `SecurityRulePropertiesFormat` + - Model `SecurityUserConfiguration` moved instance variable `description`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserConfigurationPropertiesFormat` + - Model `SecurityUserRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRulePropertiesFormat` + - Model `SecurityUserRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRuleCollectionPropertiesFormat` + - Model `ServiceAssociationLink` moved instance variable `linked_resource_type`, `link`, `provisioning_state`, `allow_delete` and `locations` under property `properties` whose type is `ServiceAssociationLinkPropertiesFormat` + - Model `ServiceEndpointPolicy` moved instance variable `service_endpoint_policy_definitions`, `subnets`, `resource_guid`, `provisioning_state`, `service_alias` and `contextual_service_endpoint_policies` under property `properties` whose type is `ServiceEndpointPolicyPropertiesFormat` + - Model `ServiceEndpointPolicyDefinition` moved instance variable `description`, `service`, `service_resources` and `provisioning_state` under property `properties` whose type is `ServiceEndpointPolicyDefinitionPropertiesFormat` + - Model `ServiceGateway` moved instance variable `virtual_network`, `route_target_address`, `route_target_address_v6`, `resource_guid` and `provisioning_state` under property `properties` whose type is `ServiceGatewayPropertiesFormat` + - Model `ServiceGatewayService` moved instance variable `service_type`, `is_default`, `load_balancer_backend_pools` and `public_nat_gateway_id` under property `properties` whose type is `ServiceGatewayServicePropertiesFormat` + - Model `StaticMember` moved instance variable `resource_id`, `region` and `provisioning_state` under property `properties` whose type is `StaticMemberProperties` + - Model `Subnet` moved instance variable `address_prefix`, `address_prefixes`, `network_security_group`, `route_table`, `nat_gateway`, `service_endpoints`, `service_endpoint_policies`, `private_endpoints`, `ip_configurations`, `ip_configuration_profiles`, `ip_allocations`, `resource_navigation_links`, `service_association_links`, `delegations`, `purpose`, `provisioning_state`, `private_endpoint_network_policies`, `private_link_service_network_policies`, `application_gateway_ip_configurations`, `sharing_scope`, `default_outbound_access`, `ipam_pool_prefix_allocations` and `service_gateway` under property `properties` whose type is `SubnetPropertiesFormat` + - Model `TroubleshootingParameters` moved instance variable `storage_id` and `storage_path` under property `properties` whose type is `TroubleshootingProperties` + - Model `VirtualApplianceSite` moved instance variable `address_prefix`, `o365_policy` and `provisioning_state` under property `properties` whose type is `VirtualApplianceSiteProperties` + - Model `VirtualHub` moved instance variable `virtual_wan`, `vpn_gateway`, `p2_s_vpn_gateway`, `express_route_gateway`, `azure_firewall`, `security_partner_provider`, `address_prefix`, `route_table`, `provisioning_state`, `security_provider_name`, `virtual_hub_route_table_v2_s`, `sku`, `routing_state`, `bgp_connections`, `ip_configurations`, `route_maps`, `virtual_router_asn`, `virtual_router_ips`, `allow_branch_to_branch_traffic`, `preferred_routing_gateway`, `hub_routing_preference` and `virtual_router_auto_scale_configuration` under property `properties` whose type is `VirtualHubProperties` + - Model `VirtualHubRouteTableV2` moved instance variable `routes`, `attached_connections` and `provisioning_state` under property `properties` whose type is `VirtualHubRouteTableV2Properties` + - Model `VirtualNetwork` moved instance variable `address_space`, `dhcp_options`, `flow_timeout_in_minutes`, `subnets`, `virtual_network_peerings`, `resource_guid`, `provisioning_state`, `enable_ddos_protection`, `enable_vm_protection`, `ddos_protection_plan`, `bgp_communities`, `encryption`, `ip_allocations`, `flow_logs`, `private_endpoint_v_net_policies` and `default_public_nat_gateway` under property `properties` whose type is `VirtualNetworkPropertiesFormat` + - Model `VirtualNetworkAppliance` moved instance variable `bandwidth_in_gbps`, `ip_configurations`, `provisioning_state`, `resource_guid` and `subnet` under property `properties` whose type is `VirtualNetworkAppliancePropertiesFormat` + - Model `VirtualNetworkApplianceIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `primary`, `provisioning_state` and `private_ip_address_version` under property `properties` whose type is `VirtualNetworkApplianceIpConfigurationProperties` + - Model `VirtualNetworkGateway` moved instance variable `auto_scale_configuration`, `ip_configurations`, `gateway_type`, `vpn_type`, `vpn_gateway_generation`, `enable_bgp`, `enable_private_ip_address`, `virtual_network_gateway_migration_status`, `active`, `enable_high_bandwidth_vpn_gateway`, `disable_ip_sec_replay_protection`, `gateway_default_site`, `sku`, `vpn_client_configuration`, `virtual_network_gateway_policy_groups`, `bgp_settings`, `custom_routes`, `resource_guid`, `provisioning_state`, `enable_dns_forwarding`, `inbound_dns_forwarding_endpoint`, `v_net_extended_location_resource_id`, `nat_rules`, `enable_bgp_route_translation_for_nat`, `allow_virtual_wan_traffic`, `allow_remote_vnet_traffic`, `admin_state` and `resiliency_model` under property `properties` whose type is `VirtualNetworkGatewayPropertiesFormat` + - Model `VirtualNetworkGatewayConnection` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `ingress_nat_rules`, `egress_nat_rules`, `connection_type`, `connection_protocol`, `routing_weight`, `dpd_timeout_seconds`, `connection_mode`, `tunnel_properties`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_local_azure_ip_address`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass`, `enable_private_link_fast_path`, `authentication_type` and `certificate_authentication` under property `properties` whose type is `VirtualNetworkGatewayConnectionPropertiesFormat` + - Model `VirtualNetworkGatewayConnectionListEntity` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `connection_type`, `connection_protocol`, `routing_weight`, `connection_mode`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass` and `enable_private_link_fast_path` under property `properties` whose type is `VirtualNetworkGatewayConnectionListEntityPropertiesFormat` + - Model `VirtualNetworkGatewayIPConfiguration` moved instance variable `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_ip_address` and `provisioning_state` under property `properties` whose type is `VirtualNetworkGatewayIPConfigurationPropertiesFormat` + - Model `VirtualNetworkGatewayNatRule` moved instance variable `provisioning_state`, `type_properties_type`, `mode`, `internal_mappings`, `external_mappings` and `ip_configuration_id` under property `properties` whose type is `VirtualNetworkGatewayNatRuleProperties` + - Model `VirtualNetworkGatewayPolicyGroup` moved instance variable `is_default`, `priority`, `policy_members`, `vng_client_connection_configurations` and `provisioning_state` under property `properties` whose type is `VirtualNetworkGatewayPolicyGroupProperties` + - Model `VirtualNetworkPeering` moved instance variable `allow_virtual_network_access`, `allow_forwarded_traffic`, `allow_gateway_transit`, `use_remote_gateways`, `remote_virtual_network`, `local_address_space`, `local_virtual_network_address_space`, `remote_address_space`, `remote_virtual_network_address_space`, `remote_bgp_communities`, `remote_virtual_network_encryption`, `peering_state`, `peering_sync_level`, `provisioning_state`, `do_not_verify_remote_gateways`, `resource_guid`, `peer_complete_vnets`, `enable_only_i_pv6_peering`, `local_subnet_names` and `remote_subnet_names` under property `properties` whose type is `VirtualNetworkPeeringPropertiesFormat` + - Model `VirtualNetworkTap` moved instance variable `network_interface_tap_configurations`, `resource_guid`, `provisioning_state`, `destination_network_interface_ip_configuration`, `destination_load_balancer_front_end_ip_configuration` and `destination_port` under property `properties` whose type is `VirtualNetworkTapPropertiesFormat` + - Model `VirtualRouter` moved instance variable `virtual_router_asn`, `virtual_router_ips`, `hosted_subnet`, `hosted_gateway`, `peerings` and `provisioning_state` under property `properties` whose type is `VirtualRouterPropertiesFormat` + - Model `VirtualRouterPeering` moved instance variable `peer_asn`, `peer_ip` and `provisioning_state` under property `properties` whose type is `VirtualRouterPeeringProperties` + - Model `VirtualWAN` moved instance variable `disable_vpn_encryption`, `virtual_hubs`, `vpn_sites`, `allow_branch_to_branch_traffic`, `allow_vnet_to_vnet_traffic`, `office365_local_breakout_category`, `provisioning_state` and `type_properties_type` under property `properties` whose type is `VirtualWanProperties` + - Model `VngClientConnectionConfiguration` moved instance variable `vpn_client_address_pool`, `virtual_network_gateway_policy_groups` and `provisioning_state` under property `properties` whose type is `VngClientConnectionConfigurationProperties` + - Model `VpnClientRevokedCertificate` moved instance variable `thumbprint` and `provisioning_state` under property `properties` whose type is `VpnClientRevokedCertificatePropertiesFormat` + - Model `VpnClientRootCertificate` moved instance variable `public_cert_data` and `provisioning_state` under property `properties` whose type is `VpnClientRootCertificatePropertiesFormat` + - Model `VpnConnection` moved instance variable `remote_vpn_site`, `routing_weight`, `dpd_timeout_seconds`, `connection_status`, `vpn_connection_protocol_type`, `ingress_bytes_transferred`, `egress_bytes_transferred`, `connection_bandwidth`, `shared_key`, `enable_bgp`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `enable_rate_limiting`, `enable_internet_security`, `use_local_azure_ip_address`, `provisioning_state`, `vpn_link_connections` and `routing_configuration` under property `properties` whose type is `VpnConnectionProperties` + - Model `VpnGateway` moved instance variable `virtual_hub`, `connections`, `bgp_settings`, `provisioning_state`, `vpn_gateway_scale_unit`, `ip_configurations`, `enable_bgp_route_translation_for_nat`, `is_routing_preference_internet` and `nat_rules` under property `properties` whose type is `VpnGatewayProperties` + - Model `VpnGatewayNatRule` moved instance variable `provisioning_state`, `type_properties_type`, `mode`, `internal_mappings`, `external_mappings`, `ip_configuration_id`, `egress_vpn_site_link_connections` and `ingress_vpn_site_link_connections` under property `properties` whose type is `VpnGatewayNatRuleProperties` + - Model `VpnServerConfiguration` moved instance variable `name_properties_name`, `vpn_protocols`, `vpn_authentication_types`, `vpn_client_root_certificates`, `vpn_client_revoked_certificates`, `radius_server_root_certificates`, `radius_client_root_certificates`, `vpn_client_ipsec_policies`, `radius_server_address`, `radius_server_secret`, `radius_servers`, `aad_authentication_parameters`, `provisioning_state`, `p2_s_vpn_gateways`, `configuration_policy_groups` and `etag_properties_etag` under property `properties` whose type is `VpnServerConfigurationProperties` + - Model `VpnServerConfigurationPolicyGroup` moved instance variable `is_default`, `priority`, `policy_members`, `p2_s_connection_configurations` and `provisioning_state` under property `properties` whose type is `VpnServerConfigurationPolicyGroupProperties` + - Model `VpnSite` moved instance variable `virtual_wan`, `device_properties`, `ip_address`, `site_key`, `address_space`, `bgp_properties`, `provisioning_state`, `is_security_site`, `vpn_site_links` and `o365_policy` under property `properties` whose type is `VpnSiteProperties` + - Model `VpnSiteLink` moved instance variable `link_properties`, `ip_address`, `fqdn`, `bgp_properties` and `provisioning_state` under property `properties` whose type is `VpnSiteLinkProperties` + - Model `VpnSiteLinkConnection` moved instance variable `vpn_site_link`, `routing_weight`, `vpn_link_connection_mode`, `connection_status`, `vpn_connection_protocol_type`, `ingress_bytes_transferred`, `egress_bytes_transferred`, `connection_bandwidth`, `shared_key`, `enable_bgp`, `vpn_gateway_custom_bgp_addresses`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `enable_rate_limiting`, `use_local_azure_ip_address`, `provisioning_state`, `ingress_nat_rules`, `egress_nat_rules` and `dpd_timeout_seconds` under property `properties` whose type is `VpnSiteLinkConnectionProperties` + - Model `WebApplicationFirewallPolicy` moved instance variable `policy_settings`, `custom_rules`, `application_gateways`, `provisioning_state`, `resource_state`, `managed_rules`, `http_listeners`, `path_based_rules` and `application_gateway_for_containers` under property `properties` whose type is `WebApplicationFirewallPolicyPropertiesFormat` + - Deleted or renamed model `AzureAsyncOperationResult` + - Deleted or renamed model `Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties` + - Deleted or renamed model `ConnectionMonitorQueryResult` + - Deleted or renamed model `ConnectionMonitorSourceStatus` + - Deleted or renamed model `ConnectionState` + - Deleted or renamed model `ConnectionStateSnapshot` + - Deleted or renamed model `EvaluationState` + - Deleted or renamed model `HubVirtualNetworkConnectionStatus` + - Deleted or renamed model `NetworkOperationStatus` + - Deleted or renamed model `PatchRouteFilter` + - Deleted or renamed model `PatchRouteFilterRule` + - Deleted or renamed model `SecurityPerimeterSystemData` + - Deleted or renamed model `TrackedResource` + - Deleted or renamed model `TunnelConnectionStatus` + - Deleted or renamed model `VpnSiteId` + +### Other Changes + + - Method `NetworkSecurityPerimeterAccessRulesOperations.reconcile` changed return type from `JSON` to `Any` + - Method `NetworkSecurityPerimeterAssociationsOperations.reconcile` changed return type from `JSON` to `Any` + - Deleted model `AdminRuleCollectionListResult`/`AdminRuleListResult`/`ApplicationGatewayAvailableSslPredefinedPolicies`/`ApplicationGatewayListResult`/`ApplicationGatewayPrivateEndpointConnectionListResult`/`ApplicationGatewayPrivateLinkResourceListResult`/`ApplicationGatewayWafDynamicManifestResultList`/`ApplicationSecurityGroupListResult`/`AuthorizationListResult`/`AutoApprovedPrivateLinkServicesResult`/`AvailableDelegationsResult`/`AvailablePrivateEndpointTypesResult`/`AvailableServiceAliasesResult`/`AzureFirewallFqdnTagListResult`/`AzureFirewallListResult`/`AzureWebCategoryListResult`/`BastionActiveSessionListResult`/`BastionHostListResult`/`BastionSessionDeleteResult`/`BastionShareableLinkListResult`/`BgpServiceCommunityListResult`/`ConnectionMonitorListResult`/`ConnectionSharedKeyResultList`/`ConnectivityConfigurationListResult`/`CustomIpPrefixListResult`/`DdosProtectionPlanListResult`/`DscpConfigurationListResult`/`EndpointServicesListResult`/`ExpressRouteCircuitConnectionListResult`/`ExpressRouteCircuitListResult`/`ExpressRouteCircuitPeeringListResult`/`ExpressRouteCrossConnectionListResult`/`ExpressRouteCrossConnectionPeeringList`/`ExpressRouteLinkListResult`/`ExpressRoutePortAuthorizationListResult`/`ExpressRoutePortListResult`/`ExpressRoutePortsLocationListResult`/`ExpressRouteServiceProviderListResult`/`FirewallPolicyListResult`/`FirewallPolicyRuleCollectionGroupListResult`/`FlowLogListResult`/`GetServiceGatewayAddressLocationsResult`/`GetServiceGatewayServicesResult`/`InboundNatRuleListResult`/`IpAllocationListResult`/`IpGroupListResult`/`IpamPoolList`/`ListHubRouteTablesResult`/`ListHubVirtualNetworkConnectionsResult`/`ListP2SVpnGatewaysResult`/`ListRouteMapsResult`/`ListRoutingIntentResult`/`ListVirtualHubBgpConnectionResults`/`ListVirtualHubIpConfigurationResults`/`ListVirtualHubRouteTableV2SResult`/`ListVirtualHubsResult`/`ListVirtualNetworkGatewayNatRulesResult`/`ListVirtualWANsResult`/`ListVpnConnectionsResult`/`ListVpnGatewayNatRulesResult`/`ListVpnGatewaysResult`/`ListVpnServerConfigurationPolicyGroupsResult`/`ListVpnServerConfigurationsResult`/`ListVpnSiteLinkConnectionsResult`/`ListVpnSiteLinksResult`/`ListVpnSitesResult`/`LoadBalancerBackendAddressPoolListResult`/`LoadBalancerFrontendIPConfigurationListResult`/`LoadBalancerListResult`/`LoadBalancerLoadBalancingRuleListResult`/`LoadBalancerOutboundRuleListResult`/`LoadBalancerProbeListResult`/`LocalNetworkGatewayListResult`/`NatGatewayListResult`/`NetworkGroupListResult`/`NetworkInterfaceIPConfigurationListResult`/`NetworkInterfaceListResult`/`NetworkInterfaceLoadBalancerListResult`/`NetworkInterfaceTapConfigurationListResult`/`NetworkManagerConnectionListResult`/`NetworkManagerListResult`/`NetworkManagerRoutingConfigurationListResult`/`NetworkProfileListResult`/`NetworkSecurityGroupListResult`/`NetworkSecurityPerimeterListResult`/`NetworkVirtualApplianceConnectionList`/`NetworkVirtualApplianceListResult`/`NetworkVirtualApplianceSiteListResult`/`NetworkVirtualApplianceSkuListResult`/`NetworkWatcherListResult`/`NspAccessRuleListResult`/`NspAssociationsListResult`/`NspLinkListResult`/`NspLinkReferenceListResult`/`NspLoggingConfigurationListResult`/`NspProfileListResult`/`NspServiceTagsListResult`/`OperationListResult`/`PacketCaptureListResult`/`PeerExpressRouteCircuitConnectionListResult`/`PerimeterAssociableResourcesListResult`/`PoolAssociationList`/`PrivateDnsZoneGroupListResult`/`PrivateEndpointConnectionListResult`/`PrivateEndpointListResult`/`PrivateLinkServiceListResult`/`PublicIPAddressListResult`/`PublicIPPrefixListResult`/`ReachabilityAnalysisIntentListResult`/`ReachabilityAnalysisRunListResult`/`RouteFilterListResult`/`RouteFilterRuleListResult`/`RouteListResult`/`RouteTableListResult`/`RoutingRuleCollectionListResult`/`RoutingRuleListResult`/`ScopeConnectionListResult`/`SecurityAdminConfigurationListResult`/`SecurityPartnerProviderListResult`/`SecurityRuleListResult`/`SecurityUserConfigurationListResult`/`SecurityUserRuleCollectionListResult`/`SecurityUserRuleListResult`/`ServiceEndpointPolicyDefinitionListResult`/`ServiceEndpointPolicyListResult`/`ServiceGatewayListResult`/`ServiceTagInformationListResult`/`StaticCidrList`/`StaticMemberListResult`/`SubnetListResult`/`UsagesListResult`/`VerifierWorkspaceListResult`/`VirtualNetworkApplianceListResult`/`VirtualNetworkDdosProtectionStatusResult`/`VirtualNetworkGatewayConnectionListResult`/`VirtualNetworkGatewayListConnectionsResult`/`VirtualNetworkGatewayListResult`/`VirtualNetworkListResult`/`VirtualNetworkListUsageResult`/`VirtualNetworkPeeringListResult`/`VirtualNetworkTapListResult`/`VirtualRouterListResult`/`VirtualRouterPeeringListResult`/`WebApplicationFirewallPolicyListResult` which actually was not used by SDK users + +## 31.0.0b1 (2026-05-08) + +### Features Added + + - Client `NetworkManagementClient` added method `send_request` + - Added model `CloudError` + - Added model `DefaultRuleSetPropertyFormat` + - Added model `ManagedServiceIdentityUserAssignedIdentities` + - Added model `ProxyResourceWithReadOnlyID` + - Added model `ProxyResourceWithSettableId` + - Added model `ReadOnlySubResourceModel` + - Added model `SecurityPerimeterTrackedResource` + - Added model `SubResourceModel` + - Added model `TrackedResourceWithEtag` + - Added model `TrackedResourceWithOptionalLocation` + - Added model `TrackedResourceWithSettableIdOptionalLocation` + - Added model `TrackedResourceWithSettableName` + - Added model `WritableResource` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Method `IpamPoolsOperations.begin_create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `IpamPoolsOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `NetworkGroupsOperations.create_or_update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.begin_delete` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.create` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Method `VerifierWorkspacesOperations.update` replaced positional_or_keyword `if_match` to keyword_only `etag`/`match_condition` + - Model `ConnectionMonitorEndpointFilter` renamed its instance variable `items` to `items_property` + - Model `ExceptionEntry` renamed its instance variable `values` to `values_property` + - Model `FilterItems` renamed its instance variable `values` to `values_property` + - Model `ServiceTagsListResult` renamed its instance variable `values` to `values_property` + - Model `AdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminPropertiesFormat` + - Model `AdminRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `AdminRuleCollectionPropertiesFormat` + - Model `ApplicationGateway` moved instance variable `sku`, `ssl_policy`, `operational_state`, `gateway_ip_configurations`, `authentication_certificates`, `trusted_root_certificates`, `trusted_client_certificates`, `ssl_certificates`, `frontend_ip_configurations`, `frontend_ports`, `probes`, `backend_address_pools`, `backend_http_settings_collection`, `backend_settings_collection`, `http_listeners`, `listeners`, `ssl_profiles`, `url_path_maps`, `request_routing_rules`, `routing_rules`, `rewrite_rule_sets`, `redirect_configurations`, `web_application_firewall_configuration`, `firewall_policy`, `enable_http2`, `enable_fips`, `autoscale_configuration`, `private_link_configurations`, `private_endpoint_connections`, `resource_guid`, `provisioning_state`, `custom_error_configurations`, `force_firewall_policy_association`, `load_distribution_policies`, `entra_jwt_validation_configs`, `global_configuration` and `default_predefined_ssl_policy` under property `properties` whose type is `ApplicationGatewayPropertiesFormat` + - Model `ApplicationGatewayAuthenticationCertificate` moved instance variable `data` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayAuthenticationCertificatePropertiesFormat` + - Model `ApplicationGatewayAvailableSslOptions` moved instance variable `predefined_policies`, `default_policy`, `available_cipher_suites` and `available_protocols` under property `properties` whose type is `ApplicationGatewayAvailableSslOptionsPropertiesFormat` + - Model `ApplicationGatewayBackendAddressPool` moved instance variable `backend_ip_configurations`, `backend_addresses` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendAddressPoolPropertiesFormat` + - Model `ApplicationGatewayBackendHttpSettings` moved instance variable `port`, `protocol`, `cookie_based_affinity`, `request_timeout`, `probe`, `authentication_certificates`, `trusted_root_certificates`, `connection_draining`, `host_name`, `pick_host_name_from_backend_address`, `affinity_cookie_name`, `probe_enabled`, `path`, `dedicated_backend_connection`, `validate_cert_chain_and_expiry`, `validate_sni`, `sni_name` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendHttpSettingsPropertiesFormat` + - Model `ApplicationGatewayBackendSettings` moved instance variable `port`, `protocol`, `timeout`, `probe`, `trusted_root_certificates`, `host_name`, `pick_host_name_from_backend_address`, `enable_l4_client_ip_preservation` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayBackendSettingsPropertiesFormat` + - Model `ApplicationGatewayEntraJWTValidationConfig` moved instance variable `un_authorized_request_action`, `tenant_id`, `client_id`, `audiences` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayEntraJWTValidationConfigPropertiesFormat` + - Model `ApplicationGatewayFirewallRuleSet` moved instance variable `provisioning_state`, `rule_set_type`, `rule_set_version`, `rule_groups` and `tiers` under property `properties` whose type is `ApplicationGatewayFirewallRuleSetPropertiesFormat` + - Model `ApplicationGatewayFrontendIPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_link_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayFrontendPort` moved instance variable `port` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayFrontendPortPropertiesFormat` + - Model `ApplicationGatewayHttpListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `host_name`, `ssl_certificate`, `ssl_profile`, `require_server_name_indication`, `provisioning_state`, `custom_error_configurations`, `firewall_policy` and `host_names` under property `properties` whose type is `ApplicationGatewayHttpListenerPropertiesFormat` + - Model `ApplicationGatewayIPConfiguration` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayIPConfigurationPropertiesFormat` + - Model `ApplicationGatewayListener` moved instance variable `frontend_ip_configuration`, `frontend_port`, `protocol`, `ssl_certificate`, `ssl_profile`, `provisioning_state` and `host_names` under property `properties` whose type is `ApplicationGatewayListenerPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionPolicy` moved instance variable `load_distribution_targets`, `load_distribution_algorithm` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayLoadDistributionPolicyPropertiesFormat` + - Model `ApplicationGatewayLoadDistributionTarget` moved instance variable `weight_per_server` and `backend_address_pool` under property `properties` whose type is `ApplicationGatewayLoadDistributionTargetPropertiesFormat` + - Model `ApplicationGatewayPathRule` moved instance variable `paths`, `backend_address_pool`, `backend_http_settings`, `redirect_configuration`, `rewrite_rule_set`, `load_distribution_policy`, `provisioning_state` and `firewall_policy` under property `properties` whose type is `ApplicationGatewayPathRulePropertiesFormat` + - Model `ApplicationGatewayProbe` moved instance variable `protocol`, `host`, `path`, `interval`, `timeout`, `unhealthy_threshold`, `pick_host_name_from_backend_http_settings`, `pick_host_name_from_backend_settings`, `min_servers`, `match`, `enable_probe_proxy_protocol_header`, `provisioning_state` and `port` under property `properties` whose type is `ApplicationGatewayProbePropertiesFormat` + - Model `ApplicationGatewayRedirectConfiguration` moved instance variable `redirect_type`, `target_listener`, `target_url`, `include_path`, `include_query_string`, `request_routing_rules`, `url_path_maps` and `path_rules` under property `properties` whose type is `ApplicationGatewayRedirectConfigurationPropertiesFormat` + - Model `ApplicationGatewayRequestRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_http_settings`, `http_listener`, `url_path_map`, `rewrite_rule_set`, `redirect_configuration`, `load_distribution_policy`, `entra_jwt_validation_config` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRequestRoutingRulePropertiesFormat` + - Model `ApplicationGatewayRewriteRuleSet` moved instance variable `rewrite_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRewriteRuleSetPropertiesFormat` + - Model `ApplicationGatewayRoutingRule` moved instance variable `rule_type`, `priority`, `backend_address_pool`, `backend_settings`, `listener` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayRoutingRulePropertiesFormat` + - Model `ApplicationGatewaySslCertificate` moved instance variable `data`, `password`, `public_cert_data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslCertificatePropertiesFormat` + - Model `ApplicationGatewaySslPredefinedPolicy` moved instance variable `cipher_suites` and `min_protocol_version` under property `properties` whose type is `ApplicationGatewaySslPredefinedPolicyPropertiesFormat` + - Model `ApplicationGatewaySslProfile` moved instance variable `trusted_client_certificates`, `ssl_policy`, `client_auth_configuration` and `provisioning_state` under property `properties` whose type is `ApplicationGatewaySslProfilePropertiesFormat` + - Model `ApplicationGatewayTrustedClientCertificate` moved instance variable `data`, `validated_cert_data`, `client_cert_issuer_dn` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedClientCertificatePropertiesFormat` + - Model `ApplicationGatewayTrustedRootCertificate` moved instance variable `data`, `key_vault_secret_id` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayTrustedRootCertificatePropertiesFormat` + - Model `ApplicationGatewayUrlPathMap` moved instance variable `default_backend_address_pool`, `default_backend_http_settings`, `default_rewrite_rule_set`, `default_redirect_configuration`, `default_load_distribution_policy`, `path_rules` and `provisioning_state` under property `properties` whose type is `ApplicationGatewayUrlPathMapPropertiesFormat` + - Model `ApplicationGatewayWafDynamicManifestResult` moved instance variable `available_rule_sets`, `rule_set_type` and `rule_set_version` under property `properties` whose type is `ApplicationGatewayWafDynamicManifestPropertiesResult` + - Model `ApplicationSecurityGroup` moved instance variable `resource_guid` and `provisioning_state` under property `properties` whose type is `ApplicationSecurityGroupPropertiesFormat` + - Model `AzureFirewall` moved instance variable `application_rule_collections`, `nat_rule_collections`, `network_rule_collections`, `ip_configurations`, `management_ip_configuration`, `provisioning_state`, `threat_intel_mode`, `virtual_hub`, `firewall_policy`, `hub_ip_addresses`, `ip_groups`, `sku` and `autoscale_configuration` under property `properties` whose type is `AzureFirewallPropertiesFormat` + - Model `AzureFirewallApplicationRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallApplicationRuleCollectionPropertiesFormat` + - Model `AzureFirewallFqdnTag` moved instance variable `provisioning_state` and `fqdn_tag_name` under property `properties` whose type is `AzureFirewallFqdnTagPropertiesFormat` + - Model `AzureFirewallIPConfiguration` moved instance variable `private_ip_address`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `AzureFirewallIPConfigurationPropertiesFormat` + - Model `AzureFirewallNetworkRuleCollection` moved instance variable `priority`, `action`, `rules` and `provisioning_state` under property `properties` whose type is `AzureFirewallNetworkRuleCollectionPropertiesFormat` + - Model `AzureWebCategory` moved instance variable `group` under property `properties` whose type is `AzureWebCategoryPropertiesFormat` + - Model `BackendAddressPool` moved instance variable `location`, `tunnel_interfaces`, `load_balancer_backend_addresses`, `backend_ip_configurations`, `load_balancing_rules`, `outbound_rule`, `outbound_rules`, `inbound_nat_rules`, `provisioning_state`, `drain_period_in_seconds`, `virtual_network` and `sync_mode` under property `properties` whose type is `BackendAddressPoolPropertiesFormat` + - Model `BastionHost` moved instance variable `ip_configurations`, `dns_name`, `virtual_network`, `network_acls`, `provisioning_state`, `scale_units`, `disable_copy_paste`, `enable_file_copy`, `enable_ip_connect`, `enable_shareable_link`, `enable_tunneling`, `enable_kerberos`, `enable_session_recording` and `enable_private_only_bastion` under property `properties` whose type is `BastionHostPropertiesFormat` + - Model `BastionHostIPConfiguration` moved instance variable `subnet`, `public_ip_address`, `provisioning_state` and `private_ip_allocation_method` under property `properties` whose type is `BastionHostIPConfigurationPropertiesFormat` + - Model `BgpServiceCommunity` moved instance variable `service_name` and `bgp_communities` under property `properties` whose type is `BgpServiceCommunityPropertiesFormat` + - Model `ContainerNetworkInterface` moved instance variable `container_network_interface_configuration`, `container`, `ip_configurations` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfacePropertiesFormat` + - Model `ContainerNetworkInterfaceConfiguration` moved instance variable `ip_configurations`, `container_network_interfaces` and `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceConfigurationPropertiesFormat` + - Model `ContainerNetworkInterfaceIpConfiguration` moved instance variable `provisioning_state` under property `properties` whose type is `ContainerNetworkInterfaceIpConfigurationPropertiesFormat` + - Model `CustomIpPrefix` moved instance variable `asn`, `cidr`, `signed_message`, `authorization_message`, `custom_ip_prefix_parent`, `child_custom_ip_prefixes`, `commissioned_state`, `express_route_advertise`, `geo`, `no_internet_advertise`, `prefix_type`, `public_ip_prefixes`, `resource_guid`, `failed_reason` and `provisioning_state` under property `properties` whose type is `CustomIpPrefixPropertiesFormat` + - Model `DdosCustomPolicy` moved instance variable `resource_guid`, `provisioning_state`, `detection_rules` and `front_end_ip_configuration` under property `properties` whose type is `DdosCustomPolicyPropertiesFormat` + - Model `DdosDetectionRule` moved instance variable `provisioning_state`, `detection_mode` and `traffic_detection_rule` under property `properties` whose type is `DdosDetectionRulePropertiesFormat` + - Model `DdosProtectionPlan` moved instance variable `resource_guid`, `provisioning_state`, `public_ip_addresses` and `virtual_networks` under property `properties` whose type is `DdosProtectionPlanPropertiesFormat` + - Model `DefaultAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `DefaultAdminPropertiesFormat` + - Model `Delegation` moved instance variable `service_name`, `actions` and `provisioning_state` under property `properties` whose type is `ServiceDelegationPropertiesFormat` + - Model `DscpConfiguration` moved instance variable `markings`, `source_ip_ranges`, `destination_ip_ranges`, `source_port_ranges`, `destination_port_ranges`, `protocol`, `qos_definition_collection`, `qos_collection_id`, `associated_network_interfaces`, `resource_guid` and `provisioning_state` under property `properties` whose type is `DscpConfigurationPropertiesFormat` + - Model `ExpressRouteCircuit` moved instance variable `allow_classic_operations`, `circuit_provisioning_state`, `service_provider_provisioning_state`, `authorizations`, `peerings`, `service_key`, `service_provider_notes`, `service_provider_properties`, `express_route_port`, `bandwidth_in_gbps`, `stag`, `provisioning_state`, `gateway_manager_etag`, `global_reach_enabled`, `authorization_key`, `authorization_status` and `enable_direct_port_rate_limit` under property `properties` whose type is `ExpressRouteCircuitPropertiesFormat` + - Model `ExpressRouteCircuitAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `connection_resource_uri` and `provisioning_state` under property `properties` whose type is `AuthorizationPropertiesFormat` + - Model `ExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `authorization_key`, `ipv6_circuit_connection_config`, `circuit_connection_status` and `provisioning_state` under property `properties` whose type is `ExpressRouteCircuitConnectionPropertiesFormat` + - Model `ExpressRouteCircuitPeering` moved instance variable `peering_type`, `state`, `azure_asn`, `peer_asn`, `primary_peer_address_prefix`, `secondary_peer_address_prefix`, `primary_azure_port`, `secondary_azure_port`, `shared_key`, `vlan_id`, `microsoft_peering_config`, `stats`, `provisioning_state`, `gateway_manager_etag`, `last_modified_by`, `route_filter`, `ipv6_peering_config`, `express_route_connection`, `connections` and `peered_connections` under property `properties` whose type is `ExpressRouteCircuitPeeringPropertiesFormat` + - Model `ExpressRouteLink` moved instance variable `router_name`, `interface_name`, `patch_panel_id`, `rack_id`, `colo_location`, `connector_type`, `admin_state`, `provisioning_state` and `mac_sec_config` under property `properties` whose type is `ExpressRouteLinkPropertiesFormat` + - Model `ExpressRoutePort` moved instance variable `peering_location`, `bandwidth_in_gbps`, `provisioned_bandwidth_in_gbps`, `mtu`, `encapsulation`, `ether_type`, `allocation_date`, `links`, `circuits`, `provisioning_state`, `resource_guid` and `billing_type` under property `properties` whose type is `ExpressRoutePortPropertiesFormat` + - Model `ExpressRoutePortAuthorization` moved instance variable `authorization_key`, `authorization_use_status`, `circuit_resource_uri` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortAuthorizationPropertiesFormat` + - Model `ExpressRoutePortsLocation` moved instance variable `address`, `contact`, `available_bandwidths` and `provisioning_state` under property `properties` whose type is `ExpressRoutePortsLocationPropertiesFormat` + - Model `ExpressRouteServiceProvider` moved instance variable `peering_locations`, `bandwidths_offered` and `provisioning_state` under property `properties` whose type is `ExpressRouteServiceProviderPropertiesFormat` + - Model `FirewallPolicy` moved instance variable `size`, `rule_collection_groups`, `provisioning_state`, `base_policy`, `firewalls`, `child_policies`, `threat_intel_mode`, `threat_intel_whitelist`, `insights`, `snat`, `sql`, `dns_settings`, `explicit_proxy`, `intrusion_detection`, `transport_security` and `sku` under property `properties` whose type is `FirewallPolicyPropertiesFormat` + - Model `FlowLogInformation` moved instance variable `storage_id`, `enabled_filtering_criteria`, `record_types`, `enabled`, `retention_policy` and `format` under property `properties` whose type is `FlowLogPropertiesFormat` + - Model `FrontendIPConfiguration` moved instance variable `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `load_balancing_rules`, `private_ip_address`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `public_ip_address`, `public_ip_prefix`, `gateway_load_balancer` and `provisioning_state` under property `properties` whose type is `FrontendIPConfigurationPropertiesFormat` + - Model `HubIpConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `HubIPConfigurationPropertiesFormat` + - Model `IPConfiguration` moved instance variable `private_ip_address`, `private_ip_allocation_method`, `subnet`, `public_ip_address` and `provisioning_state` under property `properties` whose type is `IPConfigurationPropertiesFormat` + - Model `IPConfigurationProfile` moved instance variable `subnet` and `provisioning_state` under property `properties` whose type is `IPConfigurationProfilePropertiesFormat` + - Model `InboundNatPool` moved instance variable `frontend_ip_configuration`, `protocol`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset` and `provisioning_state` under property `properties` whose type is `InboundNatPoolPropertiesFormat` + - Model `InboundNatRule` moved instance variable `frontend_ip_configuration`, `backend_ip_configuration`, `protocol`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `frontend_port_range_start`, `frontend_port_range_end`, `backend_address_pool` and `provisioning_state` under property `properties` whose type is `InboundNatRulePropertiesFormat` + - Model `IpAllocation` moved instance variable `subnet`, `virtual_network`, `type_properties_type`, `prefix`, `prefix_length`, `prefix_type`, `ipam_allocation_id` and `allocation_tags` under property `properties` whose type is `IpAllocationPropertiesFormat` + - Model `IpGroup` moved instance variable `provisioning_state`, `ip_addresses`, `firewalls` and `firewall_policies` under property `properties` whose type is `IpGroupPropertiesFormat` + - Model `IpamPoolPrefixAllocation` moved instance variable `id` under property `pool` whose type is `IpamPoolPrefixAllocationPool` + - Model `LoadBalancer` moved instance variable `frontend_ip_configurations`, `backend_address_pools`, `load_balancing_rules`, `probes`, `inbound_nat_rules`, `inbound_nat_pools`, `outbound_rules`, `resource_guid`, `provisioning_state` and `scope` under property `properties` whose type is `LoadBalancerPropertiesFormat` + - Model `LoadBalancerBackendAddress` moved instance variable `virtual_network`, `subnet`, `ip_address`, `network_interface_ip_configuration`, `load_balancer_frontend_ip_configuration`, `inbound_nat_rules_port_mapping` and `admin_state` under property `properties` whose type is `LoadBalancerBackendAddressPropertiesFormat` + - Model `LoadBalancingRule` moved instance variable `frontend_ip_configuration`, `backend_address_pool`, `backend_address_pools`, `probe`, `protocol`, `load_distribution`, `frontend_port`, `backend_port`, `idle_timeout_in_minutes`, `enable_floating_ip`, `enable_tcp_reset`, `disable_outbound_snat`, `enable_connection_tracking` and `provisioning_state` under property `properties` whose type is `LoadBalancingRulePropertiesFormat` + - Model `LocalNetworkGateway` moved instance variable `local_network_address_space`, `gateway_ip_address`, `fqdn`, `bgp_settings`, `resource_guid` and `provisioning_state` under property `properties` whose type is `LocalNetworkGatewayPropertiesFormat` + - Model `NatGateway` moved instance variable `idle_timeout_in_minutes`, `public_ip_addresses`, `public_ip_addresses_v6`, `public_ip_prefixes`, `public_ip_prefixes_v6`, `subnets`, `source_virtual_network`, `service_gateway`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NatGatewayPropertiesFormat` + - Model `NetworkInterface` moved instance variable `virtual_machine`, `network_security_group`, `private_endpoint`, `ip_configurations`, `tap_configurations`, `dns_settings`, `mac_address`, `primary`, `vnet_encryption_supported`, `default_outbound_connectivity_enabled`, `enable_accelerated_networking`, `disable_tcp_state_tracking`, `enable_ip_forwarding`, `hosted_workloads`, `dscp_configuration`, `resource_guid`, `provisioning_state`, `workload_type`, `nic_type`, `private_link_service`, `migration_phase`, `auxiliary_mode` and `auxiliary_sku` under property `properties` whose type is `NetworkInterfacePropertiesFormat` + - Model `NetworkInterfaceIPConfiguration` moved instance variable `gateway_load_balancer`, `virtual_network_taps`, `application_gateway_backend_address_pools`, `load_balancer_backend_address_pools`, `load_balancer_inbound_nat_rules`, `private_ip_address`, `private_ip_address_prefix_length`, `private_ip_allocation_method`, `private_ip_address_version`, `subnet`, `primary`, `public_ip_address`, `application_security_groups`, `provisioning_state` and `private_link_connection_properties` under property `properties` whose type is `NetworkInterfaceIPConfigurationPropertiesFormat` + - Model `NetworkInterfaceTapConfiguration` moved instance variable `virtual_network_tap` and `provisioning_state` under property `properties` whose type is `NetworkInterfaceTapConfigurationPropertiesFormat` + - Model `NetworkManagerRoutingConfiguration` moved instance variable `description`, `provisioning_state`, `resource_guid` and `route_table_usage_mode` under property `properties` whose type is `NetworkManagerRoutingConfigurationPropertiesFormat` + - Model `NetworkProfile` moved instance variable `container_network_interfaces`, `container_network_interface_configurations`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkProfilePropertiesFormat` + - Model `NetworkSecurityGroup` moved instance variable `flush_connection`, `security_rules`, `default_security_rules`, `network_interfaces`, `subnets`, `flow_logs`, `resource_guid` and `provisioning_state` under property `properties` whose type is `NetworkSecurityGroupPropertiesFormat` + - Model `NetworkVirtualAppliance` moved instance variable `nva_sku`, `address_prefix`, `boot_strap_configuration_blobs`, `virtual_hub`, `cloud_init_configuration_blobs`, `cloud_init_configuration`, `virtual_appliance_asn`, `ssh_public_key`, `virtual_appliance_nics`, `network_profile`, `additional_nics`, `internet_ingress_public_ips`, `virtual_appliance_sites`, `virtual_appliance_connections`, `inbound_security_rules`, `provisioning_state`, `deployment_type`, `delegation`, `partner_managed_resource`, `nva_interface_configurations` and `private_ip_address` under property `properties` whose type is `NetworkVirtualAppliancePropertiesFormat` + - Model `NetworkVirtualApplianceSku` moved instance variable `vendor`, `available_versions` and `available_scale_units` under property `properties` whose type is `NetworkVirtualApplianceSkuPropertiesFormat` + - Model `NetworkWatcher` moved instance variable `provisioning_state` under property `properties` whose type is `NetworkWatcherPropertiesFormat` + - Model `Operation` moved instance variable `service_specification` under property `properties` whose type is `OperationPropertiesFormat` + - Model `OutboundRule` moved instance variable `allocated_outbound_ports`, `frontend_ip_configurations`, `backend_address_pool`, `provisioning_state`, `protocol`, `enable_tcp_reset` and `idle_timeout_in_minutes` under property `properties` whose type is `OutboundRulePropertiesFormat` + - Model `PeerExpressRouteCircuitConnection` moved instance variable `express_route_circuit_peering`, `peer_express_route_circuit_peering`, `address_prefix`, `circuit_connection_status`, `connection_name`, `auth_resource_guid` and `provisioning_state` under property `properties` whose type is `PeerExpressRouteCircuitConnectionPropertiesFormat` + - Model `PrivateDnsZoneConfig` moved instance variable `private_dns_zone_id` and `record_sets` under property `properties` whose type is `PrivateDnsZonePropertiesFormat` + - Model `PrivateDnsZoneGroup` moved instance variable `provisioning_state` and `private_dns_zone_configs` under property `properties` whose type is `PrivateDnsZoneGroupPropertiesFormat` + - Model `Probe` moved instance variable `load_balancing_rules`, `protocol`, `port`, `interval_in_seconds`, `no_healthy_backends_behavior`, `number_of_probes`, `probe_threshold`, `request_path` and `provisioning_state` under property `properties` whose type is `ProbePropertiesFormat` + - Model `PublicIPAddress` moved instance variable `public_ip_allocation_method`, `public_ip_address_version`, `ip_configuration`, `dns_settings`, `ddos_settings`, `ip_tags`, `ip_address`, `public_ip_prefix`, `idle_timeout_in_minutes`, `resource_guid`, `provisioning_state`, `service_public_ip_address`, `nat_gateway`, `migration_phase`, `linked_public_ip_address` and `delete_option` under property `properties` whose type is `PublicIPAddressPropertiesFormat` + - Model `PublicIPPrefix` moved instance variable `public_ip_address_version`, `ip_tags`, `prefix_length`, `ip_prefix`, `public_ip_addresses`, `load_balancer_frontend_ip_configuration`, `custom_ip_prefix`, `resource_guid`, `provisioning_state` and `nat_gateway` under property `properties` whose type is `PublicIPPrefixPropertiesFormat` + - Model `ResourceNavigationLink` moved instance variable `linked_resource_type`, `link` and `provisioning_state` under property `properties` whose type is `ResourceNavigationLinkFormat` + - Model `Route` moved instance variable `address_prefix`, `next_hop_type`, `next_hop_ip_address`, `provisioning_state` and `has_bgp_override` under property `properties` whose type is `RoutePropertiesFormat` + - Model `RouteFilter` moved instance variable `rules`, `peerings`, `ipv6_peerings` and `provisioning_state` under property `properties` whose type is `RouteFilterPropertiesFormat` + - Model `RouteFilterRule` moved instance variable `access`, `route_filter_rule_type`, `communities` and `provisioning_state` under property `properties` whose type is `RouteFilterRulePropertiesFormat` + - Model `RouteTable` moved instance variable `routes`, `subnets`, `disable_bgp_route_propagation`, `provisioning_state` and `resource_guid` under property `properties` whose type is `RouteTablePropertiesFormat` + - Model `RoutingRule` moved instance variable `description`, `provisioning_state`, `resource_guid`, `destination` and `next_hop` under property `properties` whose type is `RoutingRulePropertiesFormat` + - Model `RoutingRuleCollection` moved instance variable `description`, `provisioning_state`, `resource_guid`, `applies_to` and `disable_bgp_route_propagation` under property `properties` whose type is `RoutingRuleCollectionPropertiesFormat` + - Model `SecurityAdminConfiguration` moved instance variable `description`, `apply_on_network_intent_policy_based_services`, `network_group_address_space_aggregation_option`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityAdminConfigurationPropertiesFormat` + - Model `SecurityPartnerProvider` moved instance variable `provisioning_state`, `security_provider_name`, `connection_status` and `virtual_hub` under property `properties` whose type is `SecurityPartnerProviderPropertiesFormat` + - Model `SecurityRule` moved instance variable `description`, `protocol`, `source_port_range`, `destination_port_range`, `source_address_prefix`, `source_address_prefixes`, `source_application_security_groups`, `destination_address_prefix`, `destination_address_prefixes`, `destination_application_security_groups`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction` and `provisioning_state` under property `properties` whose type is `SecurityRulePropertiesFormat` + - Model `SecurityUserConfiguration` moved instance variable `description`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserConfigurationPropertiesFormat` + - Model `SecurityUserRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `direction`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRulePropertiesFormat` + - Model `SecurityUserRuleCollection` moved instance variable `description`, `applies_to_groups`, `provisioning_state` and `resource_guid` under property `properties` whose type is `SecurityUserRuleCollectionPropertiesFormat` + - Model `ServiceAssociationLink` moved instance variable `linked_resource_type`, `link`, `provisioning_state`, `allow_delete` and `locations` under property `properties` whose type is `ServiceAssociationLinkPropertiesFormat` + - Model `ServiceEndpointPolicy` moved instance variable `service_endpoint_policy_definitions`, `subnets`, `resource_guid`, `provisioning_state`, `service_alias` and `contextual_service_endpoint_policies` under property `properties` whose type is `ServiceEndpointPolicyPropertiesFormat` + - Model `ServiceEndpointPolicyDefinition` moved instance variable `description`, `service`, `service_resources` and `provisioning_state` under property `properties` whose type is `ServiceEndpointPolicyDefinitionPropertiesFormat` + - Model `ServiceGateway` moved instance variable `virtual_network`, `route_target_address`, `route_target_address_v6`, `resource_guid` and `provisioning_state` under property `properties` whose type is `ServiceGatewayPropertiesFormat` + - Model `ServiceGatewayService` moved instance variable `service_type`, `is_default`, `load_balancer_backend_pools` and `public_nat_gateway_id` under property `properties` whose type is `ServiceGatewayServicePropertiesFormat` + - Model `Subnet` moved instance variable `address_prefix`, `address_prefixes`, `network_security_group`, `route_table`, `nat_gateway`, `service_endpoints`, `service_endpoint_policies`, `private_endpoints`, `ip_configurations`, `ip_configuration_profiles`, `ip_allocations`, `resource_navigation_links`, `service_association_links`, `delegations`, `purpose`, `provisioning_state`, `private_endpoint_network_policies`, `private_link_service_network_policies`, `application_gateway_ip_configurations`, `sharing_scope`, `default_outbound_access`, `ipam_pool_prefix_allocations` and `service_gateway` under property `properties` whose type is `SubnetPropertiesFormat` + - Model `TroubleshootingParameters` moved instance variable `storage_id` and `storage_path` under property `properties` whose type is `TroubleshootingProperties` + - Model `VirtualNetwork` moved instance variable `address_space`, `dhcp_options`, `flow_timeout_in_minutes`, `subnets`, `virtual_network_peerings`, `resource_guid`, `provisioning_state`, `enable_ddos_protection`, `enable_vm_protection`, `ddos_protection_plan`, `bgp_communities`, `encryption`, `ip_allocations`, `flow_logs`, `private_endpoint_v_net_policies` and `default_public_nat_gateway` under property `properties` whose type is `VirtualNetworkPropertiesFormat` + - Model `VirtualNetworkAppliance` moved instance variable `bandwidth_in_gbps`, `ip_configurations`, `provisioning_state`, `resource_guid` and `subnet` under property `properties` whose type is `VirtualNetworkAppliancePropertiesFormat` + - Model `VirtualNetworkGateway` moved instance variable `auto_scale_configuration`, `ip_configurations`, `gateway_type`, `vpn_type`, `vpn_gateway_generation`, `enable_bgp`, `enable_private_ip_address`, `virtual_network_gateway_migration_status`, `active`, `enable_high_bandwidth_vpn_gateway`, `disable_ip_sec_replay_protection`, `gateway_default_site`, `sku`, `vpn_client_configuration`, `virtual_network_gateway_policy_groups`, `bgp_settings`, `custom_routes`, `resource_guid`, `provisioning_state`, `enable_dns_forwarding`, `inbound_dns_forwarding_endpoint`, `v_net_extended_location_resource_id`, `nat_rules`, `enable_bgp_route_translation_for_nat`, `allow_virtual_wan_traffic`, `allow_remote_vnet_traffic`, `admin_state` and `resiliency_model` under property `properties` whose type is `VirtualNetworkGatewayPropertiesFormat` + - Model `VirtualNetworkGatewayConnection` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `ingress_nat_rules`, `egress_nat_rules`, `connection_type`, `connection_protocol`, `routing_weight`, `dpd_timeout_seconds`, `connection_mode`, `tunnel_properties`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_local_azure_ip_address`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass`, `enable_private_link_fast_path`, `authentication_type` and `certificate_authentication` under property `properties` whose type is `VirtualNetworkGatewayConnectionPropertiesFormat` + - Model `VirtualNetworkGatewayConnectionListEntity` moved instance variable `authorization_key`, `virtual_network_gateway1`, `virtual_network_gateway2`, `local_network_gateway2`, `connection_type`, `connection_protocol`, `routing_weight`, `connection_mode`, `shared_key`, `connection_status`, `tunnel_connection_status`, `egress_bytes_transferred`, `ingress_bytes_transferred`, `peer`, `enable_bgp`, `gateway_custom_bgp_ip_addresses`, `use_policy_based_traffic_selectors`, `ipsec_policies`, `traffic_selector_policies`, `resource_guid`, `provisioning_state`, `express_route_gateway_bypass` and `enable_private_link_fast_path` under property `properties` whose type is `VirtualNetworkGatewayConnectionListEntityPropertiesFormat` + - Model `VirtualNetworkGatewayIPConfiguration` moved instance variable `private_ip_allocation_method`, `subnet`, `public_ip_address`, `private_ip_address` and `provisioning_state` under property `properties` whose type is `VirtualNetworkGatewayIPConfigurationPropertiesFormat` + - Model `VirtualNetworkPeering` moved instance variable `allow_virtual_network_access`, `allow_forwarded_traffic`, `allow_gateway_transit`, `use_remote_gateways`, `remote_virtual_network`, `local_address_space`, `local_virtual_network_address_space`, `remote_address_space`, `remote_virtual_network_address_space`, `remote_bgp_communities`, `remote_virtual_network_encryption`, `peering_state`, `peering_sync_level`, `provisioning_state`, `do_not_verify_remote_gateways`, `resource_guid`, `peer_complete_vnets`, `enable_only_i_pv6_peering`, `local_subnet_names` and `remote_subnet_names` under property `properties` whose type is `VirtualNetworkPeeringPropertiesFormat` + - Model `VirtualNetworkTap` moved instance variable `network_interface_tap_configurations`, `resource_guid`, `provisioning_state`, `destination_network_interface_ip_configuration`, `destination_load_balancer_front_end_ip_configuration` and `destination_port` under property `properties` whose type is `VirtualNetworkTapPropertiesFormat` + - Model `VirtualRouter` moved instance variable `virtual_router_asn`, `virtual_router_ips`, `hosted_subnet`, `hosted_gateway`, `peerings` and `provisioning_state` under property `properties` whose type is `VirtualRouterPropertiesFormat` + - Model `VirtualWAN` moved instance variable `disable_vpn_encryption`, `virtual_hubs`, `vpn_sites`, `allow_branch_to_branch_traffic`, `allow_vnet_to_vnet_traffic`, `office365_local_breakout_category`, `provisioning_state` and `type_properties_type` under property `properties` whose type is `VirtualWanProperties` + - Model `VpnClientRevokedCertificate` moved instance variable `thumbprint` and `provisioning_state` under property `properties` whose type is `VpnClientRevokedCertificatePropertiesFormat` + - Model `VpnClientRootCertificate` moved instance variable `public_cert_data` and `provisioning_state` under property `properties` whose type is `VpnClientRootCertificatePropertiesFormat` + - Model `WebApplicationFirewallPolicy` moved instance variable `policy_settings`, `custom_rules`, `application_gateways`, `provisioning_state`, `resource_state`, `managed_rules`, `http_listeners`, `path_based_rules` and `application_gateway_for_containers` under property `properties` whose type is `WebApplicationFirewallPolicyPropertiesFormat` + - Model `ActiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` + - Model `ActiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `ActiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `ConfigurationGroup` moved instance variable `description`, `member_type`, `provisioning_state` and `resource_guid` under property `properties` + - Model `ConnectionMonitor` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs` and `notes` under property `properties` whose type is `ConnectionMonitorParameters` + - Model `ConnectionMonitorResult` moved instance variable `source`, `destination`, `auto_start`, `monitoring_interval_in_seconds`, `endpoints`, `test_configurations`, `test_groups`, `outputs`, `notes`, `provisioning_state`, `start_time`, `monitoring_status` and `connection_monitor_type` under property `properties` whose type is `ConnectionMonitorResultProperties` + - Model `EffectiveConnectivityConfiguration` moved instance variable `description`, `connectivity_topology`, `hubs`, `is_global`, `connectivity_capabilities`, `applies_to_groups`, `provisioning_state`, `delete_existing_peering` and `resource_guid` under property `properties` + - Model `EffectiveDefaultSecurityAdminRule` moved instance variable `description`, `flag`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `EffectiveSecurityAdminRule` moved instance variable `description`, `protocol`, `sources`, `destinations`, `source_port_ranges`, `destination_port_ranges`, `access`, `priority`, `direction`, `provisioning_state` and `resource_guid` under property `properties` + - Model `PacketCapture` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture` and `capture_settings` under property `properties` whose type is `PacketCaptureParameters` + - Model `PacketCaptureResult` moved instance variable `target`, `scope`, `target_type`, `bytes_to_capture_per_packet`, `total_bytes_per_session`, `time_limit_in_seconds`, `storage_location`, `filters`, `continuous_capture`, `capture_settings` and `provisioning_state` under property `properties` whose type is `PacketCaptureResultProperties` + - Deleted or renamed model `AzureAsyncOperationResult` + - Deleted or renamed model `BastionSessionDeleteResult` + - Deleted or renamed model `Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties` + - Deleted or renamed model `ConnectionMonitorQueryResult` + - Deleted or renamed model `ConnectionMonitorSourceStatus` + - Deleted or renamed model `ConnectionState` + - Deleted or renamed model `ConnectionStateSnapshot` + - Deleted or renamed model `EvaluationState` + - Deleted or renamed model `HubVirtualNetworkConnectionStatus` + - Deleted or renamed model `NetworkOperationStatus` + - Deleted or renamed model `PatchRouteFilter` + - Deleted or renamed model `PatchRouteFilterRule` + - Deleted or renamed model `TrackedResource` + - Deleted or renamed model `TunnelConnectionStatus` + - Deleted or renamed model `VpnSiteId` + +### Other Changes + + - Deleted model `ApplicationGatewayAvailableSslPredefinedPolicies`/`ApplicationGatewayWafDynamicManifestResultList`/`AutoApprovedPrivateLinkServicesResult`/`AvailableDelegationsResult`/`AvailablePrivateEndpointTypesResult`/`AvailableServiceAliasesResult`/`ConnectionSharedKeyResultList`/`ExpressRouteCrossConnectionPeeringList`/`GetServiceGatewayAddressLocationsResult`/`GetServiceGatewayServicesResult`/`IpamPoolList`/`ListHubRouteTablesResult`/`ListHubVirtualNetworkConnectionsResult`/`ListP2SVpnGatewaysResult`/`ListRouteMapsResult`/`ListRoutingIntentResult`/`ListVirtualHubBgpConnectionResults`/`ListVirtualHubIpConfigurationResults`/`ListVirtualHubRouteTableV2SResult`/`ListVirtualHubsResult`/`ListVirtualNetworkGatewayNatRulesResult`/`ListVirtualWANsResult`/`ListVpnConnectionsResult`/`ListVpnGatewayNatRulesResult`/`ListVpnGatewaysResult`/`ListVpnServerConfigurationPolicyGroupsResult`/`ListVpnServerConfigurationsResult`/`ListVpnSiteLinkConnectionsResult`/`ListVpnSiteLinksResult`/`ListVpnSitesResult`/`NetworkVirtualApplianceConnectionList`/`PoolAssociationList`/`StaticCidrList`/`VirtualNetworkDdosProtectionStatusResult`/`VirtualNetworkGatewayListConnectionsResult`/`VirtualNetworkListUsageResult` which actually was not used by SDK users + +## 30.2.0 (2026-02-11) + +### Features Added + + - Client `NetworkManagementClient` added operation group `service_gateways` + - Client `NetworkManagementClient` added operation group `virtual_network_appliances` + - Enum `ActionType` added member `CAPTCHA` + - Enum `FirewallPolicyIntrusionDetectionProfileType` added member `CORE` + - Enum `FirewallPolicyIntrusionDetectionProfileType` added member `EMERGING` + - Enum `FirewallPolicyIntrusionDetectionProfileType` added member `OFF` + - Model `NatGateway` added property `service_gateway` + - Model `PolicySettings` added property `captcha_cookie_expiration_in_mins` + - Model `Subnet` added property `service_gateway` + - Enum `WebApplicationFirewallAction` added member `CAPTCHA` + - Added enum `AddressUpdateAction` + - Added model `GetServiceGatewayAddressLocationsResult` + - Added model `GetServiceGatewayServicesResult` + - Added model `RouteTargetAddressPropertiesFormat` + - Added model `ServiceGateway` + - Added model `ServiceGatewayAddress` + - Added model `ServiceGatewayAddressLocation` + - Added model `ServiceGatewayAddressLocationResponse` + - Added model `ServiceGatewayListResult` + - Added model `ServiceGatewayService` + - Added model `ServiceGatewayServiceRequest` + - Added model `ServiceGatewaySku` + - Added enum `ServiceGatewaySkuName` + - Added enum `ServiceGatewaySkuTier` + - Added model `ServiceGatewayUpdateAddressLocationsRequest` + - Added model `ServiceGatewayUpdateServicesRequest` + - Added enum `ServiceType` + - Added enum `ServiceUpdateAction` + - Added enum `UpdateAction` + - Added model `VirtualNetworkAppliance` + - Added model `VirtualNetworkApplianceIpConfiguration` + - Added model `VirtualNetworkApplianceListResult` + - Added operation group `ServiceGatewaysOperations` + - Added operation group `VirtualNetworkAppliancesOperations` + +### Breaking Changes + + - Deleted or renamed enum value `FirewallPolicyIntrusionDetectionProfileType.ADVANCED` + - Deleted or renamed enum value `FirewallPolicyIntrusionDetectionProfileType.BASIC` + - Deleted or renamed enum value `FirewallPolicyIntrusionDetectionProfileType.STANDARD` + +## 30.1.0 (2025-11-19) + +### Features Added + + - Added operation PublicIPAddressesOperations.begin_disassociate_cloud_service_reserved_public_ip + - Added operation PublicIPAddressesOperations.begin_reserve_cloud_service_public_ip_address + - Model ApplicationGateway has a new parameter entra_jwt_validation_configs + - Model ApplicationGatewayBackendSettings has a new parameter enable_l4_client_ip_preservation + - Model ApplicationGatewayClientAuthConfiguration has a new parameter verify_client_auth_mode + - Model ApplicationGatewayOnDemandProbe has a new parameter enable_probe_proxy_protocol_header + - Model ApplicationGatewayProbe has a new parameter enable_probe_proxy_protocol_header + - Model ApplicationGatewayRequestRoutingRule has a new parameter entra_jwt_validation_config + - Model DdosCustomPolicy has a new parameter detection_rules + - Model DdosCustomPolicy has a new parameter front_end_ip_configuration + - Model FlowLog has a new parameter record_types + - Model FlowLogInformation has a new parameter record_types + - Model LoadBalancer has a new parameter scope + - Model NetworkManagerRoutingConfiguration has a new parameter route_table_usage_mode + - Model PrivateEndpoint has a new parameter ip_version_type + - Model PrivateLinkService has a new parameter access_mode + - Model VirtualNetworkGatewayConnection has a new parameter authentication_type + - Model VirtualNetworkGatewayConnection has a new parameter certificate_authentication + +> Changelog entries prior to 30.1.0 were removed to reduce file size. See https://pypi.org/project/azure-mgmt-network/30.1.0/ for the older history. diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-sql-4.0.0-CHANGELOG.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-sql-4.0.0-CHANGELOG.md new file mode 100644 index 000000000000..2cdd4213a918 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-sql-4.0.0-CHANGELOG.md @@ -0,0 +1,2762 @@ +# Release History + +## 4.0.0 (2026-06-30) + +### Features Added + + - Client `SqlManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `SqlManagementClient` added method `send_request` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_baseline` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessments` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessments_settings` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_rule_baselines` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_rule_baseline` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_scan_result` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_scan_result` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_scans` + - Client `SqlManagementClient` added operation group `distributed_availability_groups` + - Client `SqlManagementClient` added operation group `endpoint_certificates` + - Client `SqlManagementClient` added operation group `instance_pool_operations` + - Client `SqlManagementClient` added operation group `ipv6_firewall_rules` + - Client `SqlManagementClient` added operation group `job_private_endpoints` + - Client `SqlManagementClient` added operation group `managed_instance_dtcs` + - Client `SqlManagementClient` added operation group `managed_server_dns_aliases` + - Client `SqlManagementClient` added operation group `network_security_perimeter_configurations` + - Client `SqlManagementClient` added operation group `server_configuration_options` + - Client `SqlManagementClient` added operation group `server_trust_certificates` + - Client `SqlManagementClient` added operation group `start_stop_managed_instance_schedules` + - Client `SqlManagementClient` added operation group `database_encryption_protectors` + - Client `SqlManagementClient` added operation group `synapse_link_workspaces` + - Client `SqlManagementClient` added operation group `database_advanced_threat_protection_settings` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_baselines` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_baselines` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessments_settings` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_execute_scan` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_execute_scan` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_rule_baselines` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_scans` + - Client `SqlManagementClient` added operation group `managed_database_advanced_threat_protection_settings` + - Client `SqlManagementClient` added operation group `managed_database_move_operations` + - Client `SqlManagementClient` added operation group `managed_instance_advanced_threat_protection_settings` + - Client `SqlManagementClient` added operation group `managed_ledger_digest_uploads` + - Client `SqlManagementClient` added operation group `server_advanced_threat_protection_settings` + - Model `Advisor` added property `system_data` + - Model `BackupShortTermRetentionPolicy` added property `system_data` + - Enum `BackupStorageRedundancy` added member `GEO_ZONE` + - Enum `CapabilityGroup` added member `SUPPORTED_JOB_AGENT_VERSIONS` + - Model `CheckNameAvailabilityRequest` added property `type` + - Model `DataMaskingPolicy` added property `system_data` + - Model `DataMaskingRule` added property `system_data` + - Model `DataWarehouseUserActivities` added property `system_data` + - Model `Database` added property `identity` + - Model `Database` added property `system_data` + - Model `DatabaseAutomaticTuning` added property `system_data` + - Model `DatabaseBlobAuditingPolicy` added property `system_data` + - Model `DatabaseColumn` added property `system_data` + - Model `DatabaseExtensions` added property `system_data` + - Model `DatabaseOperation` added property `system_data` + - Model `DatabaseSchema` added property `system_data` + - Enum `DatabaseStatus` added member `STARTING` + - Enum `DatabaseStatus` added member `STOPPED` + - Enum `DatabaseStatus` added member `STOPPING` + - Model `DatabaseTable` added property `system_data` + - Model `DatabaseUpdate` added property `identity` + - Model `DatabaseUsage` added property `system_data` + - Model `DatabaseVulnerabilityAssessment` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentRuleBaseline` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentScansExport` added property `system_data` + - Model `DeletedServer` added property `system_data` + - Model `EditionCapability` added property `zone_pinning` + - Model `ElasticPool` added property `system_data` + - Model `ElasticPoolEditionCapability` added property `zone_pinning` + - Model `ElasticPoolOperation` added property `system_data` + - Model `ElasticPoolPerDatabaseSettings` added property `auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_min_capacities` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_per_database_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_zones` + - Model `EncryptionProtector` added property `system_data` + - Model `ExtendedDatabaseBlobAuditingPolicy` added property `system_data` + - Model `ExtendedServerBlobAuditingPolicy` added property `system_data` + - Model `FailoverGroup` added property `system_data` + - Model `FailoverGroupReadOnlyEndpoint` added property `target_server` + - Model `GeoBackupPolicy` added property `system_data` + - Model `ImportExportExtensionsOperationResult` added property `system_data` + - Model `ImportExportOperationResult` added property `system_data` + - Model `InstanceFailoverGroup` added property `system_data` + - Model `InstancePool` added property `system_data` + - Model `InstancePoolUpdate` added property `sku` + - Model `InstancePoolUpdate` added property `properties` + - Model `Job` added property `system_data` + - Model `JobAgent` added property `identity` + - Model `JobAgent` added property `system_data` + - Model `JobAgentUpdate` added property `identity` + - Model `JobAgentUpdate` added property `sku` + - Model `JobCredential` added property `system_data` + - Model `JobExecution` added property `system_data` + - Model `JobStep` added property `system_data` + - Model `JobTargetGroup` added property `system_data` + - Model `JobVersion` added property `system_data` + - Model `LedgerDigestUploads` added property `system_data` + - Model `LocationCapabilities` added property `supported_job_agent_versions` + - Model `LocationCapabilities` added property `is_zone_resilient_provisioning_allowed` + - Model `LongTermRetentionBackup` added property `system_data` + - Model `LongTermRetentionBackupOperationResult` added property `system_data` + - Model `LongTermRetentionPolicy` added property `system_data` + - Model `MaintenanceWindowOptions` added property `system_data` + - Model `MaintenanceWindows` added property `system_data` + - Model `ManagedBackupShortTermRetentionPolicy` added property `system_data` + - Model `ManagedDatabase` added property `system_data` + - Model `ManagedDatabaseRestoreDetailsResult` added property `system_data` + - Model `ManagedDatabaseSecurityAlertPolicy` added property `system_data` + - Enum `ManagedDatabaseStatus` added member `DB_COPYING` + - Enum `ManagedDatabaseStatus` added member `DB_MOVING` + - Enum `ManagedDatabaseStatus` added member `STARTING` + - Enum `ManagedDatabaseStatus` added member `STOPPED` + - Enum `ManagedDatabaseStatus` added member `STOPPING` + - Model `ManagedInstance` added property `system_data` + - Model `ManagedInstanceAdministrator` added property `system_data` + - Model `ManagedInstanceAzureADOnlyAuthentication` added property `system_data` + - Model `ManagedInstanceEditionCapability` added property `is_general_purpose_v2` + - Model `ManagedInstanceEncryptionProtector` added property `system_data` + - Model `ManagedInstanceFamilyCapability` added property `zone_redundant` + - Model `ManagedInstanceKey` added property `system_data` + - Model `ManagedInstanceLongTermRetentionBackup` added property `system_data` + - Model `ManagedInstanceLongTermRetentionPolicy` added property `system_data` + - Model `ManagedInstanceOperation` added property `system_data` + - Model `ManagedInstancePrivateEndpointConnection` added property `system_data` + - Model `ManagedInstancePrivateLink` added property `system_data` + - Model `ManagedInstancePrivateLinkProperties` added property `required_zone_names` + - Model `ManagedInstanceQuery` added property `system_data` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_sizes_in_gb` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_limits_mb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `iops_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `iops_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVulnerabilityAssessment` added property `system_data` + - Model `ManagedTransparentDataEncryption` added property `system_data` + - Enum `OperationMode` added member `EXPORT` + - Enum `OperationMode` added member `IMPORT` + - Model `OutboundFirewallRule` added property `system_data` + - Model `PrivateEndpointConnection` added property `system_data` + - Model `PrivateEndpointConnectionProperties` added property `group_ids` + - Model `PrivateLinkResource` added property `system_data` + - Model `ProxyResource` added property `system_data` + - Model `QueryStatistics` added property `system_data` + - Model `RecommendedAction` added property `system_data` + - Model `RecommendedSensitivityLabelUpdate` added property `system_data` + - Model `RecoverableDatabase` added property `system_data` + - Model `RecoverableManagedDatabase` added property `system_data` + - Model `ReplicationLink` added property `system_data` + - Enum `ReplicationLinkType` added member `STANDBY` + - Model `Resource` added property `system_data` + - Model `RestorableDroppedDatabase` added property `system_data` + - Model `RestorableDroppedManagedDatabase` added property `system_data` + - Model `RestorePoint` added property `system_data` + - Enum `SecondaryType` added member `STANDBY` + - Model `SecurityEvent` added property `system_data` + - Model `SensitivityLabel` added property `system_data` + - Model `SensitivityLabelUpdate` added property `system_data` + - Model `Server` added property `system_data` + - Model `ServerAutomaticTuning` added property `system_data` + - Model `ServerAzureADAdministrator` added property `system_data` + - Model `ServerAzureADOnlyAuthentication` added property `system_data` + - Model `ServerBlobAuditingPolicy` added property `system_data` + - Model `ServerConnectionPolicy` added property `system_data` + - Model `ServerDnsAlias` added property `system_data` + - Model `ServerKey` added property `system_data` + - Model `ServerOperation` added property `system_data` + - Model `ServerTrustGroup` added property `system_data` + - Model `ServerUsage` added property `id` + - Model `ServerUsage` added property `type` + - Model `ServerUsage` added property `system_data` + - Model `ServerVulnerabilityAssessment` added property `system_data` + - Model `ServiceObjectiveCapability` added property `zone_pinning` + - Model `ServiceObjectiveCapability` added property `supported_zones` + - Model `ServiceObjectiveCapability` added property `supported_free_limit_exhaustion_behaviors` + - Model `SqlAgentConfiguration` added property `system_data` + - Enum `StorageCapabilityStorageAccountType` added member `GZRS` + - Enum `StorageKeyType` added member `MANAGED_IDENTITY` + - Model `SubscriptionUsage` added property `system_data` + - Model `SyncAgent` added property `system_data` + - Model `SyncAgentLinkedDatabase` added property `system_data` + - Model `SyncGroup` added property `system_data` + - Model `SyncMember` added property `system_data` + - Model `TdeCertificate` added property `system_data` + - Model `TimeZone` added property `system_data` + - Model `TrackedResource` added property `system_data` + - Model `VirtualCluster` added property `system_data` + - Model `VirtualNetworkRule` added property `system_data` + - Model `VulnerabilityAssessmentScanRecord` added property `system_data` + - Model `WorkloadClassifier` added property `system_data` + - Model `WorkloadGroup` added property `system_data` + - Added enum `AdvancedThreatProtectionName` + - Added model `AdvancedThreatProtectionProperties` + - Added enum `AdvancedThreatProtectionState` + - Added enum `AlwaysEncryptedEnclaveType` + - Added enum `AuthMetadataLookupModes` + - Added enum `AvailabilityZoneType` + - Added enum `BackupStorageAccessTier` + - Added model `Baseline` + - Added model `BaselineAdjustedResult` + - Added enum `BaselineName` + - Added model `BenchmarkReference` + - Added model `CertificateInfo` + - Added model `ChangeLongTermRetentionBackupAccessTierParameters` + - Added enum `CheckNameAvailabilityResourceType` + - Added enum `ClientClassificationSource` + - Added enum `DNSRefreshOperationStatus` + - Added model `DatabaseAdvancedThreatProtection` + - Added model `DatabaseIdentity` + - Added enum `DatabaseIdentityType` + - Added model `DatabaseKey` + - Added enum `DatabaseKeyType` + - Added model `DatabaseSqlVulnerabilityAssessmentBaselineSet` + - Added model `DatabaseSqlVulnerabilityAssessmentBaselineSetProperties` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaseline` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineInput` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineInputProperties` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineListInput` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineListInputProperties` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineProperties` + - Added model `DatabaseUserIdentity` + - Added enum `DevOpsAuditingSettingsName` + - Added model `DistributedAvailabilityGroup` + - Added model `DistributedAvailabilityGroupDatabase` + - Added model `DistributedAvailabilityGroupProperties` + - Added model `DistributedAvailabilityGroupSetRole` + - Added model `DistributedAvailabilityGroupsFailoverRequest` + - Added enum `DtcName` + - Added model `EndpointCertificate` + - Added model `EndpointCertificateProperties` + - Added model `EndpointDependency` + - Added model `EndpointDetail` + - Added model `ErrorAdditionalInfo` + - Added model `ErrorDetail` + - Added model `ErrorResponse` + - Added enum `ErrorType` + - Added enum `ExternalGovernanceStatus` + - Added enum `FailoverGroupDatabasesSecondaryType` + - Added enum `FailoverModeType` + - Added enum `FailoverType` + - Added enum `FreeLimitExhaustionBehavior` + - Added model `FreeLimitExhaustionBehaviorCapability` + - Added enum `HybridSecondaryUsage` + - Added enum `HybridSecondaryUsageDetected` + - Added model `IPv6FirewallRule` + - Added model `IPv6ServerFirewallRuleProperties` + - Added enum `InaccessibilityReason` + - Added model `InstancePoolOperation` + - Added model `InstancePoolOperationProperties` + - Added enum `InstanceRole` + - Added model `JobAgentEditionCapability` + - Added model `JobAgentIdentity` + - Added enum `JobAgentIdentityType` + - Added model `JobAgentServiceLevelObjectiveCapability` + - Added model `JobAgentUserAssignedIdentity` + - Added model `JobAgentVersionCapability` + - Added model `JobPrivateEndpoint` + - Added model `JobPrivateEndpointProperties` + - Added enum `LinkRole` + - Added model `LogicalDatabaseTransparentDataEncryption` + - Added model `ManagedDatabaseAdvancedThreatProtection` + - Added model `ManagedDatabaseExtendedAccessibilityInfo` + - Added model `ManagedDatabaseMoveDefinition` + - Added model `ManagedDatabaseMoveOperationResult` + - Added model `ManagedDatabaseMoveOperationResultProperties` + - Added model `ManagedDatabaseRestoreDetailsBackupSetProperties` + - Added model `ManagedDatabaseRestoreDetailsUnrestorableFileProperties` + - Added model `ManagedDatabaseStartMoveDefinition` + - Added model `ManagedInstanceAdvancedThreatProtection` + - Added enum `ManagedInstanceDatabaseFormat` + - Added model `ManagedInstanceDtc` + - Added model `ManagedInstanceDtcProperties` + - Added model `ManagedInstanceDtcSecuritySettings` + - Added model `ManagedInstanceDtcTransactionManagerCommunicationSettings` + - Added model `ManagedInstanceValidateAzureKeyVaultEncryptionKeyRequest` + - Added model `ManagedLedgerDigestUploads` + - Added enum `ManagedLedgerDigestUploadsName` + - Added model `ManagedLedgerDigestUploadsProperties` + - Added enum `ManagedLedgerDigestUploadsState` + - Added model `ManagedServerDnsAlias` + - Added model `ManagedServerDnsAliasAcquisition` + - Added model `ManagedServerDnsAliasCreation` + - Added model `ManagedServerDnsAliasProperties` + - Added model `MaxLimitRangeCapability` + - Added enum `MinimalTlsVersion` + - Added enum `MoveOperationMode` + - Added model `NSPConfigAccessRule` + - Added model `NSPConfigAccessRuleProperties` + - Added model `NSPConfigAssociation` + - Added model `NSPConfigNetworkSecurityPerimeterRule` + - Added model `NSPConfigPerimeter` + - Added model `NSPConfigProfile` + - Added model `NSPProvisioningIssue` + - Added model `NSPProvisioningIssueProperties` + - Added model `NetworkSecurityPerimeterConfiguration` + - Added model `NetworkSecurityPerimeterConfigurationProperties` + - Added model `OutboundEnvironmentEndpoint` + - Added model `PerDatabaseAutoPauseDelayTimeRange` + - Added enum `Phase` + - Added model `PhaseDetails` + - Added enum `PricingModel` + - Added model `QueryCheck` + - Added model `RefreshExternalGovernanceStatusOperationResult` + - Added model `RefreshExternalGovernanceStatusOperationResultMI` + - Added model `RefreshExternalGovernanceStatusOperationResultProperties` + - Added model `RefreshExternalGovernanceStatusOperationResultPropertiesMI` + - Added model `Remediation` + - Added enum `ReplicaConnectedState` + - Added enum `ReplicaSynchronizationHealth` + - Added model `ReplicationLinkUpdate` + - Added model `ReplicationLinkUpdateProperties` + - Added enum `ReplicationModeType` + - Added enum `RoleChangeType` + - Added enum `RuleSeverity` + - Added enum `RuleStatus` + - Added enum `RuleType` + - Added model `ScheduleItem` + - Added enum `SecondaryInstanceType` + - Added enum `SeedingModeType` + - Added model `ServerAdvancedThreatProtection` + - Added model `ServerConfigurationOption` + - Added enum `ServerConfigurationOptionName` + - Added model `ServerConfigurationOptionProperties` + - Added enum `ServerCreateMode` + - Added enum `ServerPublicNetworkAccessFlag` + - Added model `ServerTrustCertificate` + - Added model `ServerTrustCertificateProperties` + - Added model `ServicePrincipal` + - Added enum `ServicePrincipalType` + - Added enum `SetLegalHoldImmutability` + - Added model `SqlVulnerabilityAssessment` + - Added enum `SqlVulnerabilityAssessmentName` + - Added model `SqlVulnerabilityAssessmentPolicyProperties` + - Added model `SqlVulnerabilityAssessmentScanError` + - Added model `SqlVulnerabilityAssessmentScanRecord` + - Added model `SqlVulnerabilityAssessmentScanRecordProperties` + - Added model `SqlVulnerabilityAssessmentScanResultProperties` + - Added model `SqlVulnerabilityAssessmentScanResults` + - Added enum `SqlVulnerabilityAssessmentState` + - Added model `StartStopManagedInstanceSchedule` + - Added model `StartStopManagedInstanceScheduleProperties` + - Added enum `StartStopScheduleName` + - Added model `SynapseLinkWorkspace` + - Added model `SynapseLinkWorkspaceInfoProperties` + - Added model `SynapseLinkWorkspaceProperties` + - Added enum `SyncGroupsType` + - Added enum `TimeBasedImmutability` + - Added enum `TimeBasedImmutabilityMode` + - Added model `TransparentDataEncryptionProperties` + - Added enum `TransparentDataEncryptionScanState` + - Added model `UpdateVirtualClusterDnsServersOperation` + - Added model `UpsertManagedServerOperationStepWithEstimatesAndDuration` + - Added enum `UpsertManagedServerOperationStepWithEstimatesAndDurationStatus` + - Added model `VaRule` + - Added model `VirtualClusterDnsServersProperties` + - Added model `ZonePinningCapability` + - Operation group `DatabasesOperations` added parameter `expand` in method `get` + - Operation group `DatabasesOperations` added parameter `filter` in method `get` + - Operation group `FailoverGroupsOperations` added method `begin_try_planned_before_forced_failover` + - Operation group `GeoBackupPoliciesOperations` added method `list` + - Operation group `LedgerDigestUploadsOperations` added method `begin_create_or_update` + - Operation group `LedgerDigestUploadsOperations` added method `begin_disable` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_change_access_tier` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_change_access_tier_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_lock_time_based_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_lock_time_based_immutability_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_legal_hold_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_legal_hold_immutability_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_time_based_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_time_based_immutability_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_set_legal_hold_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_set_legal_hold_immutability_by_resource_group` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_resource_group_location` + - Operation group `ManagedDatabaseSensitivityLabelsOperations` added method `list_by_database` + - Operation group `ManagedDatabasesOperations` added method `begin_cancel_move` + - Operation group `ManagedDatabasesOperations` added method `begin_complete_move` + - Operation group `ManagedDatabasesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedDatabasesOperations` added method `begin_start_move` + - Operation group `ManagedInstanceLongTermRetentionPoliciesOperations` added method `begin_delete` + - Operation group `ManagedInstancesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedInstancesOperations` added method `begin_refresh_status` + - Operation group `ManagedInstancesOperations` added method `begin_start` + - Operation group `ManagedInstancesOperations` added method `begin_stop` + - Operation group `ManagedInstancesOperations` added method `begin_validate_azure_key_vault_encryption_key` + - Operation group `ManagedInstancesOperations` added method `list_outbound_network_dependencies_by_managed_instance` + - Operation group `RecoverableDatabasesOperations` added parameter `expand` in method `get` + - Operation group `RecoverableDatabasesOperations` added parameter `filter` in method `get` + - Operation group `ReplicationLinksOperations` added method `begin_create_or_update` + - Operation group `ReplicationLinksOperations` added method `begin_delete` + - Operation group `ReplicationLinksOperations` added method `begin_update` + - Operation group `RestorableDroppedDatabasesOperations` added parameter `expand` in method `get` + - Operation group `RestorableDroppedDatabasesOperations` added parameter `filter` in method `get` + - Operation group `SensitivityLabelsOperations` added method `list_by_database` + - Operation group `ServerConnectionPoliciesOperations` added method `begin_create_or_update` + - Operation group `ServerConnectionPoliciesOperations` added method `list_by_server` + - Operation group `ServersOperations` added method `begin_refresh_status` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_create_or_update` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_resume` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_suspend` + - Operation group `TransparentDataEncryptionsOperations` added method `list_by_database` + - Operation group `VirtualClustersOperations` added method `begin_create_or_update` + - Operation group `VirtualClustersOperations` added method `begin_update_dns_servers` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Deleted or renamed client operation group `SqlManagementClient.server_communication_links` + - Deleted or renamed client operation group `SqlManagementClient.service_objectives` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_activities` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_database_activities` + - Deleted or renamed client operation group `SqlManagementClient.transparent_data_encryption_activities` + - Deleted or renamed client operation group `SqlManagementClient.operations_health` + - Model `Advisor` moved instance variable `advisor_status`, `auto_execute_status`, `auto_execute_status_inherited_from`, `recommendations_status`, `last_checked` and `recommended_actions` under property `properties` whose type is `AdvisorProperties` + - Model `BackupShortTermRetentionPolicy` moved instance variable `retention_days` and `diff_backup_interval_in_hours` under property `properties` whose type is `BackupShortTermRetentionPolicyProperties` + - Model `CopyLongTermRetentionBackupParameters` moved instance variable `target_subscription_id`, `target_resource_group`, `target_server_resource_id`, `target_server_fully_qualified_domain_name`, `target_database_name` and `target_backup_storage_redundancy` under property `properties` whose type is `CopyLongTermRetentionBackupParametersProperties` + - Model `DataMaskingPolicy` moved instance variable `data_masking_state`, `exempt_principals`, `application_principals` and `masking_level` under property `properties` whose type is `DataMaskingPolicyProperties` + - Model `DataMaskingRule` moved instance variable `id_properties_id`, `alias_name`, `rule_state`, `schema_name`, `table_name`, `column_name`, `masking_function`, `number_from`, `number_to`, `prefix_size`, `suffix_size` and `replacement_string` under property `properties` whose type is `DataMaskingRuleProperties` + - Model `DataWarehouseUserActivities` moved instance variable `active_queries_count` under property `properties` whose type is `DataWarehouseUserActivitiesProperties` + - Model `Database` moved instance variable `create_mode`, `collation`, `max_size_bytes`, `sample_name`, `elastic_pool_id`, `source_database_id`, `status`, `database_id`, `creation_date`, `current_service_objective_name`, `requested_service_objective_name`, `default_secondary_location`, `failover_group_id`, `restore_point_in_time`, `source_database_deletion_date`, `recovery_services_recovery_point_id`, `long_term_retention_backup_resource_id`, `recoverable_database_id`, `restorable_dropped_database_id`, `catalog_collation`, `zone_redundant`, `license_type`, `max_log_size_bytes`, `earliest_restore_date`, `read_scale`, `high_availability_replica_count`, `secondary_type`, `current_sku`, `auto_pause_delay`, `current_backup_storage_redundancy`, `requested_backup_storage_redundancy`, `min_capacity`, `paused_date`, `resumed_date`, `maintenance_configuration_id`, `is_ledger_on` and `is_infra_encryption_enabled` under property `properties` whose type is `DatabaseProperties` + - Model `DatabaseAutomaticTuning` moved instance variable `desired_state`, `actual_state` and `options` under property `properties` whose type is `DatabaseAutomaticTuningProperties` + - Model `DatabaseBlobAuditingPolicy` moved instance variable `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `DatabaseBlobAuditingPolicyProperties` + - Model `DatabaseColumn` moved instance variable `column_type`, `temporal_type`, `memory_optimized` and `is_computed` under property `properties` whose type is `DatabaseColumnProperties` + - Model `DatabaseExtensions` moved instance variable `operation_mode`, `storage_key_type`, `storage_key` and `storage_uri` under property `properties` whose type is `DatabaseExtensionsProperties` + - Model `DatabaseOperation` moved instance variable `database_name`, `operation`, `operation_friendly_name`, `percent_complete`, `server_name`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description` and `is_cancellable` under property `properties` whose type is `DatabaseOperationProperties` + - Model `DatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `DatabaseTable` moved instance variable `temporal_type` and `memory_optimized` under property `properties` whose type is `DatabaseTableProperties` + - Model `DatabaseUpdate` moved instance variable `create_mode`, `collation`, `max_size_bytes`, `sample_name`, `elastic_pool_id`, `source_database_id`, `status`, `database_id`, `creation_date`, `current_service_objective_name`, `requested_service_objective_name`, `default_secondary_location`, `failover_group_id`, `restore_point_in_time`, `source_database_deletion_date`, `recovery_services_recovery_point_id`, `long_term_retention_backup_resource_id`, `recoverable_database_id`, `restorable_dropped_database_id`, `catalog_collation`, `zone_redundant`, `license_type`, `max_log_size_bytes`, `earliest_restore_date`, `read_scale`, `high_availability_replica_count`, `secondary_type`, `current_sku`, `auto_pause_delay`, `current_backup_storage_redundancy`, `requested_backup_storage_redundancy`, `min_capacity`, `paused_date`, `resumed_date`, `maintenance_configuration_id`, `is_ledger_on` and `is_infra_encryption_enabled` under property `properties` whose type is `DatabaseUpdateProperties` + - Model `DatabaseUsage` moved instance variable `display_name`, `current_value`, `limit` and `unit` under property `properties` whose type is `DatabaseUsageProperties` + - Model `DatabaseVulnerabilityAssessment` moved instance variable `storage_container_path`, `storage_container_sas_key`, `storage_account_access_key` and `recurring_scans` under property `properties` whose type is `DatabaseVulnerabilityAssessmentProperties` + - Model `DatabaseVulnerabilityAssessmentRuleBaseline` moved instance variable `baseline_results` under property `properties` whose type is `DatabaseVulnerabilityAssessmentRuleBaselineProperties` + - Model `DatabaseVulnerabilityAssessmentScansExport` moved instance variable `exported_report_location` under property `properties` whose type is `DatabaseVulnerabilityAssessmentScanExportProperties` + - Model `DeletedServer` moved instance variable `version`, `deletion_time`, `original_id` and `fully_qualified_domain_name` under property `properties` whose type is `DeletedServerProperties` + - Model `ElasticPool` moved instance variable `state`, `creation_date`, `max_size_bytes`, `per_database_settings`, `zone_redundant`, `license_type` and `maintenance_configuration_id` under property `properties` whose type is `ElasticPoolProperties` + - Model `ElasticPoolOperation` moved instance variable `elastic_pool_name`, `operation`, `operation_friendly_name`, `percent_complete`, `server_name`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description` and `is_cancellable` under property `properties` whose type is `ElasticPoolOperationProperties` + - Model `ElasticPoolUpdate` moved instance variable `max_size_bytes`, `per_database_settings`, `zone_redundant`, `license_type` and `maintenance_configuration_id` under property `properties` whose type is `ElasticPoolUpdateProperties` + - Model `EncryptionProtector` moved instance variable `subregion`, `server_key_name`, `server_key_type`, `uri`, `thumbprint` and `auto_rotation_enabled` under property `properties` whose type is `EncryptionProtectorProperties` + - Model `ExtendedDatabaseBlobAuditingPolicy` moved instance variable `predicate_expression`, `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ExtendedDatabaseBlobAuditingPolicyProperties` + - Model `ExtendedServerBlobAuditingPolicy` moved instance variable `is_devops_audit_enabled`, `predicate_expression`, `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ExtendedServerBlobAuditingPolicyProperties` + - Model `FailoverGroup` moved instance variable `read_write_endpoint`, `read_only_endpoint`, `replication_role`, `replication_state`, `partner_servers` and `databases` under property `properties` whose type is `FailoverGroupProperties` + - Model `FailoverGroupUpdate` moved instance variable `read_write_endpoint`, `read_only_endpoint` and `databases` under property `properties` whose type is `FailoverGroupUpdateProperties` + - Model `FirewallRule` moved instance variable `start_ip_address` and `end_ip_address` under property `properties` whose type is `ServerFirewallRuleProperties` + - Model `FirewallRuleList` renamed its instance variable `values` to `values_property` + - Model `GeoBackupPolicy` moved instance variable `state` and `storage_type` under property `properties` whose type is `GeoBackupPolicyProperties` + - Model `ImportExportExtensionsOperationResult` moved instance variable `request_id`, `request_type`, `last_modified_time`, `server_name`, `database_name`, `status` and `error_message` under property `properties` whose type is `ImportExportExtensionsOperationResultProperties` + - Model `ImportExportOperationResult` moved instance variable `request_id`, `request_type`, `queued_time`, `last_modified_time`, `blob_uri`, `server_name`, `database_name`, `status`, `error_message` and `private_endpoint_connections` under property `properties` whose type is `ImportExportOperationResultProperties` + - Model `InstanceFailoverGroup` moved instance variable `read_write_endpoint`, `read_only_endpoint`, `replication_role`, `replication_state`, `partner_regions` and `managed_instance_pairs` under property `properties` whose type is `InstanceFailoverGroupProperties` + - Model `InstancePool` moved instance variable `subnet_id`, `v_cores` and `license_type` under property `properties` whose type is `InstancePoolProperties` + - Model `Job` moved instance variable `description`, `version` and `schedule` under property `properties` whose type is `JobProperties` + - Model `JobAgent` moved instance variable `database_id` and `state` under property `properties` whose type is `JobAgentProperties` + - Model `JobCredential` moved instance variable `username` and `password` under property `properties` whose type is `JobCredentialProperties` + - Model `JobExecution` moved instance variable `job_version`, `step_name`, `step_id`, `job_execution_id`, `lifecycle`, `provisioning_state`, `create_time`, `start_time`, `end_time`, `current_attempts`, `current_attempt_start_time`, `last_message` and `target` under property `properties` whose type is `JobExecutionProperties` + - Model `JobStep` moved instance variable `step_id`, `target_group`, `credential`, `action`, `output` and `execution_options` under property `properties` whose type is `JobStepProperties` + - Model `JobTargetGroup` moved instance variable `members` under property `properties` whose type is `JobTargetGroupProperties` + - Model `LedgerDigestUploads` moved instance variable `digest_storage_endpoint` and `state` under property `properties` whose type is `LedgerDigestUploadsProperties` + - Model `LongTermRetentionBackup` moved instance variable `server_name`, `server_create_time`, `database_name`, `database_deletion_time`, `backup_time`, `backup_expiration_time`, `backup_storage_redundancy` and `requested_backup_storage_redundancy` under property `properties` whose type is `LongTermRetentionBackupProperties` + - Model `LongTermRetentionBackupOperationResult` moved instance variable `request_id`, `operation_type`, `from_backup_resource_id`, `to_backup_resource_id`, `target_backup_storage_redundancy`, `status` and `message` under property `properties` whose type is `LongTermRetentionOperationResultProperties` + - Model `LongTermRetentionPolicy` moved instance variable `weekly_retention`, `monthly_retention`, `yearly_retention` and `week_of_year` under property `properties` whose type is `LongTermRetentionPolicyProperties` + - Model `MaintenanceWindowOptions` moved instance variable `is_enabled`, `maintenance_window_cycles`, `min_duration_in_minutes`, `default_duration_in_minutes`, `min_cycles`, `time_granularity_in_minutes` and `allow_multiple_maintenance_windows_per_cycle` under property `properties` whose type is `MaintenanceWindowOptionsProperties` + - Model `MaintenanceWindows` moved instance variable `time_ranges` under property `properties` whose type is `MaintenanceWindowsProperties` + - Model `ManagedBackupShortTermRetentionPolicy` moved instance variable `retention_days` under property `properties` whose type is `ManagedBackupShortTermRetentionPolicyProperties` + - Model `ManagedDatabase` moved instance variable `collation`, `status`, `creation_date`, `earliest_restore_point`, `restore_point_in_time`, `default_secondary_location`, `catalog_collation`, `create_mode`, `storage_container_uri`, `source_database_id`, `restorable_dropped_database_id`, `storage_container_sas_token`, `failover_group_id`, `recoverable_database_id`, `long_term_retention_backup_resource_id`, `auto_complete_restore` and `last_backup_name` under property `properties` whose type is `ManagedDatabaseProperties` + - Model `ManagedDatabaseRestoreDetailsResult` moved instance variable `status`, `current_restoring_file_name`, `last_restored_file_name`, `last_restored_file_time`, `percent_completed`, `unrestorable_files`, `number_of_files_detected`, `last_uploaded_file_name`, `last_uploaded_file_time` and `block_reason` under property `properties` whose type is `ManagedDatabaseRestoreDetailsProperties` + - Model `ManagedDatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertPolicyProperties` + - Model `ManagedDatabaseUpdate` moved instance variable `collation`, `status`, `creation_date`, `earliest_restore_point`, `restore_point_in_time`, `default_secondary_location`, `catalog_collation`, `create_mode`, `storage_container_uri`, `source_database_id`, `restorable_dropped_database_id`, `storage_container_sas_token`, `failover_group_id`, `recoverable_database_id`, `long_term_retention_backup_resource_id`, `auto_complete_restore` and `last_backup_name` under property `properties` whose type is `ManagedDatabaseProperties` + - Model `ManagedInstance` moved instance variable `provisioning_state`, `managed_instance_create_mode`, `fully_qualified_domain_name`, `administrator_login`, `administrator_login_password`, `subnet_id`, `state`, `license_type`, `v_cores`, `storage_size_in_gb`, `collation`, `dns_zone`, `dns_zone_partner`, `public_data_endpoint_enabled`, `source_managed_instance_id`, `restore_point_in_time`, `proxy_override`, `timezone_id`, `instance_pool_id`, `maintenance_configuration_id`, `private_endpoint_connections`, `minimal_tls_version`, `storage_account_type`, `zone_redundant`, `primary_user_assigned_identity_id`, `key_id` and `administrators` under property `properties` whose type is `ManagedInstanceProperties` + - Model `ManagedInstanceAdministrator` moved instance variable `administrator_type`, `login`, `sid` and `tenant_id` under property `properties` whose type is `ManagedInstanceAdministratorProperties` + - Model `ManagedInstanceAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `ManagedInstanceAzureADOnlyAuthProperties` + - Model `ManagedInstanceEditionCapability` deleted or renamed its instance variable `zone_redundant` + - Model `ManagedInstanceEncryptionProtector` moved instance variable `server_key_name`, `server_key_type`, `uri`, `thumbprint` and `auto_rotation_enabled` under property `properties` whose type is `ManagedInstanceEncryptionProtectorProperties` + - Model `ManagedInstanceKey` moved instance variable `server_key_type`, `uri`, `thumbprint`, `creation_date` and `auto_rotation_enabled` under property `properties` whose type is `ManagedInstanceKeyProperties` + - Model `ManagedInstanceLongTermRetentionBackup` moved instance variable `managed_instance_name`, `managed_instance_create_time`, `database_name`, `database_deletion_time`, `backup_time`, `backup_expiration_time` and `backup_storage_redundancy` under property `properties` whose type is `ManagedInstanceLongTermRetentionBackupProperties` + - Model `ManagedInstanceLongTermRetentionPolicy` moved instance variable `weekly_retention`, `monthly_retention`, `yearly_retention` and `week_of_year` under property `properties` whose type is `ManagedInstanceLongTermRetentionPolicyProperties` + - Model `ManagedInstanceOperation` moved instance variable `managed_instance_name`, `operation`, `operation_friendly_name`, `percent_complete`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description`, `is_cancellable`, `operation_parameters` and `operation_steps` under property `properties` whose type is `ManagedInstanceOperationProperties` + - Model `ManagedInstancePrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `ManagedInstancePrivateEndpointConnectionProperties` + - Model `ManagedInstanceQuery` moved instance variable `query_text` under property `properties` whose type is `QueryProperties` + - Model `ManagedInstanceUpdate` moved instance variable `provisioning_state`, `managed_instance_create_mode`, `fully_qualified_domain_name`, `administrator_login`, `administrator_login_password`, `subnet_id`, `state`, `license_type`, `v_cores`, `storage_size_in_gb`, `collation`, `dns_zone`, `dns_zone_partner`, `public_data_endpoint_enabled`, `source_managed_instance_id`, `restore_point_in_time`, `proxy_override`, `timezone_id`, `instance_pool_id`, `maintenance_configuration_id`, `private_endpoint_connections`, `minimal_tls_version`, `storage_account_type`, `zone_redundant`, `primary_user_assigned_identity_id`, `key_id` and `administrators` under property `properties` whose type is `ManagedInstanceProperties` + - Model `ManagedInstanceVulnerabilityAssessment` moved instance variable `storage_container_path`, `storage_container_sas_key`, `storage_account_access_key` and `recurring_scans` under property `properties` whose type is `ManagedInstanceVulnerabilityAssessmentProperties` + - Model `ManagedServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `ManagedTransparentDataEncryption` moved instance variable `state` under property `properties` whose type is `ManagedTransparentDataEncryptionProperties` + - Model `OutboundFirewallRule` moved instance variable `provisioning_state` under property `properties` whose type is `OutboundFirewallRuleProperties` + - Model `PrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `PrivateEndpointConnectionProperties` + - Model `QueryStatistics` moved instance variable `database_name`, `query_id`, `start_time`, `end_time` and `intervals` under property `properties` whose type is `QueryStatisticsProperties` + - Model `RecommendedAction` moved instance variable `recommendation_reason`, `valid_since`, `last_refresh`, `state`, `is_executable_action`, `is_revertable_action`, `is_archived_action`, `execute_action_start_time`, `execute_action_duration`, `revert_action_start_time`, `revert_action_duration`, `execute_action_initiated_by`, `execute_action_initiated_time`, `revert_action_initiated_by`, `revert_action_initiated_time`, `score`, `implementation_details`, `error_details`, `estimated_impact`, `observed_impact`, `time_series`, `linked_objects` and `details` under property `properties` whose type is `RecommendedActionProperties` + - Model `RecommendedSensitivityLabelUpdate` moved instance variable `op`, `schema`, `table` and `column` under property `properties` whose type is `RecommendedSensitivityLabelUpdateProperties` + - Model `RecoverableDatabase` moved instance variable `edition`, `service_level_objective`, `elastic_pool_name` and `last_available_backup_date` under property `properties` whose type is `RecoverableDatabaseProperties` + - Model `RecoverableManagedDatabase` moved instance variable `last_available_backup_date` under property `properties` whose type is `RecoverableManagedDatabaseProperties` + - Model `ReplicationLink` moved instance variable `partner_server`, `partner_database`, `partner_location`, `role`, `partner_role`, `replication_mode`, `start_time`, `percent_complete`, `replication_state`, `is_termination_allowed` and `link_type` under property `properties` whose type is `ReplicationLinkProperties` + - Model `RestorableDroppedDatabase` moved instance variable `database_name`, `max_size_bytes`, `elastic_pool_id`, `creation_date`, `deletion_date`, `earliest_restore_date` and `backup_storage_redundancy` under property `properties` whose type is `RestorableDroppedDatabaseProperties` + - Model `RestorableDroppedManagedDatabase` moved instance variable `database_name`, `creation_date`, `deletion_date` and `earliest_restore_date` under property `properties` whose type is `RestorableDroppedManagedDatabaseProperties` + - Model `RestorePoint` moved instance variable `restore_point_type`, `earliest_restore_date`, `restore_point_creation_date` and `restore_point_label` under property `properties` whose type is `RestorePointProperties` + - Model `SecurityEvent` moved instance variable `event_time`, `security_event_type`, `subscription`, `server`, `database`, `client_ip`, `application_name`, `principal_name` and `security_event_sql_injection_additional_properties` under property `properties` whose type is `SecurityEventProperties` + - Model `SensitivityLabel` moved instance variable `schema_name`, `table_name`, `column_name`, `label_name`, `label_id`, `information_type`, `information_type_id`, `is_disabled` and `rank` under property `properties` whose type is `SensitivityLabelProperties` + - Model `SensitivityLabelUpdate` moved instance variable `op`, `schema`, `table`, `column` and `sensitivity_label` under property `properties` whose type is `SensitivityLabelUpdateProperties` + - Model `Server` moved instance variable `administrator_login`, `administrator_login_password`, `version`, `state`, `fully_qualified_domain_name`, `private_endpoint_connections`, `minimal_tls_version`, `public_network_access`, `workspace_feature`, `primary_user_assigned_identity_id`, `federated_client_id`, `key_id`, `administrators` and `restrict_outbound_network_access` under property `properties` whose type is `ServerProperties` + - Model `ServerAutomaticTuning` moved instance variable `desired_state`, `actual_state` and `options` under property `properties` whose type is `AutomaticTuningServerProperties` + - Model `ServerAzureADAdministrator` moved instance variable `administrator_type`, `login`, `sid`, `tenant_id` and `azure_ad_only_authentication` under property `properties` whose type is `AdministratorProperties` + - Model `ServerAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `AzureADOnlyAuthProperties` + - Model `ServerBlobAuditingPolicy` moved instance variable `is_devops_audit_enabled`, `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ServerBlobAuditingPolicyProperties` + - Model `ServerConnectionPolicy` moved instance variable `connection_type` under property `properties` whose type is `ServerConnectionPolicyProperties` + - Model `ServerDevOpsAuditingSettings` moved instance variable `is_azure_monitor_target_enabled`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ServerDevOpsAuditSettingsProperties` + - Model `ServerDnsAlias` moved instance variable `azure_dns_record` under property `properties` whose type is `ServerDnsAliasProperties` + - Model `ServerKey` moved instance variable `subregion`, `server_key_type`, `uri`, `thumbprint`, `creation_date` and `auto_rotation_enabled` under property `properties` whose type is `ServerKeyProperties` + - Model `ServerOperation` moved instance variable `operation`, `operation_friendly_name`, `percent_complete`, `server_name`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description` and `is_cancellable` under property `properties` whose type is `ServerOperationProperties` + - Model `ServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `ServerTrustGroup` moved instance variable `group_members` and `trust_scopes` under property `properties` whose type is `ServerTrustGroupProperties` + - Model `ServerUpdate` moved instance variable `administrator_login`, `administrator_login_password`, `version`, `state`, `fully_qualified_domain_name`, `private_endpoint_connections`, `minimal_tls_version`, `public_network_access`, `workspace_feature`, `primary_user_assigned_identity_id`, `federated_client_id`, `key_id`, `administrators` and `restrict_outbound_network_access` under property `properties` whose type is `ServerProperties` + - Model `ServerUsage` moved instance variable `resource_name`, `display_name`, `current_value`, `limit`, `unit` and `next_reset_time` under property `properties` whose type is `ServerUsageProperties` + - Model `ServerVulnerabilityAssessment` moved instance variable `storage_container_path`, `storage_container_sas_key`, `storage_account_access_key` and `recurring_scans` under property `properties` whose type is `ServerVulnerabilityAssessmentProperties` + - Model `SqlAgentConfiguration` moved instance variable `state` under property `properties` whose type is `SqlAgentConfigurationProperties` + - Model `SubscriptionUsage` moved instance variable `display_name`, `current_value`, `limit` and `unit` under property `properties` whose type is `SubscriptionUsageProperties` + - Model `SyncAgent` moved instance variable `name_properties_name`, `sync_database_id`, `last_alive_time`, `state`, `is_up_to_date`, `expiry_time` and `version` under property `properties` whose type is `SyncAgentProperties` + - Model `SyncAgentLinkedDatabase` moved instance variable `database_type`, `database_id`, `description`, `server_name`, `database_name` and `user_name` under property `properties` whose type is `SyncAgentLinkedDatabaseProperties` + - Model `SyncGroup` moved instance variable `interval`, `last_sync_time`, `conflict_resolution_policy`, `sync_database_id`, `hub_database_user_name`, `hub_database_password`, `sync_state`, `schema`, `enable_conflict_logging`, `conflict_logging_retention_in_days`, `use_private_link_connection` and `private_endpoint_name` under property `properties` whose type is `SyncGroupProperties` + - Model `SyncMember` moved instance variable `database_type`, `sync_agent_id`, `sql_server_database_id`, `sync_member_azure_database_resource_id`, `use_private_link_connection`, `private_endpoint_name`, `server_name`, `database_name`, `user_name`, `password`, `sync_direction` and `sync_state` under property `properties` whose type is `SyncMemberProperties` + - Model `TdeCertificate` moved instance variable `private_blob` and `cert_password` under property `properties` whose type is `TdeCertificateProperties` + - Model `TimeZone` moved instance variable `time_zone_id` and `display_name` under property `properties` whose type is `TimeZoneProperties` + - Model `UpdateLongTermRetentionBackupParameters` moved instance variable `requested_backup_storage_redundancy` under property `properties` whose type is `UpdateLongTermRetentionBackupParametersProperties` + - Model `VirtualCluster` moved instance variable `subnet_id`, `family`, `child_resources` and `maintenance_configuration_id` under property `properties` whose type is `VirtualClusterProperties` + - Model `VirtualClusterUpdate` moved instance variable `subnet_id`, `family`, `child_resources` and `maintenance_configuration_id` under property `properties` whose type is `VirtualClusterProperties` + - Model `VirtualNetworkRule` moved instance variable `virtual_network_subnet_id`, `ignore_missing_vnet_service_endpoint` and `state` under property `properties` whose type is `VirtualNetworkRuleProperties` + - Model `VulnerabilityAssessmentScanRecord` moved instance variable `scan_id`, `trigger_type`, `state`, `start_time`, `end_time`, `errors`, `storage_container_path` and `number_of_failed_security_checks` under property `properties` whose type is `VulnerabilityAssessmentScanRecordProperties` + - Model `WorkloadClassifier` moved instance variable `member_name`, `label`, `context`, `start_time`, `end_time` and `importance` under property `properties` whose type is `WorkloadClassifierProperties` + - Model `WorkloadGroup` moved instance variable `min_resource_percent`, `max_resource_percent`, `min_resource_percent_per_request`, `max_resource_percent_per_request`, `importance` and `query_execution_timeout` under property `properties` whose type is `WorkloadGroupProperties` + - Deleted or renamed model `CurrentBackupStorageRedundancy` + - Deleted or renamed model `DnsRefreshConfigurationPropertiesStatus` + - Deleted or renamed model `ElasticPoolActivity` + - Deleted or renamed model `ElasticPoolDatabaseActivity` + - Deleted or renamed model `Enum77` + - Deleted or renamed model `ManagedInstancePropertiesProvisioningState` + - Deleted or renamed model `ManagedInstanceQueryStatistics` + - Deleted or renamed model `Metric` + - Deleted or renamed model `MetricAvailability` + - Deleted or renamed model `MetricDefinition` + - Deleted or renamed model `MetricName` + - Deleted or renamed model `MetricValue` + - Deleted or renamed model `OperationImpact` + - Deleted or renamed model `OperationsHealth` + - Deleted or renamed model `PrimaryAggregationType` + - Deleted or renamed model `RequestedBackupStorageRedundancy` + - Deleted or renamed model `RestorableDroppedDatabasePropertiesBackupStorageRedundancy` + - Deleted or renamed model `SecurityAlertPolicyNameAutoGenerated` + - Deleted or renamed model `SecurityEventsFilterParameters` + - Deleted or renamed model `ServerCommunicationLink` + - Deleted or renamed model `ServiceObjective` + - Deleted or renamed model `ServiceObjectiveName` + - Deleted or renamed model `SloUsageMetric` + - Deleted or renamed model `StorageAccountType` + - Deleted or renamed model `TargetBackupStorageRedundancy` + - Deleted or renamed model `TransparentDataEncryption` + - Deleted or renamed model `TransparentDataEncryptionActivity` + - Deleted or renamed model `TransparentDataEncryptionActivityStatus` + - Deleted or renamed model `TransparentDataEncryptionStatus` + - Deleted or renamed model `UnitDefinitionType` + - Deleted or renamed model `UnitType` + - Deleted or renamed model `UnlinkParameters` + - Deleted or renamed model `UpdateManagedInstanceDnsServersOperation` + - Deleted or renamed model `UpsertManagedServerOperationStep` + - Deleted or renamed model `UpsertManagedServerOperationStepStatus` + - Method `CapabilitiesOperations.list_by_location` changed its parameter `include` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseAdvisorsOperations.list_by_database` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.list_by_server` changed its parameter `skip_token` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `DatabasesOperations.list_metric_definitions` + - Deleted or renamed method `DatabasesOperations.list_metrics` + - Deleted or renamed method `ElasticPoolsOperations.list_metric_definitions` + - Deleted or renamed method `ElasticPoolsOperations.list_metrics` + - Deleted or renamed method `GeoBackupPoliciesOperations.list_by_database` + - Method `JobExecutionsOperations.list_by_agent` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobExecutionsOperations.list_by_job` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobStepExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_step` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `LedgerDigestUploadsOperations.create_or_update` + - Deleted or renamed method `LedgerDigestUploadsOperations.disable` + - Method `LongTermRetentionBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowOptionsOperations.get` changed its parameter `maintenance_window_options_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.create_or_update` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.get` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseQueriesOperations.list_by_query` changed its parameter `start_time`/`end_time`/`interval` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSecurityEventsOperations.list_by_database` changed its parameter `skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_instance_pool` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_managed_instance` changed its parameter `number_of_queries`/`databases`/`start_time`/`end_time`/`interval`/`aggregation_function`/`observation_metric` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `OutboundFirewallRulesOperations.begin_create_or_update` deleted or renamed its parameter `parameters` of kind `positional_or_keyword` + - Deleted or renamed method `ReplicationLinksOperations.begin_unlink` + - Deleted or renamed method `ReplicationLinksOperations.delete` + - Method `SensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `SensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ServerAdvisorsOperations.list_by_server` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `ServerConnectionPoliciesOperations.create_or_update` + - Method `ServersOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `SyncGroupsOperations.list_logs` changed its parameter `start_time`/`end_time`/`type`/`continuation_token_parameter` from `positional_or_keyword` to `keyword_only` + - Method `TransparentDataEncryptionsOperations.get` renamed its parameter `transparent_data_encryption_name` to `tde_name` + - Deleted or renamed method `TransparentDataEncryptionsOperations.create_or_update` + - Method `UsagesOperations.list_by_instance_pool` changed its parameter `expand_children` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `VirtualClustersOperations.update_dns_servers` + - Method `BackupShortTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.BackupShortTermRetentionPolicyListResult]` to `ItemPaged[_models.BackupShortTermRetentionPolicy]` + - Method `DataMaskingRulesOperations.list_by_database` changed return type from `Iterable[_models.DataMaskingRuleListResult]` to `ItemPaged[_models.DataMaskingRule]` + - Method `DataWarehouseUserActivitiesOperations.list_by_database` changed return type from `Iterable[_models.DataWarehouseUserActivitiesListResult]` to `ItemPaged[_models.DataWarehouseUserActivities]` + - Method `DatabaseBlobAuditingPoliciesOperations.list_by_database` changed return type from `Iterable[_models.DatabaseBlobAuditingPolicyListResult]` to `ItemPaged[_models.DatabaseBlobAuditingPolicy]` + - Method `DatabaseColumnsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `DatabaseColumnsOperations.list_by_table` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `DatabaseExtensionsOperations.list_by_database` changed return type from `Iterable[_models.ImportExportExtensionsOperationListResult]` to `ItemPaged[_models.ImportExportExtensionsOperationResult]` + - Method `DatabaseOperationsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseOperationListResult]` to `ItemPaged[_models.DatabaseOperation]` + - Method `DatabaseSchemasOperations.list_by_database` changed return type from `Iterable[_models.DatabaseSchemaListResult]` to `ItemPaged[_models.DatabaseSchema]` + - Method `DatabaseSecurityAlertPoliciesOperations.list_by_database` changed return type from `Iterable[_models.DatabaseSecurityAlertListResult]` to `ItemPaged[_models.DatabaseSecurityAlertPolicy]` + - Method `DatabaseTablesOperations.list_by_schema` changed return type from `Iterable[_models.DatabaseTableListResult]` to `ItemPaged[_models.DatabaseTable]` + - Method `DatabaseUsagesOperations.list_by_database` changed return type from `Iterable[_models.DatabaseUsageListResult]` to `ItemPaged[_models.DatabaseUsage]` + - Method `DatabaseVulnerabilityAssessmentScansOperations.list_by_database` changed return type from `Iterable[_models.VulnerabilityAssessmentScanRecordListResult]` to `ItemPaged[_models.VulnerabilityAssessmentScanRecord]` + - Method `DatabaseVulnerabilityAssessmentsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseVulnerabilityAssessmentListResult]` to `ItemPaged[_models.DatabaseVulnerabilityAssessment]` + - Method `DatabasesOperations.list_by_elastic_pool` changed return type from `Iterable[_models.DatabaseListResult]` to `ItemPaged[_models.Database]` + - Method `DatabasesOperations.list_by_server` changed return type from `Iterable[_models.DatabaseListResult]` to `ItemPaged[_models.Database]` + - Method `DatabasesOperations.list_inaccessible_by_server` changed return type from `Iterable[_models.DatabaseListResult]` to `ItemPaged[_models.Database]` + - Method `DeletedServersOperations.list` changed return type from `Iterable[_models.DeletedServerListResult]` to `ItemPaged[_models.DeletedServer]` + - Method `DeletedServersOperations.list_by_location` changed return type from `Iterable[_models.DeletedServerListResult]` to `ItemPaged[_models.DeletedServer]` + - Method `ElasticPoolOperationsOperations.list_by_elastic_pool` changed return type from `Iterable[_models.ElasticPoolOperationListResult]` to `ItemPaged[_models.ElasticPoolOperation]` + - Method `ElasticPoolsOperations.list_by_server` changed return type from `Iterable[_models.ElasticPoolListResult]` to `ItemPaged[_models.ElasticPool]` + - Method `EncryptionProtectorsOperations.list_by_server` changed return type from `Iterable[_models.EncryptionProtectorListResult]` to `ItemPaged[_models.EncryptionProtector]` + - Method `ExtendedDatabaseBlobAuditingPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ExtendedDatabaseBlobAuditingPolicyListResult]` to `ItemPaged[_models.ExtendedDatabaseBlobAuditingPolicy]` + - Method `ExtendedServerBlobAuditingPoliciesOperations.list_by_server` changed return type from `Iterable[_models.ExtendedServerBlobAuditingPolicyListResult]` to `ItemPaged[_models.ExtendedServerBlobAuditingPolicy]` + - Method `FailoverGroupsOperations.list_by_server` changed return type from `Iterable[_models.FailoverGroupListResult]` to `ItemPaged[_models.FailoverGroup]` + - Method `FirewallRulesOperations.list_by_server` changed return type from `Iterable[_models.FirewallRuleListResult]` to `ItemPaged[_models.FirewallRule]` + - Method `InstanceFailoverGroupsOperations.list_by_location` changed return type from `Iterable[_models.InstanceFailoverGroupListResult]` to `ItemPaged[_models.InstanceFailoverGroup]` + - Method `InstancePoolsOperations.list` changed return type from `Iterable[_models.InstancePoolListResult]` to `ItemPaged[_models.InstancePool]` + - Method `InstancePoolsOperations.list_by_resource_group` changed return type from `Iterable[_models.InstancePoolListResult]` to `ItemPaged[_models.InstancePool]` + - Method `JobAgentsOperations.list_by_server` changed return type from `Iterable[_models.JobAgentListResult]` to `ItemPaged[_models.JobAgent]` + - Method `JobCredentialsOperations.list_by_agent` changed return type from `Iterable[_models.JobCredentialListResult]` to `ItemPaged[_models.JobCredential]` + - Method `JobExecutionsOperations.list_by_agent` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobExecutionsOperations.list_by_job` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobStepExecutionsOperations.list_by_job_execution` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobStepsOperations.list_by_job` changed return type from `Iterable[_models.JobStepListResult]` to `ItemPaged[_models.JobStep]` + - Method `JobStepsOperations.list_by_version` changed return type from `Iterable[_models.JobStepListResult]` to `ItemPaged[_models.JobStep]` + - Method `JobTargetExecutionsOperations.list_by_job_execution` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobTargetExecutionsOperations.list_by_step` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobTargetGroupsOperations.list_by_agent` changed return type from `Iterable[_models.JobTargetGroupListResult]` to `ItemPaged[_models.JobTargetGroup]` + - Method `JobVersionsOperations.list_by_job` changed return type from `Iterable[_models.JobVersionListResult]` to `ItemPaged[_models.JobVersion]` + - Method `JobsOperations.list_by_agent` changed return type from `Iterable[_models.JobListResult]` to `ItemPaged[_models.Job]` + - Method `LedgerDigestUploadsOperations.list_by_database` changed return type from `Iterable[_models.LedgerDigestUploadsListResult]` to `ItemPaged[_models.LedgerDigestUploads]` + - Method `LongTermRetentionBackupsOperations.list_by_database` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_location` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_database` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_location` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_server` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_server` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_database` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_location` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_database` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_instance` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.LongTermRetentionPolicyListResult]` to `ItemPaged[_models.LongTermRetentionPolicy]` + - Method `ManagedBackupShortTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ManagedBackupShortTermRetentionPolicyListResult]` to `ItemPaged[_models.ManagedBackupShortTermRetentionPolicy]` + - Method `ManagedDatabaseColumnsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `ManagedDatabaseColumnsOperations.list_by_table` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `ManagedDatabaseQueriesOperations.list_by_query` changed return type from `Iterable[_models.ManagedInstanceQueryStatistics]` to `ItemPaged[_models.QueryStatistics]` + - Method `ManagedDatabaseSchemasOperations.list_by_database` changed return type from `Iterable[_models.DatabaseSchemaListResult]` to `ItemPaged[_models.DatabaseSchema]` + - Method `ManagedDatabaseSecurityAlertPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ManagedDatabaseSecurityAlertPolicyListResult]` to `ItemPaged[_models.ManagedDatabaseSecurityAlertPolicy]` + - Method `ManagedDatabaseSecurityEventsOperations.list_by_database` changed return type from `Iterable[_models.SecurityEventCollection]` to `ItemPaged[_models.SecurityEvent]` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_current_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `ManagedDatabaseTablesOperations.list_by_schema` changed return type from `Iterable[_models.DatabaseTableListResult]` to `ItemPaged[_models.DatabaseTable]` + - Method `ManagedDatabaseTransparentDataEncryptionOperations.list_by_database` changed return type from `Iterable[_models.ManagedTransparentDataEncryptionListResult]` to `ItemPaged[_models.ManagedTransparentDataEncryption]` + - Method `ManagedDatabaseVulnerabilityAssessmentScansOperations.list_by_database` changed return type from `Iterable[_models.VulnerabilityAssessmentScanRecordListResult]` to `ItemPaged[_models.VulnerabilityAssessmentScanRecord]` + - Method `ManagedDatabaseVulnerabilityAssessmentsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseVulnerabilityAssessmentListResult]` to `ItemPaged[_models.DatabaseVulnerabilityAssessment]` + - Method `ManagedDatabasesOperations.list_by_instance` changed return type from `Iterable[_models.ManagedDatabaseListResult]` to `ItemPaged[_models.ManagedDatabase]` + - Method `ManagedDatabasesOperations.list_inaccessible_by_instance` changed return type from `Iterable[_models.ManagedDatabaseListResult]` to `ItemPaged[_models.ManagedDatabase]` + - Method `ManagedInstanceAdministratorsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceAdministratorListResult]` to `ItemPaged[_models.ManagedInstanceAdministrator]` + - Method `ManagedInstanceAzureADOnlyAuthenticationsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceAzureADOnlyAuthListResult]` to `ItemPaged[_models.ManagedInstanceAzureADOnlyAuthentication]` + - Method `ManagedInstanceEncryptionProtectorsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceEncryptionProtectorListResult]` to `ItemPaged[_models.ManagedInstanceEncryptionProtector]` + - Method `ManagedInstanceKeysOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceKeyListResult]` to `ItemPaged[_models.ManagedInstanceKey]` + - Method `ManagedInstanceLongTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionPolicyListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionPolicy]` + - Method `ManagedInstanceOperationsOperations.list_by_managed_instance` changed return type from `Iterable[_models.ManagedInstanceOperationListResult]` to `ItemPaged[_models.ManagedInstanceOperation]` + - Method `ManagedInstancePrivateEndpointConnectionsOperations.list_by_managed_instance` changed return type from `Iterable[_models.ManagedInstancePrivateEndpointConnectionListResult]` to `ItemPaged[_models.ManagedInstancePrivateEndpointConnection]` + - Method `ManagedInstancePrivateLinkResourcesOperations.list_by_managed_instance` changed return type from `Iterable[_models.ManagedInstancePrivateLinkListResult]` to `ItemPaged[_models.ManagedInstancePrivateLink]` + - Method `ManagedInstanceVulnerabilityAssessmentsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceVulnerabilityAssessmentListResult]` to `ItemPaged[_models.ManagedInstanceVulnerabilityAssessment]` + - Method `ManagedInstancesOperations.list` changed return type from `Iterable[_models.ManagedInstanceListResult]` to `ItemPaged[_models.ManagedInstance]` + - Method `ManagedInstancesOperations.list_by_instance_pool` changed return type from `Iterable[_models.ManagedInstanceListResult]` to `ItemPaged[_models.ManagedInstance]` + - Method `ManagedInstancesOperations.list_by_managed_instance` changed return type from `Iterable[_models.TopQueriesListResult]` to `ItemPaged[_models.TopQueries]` + - Method `ManagedInstancesOperations.list_by_resource_group` changed return type from `Iterable[_models.ManagedInstanceListResult]` to `ItemPaged[_models.ManagedInstance]` + - Method `ManagedRestorableDroppedDatabaseBackupShortTermRetentionPoliciesOperations.list_by_restorable_dropped_database` changed return type from `Iterable[_models.ManagedBackupShortTermRetentionPolicyListResult]` to `ItemPaged[_models.ManagedBackupShortTermRetentionPolicy]` + - Method `ManagedServerSecurityAlertPoliciesOperations.list_by_instance` changed return type from `Iterable[_models.ManagedServerSecurityAlertPolicyListResult]` to `ItemPaged[_models.ManagedServerSecurityAlertPolicy]` + - Method `Operations.list` changed return type from `Iterable[_models.OperationListResult]` to `ItemPaged[_models.Operation]` + - Method `OutboundFirewallRulesOperations.list_by_server` changed return type from `Iterable[_models.OutboundFirewallRuleListResult]` to `ItemPaged[_models.OutboundFirewallRule]` + - Method `PrivateEndpointConnectionsOperations.list_by_server` changed return type from `Iterable[_models.PrivateEndpointConnectionListResult]` to `ItemPaged[_models.PrivateEndpointConnection]` + - Method `PrivateLinkResourcesOperations.list_by_server` changed return type from `Iterable[_models.PrivateLinkResourceListResult]` to `ItemPaged[_models.PrivateLinkResource]` + - Method `RecoverableDatabasesOperations.list_by_server` changed return type from `Iterable[_models.RecoverableDatabaseListResult]` to `ItemPaged[_models.RecoverableDatabase]` + - Method `RecoverableManagedDatabasesOperations.list_by_instance` changed return type from `Iterable[_models.RecoverableManagedDatabaseListResult]` to `ItemPaged[_models.RecoverableManagedDatabase]` + - Method `ReplicationLinksOperations.begin_failover` changed return type from `LROPoller[None]` to `LROPoller[ReplicationLink]` + - Method `ReplicationLinksOperations.begin_failover_allow_data_loss` changed return type from `LROPoller[None]` to `LROPoller[ReplicationLink]` + - Method `ReplicationLinksOperations.list_by_database` changed return type from `Iterable[_models.ReplicationLinkListResult]` to `ItemPaged[_models.ReplicationLink]` + - Method `ReplicationLinksOperations.list_by_server` changed return type from `Iterable[_models.ReplicationLinkListResult]` to `ItemPaged[_models.ReplicationLink]` + - Method `RestorableDroppedDatabasesOperations.list_by_server` changed return type from `Iterable[_models.RestorableDroppedDatabaseListResult]` to `ItemPaged[_models.RestorableDroppedDatabase]` + - Method `RestorableDroppedManagedDatabasesOperations.list_by_instance` changed return type from `Iterable[_models.RestorableDroppedManagedDatabaseListResult]` to `ItemPaged[_models.RestorableDroppedManagedDatabase]` + - Method `RestorePointsOperations.list_by_database` changed return type from `Iterable[_models.RestorePointListResult]` to `ItemPaged[_models.RestorePoint]` + - Method `SensitivityLabelsOperations.list_current_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `SensitivityLabelsOperations.list_recommended_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `ServerAzureADAdministratorsOperations.list_by_server` changed return type from `Iterable[_models.AdministratorListResult]` to `ItemPaged[_models.ServerAzureADAdministrator]` + - Method `ServerAzureADOnlyAuthenticationsOperations.list_by_server` changed return type from `Iterable[_models.AzureADOnlyAuthListResult]` to `ItemPaged[_models.ServerAzureADOnlyAuthentication]` + - Method `ServerBlobAuditingPoliciesOperations.list_by_server` changed return type from `Iterable[_models.ServerBlobAuditingPolicyListResult]` to `ItemPaged[_models.ServerBlobAuditingPolicy]` + - Method `ServerDevOpsAuditSettingsOperations.list_by_server` changed return type from `Iterable[_models.ServerDevOpsAuditSettingsListResult]` to `ItemPaged[_models.ServerDevOpsAuditingSettings]` + - Method `ServerDnsAliasesOperations.list_by_server` changed return type from `Iterable[_models.ServerDnsAliasListResult]` to `ItemPaged[_models.ServerDnsAlias]` + - Method `ServerKeysOperations.list_by_server` changed return type from `Iterable[_models.ServerKeyListResult]` to `ItemPaged[_models.ServerKey]` + - Method `ServerOperationsOperations.list_by_server` changed return type from `Iterable[_models.ServerOperationListResult]` to `ItemPaged[_models.ServerOperation]` + - Method `ServerSecurityAlertPoliciesOperations.list_by_server` changed return type from `Iterable[_models.LogicalServerSecurityAlertPolicyListResult]` to `ItemPaged[_models.ServerSecurityAlertPolicy]` + - Method `ServerTrustGroupsOperations.list_by_instance` changed return type from `Iterable[_models.ServerTrustGroupListResult]` to `ItemPaged[_models.ServerTrustGroup]` + - Method `ServerTrustGroupsOperations.list_by_location` changed return type from `Iterable[_models.ServerTrustGroupListResult]` to `ItemPaged[_models.ServerTrustGroup]` + - Method `ServerUsagesOperations.list_by_server` changed return type from `Iterable[_models.ServerUsageListResult]` to `ItemPaged[_models.ServerUsage]` + - Method `ServerVulnerabilityAssessmentsOperations.list_by_server` changed return type from `Iterable[_models.ServerVulnerabilityAssessmentListResult]` to `ItemPaged[_models.ServerVulnerabilityAssessment]` + - Method `ServersOperations.list` changed return type from `Iterable[_models.ServerListResult]` to `ItemPaged[_models.Server]` + - Method `ServersOperations.list_by_resource_group` changed return type from `Iterable[_models.ServerListResult]` to `ItemPaged[_models.Server]` + - Method `SubscriptionUsagesOperations.list_by_location` changed return type from `Iterable[_models.SubscriptionUsageListResult]` to `ItemPaged[_models.SubscriptionUsage]` + - Method `SyncAgentsOperations.list_by_server` changed return type from `Iterable[_models.SyncAgentListResult]` to `ItemPaged[_models.SyncAgent]` + - Method `SyncAgentsOperations.list_linked_databases` changed return type from `Iterable[_models.SyncAgentLinkedDatabaseListResult]` to `ItemPaged[_models.SyncAgentLinkedDatabase]` + - Method `SyncGroupsOperations.list_by_database` changed return type from `Iterable[_models.SyncGroupListResult]` to `ItemPaged[_models.SyncGroup]` + - Method `SyncGroupsOperations.list_hub_schemas` changed return type from `Iterable[_models.SyncFullSchemaPropertiesListResult]` to `ItemPaged[_models.SyncFullSchemaProperties]` + - Method `SyncGroupsOperations.list_logs` changed return type from `Iterable[_models.SyncGroupLogListResult]` to `ItemPaged[_models.SyncGroupLogProperties]` + - Method `SyncGroupsOperations.list_sync_database_ids` changed return type from `Iterable[_models.SyncDatabaseIdListResult]` to `ItemPaged[_models.SyncDatabaseIdProperties]` + - Method `SyncMembersOperations.list_by_sync_group` changed return type from `Iterable[_models.SyncMemberListResult]` to `ItemPaged[_models.SyncMember]` + - Method `SyncMembersOperations.list_member_schemas` changed return type from `Iterable[_models.SyncFullSchemaPropertiesListResult]` to `ItemPaged[_models.SyncFullSchemaProperties]` + - Method `TimeZonesOperations.list_by_location` changed return type from `Iterable[_models.TimeZoneListResult]` to `ItemPaged[_models.TimeZone]` + - Method `TransparentDataEncryptionsOperations.get` changed return type from `_models.TransparentDataEncryption` to `LogicalDatabaseTransparentDataEncryption` + - Method `UsagesOperations.list_by_instance_pool` changed return type from `Iterable[_models.UsageListResult]` to `ItemPaged[_models.Usage]` + - Method `VirtualClustersOperations.list` changed return type from `Iterable[_models.VirtualClusterListResult]` to `ItemPaged[_models.VirtualCluster]` + - Method `VirtualClustersOperations.list_by_resource_group` changed return type from `Iterable[_models.VirtualClusterListResult]` to `ItemPaged[_models.VirtualCluster]` + - Method `VirtualNetworkRulesOperations.list_by_server` changed return type from `Iterable[_models.VirtualNetworkRuleListResult]` to `ItemPaged[_models.VirtualNetworkRule]` + - Method `WorkloadClassifiersOperations.list_by_workload_group` changed return type from `Iterable[_models.WorkloadClassifierListResult]` to `ItemPaged[_models.WorkloadClassifier]` + - Method `WorkloadGroupsOperations.list_by_database` changed return type from `Iterable[_models.WorkloadGroupListResult]` to `ItemPaged[_models.WorkloadGroup]` + +### Other Changes + + - Deleted model `AdministratorListResult`/`AzureADOnlyAuthListResult`/`BackupShortTermRetentionPolicyListResult`/`DataMaskingRuleListResult`/`DataWarehouseUserActivitiesListResult`/`DatabaseBlobAuditingPolicyListResult`/`DatabaseColumnListResult`/`DatabaseListResult`/`DatabaseOperationListResult`/`DatabaseSchemaListResult`/`DatabaseSecurityAlertListResult`/`DatabaseTableListResult`/`DatabaseUsageListResult`/`DatabaseVulnerabilityAssessmentListResult`/`DeletedServerListResult`/`ElasticPoolActivityListResult`/`ElasticPoolDatabaseActivityListResult`/`ElasticPoolListResult`/`ElasticPoolOperationListResult`/`EncryptionProtectorListResult`/`ExtendedDatabaseBlobAuditingPolicyListResult`/`ExtendedServerBlobAuditingPolicyListResult`/`FailoverGroupListResult`/`FirewallRuleListResult`/`GeoBackupPolicyListResult`/`ImportExportExtensionsOperationListResult`/`InstanceFailoverGroupListResult`/`InstancePoolListResult`/`JobAgentListResult`/`JobCredentialListResult`/`JobExecutionListResult`/`JobListResult`/`JobStepListResult`/`JobTargetGroupListResult`/`JobVersionListResult`/`LedgerDigestUploadsListResult`/`LogicalServerSecurityAlertPolicyListResult`/`LongTermRetentionBackupListResult`/`LongTermRetentionPolicyListResult`/`ManagedBackupShortTermRetentionPolicyListResult`/`ManagedDatabaseListResult`/`ManagedDatabaseSecurityAlertPolicyListResult`/`ManagedInstanceAdministratorListResult`/`ManagedInstanceAzureADOnlyAuthListResult`/`ManagedInstanceEncryptionProtectorListResult`/`ManagedInstanceKeyListResult`/`ManagedInstanceListResult`/`ManagedInstanceLongTermRetentionBackupListResult`/`ManagedInstanceLongTermRetentionPolicyListResult`/`ManagedInstanceOperationListResult`/`ManagedInstancePrivateEndpointConnectionListResult`/`ManagedInstancePrivateLinkListResult`/`ManagedInstanceVulnerabilityAssessmentListResult`/`ManagedServerSecurityAlertPolicyListResult`/`ManagedTransparentDataEncryptionListResult`/`MetricDefinitionListResult`/`MetricListResult`/`OperationListResult`/`OperationsHealthListResult`/`OutboundFirewallRuleListResult`/`PrivateEndpointConnectionListResult`/`PrivateLinkResourceListResult`/`RecoverableDatabaseListResult`/`RecoverableManagedDatabaseListResult`/`ReplicationLinkListResult`/`RestorableDroppedDatabaseListResult`/`RestorableDroppedManagedDatabaseListResult`/`RestorePointListResult`/`SecurityEventCollection`/`SensitivityLabelListResult`/`ServerBlobAuditingPolicyListResult`/`ServerCommunicationLinkListResult`/`ServerDevOpsAuditSettingsListResult`/`ServerDnsAliasListResult`/`ServerKeyListResult`/`ServerListResult`/`ServerOperationListResult`/`ServerTrustGroupListResult`/`ServerUsageListResult`/`ServerVulnerabilityAssessmentListResult`/`ServiceObjectiveListResult`/`SubscriptionUsageListResult`/`SyncAgentLinkedDatabaseListResult`/`SyncAgentListResult`/`SyncDatabaseIdListResult`/`SyncFullSchemaPropertiesListResult`/`SyncGroupListResult`/`SyncGroupLogListResult`/`SyncMemberListResult`/`TimeZoneListResult`/`TopQueriesListResult`/`TransparentDataEncryptionActivityListResult`/`UsageListResult`/`VirtualClusterListResult`/`VirtualNetworkRuleListResult`/`VulnerabilityAssessmentScanRecordListResult`/`WorkloadClassifierListResult`/`WorkloadGroupListResult` which actually were not used by SDK users + +## 4.0.0b25 (2026-06-02) + +### Features Added + + - Client `SqlManagementClient` added method `send_request` + - Client `SqlManagementClient` added operation group `instance_pool_operations` + - Client `SqlManagementClient` added operation group `network_security_perimeter_configurations` + - Model `Advisor` added property `system_data` + - Model `BackupShortTermRetentionPolicy` added property `system_data` + - Enum `CapabilityGroup` added member `SUPPORTED_JOB_AGENT_VERSIONS` + - Model `CheckNameAvailabilityRequest` added property `type` + - Model `DataMaskingPolicy` added property `system_data` + - Model `DataMaskingRule` added property `system_data` + - Model `DataWarehouseUserActivities` added property `system_data` + - Model `Database` added property `system_data` + - Model `DatabaseAutomaticTuning` added property `system_data` + - Model `DatabaseBlobAuditingPolicy` added property `system_data` + - Model `DatabaseColumn` added property `system_data` + - Model `DatabaseExtensions` added property `system_data` + - Model `DatabaseKey` added property `key_version` + - Model `DatabaseOperation` added property `system_data` + - Model `DatabaseSchema` added property `system_data` + - Model `DatabaseTable` added property `system_data` + - Model `DatabaseUsage` added property `system_data` + - Model `DatabaseVulnerabilityAssessment` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentRuleBaseline` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentScansExport` added property `system_data` + - Model `DeletedServer` added property `system_data` + - Model `DistributedAvailabilityGroup` added property `system_data` + - Model `EditionCapability` added property `zone_pinning` + - Model `ElasticPool` added property `system_data` + - Model `ElasticPoolEditionCapability` added property `zone_pinning` + - Model `ElasticPoolOperation` added property `system_data` + - Model `ElasticPoolPerDatabaseSettings` added property `auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_min_capacities` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_per_database_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_zones` + - Model `EncryptionProtector` added property `system_data` + - Model `EndpointCertificate` added property `system_data` + - Model `ExtendedDatabaseBlobAuditingPolicy` added property `system_data` + - Model `ExtendedServerBlobAuditingPolicy` added property `system_data` + - Model `FailoverGroup` added property `system_data` + - Model `GeoBackupPolicy` added property `system_data` + - Model `ImportExportExtensionsOperationResult` added property `system_data` + - Model `ImportExportOperationResult` added property `system_data` + - Model `InstanceFailoverGroup` added property `system_data` + - Model `InstancePool` added property `system_data` + - Model `Job` added property `system_data` + - Model `JobAgent` added property `identity` + - Model `JobAgent` added property `system_data` + - Model `JobAgentUpdate` added property `identity` + - Model `JobAgentUpdate` added property `sku` + - Model `JobCredential` added property `system_data` + - Model `JobExecution` added property `system_data` + - Model `JobPrivateEndpoint` added property `system_data` + - Model `JobStep` added property `system_data` + - Model `JobTargetGroup` added property `system_data` + - Model `JobVersion` added property `system_data` + - Model `LedgerDigestUploads` added property `system_data` + - Model `LocationCapabilities` added property `supported_job_agent_versions` + - Model `LocationCapabilities` added property `is_zone_resilient_provisioning_allowed` + - Model `LogicalDatabaseTransparentDataEncryption` added property `system_data` + - Model `LongTermRetentionBackup` added property `system_data` + - Model `LongTermRetentionBackupOperationResult` added property `system_data` + - Model `LongTermRetentionPolicy` added property `system_data` + - Model `MaintenanceWindowOptions` added property `system_data` + - Model `MaintenanceWindows` added property `system_data` + - Model `ManagedBackupShortTermRetentionPolicy` added property `system_data` + - Model `ManagedDatabase` added property `system_data` + - Model `ManagedDatabaseMoveOperationResult` added property `system_data` + - Model `ManagedDatabaseRestoreDetailsResult` added property `system_data` + - Model `ManagedDatabaseSecurityAlertPolicy` added property `system_data` + - Model `ManagedInstance` added property `system_data` + - Model `ManagedInstanceAdministrator` added property `system_data` + - Model `ManagedInstanceAzureADOnlyAuthentication` added property `system_data` + - Enum `ManagedInstanceDatabaseFormat` added member `SQL_SERVER2025` + - Model `ManagedInstanceDtc` added property `system_data` + - Model `ManagedInstanceEditionCapability` added property `is_general_purpose_v2` + - Model `ManagedInstanceEncryptionProtector` added property `system_data` + - Model `ManagedInstanceFamilyCapability` added property `zone_redundant` + - Model `ManagedInstanceKey` added property `system_data` + - Model `ManagedInstanceLongTermRetentionBackup` added property `system_data` + - Model `ManagedInstanceLongTermRetentionPolicy` added property `system_data` + - Model `ManagedInstanceOperation` added property `system_data` + - Model `ManagedInstancePrivateEndpointConnection` added property `system_data` + - Model `ManagedInstancePrivateLink` added property `system_data` + - Model `ManagedInstancePrivateLinkProperties` added property `required_zone_names` + - Model `ManagedInstanceQuery` added property `system_data` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_sizes_in_gb` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_limits_mb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `iops_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `iops_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVulnerabilityAssessment` added property `system_data` + - Model `ManagedLedgerDigestUploads` added property `system_data` + - Model `ManagedServerDnsAlias` added property `system_data` + - Model `ManagedTransparentDataEncryption` added property `system_data` + - Enum `OperationMode` added member `EXPORT` + - Enum `OperationMode` added member `IMPORT` + - Model `OutboundFirewallRule` added property `system_data` + - Model `PrivateEndpointConnection` added property `system_data` + - Model `PrivateLinkResource` added property `system_data` + - Model `ProxyResource` added property `system_data` + - Model `QueryStatistics` added property `system_data` + - Model `RecommendedAction` added property `system_data` + - Model `RecommendedSensitivityLabelUpdate` added property `system_data` + - Model `RecoverableDatabase` added property `system_data` + - Model `RecoverableManagedDatabase` added property `system_data` + - Model `RefreshExternalGovernanceStatusOperationResult` added property `system_data` + - Model `RefreshExternalGovernanceStatusOperationResultMI` added property `system_data` + - Model `ReplicationLink` added property `system_data` + - Model `ReplicationLinkUpdate` added property `system_data` + - Model `Resource` added property `system_data` + - Model `RestorableDroppedDatabase` added property `system_data` + - Model `RestorableDroppedManagedDatabase` added property `system_data` + - Model `RestorePoint` added property `system_data` + - Model `SecurityEvent` added property `system_data` + - Model `SensitivityLabel` added property `system_data` + - Model `SensitivityLabelUpdate` added property `system_data` + - Model `Server` added property `system_data` + - Model `ServerAutomaticTuning` added property `system_data` + - Model `ServerAzureADAdministrator` added property `system_data` + - Model `ServerAzureADOnlyAuthentication` added property `system_data` + - Model `ServerBlobAuditingPolicy` added property `system_data` + - Model `ServerConfigurationOption` added property `system_data` + - Model `ServerConnectionPolicy` added property `system_data` + - Model `ServerDnsAlias` added property `system_data` + - Model `ServerKey` added property `system_data` + - Model `ServerOperation` added property `system_data` + - Model `ServerTrustCertificate` added property `system_data` + - Model `ServerTrustGroup` added property `system_data` + - Model `ServerUsage` added property `id` + - Model `ServerUsage` added property `type` + - Model `ServerUsage` added property `system_data` + - Model `ServerVulnerabilityAssessment` added property `system_data` + - Model `ServiceObjectiveCapability` added property `zone_pinning` + - Model `ServiceObjectiveCapability` added property `supported_zones` + - Model `ServiceObjectiveCapability` added property `supported_free_limit_exhaustion_behaviors` + - Model `SqlAgentConfiguration` added property `system_data` + - Enum `StorageCapabilityStorageAccountType` added member `GZRS` + - Model `SubscriptionUsage` added property `system_data` + - Model `SynapseLinkWorkspace` added property `system_data` + - Model `SyncAgent` added property `system_data` + - Model `SyncAgentLinkedDatabase` added property `system_data` + - Model `SyncGroup` added property `system_data` + - Model `SyncMember` added property `system_data` + - Model `TdeCertificate` added property `system_data` + - Model `TimeZone` added property `system_data` + - Model `TrackedResource` added property `system_data` + - Model `UpdateVirtualClusterDnsServersOperation` added property `system_data` + - Model `VirtualCluster` added property `system_data` + - Model `VirtualNetworkRule` added property `system_data` + - Model `VulnerabilityAssessmentScanRecord` added property `system_data` + - Model `WorkloadClassifier` added property `system_data` + - Model `WorkloadGroup` added property `system_data` + - Added enum `CheckNameAvailabilityResourceType` + - Added enum `ClientClassificationSource` + - Added enum `ErrorType` + - Added model `FreeLimitExhaustionBehaviorCapability` + - Added enum `InaccessibilityReason` + - Added model `InstancePoolOperation` + - Added model `InstancePoolOperationProperties` + - Added model `JobAgentEditionCapability` + - Added model `JobAgentIdentity` + - Added enum `JobAgentIdentityType` + - Added model `JobAgentServiceLevelObjectiveCapability` + - Added model `JobAgentUserAssignedIdentity` + - Added model `JobAgentVersionCapability` + - Added model `ManagedDatabaseExtendedAccessibilityInfo` + - Added model `ManagedInstanceValidateAzureKeyVaultEncryptionKeyRequest` + - Added model `MaxLimitRangeCapability` + - Added model `NSPConfigAccessRule` + - Added model `NSPConfigAccessRuleProperties` + - Added model `NSPConfigAssociation` + - Added model `NSPConfigNetworkSecurityPerimeterRule` + - Added model `NSPConfigPerimeter` + - Added model `NSPConfigProfile` + - Added model `NSPProvisioningIssue` + - Added model `NSPProvisioningIssueProperties` + - Added model `NetworkSecurityPerimeterConfiguration` + - Added model `NetworkSecurityPerimeterConfigurationProperties` + - Added model `PerDatabaseAutoPauseDelayTimeRange` + - Added enum `PricingModel` + - Added enum `TransparentDataEncryptionScanState` + - Added model `UpsertManagedServerOperationStepWithEstimatesAndDuration` + - Added enum `UpsertManagedServerOperationStepWithEstimatesAndDurationStatus` + - Added model `ZonePinningCapability` + - Operation group `GeoBackupPoliciesOperations` added method `list` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_resource_group_location` + - Operation group `ManagedDatabaseSensitivityLabelsOperations` added method `list_by_database` + - Operation group `ManagedDatabasesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedInstanceLongTermRetentionPoliciesOperations` added method `begin_delete` + - Operation group `ManagedInstancesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedInstancesOperations` added method `begin_validate_azure_key_vault_encryption_key` + - Operation group `SensitivityLabelsOperations` added method `list_by_database` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_resume` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_suspend` + - Operation group `VirtualClustersOperations` added method `begin_create_or_update` + - Added operation group `InstancePoolOperationsOperations` + - Added operation group `NetworkSecurityPerimeterConfigurationsOperations` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Deleted or renamed client operation group `SqlManagementClient.server_communication_links` + - Deleted or renamed client operation group `SqlManagementClient.service_objectives` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_activities` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_database_activities` + - Model `CopyLongTermRetentionBackupParameters` moved instance variable `target_subscription_id`, `target_resource_group`, `target_server_resource_id`, `target_server_fully_qualified_domain_name`, `target_database_name` and `target_backup_storage_redundancy` under property `properties` whose type is `CopyLongTermRetentionBackupParametersProperties` + - Model `DatabaseAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `DatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `DatabaseVulnerabilityAssessmentScansExport` moved instance variable `exported_report_location` under property `properties` whose type is `DatabaseVulnerabilityAssessmentScanExportProperties` + - Model `FirewallRule` moved instance variable `start_ip_address` and `end_ip_address` under property `properties` whose type is `ServerFirewallRuleProperties` + - Model `FirewallRuleList` renamed its instance variable `values` to `values_property` + - Model `IPv6FirewallRule` moved instance variable `start_i_pv6_address` and `end_i_pv6_address` under property `properties` whose type is `IPv6ServerFirewallRuleProperties` + - Model `InstancePoolUpdate` moved instance variable `subnet_id`, `v_cores`, `license_type`, `dns_zone` and `maintenance_configuration_id` under property `properties` whose type is `InstancePoolProperties` + - Model `LogicalDatabaseTransparentDataEncryption` moved instance variable `state` under property `properties` whose type is `TransparentDataEncryptionProperties` + - Model `LongTermRetentionBackupOperationResult` moved instance variable `request_id`, `operation_type`, `from_backup_resource_id`, `to_backup_resource_id`, `target_backup_storage_redundancy`, `status` and `message` under property `properties` whose type is `LongTermRetentionOperationResultProperties` + - Model `ManagedDatabaseAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `ManagedDatabaseRestoreDetailsResult` moved instance variable `type_properties_type`, `status`, `block_reason`, `last_uploaded_file_name`, `last_uploaded_file_time`, `last_restored_file_name`, `last_restored_file_time`, `percent_completed`, `current_restored_size_mb`, `current_restore_plan_size_mb`, `current_backup_type`, `current_restoring_file_name`, `number_of_files_detected`, `number_of_files_queued`, `number_of_files_skipped`, `number_of_files_restoring`, `number_of_files_restored`, `number_of_files_unrestorable`, `full_backup_sets`, `diff_backup_sets`, `log_backup_sets` and `unrestorable_files` under property `properties` whose type is `ManagedDatabaseRestoreDetailsProperties` + - Model `ManagedDatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertPolicyProperties` + - Model `ManagedDatabaseUpdate` moved instance variable `collation`, `status`, `creation_date`, `earliest_restore_point`, `restore_point_in_time`, `default_secondary_location`, `catalog_collation`, `create_mode`, `storage_container_uri`, `source_database_id`, `cross_subscription_source_database_id`, `restorable_dropped_database_id`, `cross_subscription_restorable_dropped_database_id`, `storage_container_identity`, `storage_container_sas_token`, `failover_group_id`, `recoverable_database_id`, `long_term_retention_backup_resource_id`, `auto_complete_restore`, `last_backup_name`, `cross_subscription_target_managed_instance_id` and `is_ledger_on` under property `properties` whose type is `ManagedDatabaseProperties` + - Model `ManagedInstanceAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `ManagedInstanceAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `ManagedInstanceAzureADOnlyAuthProperties` + - Model `ManagedInstanceEditionCapability` deleted or renamed its instance variable `zone_redundant` + - Model `ManagedInstancePrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `ManagedInstancePrivateEndpointConnectionProperties` + - Model `ManagedInstanceQuery` moved instance variable `query_text` under property `properties` whose type is `QueryProperties` + - Model `ManagedInstanceUpdate` moved instance variable `provisioning_state`, `managed_instance_create_mode`, `fully_qualified_domain_name`, `is_general_purpose_v2`, `administrator_login`, `administrator_login_password`, `subnet_id`, `state`, `license_type`, `hybrid_secondary_usage`, `hybrid_secondary_usage_detected`, `v_cores`, `storage_size_in_gb`, `storage_iops`, `storage_throughput_mbps`, `collation`, `dns_zone`, `dns_zone_partner`, `public_data_endpoint_enabled`, `source_managed_instance_id`, `restore_point_in_time`, `proxy_override`, `timezone_id`, `instance_pool_id`, `maintenance_configuration_id`, `private_endpoint_connections`, `minimal_tls_version`, `current_backup_storage_redundancy`, `requested_backup_storage_redundancy`, `zone_redundant`, `primary_user_assigned_identity_id`, `key_id`, `administrators`, `service_principal`, `virtual_cluster_id`, `external_governance_status`, `pricing_model`, `create_time`, `authentication_metadata` and `database_format` under property `properties` whose type is `ManagedInstanceProperties` + - Model `ManagedServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `PrivateEndpointConnection` moved instance variable `private_endpoint`, `group_ids`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `PrivateEndpointConnectionProperties` + - Model `QueryStatistics` moved instance variable `database_name`, `query_id`, `start_time`, `end_time` and `intervals` under property `properties` whose type is `QueryStatisticsProperties` + - Model `RefreshExternalGovernanceStatusOperationResultMI` moved instance variable `request_id`, `request_type`, `queued_time`, `managed_instance_name`, `status` and `error_message` under property `properties` whose type is `RefreshExternalGovernanceStatusOperationResultPropertiesMI` + - Model `ServerAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `ServerAutomaticTuning` moved instance variable `desired_state`, `actual_state` and `options` under property `properties` whose type is `AutomaticTuningServerProperties` + - Model `ServerAzureADAdministrator` moved instance variable `administrator_type`, `login`, `sid`, `tenant_id` and `azure_ad_only_authentication` under property `properties` whose type is `AdministratorProperties` + - Model `ServerAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `AzureADOnlyAuthProperties` + - Model `ServerDevOpsAuditingSettings` moved instance variable `is_azure_monitor_target_enabled`, `is_managed_identity_in_use`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ServerDevOpsAuditSettingsProperties` + - Model `ServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `ServerUpdate` moved instance variable `administrator_login`, `administrator_login_password`, `version`, `state`, `fully_qualified_domain_name`, `private_endpoint_connections`, `minimal_tls_version`, `public_network_access`, `workspace_feature`, `primary_user_assigned_identity_id`, `federated_client_id`, `key_id`, `administrators`, `restrict_outbound_network_access`, `is_i_pv6_enabled`, `external_governance_status`, `retention_days` and `create_mode` under property `properties` whose type is `ServerProperties` + - Model `SqlVulnerabilityAssessment` moved instance variable `state` under property `properties` whose type is `SqlVulnerabilityAssessmentPolicyProperties` + - Model `SqlVulnerabilityAssessmentScanResults` moved instance variable `rule_id`, `status`, `error_message`, `is_trimmed`, `query_results`, `remediation`, `baseline_adjusted_result` and `rule_metadata` under property `properties` whose type is `SqlVulnerabilityAssessmentScanResultProperties` + - Model `UpdateLongTermRetentionBackupParameters` moved instance variable `requested_backup_storage_redundancy` under property `properties` whose type is `UpdateLongTermRetentionBackupParametersProperties` + - Model `UpdateVirtualClusterDnsServersOperation` moved instance variable `status` under property `properties` whose type is `VirtualClusterDnsServersProperties` + - Model `VirtualClusterUpdate` moved instance variable `subnet_id`, `version` and `child_resources` under property `properties` whose type is `VirtualClusterProperties` + - Deleted or renamed model `ElasticPoolActivity` + - Deleted or renamed model `ElasticPoolDatabaseActivity` + - Deleted or renamed model `FreemiumType` + - Deleted or renamed model `Metric` + - Deleted or renamed model `MetricAvailability` + - Deleted or renamed model `MetricDefinition` + - Deleted or renamed model `MetricName` + - Deleted or renamed model `MetricValue` + - Deleted or renamed model `OperationImpact` + - Deleted or renamed model `PrimaryAggregationType` + - Deleted or renamed model `QueryMetricIntervalAutoGenerated` + - Deleted or renamed model `ServerCommunicationLink` + - Deleted or renamed model `ServiceObjective` + - Deleted or renamed model `ServiceObjectiveName` + - Deleted or renamed model `SloUsageMetric` + - Deleted or renamed model `UnitDefinitionType` + - Deleted or renamed model `UnitType` + - Deleted or renamed model `UpsertManagedServerOperationStep` + - Deleted or renamed model `UpsertManagedServerOperationStepStatus` + - Method `CapabilitiesOperations.list_by_location` changed its parameter `include` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseAdvisorsOperations.list_by_database` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.list_by_server` changed its parameter `skip_token` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `DatabasesOperations.list_metric_definitions` + - Deleted or renamed method `DatabasesOperations.list_metrics` + - Deleted or renamed method `ElasticPoolsOperations.list_metric_definitions` + - Deleted or renamed method `ElasticPoolsOperations.list_metrics` + - Deleted or renamed method `GeoBackupPoliciesOperations.list_by_database` + - Method `JobExecutionsOperations.list_by_agent` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobExecutionsOperations.list_by_job` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobStepExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_step` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowOptionsOperations.get` changed its parameter `maintenance_window_options_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.create_or_update` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.get` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseMoveOperationsOperations.list_by_location` changed its parameter `only_latest_per_database` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseQueriesOperations.list_by_query` changed its parameter `start_time`/`end_time`/`interval` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSecurityEventsOperations.list_by_database` changed its parameter `skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_instance_pool` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_managed_instance` changed its parameter `number_of_queries`/`databases`/`start_time`/`end_time`/`interval`/`aggregation_function`/`observation_metric` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `OutboundFirewallRulesOperations.begin_create_or_update` deleted or renamed its parameter `parameters` of kind `positional_or_keyword` + - Method `RecoverableDatabasesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `RestorableDroppedDatabasesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `SensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `SensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ServerAdvisorsOperations.list_by_server` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `SyncGroupsOperations.list_logs` changed its parameter `start_time`/`end_time`/`type`/`continuation_token_parameter` from `positional_or_keyword` to `keyword_only` + - Method `UsagesOperations.list_by_instance_pool` changed its parameter `expand_children` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed operation group `ElasticPoolActivitiesOperations` + - Deleted or renamed operation group `ElasticPoolDatabaseActivitiesOperations` + - Deleted or renamed operation group `ServerCommunicationLinksOperations` + - Deleted or renamed operation group `ServiceObjectivesOperations` + +### Other Changes + + - Deleted model `OutboundEnvironmentEndpointCollection`/ `SecurityEventCollection`/`ManagedInstanceQueryStatistics`/`SecurityEventsFilterParameters` which actually were not used by SDK users + +## 4.0.0b24 (2025-10-09) + +### Bugs Fixed + +- Exclude `generated_samples` and `generated_tests` from wheel + +## 4.0.0b23 (2025-09-10) + +### Features Added + + - Added operation DatabasesOperations.list_metric_definitions + - Added operation DatabasesOperations.list_metrics + - Added operation ElasticPoolsOperations.list_metric_definitions + - Added operation ElasticPoolsOperations.list_metrics + - Added operation GeoBackupPoliciesOperations.list_by_database + - Added operation group ElasticPoolActivitiesOperations + - Added operation group ElasticPoolDatabaseActivitiesOperations + - Added operation group ServerCommunicationLinksOperations + - Added operation group ServiceObjectivesOperations + - Model ManagedInstanceEditionCapability has a new parameter zone_redundant + - Model ServerUsage has a new parameter next_reset_time + - Model ServerUsage has a new parameter resource_name + +### Breaking Changes + + - Model DataMaskingRuleListResult no longer has parameter next_link + - Model DatabaseExtensions no longer has parameter administrator_login + - Model DatabaseExtensions no longer has parameter administrator_login_password + - Model DatabaseExtensions no longer has parameter authentication_type + - Model DatabaseExtensions no longer has parameter database_edition + - Model DatabaseExtensions no longer has parameter max_size_bytes + - Model DatabaseExtensions no longer has parameter network_isolation + - Model DatabaseExtensions no longer has parameter service_objective_name + - Model DatabaseKey no longer has parameter key_version + - Model EditionCapability no longer has parameter zone_pinning + - Model ElasticPool no longer has parameter auto_pause_delay + - Model ElasticPoolEditionCapability no longer has parameter zone_pinning + - Model ElasticPoolPerDatabaseSettings no longer has parameter auto_pause_delay + - Model ElasticPoolPerformanceLevelCapability no longer has parameter supported_auto_pause_delay + - Model ElasticPoolPerformanceLevelCapability no longer has parameter supported_min_capacities + - Model ElasticPoolPerformanceLevelCapability no longer has parameter supported_per_database_auto_pause_delay + - Model ElasticPoolPerformanceLevelCapability no longer has parameter supported_zones + - Model ElasticPoolUpdate no longer has parameter auto_pause_delay + - Model EncryptionProtector no longer has parameter key_version + - Model GeoBackupPolicyListResult no longer has parameter next_link + - Model ImportExportExtensionsOperationResult no longer has parameter blob_uri + - Model ImportExportExtensionsOperationResult no longer has parameter private_endpoint_connections + - Model ImportExportExtensionsOperationResult no longer has parameter queued_time + - Model JobAgent no longer has parameter identity + - Model JobAgentUpdate no longer has parameter identity + - Model JobAgentUpdate no longer has parameter sku + - Model LocationCapabilities no longer has parameter is_zone_resilient_provisioning_allowed + - Model LocationCapabilities no longer has parameter supported_job_agent_versions + - Model LogicalDatabaseTransparentDataEncryption no longer has parameter scan_state + - Model ManagedDatabase no longer has parameter extended_accessibility_info + - Model ManagedDatabaseUpdate no longer has parameter extended_accessibility_info + - Model ManagedInstance no longer has parameter memory_size_in_gb + - Model ManagedInstance no longer has parameter requested_logical_availability_zone + - Model ManagedInstanceEditionCapability no longer has parameter is_general_purpose_v2 + - Model ManagedInstanceFamilyCapability no longer has parameter zone_redundant + - Model ManagedInstanceLongTermRetentionBackup no longer has parameter backup_storage_access_tier + - Model ManagedInstanceLongTermRetentionPolicy no longer has parameter backup_storage_access_tier + - Model ManagedInstancePrivateLinkProperties no longer has parameter required_zone_names + - Model ManagedInstanceUpdate no longer has parameter memory_size_in_gb + - Model ManagedInstanceUpdate no longer has parameter requested_logical_availability_zone + - Model ManagedInstanceVcoresCapability no longer has parameter included_storage_i_ops + - Model ManagedInstanceVcoresCapability no longer has parameter included_storage_throughput_m_bps + - Model ManagedInstanceVcoresCapability no longer has parameter iops_included_value_override_factor_per_selected_storage_gb + - Model ManagedInstanceVcoresCapability no longer has parameter iops_min_value_override_factor_per_selected_storage_gb + - Model ManagedInstanceVcoresCapability no longer has parameter supported_memory_sizes_in_gb + - Model ManagedInstanceVcoresCapability no longer has parameter supported_storage_i_ops + - Model ManagedInstanceVcoresCapability no longer has parameter supported_storage_throughput_m_bps + - Model ManagedInstanceVcoresCapability no longer has parameter throughput_m_bps_included_value_override_factor_per_selected_storage_gb + - Model ManagedInstanceVcoresCapability no longer has parameter throughput_m_bps_min_value_override_factor_per_selected_storage_gb + - Model SensitivityLabel no longer has parameter client_classification_source + - Model ServerKey no longer has parameter key_version + - Model ServerUsage no longer has parameter id + - Model ServerUsage no longer has parameter type + - Model ServerUsageListResult no longer has parameter next_link + - Model ServiceObjectiveCapability no longer has parameter supported_free_limit_exhaustion_behaviors + - Model ServiceObjectiveCapability no longer has parameter supported_zones + - Model ServiceObjectiveCapability no longer has parameter zone_pinning + - Operation DataMaskingPoliciesOperations.create_or_update no longer has parameter data_masking_policy_name + - Operation DataMaskingPoliciesOperations.get no longer has parameter data_masking_policy_name + - Operation DataMaskingRulesOperations.create_or_update no longer has parameter data_masking_policy_name + - Operation DataMaskingRulesOperations.list_by_database no longer has parameter data_masking_policy_name + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_location no longer has parameter filter + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_location no longer has parameter skip + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_location no longer has parameter top + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location no longer has parameter filter + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location no longer has parameter skip + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location no longer has parameter top + - Operation OutboundFirewallRulesOperations.begin_create_or_update has a new required parameter parameters + - Parameter administrator_login_password of model ExportDatabaseDefinition is now required + - Parameter administrator_login_password of model ImportExistingDatabaseDefinition is now required + - Parameter credential of model JobStepOutput is now required + - Parameter state of model GeoBackupPolicy is now required + - Parameter value of model ServerUsageListResult is now required + - Removed operation GeoBackupPoliciesOperations.list + - Removed operation ManagedDatabaseSensitivityLabelsOperations.list_by_database + - Removed operation ManagedDatabasesOperations.begin_reevaluate_inaccessible_database_state + - Removed operation ManagedInstanceLongTermRetentionPoliciesOperations.begin_delete + - Removed operation ManagedInstancesOperations.begin_reevaluate_inaccessible_database_state + - Removed operation ManagedInstancesOperations.begin_validate_azure_key_vault_encryption_key + - Removed operation SensitivityLabelsOperations.list_by_database + - Removed operation TransparentDataEncryptionsOperations.begin_resume + - Removed operation TransparentDataEncryptionsOperations.begin_suspend + - Removed operation VirtualClustersOperations.begin_create_or_update + - Removed operation group InstancePoolOperationsOperations + - Removed operation group NetworkSecurityPerimeterConfigurationsOperations + +## 4.0.0b22 (2025-07-30) + +### Features Added + + - Added operation LongTermRetentionBackupsOperations.begin_lock_time_based_immutability + - Added operation LongTermRetentionBackupsOperations.begin_lock_time_based_immutability_by_resource_group + - Added operation LongTermRetentionBackupsOperations.begin_remove_legal_hold_immutability + - Added operation LongTermRetentionBackupsOperations.begin_remove_legal_hold_immutability_by_resource_group + - Added operation LongTermRetentionBackupsOperations.begin_remove_time_based_immutability + - Added operation LongTermRetentionBackupsOperations.begin_remove_time_based_immutability_by_resource_group + - Added operation LongTermRetentionBackupsOperations.begin_set_legal_hold_immutability + - Added operation LongTermRetentionBackupsOperations.begin_set_legal_hold_immutability_by_resource_group + - Added operation ManagedDatabasesOperations.begin_reevaluate_inaccessible_database_state + - Added operation ManagedInstancesOperations.begin_reevaluate_inaccessible_database_state + - Added operation ManagedInstancesOperations.begin_validate_azure_key_vault_encryption_key + - Added operation TransparentDataEncryptionsOperations.begin_resume + - Added operation TransparentDataEncryptionsOperations.begin_suspend + - Added operation VirtualClustersOperations.begin_create_or_update + - Model DatabaseKey has a new parameter key_version + - Model EncryptionProtector has a new parameter key_version + - Model LocationCapabilities has a new parameter is_zone_resilient_provisioning_allowed + - Model LogicalDatabaseTransparentDataEncryption has a new parameter scan_state + - Model LongTermRetentionBackup has a new parameter legal_hold_immutability + - Model LongTermRetentionBackup has a new parameter time_based_immutability + - Model LongTermRetentionBackup has a new parameter time_based_immutability_mode + - Model LongTermRetentionPolicy has a new parameter time_based_immutability + - Model LongTermRetentionPolicy has a new parameter time_based_immutability_mode + - Model ManagedDatabase has a new parameter extended_accessibility_info + - Model ManagedDatabaseUpdate has a new parameter extended_accessibility_info + - Model ManagedInstance has a new parameter memory_size_in_gb + - Model ManagedInstance has a new parameter requested_logical_availability_zone + - Model ManagedInstanceUpdate has a new parameter memory_size_in_gb + - Model ManagedInstanceUpdate has a new parameter requested_logical_availability_zone + - Model ManagedInstanceVcoresCapability has a new parameter supported_memory_sizes_in_gb + - Model Server has a new parameter create_mode + - Model Server has a new parameter retention_days + - Model ServerKey has a new parameter key_version + - Model ServerUpdate has a new parameter create_mode + - Model ServerUpdate has a new parameter retention_days + +### Breaking Changes + + - Model ManagedInstance no longer has parameter total_memory_mb + - Model ManagedInstanceUpdate no longer has parameter total_memory_mb + - Model ManagedInstanceVcoresCapability no longer has parameter supported_memory_limits_mb + +## 4.0.0b21 (2025-03-23) + +### Features Added + + - Added operation GeoBackupPoliciesOperations.list + - Added operation ManagedDatabaseSensitivityLabelsOperations.list_by_database + - Added operation ManagedInstanceLongTermRetentionPoliciesOperations.begin_delete + - Added operation SensitivityLabelsOperations.list_by_database + - Added operation group InstancePoolOperationsOperations + - Added operation group NetworkSecurityPerimeterConfigurationsOperations + - Model DataMaskingRuleListResult has a new parameter next_link + - Model DatabaseExtensions has a new parameter administrator_login + - Model DatabaseExtensions has a new parameter administrator_login_password + - Model DatabaseExtensions has a new parameter authentication_type + - Model DatabaseExtensions has a new parameter database_edition + - Model DatabaseExtensions has a new parameter max_size_bytes + - Model DatabaseExtensions has a new parameter network_isolation + - Model DatabaseExtensions has a new parameter service_objective_name + - Model EditionCapability has a new parameter zone_pinning + - Model ElasticPool has a new parameter auto_pause_delay + - Model ElasticPoolEditionCapability has a new parameter zone_pinning + - Model ElasticPoolPerDatabaseSettings has a new parameter auto_pause_delay + - Model ElasticPoolPerformanceLevelCapability has a new parameter supported_auto_pause_delay + - Model ElasticPoolPerformanceLevelCapability has a new parameter supported_min_capacities + - Model ElasticPoolPerformanceLevelCapability has a new parameter supported_per_database_auto_pause_delay + - Model ElasticPoolPerformanceLevelCapability has a new parameter supported_zones + - Model ElasticPoolUpdate has a new parameter auto_pause_delay + - Model GeoBackupPolicyListResult has a new parameter next_link + - Model ImportExportExtensionsOperationResult has a new parameter blob_uri + - Model ImportExportExtensionsOperationResult has a new parameter private_endpoint_connections + - Model ImportExportExtensionsOperationResult has a new parameter queued_time + - Model JobAgent has a new parameter identity + - Model JobAgentUpdate has a new parameter identity + - Model JobAgentUpdate has a new parameter sku + - Model LocationCapabilities has a new parameter supported_job_agent_versions + - Model ManagedInstance has a new parameter total_memory_mb + - Model ManagedInstanceEditionCapability has a new parameter is_general_purpose_v2 + - Model ManagedInstanceFamilyCapability has a new parameter zone_redundant + - Model ManagedInstanceLongTermRetentionBackup has a new parameter backup_storage_access_tier + - Model ManagedInstanceLongTermRetentionPolicy has a new parameter backup_storage_access_tier + - Model ManagedInstancePrivateLinkProperties has a new parameter required_zone_names + - Model ManagedInstanceUpdate has a new parameter total_memory_mb + - Model ManagedInstanceVcoresCapability has a new parameter included_storage_i_ops + - Model ManagedInstanceVcoresCapability has a new parameter included_storage_throughput_m_bps + - Model ManagedInstanceVcoresCapability has a new parameter iops_included_value_override_factor_per_selected_storage_gb + - Model ManagedInstanceVcoresCapability has a new parameter iops_min_value_override_factor_per_selected_storage_gb + - Model ManagedInstanceVcoresCapability has a new parameter supported_memory_limits_mb + - Model ManagedInstanceVcoresCapability has a new parameter supported_storage_i_ops + - Model ManagedInstanceVcoresCapability has a new parameter supported_storage_throughput_m_bps + - Model ManagedInstanceVcoresCapability has a new parameter throughput_m_bps_included_value_override_factor_per_selected_storage_gb + - Model ManagedInstanceVcoresCapability has a new parameter throughput_m_bps_min_value_override_factor_per_selected_storage_gb + - Model SensitivityLabel has a new parameter client_classification_source + - Model ServerUsage has a new parameter id + - Model ServerUsage has a new parameter type + - Model ServerUsageListResult has a new parameter next_link + - Model ServiceObjectiveCapability has a new parameter supported_free_limit_exhaustion_behaviors + - Model ServiceObjectiveCapability has a new parameter supported_zones + - Model ServiceObjectiveCapability has a new parameter zone_pinning + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_location has a new optional parameter filter + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_location has a new optional parameter skip + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_location has a new optional parameter top + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location has a new optional parameter filter + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location has a new optional parameter skip + - Operation LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location has a new optional parameter top + +### Breaking Changes + + - Model LongTermRetentionPolicy no longer has parameter backup_storage_access_tier + - Model LongTermRetentionPolicy no longer has parameter make_backups_immutable + - Model ManagedInstanceEditionCapability no longer has parameter zone_redundant + - Model ServerUsage no longer has parameter next_reset_time + - Model ServerUsage no longer has parameter resource_name + - Operation DataMaskingPoliciesOperations.create_or_update has a new required parameter data_masking_policy_name + - Operation DataMaskingPoliciesOperations.get has a new required parameter data_masking_policy_name + - Operation DataMaskingRulesOperations.create_or_update has a new required parameter data_masking_policy_name + - Operation DataMaskingRulesOperations.list_by_database has a new required parameter data_masking_policy_name + - Operation OutboundFirewallRulesOperations.begin_create_or_update no longer has parameter parameters + - Removed operation DatabasesOperations.list_metric_definitions + - Removed operation DatabasesOperations.list_metrics + - Removed operation ElasticPoolsOperations.list_metric_definitions + - Removed operation ElasticPoolsOperations.list_metrics + - Removed operation GeoBackupPoliciesOperations.list_by_database + - Removed operation group ElasticPoolActivitiesOperations + - Removed operation group ElasticPoolDatabaseActivitiesOperations + - Removed operation group ServerCommunicationLinksOperations + - Removed operation group ServiceObjectivesOperations + +## 4.0.0b20 (2024-11-04) + +### Features Added + + - Model `DistributedAvailabilityGroup` added property `distributed_availability_group_name` + - Model `DistributedAvailabilityGroup` added property `partner_link_role` + - Model `DistributedAvailabilityGroup` added property `partner_availability_group_name` + - Model `DistributedAvailabilityGroup` added property `partner_endpoint` + - Model `DistributedAvailabilityGroup` added property `instance_link_role` + - Model `DistributedAvailabilityGroup` added property `instance_availability_group_name` + - Model `DistributedAvailabilityGroup` added property `failover_mode` + - Model `DistributedAvailabilityGroup` added property `seeding_mode` + - Model `DistributedAvailabilityGroup` added property `databases` + - Added model `CertificateInfo` + - Added model `DistributedAvailabilityGroupDatabase` + - Added model `DistributedAvailabilityGroupSetRole` + - Added model `DistributedAvailabilityGroupsFailoverRequest` + - Added enum `FailoverModeType` + - Added enum `FailoverType` + - Added enum `InstanceRole` + - Added enum `LinkRole` + - Added enum `ReplicaConnectedState` + - Added enum `ReplicaSynchronizationHealth` + - Added enum `ReplicationModeType` + - Added enum `RoleChangeType` + - Added enum `SeedingModeType` + - Operation group `DistributedAvailabilityGroupsOperations` added method `begin_failover` + - Operation group `DistributedAvailabilityGroupsOperations` added method `begin_set_role` + +### Breaking Changes + + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `target_database` + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `source_endpoint` + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `primary_availability_group_name` + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `secondary_availability_group_name` + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `source_replica_id` + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `target_replica_id` + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `link_state` + - Model `DistributedAvailabilityGroup` deleted or renamed its instance variable `last_hardened_lsn` + - Deleted or renamed model `ReplicationMode` + +## 4.0.0b19 (2024-09-09) + +### Features Added + + - The 'ReplicationLinksOperations' method 'begin_create_or_update' was added in the current version + - The 'ReplicationLinksOperations' method 'begin_update' was added in the current version + - The model or publicly exposed class 'ColumnDataType' had property 'INT' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'target_database' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'source_endpoint' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'primary_availability_group_name' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'secondary_availability_group_name' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'source_replica_id' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'target_replica_id' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'link_state' added in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had property 'last_hardened_lsn' added in the current version + - The model or publicly exposed class 'FailoverGroup' had property 'secondary_type' added in the current version + - The model or publicly exposed class 'FailoverGroupUpdate' had property 'secondary_type' added in the current version + - The model or publicly exposed class 'ManagedInstance' had property 'storage_iops' added in the current version + - The model or publicly exposed class 'ManagedInstance' had property 'storage_throughput_mbps' added in the current version + - The model or publicly exposed class 'ManagedInstanceUpdate' had property 'storage_iops' added in the current version + - The model or publicly exposed class 'ManagedInstanceUpdate' had property 'storage_throughput_mbps' added in the current version + - The model or publicly exposed class 'ReplicationLink' had property 'partner_database_id' added in the current version + - The model or publicly exposed class 'FailoverGroupDatabasesSecondaryType' was added in the current version + - The model or publicly exposed class 'ReplicationLinkUpdate' was added in the current version + - The model or publicly exposed class 'ReplicationMode' was added in the current version + - The 'ReplicationLinksOperations' method 'begin_create_or_update' was added in the current version + - The 'ReplicationLinksOperations' method 'begin_update' was added in the current version + +### Breaking Changes + + - The 'DistributedAvailabilityGroupsOperations' method 'begin_failover' was deleted or renamed in the current version + - The 'DistributedAvailabilityGroupsOperations' method 'begin_set_role' was deleted or renamed in the current version + - The 'ColumnDataType' enum had its value 'INT_ENUM' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'distributed_availability_group_name' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'partner_link_role' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'partner_availability_group_name' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'partner_endpoint' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'instance_link_role' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'instance_availability_group_name' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'failover_mode' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'seeding_mode' deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroup' had its instance variable 'databases' deleted or renamed in the current version + - The model or publicly exposed class 'ManagedInstance' had its instance variable 'storage_i_ops' deleted or renamed in the current version + - The model or publicly exposed class 'ManagedInstance' had its instance variable 'storage_throughput_m_bps' deleted or renamed in the current version + - The model or publicly exposed class 'ManagedInstanceUpdate' had its instance variable 'storage_i_ops' deleted or renamed in the current version + - The model or publicly exposed class 'ManagedInstanceUpdate' had its instance variable 'storage_throughput_m_bps' deleted or renamed in the current version + - The model or publicly exposed class 'CertificateInfo' was deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroupDatabase' was deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroupSetRole' was deleted or renamed in the current version + - The model or publicly exposed class 'DistributedAvailabilityGroupsFailoverRequest' was deleted or renamed in the current version + - The model or publicly exposed class 'FailoverModeType' was deleted or renamed in the current version + - The model or publicly exposed class 'FailoverType' was deleted or renamed in the current version + - The model or publicly exposed class 'InstanceRole' was deleted or renamed in the current version + - The model or publicly exposed class 'LinkRole' was deleted or renamed in the current version + - The model or publicly exposed class 'ReplicaConnectedState' was deleted or renamed in the current version + - The model or publicly exposed class 'ReplicaSynchronizationHealth' was deleted or renamed in the current version + - The model or publicly exposed class 'ReplicationModeType' was deleted or renamed in the current version + - The model or publicly exposed class 'RoleChangeType' was deleted or renamed in the current version + - The model or publicly exposed class 'SeedingModeType' was deleted or renamed in the current version + - The 'DistributedAvailabilityGroupsOperations' method 'begin_failover' was deleted or renamed in the current version + - The 'DistributedAvailabilityGroupsOperations' method 'begin_set_role' was deleted or renamed in the current version + +## 4.0.0b18 (2024-07-11) + +### Bugs Fixed + + - Fix import error when import from azure.mgmt.sql.aio + +## 4.0.0b17 (2024-05-20) + +### Features Added + + - Model DatabaseOperation has a new parameter operation_phase_details + +## 4.0.0b16 (2024-04-07) + +### Features Added + + - Added operation DistributedAvailabilityGroupsOperations.begin_failover + - Added operation DistributedAvailabilityGroupsOperations.begin_set_role + - Model DistributedAvailabilityGroup has a new parameter databases + - Model DistributedAvailabilityGroup has a new parameter distributed_availability_group_name + - Model DistributedAvailabilityGroup has a new parameter failover_mode + - Model DistributedAvailabilityGroup has a new parameter instance_availability_group_name + - Model DistributedAvailabilityGroup has a new parameter instance_link_role + - Model DistributedAvailabilityGroup has a new parameter partner_availability_group_name + - Model DistributedAvailabilityGroup has a new parameter partner_endpoint + - Model DistributedAvailabilityGroup has a new parameter partner_link_role + - Model DistributedAvailabilityGroup has a new parameter seeding_mode + +### Breaking Changes + + - Model DistributedAvailabilityGroup no longer has parameter last_hardened_lsn + - Model DistributedAvailabilityGroup no longer has parameter link_state + - Model DistributedAvailabilityGroup no longer has parameter primary_availability_group_name + - Model DistributedAvailabilityGroup no longer has parameter secondary_availability_group_name + - Model DistributedAvailabilityGroup no longer has parameter source_endpoint + - Model DistributedAvailabilityGroup no longer has parameter source_replica_id + - Model DistributedAvailabilityGroup no longer has parameter target_database + - Model DistributedAvailabilityGroup no longer has parameter target_replica_id + +## 4.0.0b15 (2024-01-11) + +### Features Added + + - Added operation ManagedInstancesOperations.begin_refresh_status + - Model ManagedInstance has a new parameter authentication_metadata + - Model ManagedInstance has a new parameter create_time + - Model ManagedInstance has a new parameter database_format + - Model ManagedInstance has a new parameter external_governance_status + - Model ManagedInstance has a new parameter hybrid_secondary_usage + - Model ManagedInstance has a new parameter hybrid_secondary_usage_detected + - Model ManagedInstance has a new parameter is_general_purpose_v2 + - Model ManagedInstance has a new parameter pricing_model + - Model ManagedInstance has a new parameter storage_i_ops + - Model ManagedInstance has a new parameter storage_throughput_m_bps + - Model ManagedInstance has a new parameter virtual_cluster_id + - Model ManagedInstanceUpdate has a new parameter authentication_metadata + - Model ManagedInstanceUpdate has a new parameter create_time + - Model ManagedInstanceUpdate has a new parameter database_format + - Model ManagedInstanceUpdate has a new parameter external_governance_status + - Model ManagedInstanceUpdate has a new parameter hybrid_secondary_usage + - Model ManagedInstanceUpdate has a new parameter hybrid_secondary_usage_detected + - Model ManagedInstanceUpdate has a new parameter is_general_purpose_v2 + - Model ManagedInstanceUpdate has a new parameter pricing_model + - Model ManagedInstanceUpdate has a new parameter storage_i_ops + - Model ManagedInstanceUpdate has a new parameter storage_throughput_m_bps + - Model ManagedInstanceUpdate has a new parameter virtual_cluster_id + +## 4.0.0b14 (2023-12-18) + +### Features Added + + - Added operation LongTermRetentionBackupsOperations.begin_change_access_tier + - Added operation LongTermRetentionBackupsOperations.begin_change_access_tier_by_resource_group + - Model LongTermRetentionBackup has a new parameter backup_storage_access_tier + - Model LongTermRetentionBackup has a new parameter is_backup_immutable + - Model LongTermRetentionPolicy has a new parameter backup_storage_access_tier + - Model LongTermRetentionPolicy has a new parameter make_backups_immutable + +## 4.0.0b13 (2023-11-17) + +### Features Added + + - Added operation group JobPrivateEndpointsOperations + - Model FailoverGroupReadOnlyEndpoint has a new parameter target_server + - Model FailoverGroupUpdate has a new parameter partner_servers + - Model InstancePool has a new parameter dns_zone + - Model InstancePool has a new parameter maintenance_configuration_id + - Model InstancePoolUpdate has a new parameter dns_zone + - Model InstancePoolUpdate has a new parameter license_type + - Model InstancePoolUpdate has a new parameter maintenance_configuration_id + - Model InstancePoolUpdate has a new parameter sku + - Model InstancePoolUpdate has a new parameter subnet_id + - Model InstancePoolUpdate has a new parameter v_cores + - Model Server has a new parameter is_i_pv6_enabled + - Model ServerUpdate has a new parameter is_i_pv6_enabled + +## 4.0.0b12 (2023-08-30) + +### Features Added + + - Model Database has a new parameter encryption_protector_auto_rotation + - Model Database has a new parameter free_limit_exhaustion_behavior + - Model Database has a new parameter use_free_limit + - Model DatabaseUpdate has a new parameter encryption_protector_auto_rotation + - Model DatabaseUpdate has a new parameter free_limit_exhaustion_behavior + - Model DatabaseUpdate has a new parameter use_free_limit + +## 4.0.0b11 (2023-07-28) + +### Features Added + + - Added operation FailoverGroupsOperations.begin_try_planned_before_forced_failover + - Model PrivateEndpointConnection has a new parameter group_ids + - Model SqlVulnerabilityAssessmentScanRecord has a new parameter last_scan_time + +## 4.0.0b10 (2023-04-11) + +### Features Added + + - Model ManagedDatabase has a new parameter is_ledger_on + - Model ManagedDatabaseUpdate has a new parameter is_ledger_on + +## 4.0.0b9 (2023-03-24) + +### Features Added + + - Model ElasticPool has a new parameter availability_zone + - Model ElasticPool has a new parameter min_capacity + - Model ElasticPool has a new parameter preferred_enclave_type + - Model ElasticPoolUpdate has a new parameter availability_zone + - Model ElasticPoolUpdate has a new parameter min_capacity + - Model ElasticPoolUpdate has a new parameter preferred_enclave_type + +## 4.0.0b8 (2023-02-17) + +### Features Added + + - Added operation ManagedInstancesOperations.begin_start + - Added operation ManagedInstancesOperations.begin_stop + - Added operation ManagedInstancesOperations.list_outbound_network_dependencies_by_managed_instance + - Added operation ServersOperations.begin_refresh_status + - Added operation group DatabaseEncryptionProtectorsOperations + - Added operation group ManagedLedgerDigestUploadsOperations + - Added operation group ServerConfigurationOptionsOperations + - Added operation group StartStopManagedInstanceSchedulesOperations + - Model Database has a new parameter availability_zone + - Model Database has a new parameter encryption_protector + - Model Database has a new parameter keys + - Model Database has a new parameter manual_cutover + - Model Database has a new parameter perform_cutover + - Model DatabaseUpdate has a new parameter encryption_protector + - Model DatabaseUpdate has a new parameter keys + - Model DatabaseUpdate has a new parameter manual_cutover + - Model DatabaseUpdate has a new parameter perform_cutover + - Model PrivateEndpointConnectionProperties has a new parameter group_ids + - Model RecoverableDatabase has a new parameter keys + - Model RecoverableDatabaseListResult has a new parameter next_link + - Model RestorableDroppedDatabase has a new parameter keys + - Model Server has a new parameter external_governance_status + - Model ServerUpdate has a new parameter external_governance_status + - Operation DatabasesOperations.get has a new optional parameter expand + - Operation DatabasesOperations.get has a new optional parameter filter + - Operation RecoverableDatabasesOperations.get has a new optional parameter expand + - Operation RecoverableDatabasesOperations.get has a new optional parameter filter + - Operation RestorableDroppedDatabasesOperations.get has a new optional parameter expand + - Operation RestorableDroppedDatabasesOperations.get has a new optional parameter filter + +### Breaking Changes + + - Renamed operation TransparentDataEncryptionsOperations.create_or_update to TransparentDataEncryptionsOperations.begin_create_or_update + +## 4.0.0b7 (2023-01-29) + +### Features Added + + - Model InstanceFailoverGroup has a new parameter secondary_type + - Model ManagedDatabase has a new parameter cross_subscription_restorable_dropped_database_id + - Model ManagedDatabase has a new parameter cross_subscription_source_database_id + - Model ManagedDatabase has a new parameter cross_subscription_target_managed_instance_id + - Model ManagedDatabaseUpdate has a new parameter cross_subscription_restorable_dropped_database_id + - Model ManagedDatabaseUpdate has a new parameter cross_subscription_source_database_id + - Model ManagedDatabaseUpdate has a new parameter cross_subscription_target_managed_instance_id + +## 4.0.0b6 (2022-12-30) + +### Features Added + + - Model Database has a new parameter preferred_enclave_type + - Model DatabaseUpdate has a new parameter preferred_enclave_type + +## 4.0.0b5 (2022-11-10) + +### Features Added + + - Model ServerDevOpsAuditingSettings has a new parameter is_managed_identity_in_use + +## 4.0.0b4 (2022-09-29) + +### Features Added + + - Added operation ManagedDatabasesOperations.begin_cancel_move + - Added operation ManagedDatabasesOperations.begin_complete_move + - Added operation ManagedDatabasesOperations.begin_start_move + - Added operation group DatabaseSqlVulnerabilityAssessmentBaselinesOperations + - Added operation group DatabaseSqlVulnerabilityAssessmentExecuteScanOperations + - Added operation group DatabaseSqlVulnerabilityAssessmentRuleBaselinesOperations + - Added operation group DatabaseSqlVulnerabilityAssessmentScanResultOperations + - Added operation group DatabaseSqlVulnerabilityAssessmentScansOperations + - Added operation group DatabaseSqlVulnerabilityAssessmentsSettingsOperations + - Added operation group ManagedDatabaseAdvancedThreatProtectionSettingsOperations + - Added operation group ManagedDatabaseMoveOperationsOperations + - Added operation group ManagedInstanceAdvancedThreatProtectionSettingsOperations + - Added operation group ManagedInstanceDtcsOperations + - Added operation group SqlVulnerabilityAssessmentBaselineOperations + - Added operation group SqlVulnerabilityAssessmentBaselinesOperations + - Added operation group SqlVulnerabilityAssessmentExecuteScanOperations + - Added operation group SqlVulnerabilityAssessmentRuleBaselineOperations + - Added operation group SqlVulnerabilityAssessmentRuleBaselinesOperations + - Added operation group SqlVulnerabilityAssessmentScanResultOperations + - Added operation group SqlVulnerabilityAssessmentScansOperations + - Added operation group SqlVulnerabilityAssessmentsOperations + - Added operation group SqlVulnerabilityAssessmentsSettingsOperations + - Added operation group SynapseLinkWorkspacesOperations + - Model ManagedDatabase has a new parameter storage_container_identity + - Model ManagedDatabaseRestoreDetailsResult has a new parameter current_backup_type + - Model ManagedDatabaseRestoreDetailsResult has a new parameter current_restore_plan_size_mb + - Model ManagedDatabaseRestoreDetailsResult has a new parameter current_restored_size_mb + - Model ManagedDatabaseRestoreDetailsResult has a new parameter diff_backup_sets + - Model ManagedDatabaseRestoreDetailsResult has a new parameter full_backup_sets + - Model ManagedDatabaseRestoreDetailsResult has a new parameter log_backup_sets + - Model ManagedDatabaseRestoreDetailsResult has a new parameter number_of_files_queued + - Model ManagedDatabaseRestoreDetailsResult has a new parameter number_of_files_restored + - Model ManagedDatabaseRestoreDetailsResult has a new parameter number_of_files_restoring + - Model ManagedDatabaseRestoreDetailsResult has a new parameter number_of_files_skipped + - Model ManagedDatabaseRestoreDetailsResult has a new parameter number_of_files_unrestorable + - Model ManagedDatabaseRestoreDetailsResult has a new parameter type_properties_type + - Model ManagedDatabaseUpdate has a new parameter storage_container_identity + - Model VirtualCluster has a new parameter version + - Model VirtualClusterUpdate has a new parameter version + +### Breaking Changes + + - Model VirtualCluster no longer has parameter family + - Model VirtualCluster no longer has parameter maintenance_configuration_id + - Model VirtualClusterUpdate no longer has parameter family + - Model VirtualClusterUpdate no longer has parameter maintenance_configuration_id + - Renamed operation ReplicationLinksOperations.delete to ReplicationLinksOperations.begin_delete + - Renamed operation VirtualClustersOperations.update_dns_servers to VirtualClustersOperations.begin_update_dns_servers + +## 4.0.0b3 (2022-07-06) + +**Features** + + - Added operation group DatabaseAdvancedThreatProtectionSettingsOperations + - Added operation group EndpointCertificatesOperations + - Added operation group ManagedServerDnsAliasesOperations + - Added operation group ServerAdvancedThreatProtectionSettingsOperations + - Model Database has a new parameter source_resource_id + - Model DatabaseBlobAuditingPolicy has a new parameter is_managed_identity_in_use + - Model ExtendedDatabaseBlobAuditingPolicy has a new parameter is_managed_identity_in_use + - Model ExtendedServerBlobAuditingPolicy has a new parameter is_managed_identity_in_use + - Model ServerBlobAuditingPolicy has a new parameter is_managed_identity_in_use + +**Breaking changes** + + - Model Database no longer has parameter primary_delegated_identity_client_id + - Model DatabaseIdentity no longer has parameter delegated_resources + - Model DatabaseUpdate no longer has parameter primary_delegated_identity_client_id + - Removed operation ReplicationLinksOperations.begin_unlink + +## 4.0.0b2 (2022-03-08) + +**Features** + + - Added operation group DistributedAvailabilityGroupsOperations + - Added operation group IPv6FirewallRulesOperations + - Added operation group ServerTrustCertificatesOperations + - Model ElasticPool has a new parameter high_availability_replica_count + - Model ElasticPoolUpdate has a new parameter high_availability_replica_count + +**Breaking changes** + + - Removed operation group OperationsHealthOperations + +## 4.0.0b1 (2021-12-21) + +**Features** + + - Model ManagedInstanceUpdate has a new parameter current_backup_storage_redundancy + - Model ManagedInstanceUpdate has a new parameter requested_backup_storage_redundancy + - Model ManagedInstanceUpdate has a new parameter service_principal + - Model Database has a new parameter identity + - Model Database has a new parameter primary_delegated_identity_client_id + - Model Database has a new parameter federated_client_id + - Model ManagedInstance has a new parameter current_backup_storage_redundancy + - Model ManagedInstance has a new parameter requested_backup_storage_redundancy + - Model ManagedInstance has a new parameter service_principal + - Model DatabaseUpdate has a new parameter identity + - Model DatabaseUpdate has a new parameter primary_delegated_identity_client_id + - Model DatabaseUpdate has a new parameter federated_client_id + - Added operation TransparentDataEncryptionsOperations.list_by_database + - Added operation LedgerDigestUploadsOperations.begin_create_or_update + - Added operation LedgerDigestUploadsOperations.begin_disable + - Added operation ServerConnectionPoliciesOperations.list_by_server + - Added operation ServerConnectionPoliciesOperations.begin_create_or_update + +**Breaking changes** + + - Operation TransparentDataEncryptionsOperations.create_or_update has a new signature + - Operation TransparentDataEncryptionsOperations.get has a new signature + - Model ManagedInstanceUpdate no longer has parameter storage_account_type + - Model ManagedInstance no longer has parameter storage_account_type + - Model RestorableDroppedDatabase no longer has parameter elastic_pool_id + - Removed operation LedgerDigestUploadsOperations.create_or_update + - Removed operation LedgerDigestUploadsOperations.disable + - Removed operation ServerConnectionPoliciesOperations.create_or_update + - Removed operation group TransparentDataEncryptionActivitiesOperations + +## 3.0.1 (2021-07-15) + +**Bugfixes** + + - Fix default setting for blob_auditing_policy_name + +## 3.0.0 (2021-06-18) + +**Features** + + - Model Server has a new parameter federated_client_id + - Model Server has a new parameter restrict_outbound_network_access + - Model ServerUpdate has a new parameter federated_client_id + - Model ServerUpdate has a new parameter restrict_outbound_network_access + - Model BackupShortTermRetentionPolicy has a new parameter diff_backup_interval_in_hours + +**Breaking changes** + + - Operation ReplicationLinksOperations.get has a new signature + +## 2.1.0 (2021-05-24) + + - Add resource identity + +## 2.0.0 (2021-05-13) + +**Features** + + - Model LongTermRetentionBackup has a new parameter requested_backup_storage_redundancy + - Model LongTermRetentionBackup has a new parameter backup_storage_redundancy + - Model ManagedInstanceKey has a new parameter auto_rotation_enabled + - Model ManagedInstanceEncryptionProtector has a new parameter auto_rotation_enabled + - Model Database has a new parameter is_infra_encryption_enabled + - Model Database has a new parameter is_ledger_on + - Model Database has a new parameter secondary_type + - Model Database has a new parameter current_backup_storage_redundancy + - Model Database has a new parameter high_availability_replica_count + - Model Database has a new parameter maintenance_configuration_id + - Model Database has a new parameter requested_backup_storage_redundancy + - Model ReplicationLink has a new parameter link_type + - Model ServerUpdate has a new parameter primary_user_assigned_identity_id + - Model ServerUpdate has a new parameter administrators + - Model ServerUpdate has a new parameter identity + - Model ServerUpdate has a new parameter key_id + - Model ServerUpdate has a new parameter workspace_feature + - Model DatabaseUpdate has a new parameter is_infra_encryption_enabled + - Model DatabaseUpdate has a new parameter is_ledger_on + - Model DatabaseUpdate has a new parameter secondary_type + - Model DatabaseUpdate has a new parameter current_backup_storage_redundancy + - Model DatabaseUpdate has a new parameter high_availability_replica_count + - Model DatabaseUpdate has a new parameter maintenance_configuration_id + - Model DatabaseUpdate has a new parameter requested_backup_storage_redundancy + - Model ManagedInstance has a new parameter primary_user_assigned_identity_id + - Model ManagedInstance has a new parameter administrators + - Model ManagedInstance has a new parameter key_id + - Model ManagedInstance has a new parameter zone_redundant + - Model ManagedInstance has a new parameter private_endpoint_connections + - Model ServerKey has a new parameter auto_rotation_enabled + - Model ExtendedServerBlobAuditingPolicy has a new parameter is_devops_audit_enabled + - Model ServiceObjectiveCapability has a new parameter supported_maintenance_configurations + - Model EncryptionProtector has a new parameter auto_rotation_enabled + - Model FirewallRuleListResult has a new parameter next_link + - Model ManagedInstanceUpdate has a new parameter primary_user_assigned_identity_id + - Model ManagedInstanceUpdate has a new parameter administrators + - Model ManagedInstanceUpdate has a new parameter identity + - Model ManagedInstanceUpdate has a new parameter key_id + - Model ManagedInstanceUpdate has a new parameter private_endpoint_connections + - Model ManagedInstanceUpdate has a new parameter zone_redundant + - Model ElasticPoolUpdate has a new parameter maintenance_configuration_id + - Model SyncMember has a new parameter private_endpoint_name + - Model ElasticPool has a new parameter maintenance_configuration_id + - Model ManagedInstanceVcoresCapability has a new parameter supported_maintenance_configurations + - Model ManagedInstanceLongTermRetentionBackup has a new parameter backup_storage_redundancy + - Model ServerSecurityAlertPolicy has a new parameter system_data + - Model ManagedInstanceEditionCapability has a new parameter supported_storage_capabilities + - Model ManagedInstanceEditionCapability has a new parameter zone_redundant + - Model ServerBlobAuditingPolicy has a new parameter is_devops_audit_enabled + - Model ElasticPoolPerformanceLevelCapability has a new parameter supported_maintenance_configurations + - Model RestorableDroppedDatabase has a new parameter backup_storage_redundancy + - Model RestorableDroppedDatabase has a new parameter tags + - Model RestorableDroppedDatabase has a new parameter sku + - Model RestorableDroppedDatabase has a new parameter elastic_pool_id + - Model DatabaseSecurityAlertPolicy has a new parameter creation_time + - Model DatabaseSecurityAlertPolicy has a new parameter system_data + - Model SyncGroup has a new parameter conflict_logging_retention_in_days + - Model SyncGroup has a new parameter private_endpoint_name + - Model SyncGroup has a new parameter sku + - Model SyncGroup has a new parameter enable_conflict_logging + - Model VirtualClusterUpdate has a new parameter maintenance_configuration_id + - Model PrivateLinkResourceProperties has a new parameter required_zone_names + - Model VirtualCluster has a new parameter maintenance_configuration_id + - Model ManagedServerSecurityAlertPolicy has a new parameter system_data + - Model DatabaseUsage has a new parameter type + - Model DatabaseUsage has a new parameter id + - Model Server has a new parameter primary_user_assigned_identity_id + - Model Server has a new parameter key_id + - Model Server has a new parameter administrators + - Model Server has a new parameter workspace_feature + - Model SensitivityLabel has a new parameter column_name + - Model SensitivityLabel has a new parameter schema_name + - Model SensitivityLabel has a new parameter managed_by + - Model SensitivityLabel has a new parameter table_name + - Added operation VirtualClustersOperations.update_dns_servers + - Added operation ServersOperations.begin_import_database + - Added operation DatabasesOperations.list_inaccessible_by_server + - Added operation FirewallRulesOperations.replace + - Added operation ReplicationLinksOperations.list_by_server + - Added operation SensitivityLabelsOperations.update + - Added operation ManagedInstancesOperations.list_by_managed_instance + - Added operation ManagedDatabaseSensitivityLabelsOperations.update + - Added operation LongTermRetentionBackupsOperations.begin_update + - Added operation LongTermRetentionBackupsOperations.begin_copy + - Added operation LongTermRetentionBackupsOperations.begin_copy_by_resource_group + - Added operation LongTermRetentionBackupsOperations.begin_update_by_resource_group + - Added operation group DatabaseSchemasOperations + - Added operation group DatabaseExtensionsOperations + - Added operation group ManagedInstancePrivateEndpointConnectionsOperations + - Added operation group DeletedServersOperations + - Added operation group ManagedDatabaseTablesOperations + - Added operation group MaintenanceWindowOptionsOperations + - Added operation group DatabaseSecurityAlertPoliciesOperations + - Added operation group ServerTrustGroupsOperations + - Added operation group ManagedInstanceAzureADOnlyAuthenticationsOperations + - Added operation group SqlAgentOperations + - Added operation group TimeZonesOperations + - Added operation group ManagedInstancePrivateLinkResourcesOperations + - Added operation group RecommendedSensitivityLabelsOperations + - Added operation group DatabaseTablesOperations + - Added operation group ServerAdvisorsOperations + - Added operation group ManagedDatabaseSecurityEventsOperations + - Added operation group ServerOperationsOperations + - Added operation group DatabaseAdvisorsOperations + - Added operation group DatabaseColumnsOperations + - Added operation group DataWarehouseUserActivitiesOperations + - Added operation group OutboundFirewallRulesOperations + - Added operation group ManagedDatabaseSchemasOperations + - Added operation group DatabaseRecommendedActionsOperations + - Added operation group LongTermRetentionPoliciesOperations + - Added operation group ManagedDatabaseQueriesOperations + - Added operation group ManagedDatabaseRecommendedSensitivityLabelsOperations + - Added operation group ManagedDatabaseTransparentDataEncryptionOperations + - Added operation group ServerDevOpsAuditSettingsOperations + - Added operation group OperationsHealthOperations + - Added operation group LedgerDigestUploadsOperations + - Added operation group MaintenanceWindowsOperations + - Added operation group ManagedDatabaseColumnsOperations + +**Breaking changes** + + - Operation RestorableDroppedDatabasesOperations.get has a new signature + - Operation ReplicationLinksOperations.get has a new signature + - Parameter old_server_dns_alias_id of model ServerDnsAliasAcquisition is now required + - Operation SensitivityLabelsOperations.list_recommended_by_database has a new signature + - Operation ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database has a new signature + - Operation DatabasesOperations.begin_import_method has a new signature + - Operation DatabasesOperations.list_by_server has a new signature + - Operation ManagedDatabaseSensitivityLabelsOperations.list_current_by_database has a new signature + - Operation ManagedDatabaseSensitivityLabelsOperations.list_current_by_database has a new signature + - Operation ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database has a new signature + - Operation ManagedInstanceAdministratorsOperations.begin_create_or_update has a new signature + - Operation ManagedInstanceAdministratorsOperations.begin_delete has a new signature + - Operation ManagedInstanceAdministratorsOperations.get has a new signature + - Operation ManagedInstancesOperations.get has a new signature + - Operation ManagedInstancesOperations.list has a new signature + - Operation ManagedInstancesOperations.list_by_instance_pool has a new signature + - Operation ManagedInstancesOperations.list_by_resource_group has a new signature + - Operation SensitivityLabelsOperations.list_current_by_database has a new signature + - Operation SensitivityLabelsOperations.list_current_by_database has a new signature + - Operation SensitivityLabelsOperations.list_recommended_by_database has a new signature + - Operation ServersOperations.get has a new signature + - Operation ServersOperations.list has a new signature + - Operation ServersOperations.list_by_resource_group has a new signature + - Model BackupShortTermRetentionPolicy no longer has parameter diff_backup_interval_in_hours + - Model Database no longer has parameter read_replica_count + - Model ReplicationLink no longer has parameter location + - Model DatabaseUpdate no longer has parameter read_replica_count + - Model FirewallRule no longer has parameter kind + - Model FirewallRule no longer has parameter location + - Model RestorableDroppedDatabase no longer has parameter service_level_objective + - Model RestorableDroppedDatabase no longer has parameter edition + - Model RestorableDroppedDatabase no longer has parameter elastic_pool_name + - Model DatabaseSecurityAlertPolicy no longer has parameter use_server_default + - Model DatabaseSecurityAlertPolicy no longer has parameter kind + - Model DatabaseSecurityAlertPolicy no longer has parameter location + - Model DatabaseUsage no longer has parameter resource_name + - Model DatabaseUsage no longer has parameter next_reset_time + - Removed operation DatabasesOperations.begin_create_import_operation + - Model DatabaseUsageListResult has a new signature + - Model RestorableDroppedDatabaseListResult has a new signature + - Removed operation group RecommendedElasticPoolsOperations + - Removed operation group BackupLongTermRetentionPoliciesOperations + - Removed operation group DatabaseThreatDetectionPoliciesOperations + - Removed operation group ServiceTierAdvisorsOperations + +## 1.0.0 (2020-11-24) + +- GA release + +## 1.0.0b1 (2020-10-13) + +This is beta preview version. + +This version uses a next-generation code generator that introduces important breaking changes, but also important new features (like unified authentication and async programming). + +**General breaking changes** + +- Credential system has been completly revamped: + + - `azure.common.credentials` or `msrestazure.azure_active_directory` instances are no longer supported, use the `azure-identity` classes instead: https://pypi.org/project/azure-identity/ + - `credentials` parameter has been renamed `credential` + +- The `config` attribute no longer exists on a client, configuration should be passed as kwarg. Example: `MyClient(credential, subscription_id, enable_logging=True)`. For a complete set of + supported options, see the [parameters accept in init documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) +- You can't import a `version` module anymore, use `__version__` instead +- Operations that used to return a `msrest.polling.LROPoller` now returns a `azure.core.polling.LROPoller` and are prefixed with `begin_`. +- Exceptions tree have been simplified and most exceptions are now `azure.core.exceptions.HttpResponseError` (`CloudError` has been removed). +- Most of the operation kwarg have changed. Some of the most noticeable: + + - `raw` has been removed. Equivalent feature can be found using `cls`, a callback that will give access to internal HTTP response for advanced user + - For a complete set of + supported options, see the [parameters accept in Request documentation of azure-core](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies) + +**General new features** + +- Type annotations support using `typing`. SDKs are mypy ready. +- This client has now stable and official support for async. Check the `aio` namespace of your package to find the async client. +- This client now support natively tracing library like OpenCensus or OpenTelemetry. See this [tracing quickstart](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core-tracing-opentelemetry) for an overview. + +## 0.21.0 (2020-09-03) + +**Features** + + - Model DatabaseUpdate has a new parameter storage_account_type + - Model Database has a new parameter storage_account_type + - Model BackupShortTermRetentionPolicy has a new parameter diff_backup_interval_in_hours + - Model ManagedInstance has a new parameter storage_account_type + - Model ManagedInstance has a new parameter provisioning_state + - Model ManagedInstanceUpdate has a new parameter storage_account_type + - Model ManagedInstanceUpdate has a new parameter provisioning_state + - Added operation DatabasesOperations.list_inaccessible_by_server + - Added operation ServersOperations.import_database + - Added operation group ImportExportOperations + - Added operation group ServerAzureADOnlyAuthenticationsOperations + - Added operation group ManagedInstanceAzureADOnlyAuthenticationsOperations + +**Breaking changes** + + - Operation BackupShortTermRetentionPoliciesOperations.create_or_update has a new signature + - Operation BackupShortTermRetentionPoliciesOperations.update has a new signature + - Removed operation DatabasesOperations.import_method + - Removed operation DatabasesOperations.create_import_operation + - Removed operation ServerAzureADAdministratorsOperations.disable_azure_ad_only_authentication + +## 0.20.0 (2020-06-22) + +**Features** + + - Model ManagedDatabase has a new parameter last_backup_name + - Model ManagedDatabase has a new parameter auto_complete_restore + - Model ManagedDatabaseUpdate has a new parameter last_backup_name + - Model ManagedDatabaseUpdate has a new parameter auto_complete_restore + - Model ManagedInstanceOperation has a new parameter operation_parameters + - Model ManagedInstanceOperation has a new parameter operation_steps + +## 0.19.0 (2020-06-22) + +**Features** + + - Model SyncGroup has a new parameter use_private_link_connection + - Model ManagedInstanceUpdate has a new parameter maintenance_configuration_id + - Model SyncMember has a new parameter use_private_link_connection + - Model SyncMember has a new parameter sync_member_azure_database_resource_id + - Model ManagedInstance has a new parameter maintenance_configuration_id + - Added operation ExtendedDatabaseBlobAuditingPoliciesOperations.list_by_database + - Added operation ManagedInstancesOperations.failover + - Added operation ReplicationLinksOperations.unlink + - Added operation ExtendedServerBlobAuditingPoliciesOperations.list_by_server + +# 0.18.0 (2020-03-23) + +**Features** + + - Added operation group ManagedInstanceOperations + +# 0.17.0 (2020-03-02) + +**Features** + + - Model ManagedInstanceUpdate has a new parameter minimal_tls_version + - Model ServerAzureADAdministrator has a new parameter azure_ad_only_authentication + - Model ManagedDatabase has a new parameter long_term_retention_backup_resource_id + - Model ManagedDatabaseUpdate has a new parameter long_term_retention_backup_resource_id + - Model SensitivityLabel has a new parameter rank + - Model ServerUpdate has a new parameter private_endpoint_connections + - Model ServerUpdate has a new parameter minimal_tls_version + - Model ServerUpdate has a new parameter public_network_access + - Model Server has a new parameter private_endpoint_connections + - Model Server has a new parameter minimal_tls_version + - Model Server has a new parameter public_network_access + - Model ManagedInstance has a new parameter minimal_tls_version + - Added operation ServerAzureADAdministratorsOperations.disable_azure_ad_only_authentication + - Added operation ManagedDatabasesOperations.list_inaccessible_by_instance + - Added operation group ManagedInstanceLongTermRetentionPoliciesOperations + - Added operation group LongTermRetentionManagedInstanceBackupsOperations + +## 0.16.0 (2019-12-17) + +**Features** + + - Model ExtendedServerBlobAuditingPolicy has a new parameter + queue_delay_ms + - Model EditionCapability has a new parameter read_scale + - Model EditionCapability has a new parameter + supported_storage_capabilities + - Model ServiceObjectiveCapability has a new parameter compute_model + - Model ServiceObjectiveCapability has a new parameter + supported_auto_pause_delay + - Model ServiceObjectiveCapability has a new parameter zone_redundant + - Model ServiceObjectiveCapability has a new parameter + supported_min_capacities + - Model ManagedInstanceVersionCapability has a new parameter + supported_instance_pool_editions + - Model DatabaseBlobAuditingPolicy has a new parameter + queue_delay_ms + - Model ExtendedDatabaseBlobAuditingPolicy has a new parameter + queue_delay_ms + - Model ManagedInstanceVcoresCapability has a new parameter + supported_storage_sizes + - Model ManagedInstanceVcoresCapability has a new parameter + instance_pool_supported + - Model ManagedInstanceVcoresCapability has a new parameter + standalone_supported + - Model ManagedInstanceVcoresCapability has a new parameter + included_max_size + - Model ServerBlobAuditingPolicy has a new parameter queue_delay_ms + - Model ElasticPoolPerformanceLevelCapability has a new parameter + zone_redundant + - Added operation group WorkloadGroupsOperations + - Added operation group WorkloadClassifiersOperations + +**Breaking changes** + + - Operation ServerAzureADAdministratorsOperations.create_or_update + has a new signature + - Model ManagedInstanceFamilyCapability no longer has parameter + supported_storage_sizes + - Model ManagedInstanceFamilyCapability no longer has parameter + included_max_size + +## 0.15.0 (2019-11-12) + +**Breaking changes** + + - Operation DatabasesOperations.failover has a new signature + - Operation ManagedInstanceAdministratorsOperations.get has a new + signature + - Operation ManagedInstanceAdministratorsOperations.delete has a new + signature + - Operation ManagedInstanceAdministratorsOperations.create_or_update + has a new signature + +## 0.14.0 (2019-10-04) + +**Features** + + - Added operation + ServerBlobAuditingPoliciesOperations.list_by_server + - Added operation ManagedDatabasesOperations.complete_restore + - Added operation + DatabaseBlobAuditingPoliciesOperations.list_by_database + - Added operation group ManagedDatabaseRestoreDetailsOperations + +## 0.13.0 (2019-09-03) + +**Features** + + - Model ManagedInstanceUpdate has a new parameter + source_managed_instance_id + - Model ManagedInstanceUpdate has a new parameter instance_pool_id + - Model ManagedInstanceUpdate has a new parameter + restore_point_in_time + - Model ManagedInstanceUpdate has a new parameter + managed_instance_create_mode + - Model SensitivityLabel has a new parameter is_disabled + - Model Database has a new parameter paused_date + - Model Database has a new parameter read_replica_count + - Model Database has a new parameter resumed_date + - Model Database has a new parameter auto_pause_delay + - Model Database has a new parameter min_capacity + - Model ManagedInstance has a new parameter + source_managed_instance_id + - Model ManagedInstance has a new parameter instance_pool_id + - Model ManagedInstance has a new parameter restore_point_in_time + - Model ManagedInstance has a new parameter + managed_instance_create_mode + - Model DatabaseUpdate has a new parameter paused_date + - Model DatabaseUpdate has a new parameter read_replica_count + - Model DatabaseUpdate has a new parameter resumed_date + - Model DatabaseUpdate has a new parameter auto_pause_delay + - Model DatabaseUpdate has a new parameter min_capacity + - Added operation + ManagedInstanceEncryptionProtectorsOperations.revalidate + - Added operation + ManagedDatabaseSensitivityLabelsOperations.enable_recommendation + - Added operation + ManagedDatabaseSensitivityLabelsOperations.disable_recommendation + - Added operation ElasticPoolsOperations.failover + - Added operation ManagedInstancesOperations.list_by_instance_pool + - Added operation DatabasesOperations.failover + - Added operation + LongTermRetentionBackupsOperations.get_by_resource_group + - Added operation + LongTermRetentionBackupsOperations.list_by_resource_group_server + - Added operation + LongTermRetentionBackupsOperations.delete_by_resource_group + - Added operation + LongTermRetentionBackupsOperations.list_by_resource_group_location + - Added operation + LongTermRetentionBackupsOperations.list_by_resource_group_database + - Added operation SensitivityLabelsOperations.enable_recommendation + - Added operation SensitivityLabelsOperations.disable_recommendation + - Added operation EncryptionProtectorsOperations.revalidate + - Added operation group InstancePoolsOperations + - Added operation group ManagedInstanceAdministratorsOperations + - Added operation group UsagesOperations + - Added operation group PrivateLinkResourcesOperations + - Added operation group PrivateEndpointConnectionsOperations + +**Breaking changes** + + - Operation + ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database + has a new signature + - Operation + SensitivityLabelsOperations.list_recommended_by_database has a + new signature + - Operation EncryptionProtectorsOperations.create_or_update has a + new signature + +**General breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes if from some import. In summary, some modules +were incorrectly visible/importable and have been renamed. This fixed +several issues caused by usage of classes that were not supposed to be +used in the first place. + + - SqlManagementClient cannot be imported from + `azure.mgmt.sql.sql_management_client` anymore (import from + `azure.mgmt.sqlmanagement` works like before) + - SqlManagementClientConfiguration import has been moved from + `azure.mgmt.sqlmanagement.sql_management_client` to + `azure.mgmt.sqlmanagement` + - A model `MyClass` from a "models" sub-module cannot be imported + anymore using `azure.mgmt.sqlmanagement.models.my_class` (import + from `azure.mgmt.sqlmanagement.models` works like before) + - An operation class `MyClassOperations` from an `operations` + sub-module cannot be imported anymore using + `azure.mgmt.sqlmanagement.operations.my_class_operations` + (import from `azure.mgmt.sqlmanagement.operations` works like + before) + +Last but not least, HTTP connection pooling is now enabled by default. +You should always use a client as a context manager, or call close(), or +use no more than one client per process. + +## 0.12.0 (2019-03-28) + +**Features** + + - Model ManagedDatabase has a new parameter recoverable_database_id + - Model ManagedDatabase has a new parameter + restorable_dropped_database_id + - Model ServerSecurityAlertPolicy has a new parameter creation_time + - Model ManagedInstanceUpdate has a new parameter + public_data_endpoint_enabled + - Model ManagedInstanceUpdate has a new parameter proxy_override + - Model ManagedInstanceUpdate has a new parameter timezone_id + - Model ManagedDatabaseUpdate has a new parameter + recoverable_database_id + - Model ManagedDatabaseUpdate has a new parameter + restorable_dropped_database_id + - Model ManagedInstance has a new parameter + public_data_endpoint_enabled + - Model ManagedInstance has a new parameter proxy_override + - Model ManagedInstance has a new parameter timezone_id + - Added operation group ManagedServerSecurityAlertPoliciesOperations + - Added operation group VirtualClustersOperations + - Added operation group + ManagedRestorableDroppedDatabaseBackupShortTermRetentionPoliciesOperations + - Added operation group RestorableDroppedManagedDatabasesOperations + - Added operation group ManagedDatabaseSensitivityLabelsOperations + - Added operation group RecoverableManagedDatabasesOperations + - Added operation group ServerVulnerabilityAssessmentsOperations + - Added operation group + ManagedInstanceVulnerabilityAssessmentsOperations + - Added operation group ManagedDatabaseSecurityAlertPoliciesOperations + - Added operation group SensitivityLabelsOperations + +## 0.11.0 (2018-11-08) + +**Features** + + - Model ServerBlobAuditingPolicy has a new parameter + is_azure_monitor_target_enabled + - Model ExtendedServerBlobAuditingPolicy has a new parameter + is_azure_monitor_target_enabled + - Model DatabaseBlobAuditingPolicy has a new parameter + is_azure_monitor_target_enabled + - Model ExtendedDatabaseBlobAuditingPolicy has a new parameter + is_azure_monitor_target_enabled + - Added operation + DatabaseVulnerabilityAssessmentsOperations.list_by_database + - Added operation + ManagedDatabaseVulnerabilityAssessmentsOperations.list_by_database + - Added operation group + ManagedBackupShortTermRetentionPoliciesOperations + +## 0.10.0 (2018-10-18) + +**Features** + + - Model DatabaseVulnerabilityAssessment has a new parameter + storage_account_access_key + - Model ManagedInstanceUpdate has a new parameter dns_zone_partner + - Model ManagedInstanceUpdate has a new parameter collation + - Model ManagedInstanceUpdate has a new parameter dns_zone + - Model ManagedInstance has a new parameter dns_zone_partner + - Model ManagedInstance has a new parameter collation + - Model ManagedInstance has a new parameter dns_zone + - Added operation + BackupShortTermRetentionPoliciesOperations.list_by_database + - Added operation group + ManagedDatabaseVulnerabilityAssessmentsOperations + - Added operation group ExtendedDatabaseBlobAuditingPoliciesOperations + - Added operation group TdeCertificatesOperations + - Added operation group ManagedInstanceKeysOperations + - Added operation group ServerBlobAuditingPoliciesOperations + - Added operation group ManagedInstanceEncryptionProtectorsOperations + - Added operation group ExtendedServerBlobAuditingPoliciesOperations + - Added operation group ServerSecurityAlertPoliciesOperations + - Added operation group + ManagedDatabaseVulnerabilityAssessmentScansOperations + - Added operation group ManagedInstanceTdeCertificatesOperations + - Added operation group + ManagedDatabaseVulnerabilityAssessmentRuleBaselinesOperations + +**Breaking changes** + + - Operation + DatabaseVulnerabilityAssessmentRuleBaselinesOperations.delete has a + new signature + - Operation DatabaseVulnerabilityAssessmentRuleBaselinesOperations.get + has a new signature + - Operation + DatabaseVulnerabilityAssessmentRuleBaselinesOperations.create_or_update + has a new signature + +**Note** + + - azure-mgmt-nspkg is not installed anymore on Python 3 (PEP420-based + namespace package) + +## 0.9.1 (2018-05-24) + +**Features** + + - Managed instances, databases, and failover groups + - Vulnerability assessments + - Backup short term retention policies + - Elastic Jobs + +## 0.9.0 (2018-04-25) + +**General Breaking changes** + +This version uses a next-generation code generator that *might* +introduce breaking changes. + + - Model signatures now use only keyword-argument syntax. All + positional arguments must be re-written as keyword-arguments. To + keep auto-completion in most cases, models are now generated for + Python 2 and Python 3. Python 3 uses the "*" syntax for + keyword-only arguments. + - Enum types now use the "str" mixin (class AzureEnum(str, Enum)) to + improve the behavior when unrecognized enum values are encountered. + While this is not a breaking change, the distinctions are important, + and are documented here: + At a glance: + - "is" should not be used at all. + - "format" will return the string value, where "%s" string + formatting will return `NameOfEnum.stringvalue`. Format syntax + should be prefered. + - New Long Running Operation: + - Return type changes from + `msrestazure.azure_operation.AzureOperationPoller` to + `msrest.polling.LROPoller`. External API is the same. + - Return type is now **always** a `msrest.polling.LROPoller`, + regardless of the optional parameters used. + - The behavior has changed when using `raw=True`. Instead of + returning the initial call result as `ClientRawResponse`, + without polling, now this returns an LROPoller. After polling, + the final resource will be returned as a `ClientRawResponse`. + - New `polling` parameter. The default behavior is + `Polling=True` which will poll using ARM algorithm. When + `Polling=False`, the response of the initial call will be + returned without polling. + - `polling` parameter accepts instances of subclasses of + `msrest.polling.PollingMethod`. + - `add_done_callback` will no longer raise if called after + polling is finished, but will instead execute the callback right + away. + +**SQL Breaking changes** + + - - Database and ElasticPool now use Sku property for scale and + tier-related properties. We have made this change in order to + allow future support of autoscale, and to allow for new + vCore-based editions. + + - Database.sku has replaced + Database.requested_service_objective_name and + Database.edition. Database scale can be set by setting + Sku.name to the requested service objective name (e.g. S0, + P1, or GP_Gen4_1), or by setting Sku.name to the sku name + (e.g. Standard, Premium, or GP_Gen4) and set Sku.capacity + to the scale measured in DTU or vCores. + - Database.current_sku has replaced + Database.service_level_objetive. + - Database.current_service_objective_id and + Database.requested_service_objective_id have been + removed. + - ElasticPool.sku has replaced ElasticPool.dtu. Elastic pool + scale can be set by setting Sku.name to the requested sku + name (e.g. StandardPool, PremiumPool, or GP_Gen4) and + setting Sku.capacity to the scale measured in DTU or vCores. + - ElasticPool.per_database_settings has replaced + ElasticPool.database_dtu_min and + ElasticPool.database_dtu_max. + + - Database.max_size_bytes is now an integer instead of string. + + - LocationCapabilities tree has been changed in order to support + capabilities of new vCore-based database and elastic pool editions. + +**Features** + + - Added support for List and Cancel operation on Azure database and + elastic pool REST API + - Added Long Term Retention V2 commands, including getting backups, + deleting backups, setting the V2 policies, and getting the V2 + policies + - Removed support for managing Vaults used for Long Term Retention + V1 + - Changed BackupLongTermRetentionPolicy class, removing the Long + Term Retention V1 properties and adding the Long Term Retention + V2 properties + - Removed BackupLongTermRetentionPolicyState + +## 0.8.6 (2018-03-22) + +**Features** + + - Added support for List and Cancel operation on Azure database and + elastic pool REST API + - Added support for Auto-tuning REST API + +## 0.8.5 (2018-01-18) + +**Features** + + - Added support for renaming databases + - Added missing database editions and service objectives + - Added ability to list long term retention vaults & policies + +## 0.8.4 (2017-11-14) + +**Features** + + - Added support for subscription usages + +## 0.8.3 (2017-10-24) + +**Features** + + - Added support for database zone redundant property + - Added support for server dns aliases + +## 0.8.2 (2017-10-18) + +**Features** + + - Added support for state and migration flag properties for SQL Vnet + rules + +## 0.8.1 (2017-10-04) + +**Features** + + - Add database.cancel operation + - Add database.list_by_database + +## 0.8.0 (2017-09-07) + +**Disclaimer** + +We were using a slightly unorthodox convention for some operation ids. +Some resource operations were "nested" inside others, e.g. blob auditing +policies was nested inside databases as in +client.databases.get_blob_auditing_policies(..) instead of the +flattened ARM standard +client.database_blob_auditing_policies.get(...). + +This convention has lead to some inconsistencies, makes some APIs +difficult to find, and is at odds with future APIs. For example if we +wanted to implement listing db audit policies by server, continuing the +current convention would be +client.databases.list_blob_auditing_policies_by_server(..) which +makes much less sense than the ARM standard which would +beclient.database_blob_auditing_policies.list_by_server(...)`. + +In order to resolve this and provide a good path moving forward, we have +renamed the inconsistent operations to follow the ARM standard. This is +an unfortunate breaking change, but it's best to do now while the SDK is +still in preview and since most of these operations were only recently +added. + +**Breaking changes** + + - client.database.get_backup_long_term_retention_policy -> + client.backup_long_term_retention_policies.get + - client.database.create_or_update_backup_long_term_retention_policy + -> + client.backup_long_term_retention_policies.create_or_update + - client.servers.create_backup_long_term_retention_vault -> + client.backup_long_term_retention_vaults.create_or_update + - client.servers.get_backup_long_term_retention_vault -> + client.backup_long_term_retention_vaults.get + - client.database.list_restore_points -> + client.restore_points.list_by_database + - client.servers.create_or_update_connection_policy -> + client.server_connection_policies.create_or_update + - client.servers.get_connection_policy -> + client.server_connection_policies.get + - client.databases.create_or_update_data_masking_policy -> + client.data_masking_policies.create_or_update + - client.databases.get_data_masking_policy -> + client.data_masking_policies.get + - client.databases.create_or_update_data_masking_rule -> + client.data_masking_rules.create_or_update + - client.databases.get_data_masking_rule -> + client.data_masking_rules.get + - client.databases.list_data_masking_rules -> + client.data_masking_rules.list_by_database + - client.databases.get_threat_detection_policy -> + client.database_threat_detection_policies.get + - client.databases.create_or_update_threat_detection_policy -> + client.database_threat_detection_policies.create_or_update + - client.databases.create_or_update_geo_backup_policy -> + client.geo_backup_policies.create_or_update + - client.databases.get_geo_backup_policy -> + client.geo_backup_policies.get + - client.databases.list_geo_backup_policies -> + client.geo_backup_policies.list_by_database + - client.databases.delete_replication_link -> + client.replication_links.delete + - client.databases.get_replication_link -> + client.replication_links.get + - client.databases.failover_replication_link -> + client.replication_links.failover + - client.databases.failover_replication_link_allow_data_loss -> + client.replication_links.failover_allow_data_loss + - client.databases.list_replication_links -> + client.replication_links.list_by_database + - client.server_azure_ad_administrators.list -> + client.server_azure_ad_administrators.list_by_server + - client.servers.get_service_objective -> + client.service_objectives.get + - client.servers.list_service_objectives -> + client.service_objectives.list_by_server + - client.elastic_pools.list_activity -> + client.elastic_pool_activities.list_by_elastic_pool + - client.elastic_pools.list_database_activity -> + client.elastic_pool_database_activities.list_by_elastic_pool + - client.elastic_pools.get_database -> + client.databases.get_by_elastic_pool + - client.elastic_pools.list_databases -> + client.databases.list_by_elastic_pool + - client.recommended_elastic_pools.get_databases -> + client.databases.get_by_recommended_elastic_pool + - client.recommended_elastic_pools.list_databases -> + client.databases.list_by_recommended_elastic_pool + - client.databases.get_service_tier_advisor -> + client.service_tier_advisors.get + - client.databases.list_service_tier_advisors -> + client.service_tier_advisors.list_by_database + - client.databases.create_or_update_transparent_data_encryption_configuration + -> client.transparent_data_encryptions.create_or_update + - client.databases.get_transparent_data_encryption_configuration + -> client.transparent_data_encryptions.get + - client.databases.list_transparent_data_encryption_activity -> + client.transparent_data_encryption_activities.list_by_configuration + - client.servers.list_usages -> + client.server_usages.list_by_server + - client.databases.list_usages -> + client.database_usages.list_by_database + - client.databases.get_blob_auditing_policy -> + client.database_blob_auditing_policies.get + - client.databases.create_or_update_blob_auditing_policy -> + client.database_blob_auditing_policies.create_or_update + - client.servers.list_encryption_protectors, -> + client.encryption_protectors.list_by_server + - client.servers.get_encryption_protector -> + client.encryption_protectors.get + - client.servers.create_or_update_encryption_protector -> + client.encryption_protectors.create_or_update + - Database blob auditing policy state is required + - Failover group resource now has required properties defined + +**Features** + + - Add SQL DB, server, and pool PATCH operations + - client.operations.list now returnes a full list of operations and + not a limited subset (2014-04-01 to 2015-05-01-preview) + +**Fixed bugs** + + - Fixed KeyError in server_azure_ad_administrators_operations.get + +## 0.7.1 (2017-06-30) + + - Added support for server connection policies + - Fixed error in + databases_operations.create_or_update_threat_detection_policy + +## 0.7.0 (2017-06-28) + +**Features** + + - Backup/Restore related: RecoverableDatabase, + RestorableDroppedDatabase, BackupLongTermRetentionVault, + BackupLongTermRetentionPolicy, and GeoBackupPolicy + - Data Masking rules and policies + - Server communication links + +**Breaking changes** + + - Renamed enum RestorePointTypes to RestorePointType + - Renamed VnetFirewallRule and related operations to + VirtualNetworkRule + +## 0.6.0 (2017-06-13) + + - Updated Servers api version from 2014-04-01 to 2015-05-01-preview, + which is SDK compatible and includes support for server managed + identity + - Added support for server keys and encryption protectors + - Added support for check server name availability + - Added support for virtual network firewall rules + - Updated server azure ad admin from swagger + - Minor nonfunctional updates to database blob auditing + - Breaking changes DatabaseMetrics and ServerMetrics renamed to + DatabaseUsage and ServerUsage. These were misleadingly named because + metrics is a different API. + - Added database metrics and elastic pool metrics + +## 0.5.3 (2017-06-01) + + - Update minimal dependency to msrestazure 0.4.8 + +## 0.5.2 (2017-05-31) + +**Features** + + - Added support for server active directory administrator, failover + groups, and virtual network rules + - Minor changes to database auditing support + +## 0.5.1 (2017-04-28) + +**Bugfixes** + + - Fix return exception in import/export + +## 0.5.0 (2017-04-19) + +**Breaking changes** + + - `SqlManagementClient.list_operations` is now + `SqlManagementClient.operations.list` + +**New features** + + - Added elastic pool capabilities to capabilities API. + +**Notes** + + - This wheel package is now built with the azure wheel extension + +## 0.4.0 (2017-03-22) + +Capabilities and security policy features. + +Also renamed several types and operations for improved clarify and +consistency. + +Additions: + + - BlobAuditingPolicy APIs (e.g. + databases.create_or_update_blob_auditing_policy) + - ThreatDetectionPolicy APIs (e.g. + databases.create_or_update_threat_detection_policy) + - databases.list_by_server now supports $expand parameter + - Capabilities APIs (e.g. capabilities.list_by_location) + +Classes and enums renamed: + + - ServerFirewallRule -> FirewallRule + - DatabaseEditions -> DatabaseEdition + - ElasticPoolEditions -> ElasticPoolEdition + - ImportRequestParameters -> ImportRequest + - ExportRequestParameters -> ExportRequest + - ImportExportOperationResponse -> ImportExportResponse + - OperationMode -> ImportOperationMode + - TransparentDataEncryptionStates -> TransparentDataEncryptionStatus + +Classes removed: + + - Unused types: UpgradeHint, Schema, Table, Column + +Operations renamed: + + - servers.get_by_resource_group -> servers.get + - servers.create_or_update_firewall_rule -> + firewall_rules.create_or_update, and similar for get, list, and + delete + - databases.import -> databases.create_import_operation + - servers.import -> databases.import + - databases.pause_data_warehouse -> databases.pause + - databases.resume_data_warehouse -> databases.resume + - recommended_elastic_pools.list -> + recommended_elastic_pools.list_by_server + +Operations removed: + + - Removed ImportExport operation results APIs since these are handled + automatically by Azure async pattern. + +## 0.3.3 (2017-03-14) + + - Add database blob auditing and threat detection operations + +## 0.3.2 (2017-03-08) + + - Add import/export operations + - Expanded documentation of create modes + +## 0.3.1 (2017-03-01) + + - Added ‘filter’ param to list databases + +## 0.3.0 (2017-02-27) + +**Breaking changes** + + - Enums: + - createMode renamed to CreateMode + - Added ReadScale, SampleName, ServerState + - Added missing Database properties (failover_group_id, + restore_point_in_time, read_scale, sample_name) + - Added missing ElasticPoolActivity properties ([requested](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/sql/azure-mgmt-sql)*) + - Added missing ReplicationLink properties (is_termination_allowed, + replication_mode) + - Added missing Server properties ([external_administrator](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/sql/azure-mgmt-sql)*, + state) + - Added operations APIs + - Removed unused Database.upgrade_hint property + - Removed unused RecommendedDatabaseProperties class + - Renamed incorrect RecommendedElasticPool.databases_property to + databases + - Made firewall rule start/end ip address required + - Added missing kind property to many resources + - Many doc clarifications + +## 0.2.0 (2016-12-12) + +**Breaking changes** + + - Parameters re-ordering (list_database_activity) + - Flatten create_or_update_firewall_rule from "parameters" to + "start_ip_address" and "end_ip_address" + +## 0.1.0 (2016-11-02) + + - Initial Release diff --git a/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-sql-4.0.0-CHANGELOG.trimmed.md b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-sql-4.0.0-CHANGELOG.trimmed.md new file mode 100644 index 000000000000..4bc131a53524 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/data/azure-mgmt-sql-4.0.0-CHANGELOG.trimmed.md @@ -0,0 +1,1109 @@ +# Release History + +## 4.0.0 (2026-06-30) + +### Features Added + + - Client `SqlManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `SqlManagementClient` added method `send_request` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_baseline` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessments` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessments_settings` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_rule_baselines` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_rule_baseline` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_scan_result` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_scan_result` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_scans` + - Client `SqlManagementClient` added operation group `distributed_availability_groups` + - Client `SqlManagementClient` added operation group `endpoint_certificates` + - Client `SqlManagementClient` added operation group `instance_pool_operations` + - Client `SqlManagementClient` added operation group `ipv6_firewall_rules` + - Client `SqlManagementClient` added operation group `job_private_endpoints` + - Client `SqlManagementClient` added operation group `managed_instance_dtcs` + - Client `SqlManagementClient` added operation group `managed_server_dns_aliases` + - Client `SqlManagementClient` added operation group `network_security_perimeter_configurations` + - Client `SqlManagementClient` added operation group `server_configuration_options` + - Client `SqlManagementClient` added operation group `server_trust_certificates` + - Client `SqlManagementClient` added operation group `start_stop_managed_instance_schedules` + - Client `SqlManagementClient` added operation group `database_encryption_protectors` + - Client `SqlManagementClient` added operation group `synapse_link_workspaces` + - Client `SqlManagementClient` added operation group `database_advanced_threat_protection_settings` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_baselines` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_baselines` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessments_settings` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_execute_scan` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_execute_scan` + - Client `SqlManagementClient` added operation group `sql_vulnerability_assessment_rule_baselines` + - Client `SqlManagementClient` added operation group `database_sql_vulnerability_assessment_scans` + - Client `SqlManagementClient` added operation group `managed_database_advanced_threat_protection_settings` + - Client `SqlManagementClient` added operation group `managed_database_move_operations` + - Client `SqlManagementClient` added operation group `managed_instance_advanced_threat_protection_settings` + - Client `SqlManagementClient` added operation group `managed_ledger_digest_uploads` + - Client `SqlManagementClient` added operation group `server_advanced_threat_protection_settings` + - Model `Advisor` added property `system_data` + - Model `BackupShortTermRetentionPolicy` added property `system_data` + - Enum `BackupStorageRedundancy` added member `GEO_ZONE` + - Enum `CapabilityGroup` added member `SUPPORTED_JOB_AGENT_VERSIONS` + - Model `CheckNameAvailabilityRequest` added property `type` + - Model `DataMaskingPolicy` added property `system_data` + - Model `DataMaskingRule` added property `system_data` + - Model `DataWarehouseUserActivities` added property `system_data` + - Model `Database` added property `identity` + - Model `Database` added property `system_data` + - Model `DatabaseAutomaticTuning` added property `system_data` + - Model `DatabaseBlobAuditingPolicy` added property `system_data` + - Model `DatabaseColumn` added property `system_data` + - Model `DatabaseExtensions` added property `system_data` + - Model `DatabaseOperation` added property `system_data` + - Model `DatabaseSchema` added property `system_data` + - Enum `DatabaseStatus` added member `STARTING` + - Enum `DatabaseStatus` added member `STOPPED` + - Enum `DatabaseStatus` added member `STOPPING` + - Model `DatabaseTable` added property `system_data` + - Model `DatabaseUpdate` added property `identity` + - Model `DatabaseUsage` added property `system_data` + - Model `DatabaseVulnerabilityAssessment` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentRuleBaseline` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentScansExport` added property `system_data` + - Model `DeletedServer` added property `system_data` + - Model `EditionCapability` added property `zone_pinning` + - Model `ElasticPool` added property `system_data` + - Model `ElasticPoolEditionCapability` added property `zone_pinning` + - Model `ElasticPoolOperation` added property `system_data` + - Model `ElasticPoolPerDatabaseSettings` added property `auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_min_capacities` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_per_database_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_zones` + - Model `EncryptionProtector` added property `system_data` + - Model `ExtendedDatabaseBlobAuditingPolicy` added property `system_data` + - Model `ExtendedServerBlobAuditingPolicy` added property `system_data` + - Model `FailoverGroup` added property `system_data` + - Model `FailoverGroupReadOnlyEndpoint` added property `target_server` + - Model `GeoBackupPolicy` added property `system_data` + - Model `ImportExportExtensionsOperationResult` added property `system_data` + - Model `ImportExportOperationResult` added property `system_data` + - Model `InstanceFailoverGroup` added property `system_data` + - Model `InstancePool` added property `system_data` + - Model `InstancePoolUpdate` added property `sku` + - Model `InstancePoolUpdate` added property `properties` + - Model `Job` added property `system_data` + - Model `JobAgent` added property `identity` + - Model `JobAgent` added property `system_data` + - Model `JobAgentUpdate` added property `identity` + - Model `JobAgentUpdate` added property `sku` + - Model `JobCredential` added property `system_data` + - Model `JobExecution` added property `system_data` + - Model `JobStep` added property `system_data` + - Model `JobTargetGroup` added property `system_data` + - Model `JobVersion` added property `system_data` + - Model `LedgerDigestUploads` added property `system_data` + - Model `LocationCapabilities` added property `supported_job_agent_versions` + - Model `LocationCapabilities` added property `is_zone_resilient_provisioning_allowed` + - Model `LongTermRetentionBackup` added property `system_data` + - Model `LongTermRetentionBackupOperationResult` added property `system_data` + - Model `LongTermRetentionPolicy` added property `system_data` + - Model `MaintenanceWindowOptions` added property `system_data` + - Model `MaintenanceWindows` added property `system_data` + - Model `ManagedBackupShortTermRetentionPolicy` added property `system_data` + - Model `ManagedDatabase` added property `system_data` + - Model `ManagedDatabaseRestoreDetailsResult` added property `system_data` + - Model `ManagedDatabaseSecurityAlertPolicy` added property `system_data` + - Enum `ManagedDatabaseStatus` added member `DB_COPYING` + - Enum `ManagedDatabaseStatus` added member `DB_MOVING` + - Enum `ManagedDatabaseStatus` added member `STARTING` + - Enum `ManagedDatabaseStatus` added member `STOPPED` + - Enum `ManagedDatabaseStatus` added member `STOPPING` + - Model `ManagedInstance` added property `system_data` + - Model `ManagedInstanceAdministrator` added property `system_data` + - Model `ManagedInstanceAzureADOnlyAuthentication` added property `system_data` + - Model `ManagedInstanceEditionCapability` added property `is_general_purpose_v2` + - Model `ManagedInstanceEncryptionProtector` added property `system_data` + - Model `ManagedInstanceFamilyCapability` added property `zone_redundant` + - Model `ManagedInstanceKey` added property `system_data` + - Model `ManagedInstanceLongTermRetentionBackup` added property `system_data` + - Model `ManagedInstanceLongTermRetentionPolicy` added property `system_data` + - Model `ManagedInstanceOperation` added property `system_data` + - Model `ManagedInstancePrivateEndpointConnection` added property `system_data` + - Model `ManagedInstancePrivateLink` added property `system_data` + - Model `ManagedInstancePrivateLinkProperties` added property `required_zone_names` + - Model `ManagedInstanceQuery` added property `system_data` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_sizes_in_gb` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_limits_mb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `iops_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `iops_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVulnerabilityAssessment` added property `system_data` + - Model `ManagedTransparentDataEncryption` added property `system_data` + - Enum `OperationMode` added member `EXPORT` + - Enum `OperationMode` added member `IMPORT` + - Model `OutboundFirewallRule` added property `system_data` + - Model `PrivateEndpointConnection` added property `system_data` + - Model `PrivateEndpointConnectionProperties` added property `group_ids` + - Model `PrivateLinkResource` added property `system_data` + - Model `ProxyResource` added property `system_data` + - Model `QueryStatistics` added property `system_data` + - Model `RecommendedAction` added property `system_data` + - Model `RecommendedSensitivityLabelUpdate` added property `system_data` + - Model `RecoverableDatabase` added property `system_data` + - Model `RecoverableManagedDatabase` added property `system_data` + - Model `ReplicationLink` added property `system_data` + - Enum `ReplicationLinkType` added member `STANDBY` + - Model `Resource` added property `system_data` + - Model `RestorableDroppedDatabase` added property `system_data` + - Model `RestorableDroppedManagedDatabase` added property `system_data` + - Model `RestorePoint` added property `system_data` + - Enum `SecondaryType` added member `STANDBY` + - Model `SecurityEvent` added property `system_data` + - Model `SensitivityLabel` added property `system_data` + - Model `SensitivityLabelUpdate` added property `system_data` + - Model `Server` added property `system_data` + - Model `ServerAutomaticTuning` added property `system_data` + - Model `ServerAzureADAdministrator` added property `system_data` + - Model `ServerAzureADOnlyAuthentication` added property `system_data` + - Model `ServerBlobAuditingPolicy` added property `system_data` + - Model `ServerConnectionPolicy` added property `system_data` + - Model `ServerDnsAlias` added property `system_data` + - Model `ServerKey` added property `system_data` + - Model `ServerOperation` added property `system_data` + - Model `ServerTrustGroup` added property `system_data` + - Model `ServerUsage` added property `id` + - Model `ServerUsage` added property `type` + - Model `ServerUsage` added property `system_data` + - Model `ServerVulnerabilityAssessment` added property `system_data` + - Model `ServiceObjectiveCapability` added property `zone_pinning` + - Model `ServiceObjectiveCapability` added property `supported_zones` + - Model `ServiceObjectiveCapability` added property `supported_free_limit_exhaustion_behaviors` + - Model `SqlAgentConfiguration` added property `system_data` + - Enum `StorageCapabilityStorageAccountType` added member `GZRS` + - Enum `StorageKeyType` added member `MANAGED_IDENTITY` + - Model `SubscriptionUsage` added property `system_data` + - Model `SyncAgent` added property `system_data` + - Model `SyncAgentLinkedDatabase` added property `system_data` + - Model `SyncGroup` added property `system_data` + - Model `SyncMember` added property `system_data` + - Model `TdeCertificate` added property `system_data` + - Model `TimeZone` added property `system_data` + - Model `TrackedResource` added property `system_data` + - Model `VirtualCluster` added property `system_data` + - Model `VirtualNetworkRule` added property `system_data` + - Model `VulnerabilityAssessmentScanRecord` added property `system_data` + - Model `WorkloadClassifier` added property `system_data` + - Model `WorkloadGroup` added property `system_data` + - Added enum `AdvancedThreatProtectionName` + - Added model `AdvancedThreatProtectionProperties` + - Added enum `AdvancedThreatProtectionState` + - Added enum `AlwaysEncryptedEnclaveType` + - Added enum `AuthMetadataLookupModes` + - Added enum `AvailabilityZoneType` + - Added enum `BackupStorageAccessTier` + - Added model `Baseline` + - Added model `BaselineAdjustedResult` + - Added enum `BaselineName` + - Added model `BenchmarkReference` + - Added model `CertificateInfo` + - Added model `ChangeLongTermRetentionBackupAccessTierParameters` + - Added enum `CheckNameAvailabilityResourceType` + - Added enum `ClientClassificationSource` + - Added enum `DNSRefreshOperationStatus` + - Added model `DatabaseAdvancedThreatProtection` + - Added model `DatabaseIdentity` + - Added enum `DatabaseIdentityType` + - Added model `DatabaseKey` + - Added enum `DatabaseKeyType` + - Added model `DatabaseSqlVulnerabilityAssessmentBaselineSet` + - Added model `DatabaseSqlVulnerabilityAssessmentBaselineSetProperties` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaseline` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineInput` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineInputProperties` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineListInput` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineListInputProperties` + - Added model `DatabaseSqlVulnerabilityAssessmentRuleBaselineProperties` + - Added model `DatabaseUserIdentity` + - Added enum `DevOpsAuditingSettingsName` + - Added model `DistributedAvailabilityGroup` + - Added model `DistributedAvailabilityGroupDatabase` + - Added model `DistributedAvailabilityGroupProperties` + - Added model `DistributedAvailabilityGroupSetRole` + - Added model `DistributedAvailabilityGroupsFailoverRequest` + - Added enum `DtcName` + - Added model `EndpointCertificate` + - Added model `EndpointCertificateProperties` + - Added model `EndpointDependency` + - Added model `EndpointDetail` + - Added model `ErrorAdditionalInfo` + - Added model `ErrorDetail` + - Added model `ErrorResponse` + - Added enum `ErrorType` + - Added enum `ExternalGovernanceStatus` + - Added enum `FailoverGroupDatabasesSecondaryType` + - Added enum `FailoverModeType` + - Added enum `FailoverType` + - Added enum `FreeLimitExhaustionBehavior` + - Added model `FreeLimitExhaustionBehaviorCapability` + - Added enum `HybridSecondaryUsage` + - Added enum `HybridSecondaryUsageDetected` + - Added model `IPv6FirewallRule` + - Added model `IPv6ServerFirewallRuleProperties` + - Added enum `InaccessibilityReason` + - Added model `InstancePoolOperation` + - Added model `InstancePoolOperationProperties` + - Added enum `InstanceRole` + - Added model `JobAgentEditionCapability` + - Added model `JobAgentIdentity` + - Added enum `JobAgentIdentityType` + - Added model `JobAgentServiceLevelObjectiveCapability` + - Added model `JobAgentUserAssignedIdentity` + - Added model `JobAgentVersionCapability` + - Added model `JobPrivateEndpoint` + - Added model `JobPrivateEndpointProperties` + - Added enum `LinkRole` + - Added model `LogicalDatabaseTransparentDataEncryption` + - Added model `ManagedDatabaseAdvancedThreatProtection` + - Added model `ManagedDatabaseExtendedAccessibilityInfo` + - Added model `ManagedDatabaseMoveDefinition` + - Added model `ManagedDatabaseMoveOperationResult` + - Added model `ManagedDatabaseMoveOperationResultProperties` + - Added model `ManagedDatabaseRestoreDetailsBackupSetProperties` + - Added model `ManagedDatabaseRestoreDetailsUnrestorableFileProperties` + - Added model `ManagedDatabaseStartMoveDefinition` + - Added model `ManagedInstanceAdvancedThreatProtection` + - Added enum `ManagedInstanceDatabaseFormat` + - Added model `ManagedInstanceDtc` + - Added model `ManagedInstanceDtcProperties` + - Added model `ManagedInstanceDtcSecuritySettings` + - Added model `ManagedInstanceDtcTransactionManagerCommunicationSettings` + - Added model `ManagedInstanceValidateAzureKeyVaultEncryptionKeyRequest` + - Added model `ManagedLedgerDigestUploads` + - Added enum `ManagedLedgerDigestUploadsName` + - Added model `ManagedLedgerDigestUploadsProperties` + - Added enum `ManagedLedgerDigestUploadsState` + - Added model `ManagedServerDnsAlias` + - Added model `ManagedServerDnsAliasAcquisition` + - Added model `ManagedServerDnsAliasCreation` + - Added model `ManagedServerDnsAliasProperties` + - Added model `MaxLimitRangeCapability` + - Added enum `MinimalTlsVersion` + - Added enum `MoveOperationMode` + - Added model `NSPConfigAccessRule` + - Added model `NSPConfigAccessRuleProperties` + - Added model `NSPConfigAssociation` + - Added model `NSPConfigNetworkSecurityPerimeterRule` + - Added model `NSPConfigPerimeter` + - Added model `NSPConfigProfile` + - Added model `NSPProvisioningIssue` + - Added model `NSPProvisioningIssueProperties` + - Added model `NetworkSecurityPerimeterConfiguration` + - Added model `NetworkSecurityPerimeterConfigurationProperties` + - Added model `OutboundEnvironmentEndpoint` + - Added model `PerDatabaseAutoPauseDelayTimeRange` + - Added enum `Phase` + - Added model `PhaseDetails` + - Added enum `PricingModel` + - Added model `QueryCheck` + - Added model `RefreshExternalGovernanceStatusOperationResult` + - Added model `RefreshExternalGovernanceStatusOperationResultMI` + - Added model `RefreshExternalGovernanceStatusOperationResultProperties` + - Added model `RefreshExternalGovernanceStatusOperationResultPropertiesMI` + - Added model `Remediation` + - Added enum `ReplicaConnectedState` + - Added enum `ReplicaSynchronizationHealth` + - Added model `ReplicationLinkUpdate` + - Added model `ReplicationLinkUpdateProperties` + - Added enum `ReplicationModeType` + - Added enum `RoleChangeType` + - Added enum `RuleSeverity` + - Added enum `RuleStatus` + - Added enum `RuleType` + - Added model `ScheduleItem` + - Added enum `SecondaryInstanceType` + - Added enum `SeedingModeType` + - Added model `ServerAdvancedThreatProtection` + - Added model `ServerConfigurationOption` + - Added enum `ServerConfigurationOptionName` + - Added model `ServerConfigurationOptionProperties` + - Added enum `ServerCreateMode` + - Added enum `ServerPublicNetworkAccessFlag` + - Added model `ServerTrustCertificate` + - Added model `ServerTrustCertificateProperties` + - Added model `ServicePrincipal` + - Added enum `ServicePrincipalType` + - Added enum `SetLegalHoldImmutability` + - Added model `SqlVulnerabilityAssessment` + - Added enum `SqlVulnerabilityAssessmentName` + - Added model `SqlVulnerabilityAssessmentPolicyProperties` + - Added model `SqlVulnerabilityAssessmentScanError` + - Added model `SqlVulnerabilityAssessmentScanRecord` + - Added model `SqlVulnerabilityAssessmentScanRecordProperties` + - Added model `SqlVulnerabilityAssessmentScanResultProperties` + - Added model `SqlVulnerabilityAssessmentScanResults` + - Added enum `SqlVulnerabilityAssessmentState` + - Added model `StartStopManagedInstanceSchedule` + - Added model `StartStopManagedInstanceScheduleProperties` + - Added enum `StartStopScheduleName` + - Added model `SynapseLinkWorkspace` + - Added model `SynapseLinkWorkspaceInfoProperties` + - Added model `SynapseLinkWorkspaceProperties` + - Added enum `SyncGroupsType` + - Added enum `TimeBasedImmutability` + - Added enum `TimeBasedImmutabilityMode` + - Added model `TransparentDataEncryptionProperties` + - Added enum `TransparentDataEncryptionScanState` + - Added model `UpdateVirtualClusterDnsServersOperation` + - Added model `UpsertManagedServerOperationStepWithEstimatesAndDuration` + - Added enum `UpsertManagedServerOperationStepWithEstimatesAndDurationStatus` + - Added model `VaRule` + - Added model `VirtualClusterDnsServersProperties` + - Added model `ZonePinningCapability` + - Operation group `DatabasesOperations` added parameter `expand` in method `get` + - Operation group `DatabasesOperations` added parameter `filter` in method `get` + - Operation group `FailoverGroupsOperations` added method `begin_try_planned_before_forced_failover` + - Operation group `GeoBackupPoliciesOperations` added method `list` + - Operation group `LedgerDigestUploadsOperations` added method `begin_create_or_update` + - Operation group `LedgerDigestUploadsOperations` added method `begin_disable` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_change_access_tier` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_change_access_tier_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_lock_time_based_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_lock_time_based_immutability_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_legal_hold_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_legal_hold_immutability_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_time_based_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_remove_time_based_immutability_by_resource_group` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_set_legal_hold_immutability` + - Operation group `LongTermRetentionBackupsOperations` added method `begin_set_legal_hold_immutability_by_resource_group` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_resource_group_location` + - Operation group `ManagedDatabaseSensitivityLabelsOperations` added method `list_by_database` + - Operation group `ManagedDatabasesOperations` added method `begin_cancel_move` + - Operation group `ManagedDatabasesOperations` added method `begin_complete_move` + - Operation group `ManagedDatabasesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedDatabasesOperations` added method `begin_start_move` + - Operation group `ManagedInstanceLongTermRetentionPoliciesOperations` added method `begin_delete` + - Operation group `ManagedInstancesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedInstancesOperations` added method `begin_refresh_status` + - Operation group `ManagedInstancesOperations` added method `begin_start` + - Operation group `ManagedInstancesOperations` added method `begin_stop` + - Operation group `ManagedInstancesOperations` added method `begin_validate_azure_key_vault_encryption_key` + - Operation group `ManagedInstancesOperations` added method `list_outbound_network_dependencies_by_managed_instance` + - Operation group `RecoverableDatabasesOperations` added parameter `expand` in method `get` + - Operation group `RecoverableDatabasesOperations` added parameter `filter` in method `get` + - Operation group `ReplicationLinksOperations` added method `begin_create_or_update` + - Operation group `ReplicationLinksOperations` added method `begin_delete` + - Operation group `ReplicationLinksOperations` added method `begin_update` + - Operation group `RestorableDroppedDatabasesOperations` added parameter `expand` in method `get` + - Operation group `RestorableDroppedDatabasesOperations` added parameter `filter` in method `get` + - Operation group `SensitivityLabelsOperations` added method `list_by_database` + - Operation group `ServerConnectionPoliciesOperations` added method `begin_create_or_update` + - Operation group `ServerConnectionPoliciesOperations` added method `list_by_server` + - Operation group `ServersOperations` added method `begin_refresh_status` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_create_or_update` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_resume` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_suspend` + - Operation group `TransparentDataEncryptionsOperations` added method `list_by_database` + - Operation group `VirtualClustersOperations` added method `begin_create_or_update` + - Operation group `VirtualClustersOperations` added method `begin_update_dns_servers` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Deleted or renamed client operation group `SqlManagementClient.server_communication_links` + - Deleted or renamed client operation group `SqlManagementClient.service_objectives` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_activities` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_database_activities` + - Deleted or renamed client operation group `SqlManagementClient.transparent_data_encryption_activities` + - Deleted or renamed client operation group `SqlManagementClient.operations_health` + - Model `Advisor` moved instance variable `advisor_status`, `auto_execute_status`, `auto_execute_status_inherited_from`, `recommendations_status`, `last_checked` and `recommended_actions` under property `properties` whose type is `AdvisorProperties` + - Model `BackupShortTermRetentionPolicy` moved instance variable `retention_days` and `diff_backup_interval_in_hours` under property `properties` whose type is `BackupShortTermRetentionPolicyProperties` + - Model `CopyLongTermRetentionBackupParameters` moved instance variable `target_subscription_id`, `target_resource_group`, `target_server_resource_id`, `target_server_fully_qualified_domain_name`, `target_database_name` and `target_backup_storage_redundancy` under property `properties` whose type is `CopyLongTermRetentionBackupParametersProperties` + - Model `DataMaskingPolicy` moved instance variable `data_masking_state`, `exempt_principals`, `application_principals` and `masking_level` under property `properties` whose type is `DataMaskingPolicyProperties` + - Model `DataMaskingRule` moved instance variable `id_properties_id`, `alias_name`, `rule_state`, `schema_name`, `table_name`, `column_name`, `masking_function`, `number_from`, `number_to`, `prefix_size`, `suffix_size` and `replacement_string` under property `properties` whose type is `DataMaskingRuleProperties` + - Model `DataWarehouseUserActivities` moved instance variable `active_queries_count` under property `properties` whose type is `DataWarehouseUserActivitiesProperties` + - Model `Database` moved instance variable `create_mode`, `collation`, `max_size_bytes`, `sample_name`, `elastic_pool_id`, `source_database_id`, `status`, `database_id`, `creation_date`, `current_service_objective_name`, `requested_service_objective_name`, `default_secondary_location`, `failover_group_id`, `restore_point_in_time`, `source_database_deletion_date`, `recovery_services_recovery_point_id`, `long_term_retention_backup_resource_id`, `recoverable_database_id`, `restorable_dropped_database_id`, `catalog_collation`, `zone_redundant`, `license_type`, `max_log_size_bytes`, `earliest_restore_date`, `read_scale`, `high_availability_replica_count`, `secondary_type`, `current_sku`, `auto_pause_delay`, `current_backup_storage_redundancy`, `requested_backup_storage_redundancy`, `min_capacity`, `paused_date`, `resumed_date`, `maintenance_configuration_id`, `is_ledger_on` and `is_infra_encryption_enabled` under property `properties` whose type is `DatabaseProperties` + - Model `DatabaseAutomaticTuning` moved instance variable `desired_state`, `actual_state` and `options` under property `properties` whose type is `DatabaseAutomaticTuningProperties` + - Model `DatabaseBlobAuditingPolicy` moved instance variable `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `DatabaseBlobAuditingPolicyProperties` + - Model `DatabaseColumn` moved instance variable `column_type`, `temporal_type`, `memory_optimized` and `is_computed` under property `properties` whose type is `DatabaseColumnProperties` + - Model `DatabaseExtensions` moved instance variable `operation_mode`, `storage_key_type`, `storage_key` and `storage_uri` under property `properties` whose type is `DatabaseExtensionsProperties` + - Model `DatabaseOperation` moved instance variable `database_name`, `operation`, `operation_friendly_name`, `percent_complete`, `server_name`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description` and `is_cancellable` under property `properties` whose type is `DatabaseOperationProperties` + - Model `DatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `DatabaseTable` moved instance variable `temporal_type` and `memory_optimized` under property `properties` whose type is `DatabaseTableProperties` + - Model `DatabaseUpdate` moved instance variable `create_mode`, `collation`, `max_size_bytes`, `sample_name`, `elastic_pool_id`, `source_database_id`, `status`, `database_id`, `creation_date`, `current_service_objective_name`, `requested_service_objective_name`, `default_secondary_location`, `failover_group_id`, `restore_point_in_time`, `source_database_deletion_date`, `recovery_services_recovery_point_id`, `long_term_retention_backup_resource_id`, `recoverable_database_id`, `restorable_dropped_database_id`, `catalog_collation`, `zone_redundant`, `license_type`, `max_log_size_bytes`, `earliest_restore_date`, `read_scale`, `high_availability_replica_count`, `secondary_type`, `current_sku`, `auto_pause_delay`, `current_backup_storage_redundancy`, `requested_backup_storage_redundancy`, `min_capacity`, `paused_date`, `resumed_date`, `maintenance_configuration_id`, `is_ledger_on` and `is_infra_encryption_enabled` under property `properties` whose type is `DatabaseUpdateProperties` + - Model `DatabaseUsage` moved instance variable `display_name`, `current_value`, `limit` and `unit` under property `properties` whose type is `DatabaseUsageProperties` + - Model `DatabaseVulnerabilityAssessment` moved instance variable `storage_container_path`, `storage_container_sas_key`, `storage_account_access_key` and `recurring_scans` under property `properties` whose type is `DatabaseVulnerabilityAssessmentProperties` + - Model `DatabaseVulnerabilityAssessmentRuleBaseline` moved instance variable `baseline_results` under property `properties` whose type is `DatabaseVulnerabilityAssessmentRuleBaselineProperties` + - Model `DatabaseVulnerabilityAssessmentScansExport` moved instance variable `exported_report_location` under property `properties` whose type is `DatabaseVulnerabilityAssessmentScanExportProperties` + - Model `DeletedServer` moved instance variable `version`, `deletion_time`, `original_id` and `fully_qualified_domain_name` under property `properties` whose type is `DeletedServerProperties` + - Model `ElasticPool` moved instance variable `state`, `creation_date`, `max_size_bytes`, `per_database_settings`, `zone_redundant`, `license_type` and `maintenance_configuration_id` under property `properties` whose type is `ElasticPoolProperties` + - Model `ElasticPoolOperation` moved instance variable `elastic_pool_name`, `operation`, `operation_friendly_name`, `percent_complete`, `server_name`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description` and `is_cancellable` under property `properties` whose type is `ElasticPoolOperationProperties` + - Model `ElasticPoolUpdate` moved instance variable `max_size_bytes`, `per_database_settings`, `zone_redundant`, `license_type` and `maintenance_configuration_id` under property `properties` whose type is `ElasticPoolUpdateProperties` + - Model `EncryptionProtector` moved instance variable `subregion`, `server_key_name`, `server_key_type`, `uri`, `thumbprint` and `auto_rotation_enabled` under property `properties` whose type is `EncryptionProtectorProperties` + - Model `ExtendedDatabaseBlobAuditingPolicy` moved instance variable `predicate_expression`, `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ExtendedDatabaseBlobAuditingPolicyProperties` + - Model `ExtendedServerBlobAuditingPolicy` moved instance variable `is_devops_audit_enabled`, `predicate_expression`, `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ExtendedServerBlobAuditingPolicyProperties` + - Model `FailoverGroup` moved instance variable `read_write_endpoint`, `read_only_endpoint`, `replication_role`, `replication_state`, `partner_servers` and `databases` under property `properties` whose type is `FailoverGroupProperties` + - Model `FailoverGroupUpdate` moved instance variable `read_write_endpoint`, `read_only_endpoint` and `databases` under property `properties` whose type is `FailoverGroupUpdateProperties` + - Model `FirewallRule` moved instance variable `start_ip_address` and `end_ip_address` under property `properties` whose type is `ServerFirewallRuleProperties` + - Model `FirewallRuleList` renamed its instance variable `values` to `values_property` + - Model `GeoBackupPolicy` moved instance variable `state` and `storage_type` under property `properties` whose type is `GeoBackupPolicyProperties` + - Model `ImportExportExtensionsOperationResult` moved instance variable `request_id`, `request_type`, `last_modified_time`, `server_name`, `database_name`, `status` and `error_message` under property `properties` whose type is `ImportExportExtensionsOperationResultProperties` + - Model `ImportExportOperationResult` moved instance variable `request_id`, `request_type`, `queued_time`, `last_modified_time`, `blob_uri`, `server_name`, `database_name`, `status`, `error_message` and `private_endpoint_connections` under property `properties` whose type is `ImportExportOperationResultProperties` + - Model `InstanceFailoverGroup` moved instance variable `read_write_endpoint`, `read_only_endpoint`, `replication_role`, `replication_state`, `partner_regions` and `managed_instance_pairs` under property `properties` whose type is `InstanceFailoverGroupProperties` + - Model `InstancePool` moved instance variable `subnet_id`, `v_cores` and `license_type` under property `properties` whose type is `InstancePoolProperties` + - Model `Job` moved instance variable `description`, `version` and `schedule` under property `properties` whose type is `JobProperties` + - Model `JobAgent` moved instance variable `database_id` and `state` under property `properties` whose type is `JobAgentProperties` + - Model `JobCredential` moved instance variable `username` and `password` under property `properties` whose type is `JobCredentialProperties` + - Model `JobExecution` moved instance variable `job_version`, `step_name`, `step_id`, `job_execution_id`, `lifecycle`, `provisioning_state`, `create_time`, `start_time`, `end_time`, `current_attempts`, `current_attempt_start_time`, `last_message` and `target` under property `properties` whose type is `JobExecutionProperties` + - Model `JobStep` moved instance variable `step_id`, `target_group`, `credential`, `action`, `output` and `execution_options` under property `properties` whose type is `JobStepProperties` + - Model `JobTargetGroup` moved instance variable `members` under property `properties` whose type is `JobTargetGroupProperties` + - Model `LedgerDigestUploads` moved instance variable `digest_storage_endpoint` and `state` under property `properties` whose type is `LedgerDigestUploadsProperties` + - Model `LongTermRetentionBackup` moved instance variable `server_name`, `server_create_time`, `database_name`, `database_deletion_time`, `backup_time`, `backup_expiration_time`, `backup_storage_redundancy` and `requested_backup_storage_redundancy` under property `properties` whose type is `LongTermRetentionBackupProperties` + - Model `LongTermRetentionBackupOperationResult` moved instance variable `request_id`, `operation_type`, `from_backup_resource_id`, `to_backup_resource_id`, `target_backup_storage_redundancy`, `status` and `message` under property `properties` whose type is `LongTermRetentionOperationResultProperties` + - Model `LongTermRetentionPolicy` moved instance variable `weekly_retention`, `monthly_retention`, `yearly_retention` and `week_of_year` under property `properties` whose type is `LongTermRetentionPolicyProperties` + - Model `MaintenanceWindowOptions` moved instance variable `is_enabled`, `maintenance_window_cycles`, `min_duration_in_minutes`, `default_duration_in_minutes`, `min_cycles`, `time_granularity_in_minutes` and `allow_multiple_maintenance_windows_per_cycle` under property `properties` whose type is `MaintenanceWindowOptionsProperties` + - Model `MaintenanceWindows` moved instance variable `time_ranges` under property `properties` whose type is `MaintenanceWindowsProperties` + - Model `ManagedBackupShortTermRetentionPolicy` moved instance variable `retention_days` under property `properties` whose type is `ManagedBackupShortTermRetentionPolicyProperties` + - Model `ManagedDatabase` moved instance variable `collation`, `status`, `creation_date`, `earliest_restore_point`, `restore_point_in_time`, `default_secondary_location`, `catalog_collation`, `create_mode`, `storage_container_uri`, `source_database_id`, `restorable_dropped_database_id`, `storage_container_sas_token`, `failover_group_id`, `recoverable_database_id`, `long_term_retention_backup_resource_id`, `auto_complete_restore` and `last_backup_name` under property `properties` whose type is `ManagedDatabaseProperties` + - Model `ManagedDatabaseRestoreDetailsResult` moved instance variable `status`, `current_restoring_file_name`, `last_restored_file_name`, `last_restored_file_time`, `percent_completed`, `unrestorable_files`, `number_of_files_detected`, `last_uploaded_file_name`, `last_uploaded_file_time` and `block_reason` under property `properties` whose type is `ManagedDatabaseRestoreDetailsProperties` + - Model `ManagedDatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertPolicyProperties` + - Model `ManagedDatabaseUpdate` moved instance variable `collation`, `status`, `creation_date`, `earliest_restore_point`, `restore_point_in_time`, `default_secondary_location`, `catalog_collation`, `create_mode`, `storage_container_uri`, `source_database_id`, `restorable_dropped_database_id`, `storage_container_sas_token`, `failover_group_id`, `recoverable_database_id`, `long_term_retention_backup_resource_id`, `auto_complete_restore` and `last_backup_name` under property `properties` whose type is `ManagedDatabaseProperties` + - Model `ManagedInstance` moved instance variable `provisioning_state`, `managed_instance_create_mode`, `fully_qualified_domain_name`, `administrator_login`, `administrator_login_password`, `subnet_id`, `state`, `license_type`, `v_cores`, `storage_size_in_gb`, `collation`, `dns_zone`, `dns_zone_partner`, `public_data_endpoint_enabled`, `source_managed_instance_id`, `restore_point_in_time`, `proxy_override`, `timezone_id`, `instance_pool_id`, `maintenance_configuration_id`, `private_endpoint_connections`, `minimal_tls_version`, `storage_account_type`, `zone_redundant`, `primary_user_assigned_identity_id`, `key_id` and `administrators` under property `properties` whose type is `ManagedInstanceProperties` + - Model `ManagedInstanceAdministrator` moved instance variable `administrator_type`, `login`, `sid` and `tenant_id` under property `properties` whose type is `ManagedInstanceAdministratorProperties` + - Model `ManagedInstanceAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `ManagedInstanceAzureADOnlyAuthProperties` + - Model `ManagedInstanceEditionCapability` deleted or renamed its instance variable `zone_redundant` + - Model `ManagedInstanceEncryptionProtector` moved instance variable `server_key_name`, `server_key_type`, `uri`, `thumbprint` and `auto_rotation_enabled` under property `properties` whose type is `ManagedInstanceEncryptionProtectorProperties` + - Model `ManagedInstanceKey` moved instance variable `server_key_type`, `uri`, `thumbprint`, `creation_date` and `auto_rotation_enabled` under property `properties` whose type is `ManagedInstanceKeyProperties` + - Model `ManagedInstanceLongTermRetentionBackup` moved instance variable `managed_instance_name`, `managed_instance_create_time`, `database_name`, `database_deletion_time`, `backup_time`, `backup_expiration_time` and `backup_storage_redundancy` under property `properties` whose type is `ManagedInstanceLongTermRetentionBackupProperties` + - Model `ManagedInstanceLongTermRetentionPolicy` moved instance variable `weekly_retention`, `monthly_retention`, `yearly_retention` and `week_of_year` under property `properties` whose type is `ManagedInstanceLongTermRetentionPolicyProperties` + - Model `ManagedInstanceOperation` moved instance variable `managed_instance_name`, `operation`, `operation_friendly_name`, `percent_complete`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description`, `is_cancellable`, `operation_parameters` and `operation_steps` under property `properties` whose type is `ManagedInstanceOperationProperties` + - Model `ManagedInstancePrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `ManagedInstancePrivateEndpointConnectionProperties` + - Model `ManagedInstanceQuery` moved instance variable `query_text` under property `properties` whose type is `QueryProperties` + - Model `ManagedInstanceUpdate` moved instance variable `provisioning_state`, `managed_instance_create_mode`, `fully_qualified_domain_name`, `administrator_login`, `administrator_login_password`, `subnet_id`, `state`, `license_type`, `v_cores`, `storage_size_in_gb`, `collation`, `dns_zone`, `dns_zone_partner`, `public_data_endpoint_enabled`, `source_managed_instance_id`, `restore_point_in_time`, `proxy_override`, `timezone_id`, `instance_pool_id`, `maintenance_configuration_id`, `private_endpoint_connections`, `minimal_tls_version`, `storage_account_type`, `zone_redundant`, `primary_user_assigned_identity_id`, `key_id` and `administrators` under property `properties` whose type is `ManagedInstanceProperties` + - Model `ManagedInstanceVulnerabilityAssessment` moved instance variable `storage_container_path`, `storage_container_sas_key`, `storage_account_access_key` and `recurring_scans` under property `properties` whose type is `ManagedInstanceVulnerabilityAssessmentProperties` + - Model `ManagedServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `ManagedTransparentDataEncryption` moved instance variable `state` under property `properties` whose type is `ManagedTransparentDataEncryptionProperties` + - Model `OutboundFirewallRule` moved instance variable `provisioning_state` under property `properties` whose type is `OutboundFirewallRuleProperties` + - Model `PrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `PrivateEndpointConnectionProperties` + - Model `QueryStatistics` moved instance variable `database_name`, `query_id`, `start_time`, `end_time` and `intervals` under property `properties` whose type is `QueryStatisticsProperties` + - Model `RecommendedAction` moved instance variable `recommendation_reason`, `valid_since`, `last_refresh`, `state`, `is_executable_action`, `is_revertable_action`, `is_archived_action`, `execute_action_start_time`, `execute_action_duration`, `revert_action_start_time`, `revert_action_duration`, `execute_action_initiated_by`, `execute_action_initiated_time`, `revert_action_initiated_by`, `revert_action_initiated_time`, `score`, `implementation_details`, `error_details`, `estimated_impact`, `observed_impact`, `time_series`, `linked_objects` and `details` under property `properties` whose type is `RecommendedActionProperties` + - Model `RecommendedSensitivityLabelUpdate` moved instance variable `op`, `schema`, `table` and `column` under property `properties` whose type is `RecommendedSensitivityLabelUpdateProperties` + - Model `RecoverableDatabase` moved instance variable `edition`, `service_level_objective`, `elastic_pool_name` and `last_available_backup_date` under property `properties` whose type is `RecoverableDatabaseProperties` + - Model `RecoverableManagedDatabase` moved instance variable `last_available_backup_date` under property `properties` whose type is `RecoverableManagedDatabaseProperties` + - Model `ReplicationLink` moved instance variable `partner_server`, `partner_database`, `partner_location`, `role`, `partner_role`, `replication_mode`, `start_time`, `percent_complete`, `replication_state`, `is_termination_allowed` and `link_type` under property `properties` whose type is `ReplicationLinkProperties` + - Model `RestorableDroppedDatabase` moved instance variable `database_name`, `max_size_bytes`, `elastic_pool_id`, `creation_date`, `deletion_date`, `earliest_restore_date` and `backup_storage_redundancy` under property `properties` whose type is `RestorableDroppedDatabaseProperties` + - Model `RestorableDroppedManagedDatabase` moved instance variable `database_name`, `creation_date`, `deletion_date` and `earliest_restore_date` under property `properties` whose type is `RestorableDroppedManagedDatabaseProperties` + - Model `RestorePoint` moved instance variable `restore_point_type`, `earliest_restore_date`, `restore_point_creation_date` and `restore_point_label` under property `properties` whose type is `RestorePointProperties` + - Model `SecurityEvent` moved instance variable `event_time`, `security_event_type`, `subscription`, `server`, `database`, `client_ip`, `application_name`, `principal_name` and `security_event_sql_injection_additional_properties` under property `properties` whose type is `SecurityEventProperties` + - Model `SensitivityLabel` moved instance variable `schema_name`, `table_name`, `column_name`, `label_name`, `label_id`, `information_type`, `information_type_id`, `is_disabled` and `rank` under property `properties` whose type is `SensitivityLabelProperties` + - Model `SensitivityLabelUpdate` moved instance variable `op`, `schema`, `table`, `column` and `sensitivity_label` under property `properties` whose type is `SensitivityLabelUpdateProperties` + - Model `Server` moved instance variable `administrator_login`, `administrator_login_password`, `version`, `state`, `fully_qualified_domain_name`, `private_endpoint_connections`, `minimal_tls_version`, `public_network_access`, `workspace_feature`, `primary_user_assigned_identity_id`, `federated_client_id`, `key_id`, `administrators` and `restrict_outbound_network_access` under property `properties` whose type is `ServerProperties` + - Model `ServerAutomaticTuning` moved instance variable `desired_state`, `actual_state` and `options` under property `properties` whose type is `AutomaticTuningServerProperties` + - Model `ServerAzureADAdministrator` moved instance variable `administrator_type`, `login`, `sid`, `tenant_id` and `azure_ad_only_authentication` under property `properties` whose type is `AdministratorProperties` + - Model `ServerAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `AzureADOnlyAuthProperties` + - Model `ServerBlobAuditingPolicy` moved instance variable `is_devops_audit_enabled`, `retention_days`, `audit_actions_and_groups`, `is_storage_secondary_key_in_use`, `is_azure_monitor_target_enabled`, `queue_delay_ms`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ServerBlobAuditingPolicyProperties` + - Model `ServerConnectionPolicy` moved instance variable `connection_type` under property `properties` whose type is `ServerConnectionPolicyProperties` + - Model `ServerDevOpsAuditingSettings` moved instance variable `is_azure_monitor_target_enabled`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ServerDevOpsAuditSettingsProperties` + - Model `ServerDnsAlias` moved instance variable `azure_dns_record` under property `properties` whose type is `ServerDnsAliasProperties` + - Model `ServerKey` moved instance variable `subregion`, `server_key_type`, `uri`, `thumbprint`, `creation_date` and `auto_rotation_enabled` under property `properties` whose type is `ServerKeyProperties` + - Model `ServerOperation` moved instance variable `operation`, `operation_friendly_name`, `percent_complete`, `server_name`, `start_time`, `state`, `error_code`, `error_description`, `error_severity`, `is_user_error`, `estimated_completion_time`, `description` and `is_cancellable` under property `properties` whose type is `ServerOperationProperties` + - Model `ServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `ServerTrustGroup` moved instance variable `group_members` and `trust_scopes` under property `properties` whose type is `ServerTrustGroupProperties` + - Model `ServerUpdate` moved instance variable `administrator_login`, `administrator_login_password`, `version`, `state`, `fully_qualified_domain_name`, `private_endpoint_connections`, `minimal_tls_version`, `public_network_access`, `workspace_feature`, `primary_user_assigned_identity_id`, `federated_client_id`, `key_id`, `administrators` and `restrict_outbound_network_access` under property `properties` whose type is `ServerProperties` + - Model `ServerUsage` moved instance variable `resource_name`, `display_name`, `current_value`, `limit`, `unit` and `next_reset_time` under property `properties` whose type is `ServerUsageProperties` + - Model `ServerVulnerabilityAssessment` moved instance variable `storage_container_path`, `storage_container_sas_key`, `storage_account_access_key` and `recurring_scans` under property `properties` whose type is `ServerVulnerabilityAssessmentProperties` + - Model `SqlAgentConfiguration` moved instance variable `state` under property `properties` whose type is `SqlAgentConfigurationProperties` + - Model `SubscriptionUsage` moved instance variable `display_name`, `current_value`, `limit` and `unit` under property `properties` whose type is `SubscriptionUsageProperties` + - Model `SyncAgent` moved instance variable `name_properties_name`, `sync_database_id`, `last_alive_time`, `state`, `is_up_to_date`, `expiry_time` and `version` under property `properties` whose type is `SyncAgentProperties` + - Model `SyncAgentLinkedDatabase` moved instance variable `database_type`, `database_id`, `description`, `server_name`, `database_name` and `user_name` under property `properties` whose type is `SyncAgentLinkedDatabaseProperties` + - Model `SyncGroup` moved instance variable `interval`, `last_sync_time`, `conflict_resolution_policy`, `sync_database_id`, `hub_database_user_name`, `hub_database_password`, `sync_state`, `schema`, `enable_conflict_logging`, `conflict_logging_retention_in_days`, `use_private_link_connection` and `private_endpoint_name` under property `properties` whose type is `SyncGroupProperties` + - Model `SyncMember` moved instance variable `database_type`, `sync_agent_id`, `sql_server_database_id`, `sync_member_azure_database_resource_id`, `use_private_link_connection`, `private_endpoint_name`, `server_name`, `database_name`, `user_name`, `password`, `sync_direction` and `sync_state` under property `properties` whose type is `SyncMemberProperties` + - Model `TdeCertificate` moved instance variable `private_blob` and `cert_password` under property `properties` whose type is `TdeCertificateProperties` + - Model `TimeZone` moved instance variable `time_zone_id` and `display_name` under property `properties` whose type is `TimeZoneProperties` + - Model `UpdateLongTermRetentionBackupParameters` moved instance variable `requested_backup_storage_redundancy` under property `properties` whose type is `UpdateLongTermRetentionBackupParametersProperties` + - Model `VirtualCluster` moved instance variable `subnet_id`, `family`, `child_resources` and `maintenance_configuration_id` under property `properties` whose type is `VirtualClusterProperties` + - Model `VirtualClusterUpdate` moved instance variable `subnet_id`, `family`, `child_resources` and `maintenance_configuration_id` under property `properties` whose type is `VirtualClusterProperties` + - Model `VirtualNetworkRule` moved instance variable `virtual_network_subnet_id`, `ignore_missing_vnet_service_endpoint` and `state` under property `properties` whose type is `VirtualNetworkRuleProperties` + - Model `VulnerabilityAssessmentScanRecord` moved instance variable `scan_id`, `trigger_type`, `state`, `start_time`, `end_time`, `errors`, `storage_container_path` and `number_of_failed_security_checks` under property `properties` whose type is `VulnerabilityAssessmentScanRecordProperties` + - Model `WorkloadClassifier` moved instance variable `member_name`, `label`, `context`, `start_time`, `end_time` and `importance` under property `properties` whose type is `WorkloadClassifierProperties` + - Model `WorkloadGroup` moved instance variable `min_resource_percent`, `max_resource_percent`, `min_resource_percent_per_request`, `max_resource_percent_per_request`, `importance` and `query_execution_timeout` under property `properties` whose type is `WorkloadGroupProperties` + - Deleted or renamed model `CurrentBackupStorageRedundancy` + - Deleted or renamed model `DnsRefreshConfigurationPropertiesStatus` + - Deleted or renamed model `ElasticPoolActivity` + - Deleted or renamed model `ElasticPoolDatabaseActivity` + - Deleted or renamed model `Enum77` + - Deleted or renamed model `ManagedInstancePropertiesProvisioningState` + - Deleted or renamed model `ManagedInstanceQueryStatistics` + - Deleted or renamed model `Metric` + - Deleted or renamed model `MetricAvailability` + - Deleted or renamed model `MetricDefinition` + - Deleted or renamed model `MetricName` + - Deleted or renamed model `MetricValue` + - Deleted or renamed model `OperationImpact` + - Deleted or renamed model `OperationsHealth` + - Deleted or renamed model `PrimaryAggregationType` + - Deleted or renamed model `RequestedBackupStorageRedundancy` + - Deleted or renamed model `RestorableDroppedDatabasePropertiesBackupStorageRedundancy` + - Deleted or renamed model `SecurityAlertPolicyNameAutoGenerated` + - Deleted or renamed model `SecurityEventsFilterParameters` + - Deleted or renamed model `ServerCommunicationLink` + - Deleted or renamed model `ServiceObjective` + - Deleted or renamed model `ServiceObjectiveName` + - Deleted or renamed model `SloUsageMetric` + - Deleted or renamed model `StorageAccountType` + - Deleted or renamed model `TargetBackupStorageRedundancy` + - Deleted or renamed model `TransparentDataEncryption` + - Deleted or renamed model `TransparentDataEncryptionActivity` + - Deleted or renamed model `TransparentDataEncryptionActivityStatus` + - Deleted or renamed model `TransparentDataEncryptionStatus` + - Deleted or renamed model `UnitDefinitionType` + - Deleted or renamed model `UnitType` + - Deleted or renamed model `UnlinkParameters` + - Deleted or renamed model `UpdateManagedInstanceDnsServersOperation` + - Deleted or renamed model `UpsertManagedServerOperationStep` + - Deleted or renamed model `UpsertManagedServerOperationStepStatus` + - Method `CapabilitiesOperations.list_by_location` changed its parameter `include` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseAdvisorsOperations.list_by_database` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.list_by_server` changed its parameter `skip_token` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `DatabasesOperations.list_metric_definitions` + - Deleted or renamed method `DatabasesOperations.list_metrics` + - Deleted or renamed method `ElasticPoolsOperations.list_metric_definitions` + - Deleted or renamed method `ElasticPoolsOperations.list_metrics` + - Deleted or renamed method `GeoBackupPoliciesOperations.list_by_database` + - Method `JobExecutionsOperations.list_by_agent` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobExecutionsOperations.list_by_job` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobStepExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_step` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `LedgerDigestUploadsOperations.create_or_update` + - Deleted or renamed method `LedgerDigestUploadsOperations.disable` + - Method `LongTermRetentionBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowOptionsOperations.get` changed its parameter `maintenance_window_options_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.create_or_update` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.get` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseQueriesOperations.list_by_query` changed its parameter `start_time`/`end_time`/`interval` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSecurityEventsOperations.list_by_database` changed its parameter `skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_instance_pool` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_managed_instance` changed its parameter `number_of_queries`/`databases`/`start_time`/`end_time`/`interval`/`aggregation_function`/`observation_metric` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `OutboundFirewallRulesOperations.begin_create_or_update` deleted or renamed its parameter `parameters` of kind `positional_or_keyword` + - Deleted or renamed method `ReplicationLinksOperations.begin_unlink` + - Deleted or renamed method `ReplicationLinksOperations.delete` + - Method `SensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `SensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ServerAdvisorsOperations.list_by_server` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `ServerConnectionPoliciesOperations.create_or_update` + - Method `ServersOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `SyncGroupsOperations.list_logs` changed its parameter `start_time`/`end_time`/`type`/`continuation_token_parameter` from `positional_or_keyword` to `keyword_only` + - Method `TransparentDataEncryptionsOperations.get` renamed its parameter `transparent_data_encryption_name` to `tde_name` + - Deleted or renamed method `TransparentDataEncryptionsOperations.create_or_update` + - Method `UsagesOperations.list_by_instance_pool` changed its parameter `expand_children` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `VirtualClustersOperations.update_dns_servers` + - Method `BackupShortTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.BackupShortTermRetentionPolicyListResult]` to `ItemPaged[_models.BackupShortTermRetentionPolicy]` + - Method `DataMaskingRulesOperations.list_by_database` changed return type from `Iterable[_models.DataMaskingRuleListResult]` to `ItemPaged[_models.DataMaskingRule]` + - Method `DataWarehouseUserActivitiesOperations.list_by_database` changed return type from `Iterable[_models.DataWarehouseUserActivitiesListResult]` to `ItemPaged[_models.DataWarehouseUserActivities]` + - Method `DatabaseBlobAuditingPoliciesOperations.list_by_database` changed return type from `Iterable[_models.DatabaseBlobAuditingPolicyListResult]` to `ItemPaged[_models.DatabaseBlobAuditingPolicy]` + - Method `DatabaseColumnsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `DatabaseColumnsOperations.list_by_table` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `DatabaseExtensionsOperations.list_by_database` changed return type from `Iterable[_models.ImportExportExtensionsOperationListResult]` to `ItemPaged[_models.ImportExportExtensionsOperationResult]` + - Method `DatabaseOperationsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseOperationListResult]` to `ItemPaged[_models.DatabaseOperation]` + - Method `DatabaseSchemasOperations.list_by_database` changed return type from `Iterable[_models.DatabaseSchemaListResult]` to `ItemPaged[_models.DatabaseSchema]` + - Method `DatabaseSecurityAlertPoliciesOperations.list_by_database` changed return type from `Iterable[_models.DatabaseSecurityAlertListResult]` to `ItemPaged[_models.DatabaseSecurityAlertPolicy]` + - Method `DatabaseTablesOperations.list_by_schema` changed return type from `Iterable[_models.DatabaseTableListResult]` to `ItemPaged[_models.DatabaseTable]` + - Method `DatabaseUsagesOperations.list_by_database` changed return type from `Iterable[_models.DatabaseUsageListResult]` to `ItemPaged[_models.DatabaseUsage]` + - Method `DatabaseVulnerabilityAssessmentScansOperations.list_by_database` changed return type from `Iterable[_models.VulnerabilityAssessmentScanRecordListResult]` to `ItemPaged[_models.VulnerabilityAssessmentScanRecord]` + - Method `DatabaseVulnerabilityAssessmentsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseVulnerabilityAssessmentListResult]` to `ItemPaged[_models.DatabaseVulnerabilityAssessment]` + - Method `DatabasesOperations.list_by_elastic_pool` changed return type from `Iterable[_models.DatabaseListResult]` to `ItemPaged[_models.Database]` + - Method `DatabasesOperations.list_by_server` changed return type from `Iterable[_models.DatabaseListResult]` to `ItemPaged[_models.Database]` + - Method `DatabasesOperations.list_inaccessible_by_server` changed return type from `Iterable[_models.DatabaseListResult]` to `ItemPaged[_models.Database]` + - Method `DeletedServersOperations.list` changed return type from `Iterable[_models.DeletedServerListResult]` to `ItemPaged[_models.DeletedServer]` + - Method `DeletedServersOperations.list_by_location` changed return type from `Iterable[_models.DeletedServerListResult]` to `ItemPaged[_models.DeletedServer]` + - Method `ElasticPoolOperationsOperations.list_by_elastic_pool` changed return type from `Iterable[_models.ElasticPoolOperationListResult]` to `ItemPaged[_models.ElasticPoolOperation]` + - Method `ElasticPoolsOperations.list_by_server` changed return type from `Iterable[_models.ElasticPoolListResult]` to `ItemPaged[_models.ElasticPool]` + - Method `EncryptionProtectorsOperations.list_by_server` changed return type from `Iterable[_models.EncryptionProtectorListResult]` to `ItemPaged[_models.EncryptionProtector]` + - Method `ExtendedDatabaseBlobAuditingPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ExtendedDatabaseBlobAuditingPolicyListResult]` to `ItemPaged[_models.ExtendedDatabaseBlobAuditingPolicy]` + - Method `ExtendedServerBlobAuditingPoliciesOperations.list_by_server` changed return type from `Iterable[_models.ExtendedServerBlobAuditingPolicyListResult]` to `ItemPaged[_models.ExtendedServerBlobAuditingPolicy]` + - Method `FailoverGroupsOperations.list_by_server` changed return type from `Iterable[_models.FailoverGroupListResult]` to `ItemPaged[_models.FailoverGroup]` + - Method `FirewallRulesOperations.list_by_server` changed return type from `Iterable[_models.FirewallRuleListResult]` to `ItemPaged[_models.FirewallRule]` + - Method `InstanceFailoverGroupsOperations.list_by_location` changed return type from `Iterable[_models.InstanceFailoverGroupListResult]` to `ItemPaged[_models.InstanceFailoverGroup]` + - Method `InstancePoolsOperations.list` changed return type from `Iterable[_models.InstancePoolListResult]` to `ItemPaged[_models.InstancePool]` + - Method `InstancePoolsOperations.list_by_resource_group` changed return type from `Iterable[_models.InstancePoolListResult]` to `ItemPaged[_models.InstancePool]` + - Method `JobAgentsOperations.list_by_server` changed return type from `Iterable[_models.JobAgentListResult]` to `ItemPaged[_models.JobAgent]` + - Method `JobCredentialsOperations.list_by_agent` changed return type from `Iterable[_models.JobCredentialListResult]` to `ItemPaged[_models.JobCredential]` + - Method `JobExecutionsOperations.list_by_agent` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobExecutionsOperations.list_by_job` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobStepExecutionsOperations.list_by_job_execution` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobStepsOperations.list_by_job` changed return type from `Iterable[_models.JobStepListResult]` to `ItemPaged[_models.JobStep]` + - Method `JobStepsOperations.list_by_version` changed return type from `Iterable[_models.JobStepListResult]` to `ItemPaged[_models.JobStep]` + - Method `JobTargetExecutionsOperations.list_by_job_execution` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobTargetExecutionsOperations.list_by_step` changed return type from `Iterable[_models.JobExecutionListResult]` to `ItemPaged[_models.JobExecution]` + - Method `JobTargetGroupsOperations.list_by_agent` changed return type from `Iterable[_models.JobTargetGroupListResult]` to `ItemPaged[_models.JobTargetGroup]` + - Method `JobVersionsOperations.list_by_job` changed return type from `Iterable[_models.JobVersionListResult]` to `ItemPaged[_models.JobVersion]` + - Method `JobsOperations.list_by_agent` changed return type from `Iterable[_models.JobListResult]` to `ItemPaged[_models.Job]` + - Method `LedgerDigestUploadsOperations.list_by_database` changed return type from `Iterable[_models.LedgerDigestUploadsListResult]` to `ItemPaged[_models.LedgerDigestUploads]` + - Method `LongTermRetentionBackupsOperations.list_by_database` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_location` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_database` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_location` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_server` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionBackupsOperations.list_by_server` changed return type from `Iterable[_models.LongTermRetentionBackupListResult]` to `ItemPaged[_models.LongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_database` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_location` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_database` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_instance` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionBackupListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionBackup]` + - Method `LongTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.LongTermRetentionPolicyListResult]` to `ItemPaged[_models.LongTermRetentionPolicy]` + - Method `ManagedBackupShortTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ManagedBackupShortTermRetentionPolicyListResult]` to `ItemPaged[_models.ManagedBackupShortTermRetentionPolicy]` + - Method `ManagedDatabaseColumnsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `ManagedDatabaseColumnsOperations.list_by_table` changed return type from `Iterable[_models.DatabaseColumnListResult]` to `ItemPaged[_models.DatabaseColumn]` + - Method `ManagedDatabaseQueriesOperations.list_by_query` changed return type from `Iterable[_models.ManagedInstanceQueryStatistics]` to `ItemPaged[_models.QueryStatistics]` + - Method `ManagedDatabaseSchemasOperations.list_by_database` changed return type from `Iterable[_models.DatabaseSchemaListResult]` to `ItemPaged[_models.DatabaseSchema]` + - Method `ManagedDatabaseSecurityAlertPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ManagedDatabaseSecurityAlertPolicyListResult]` to `ItemPaged[_models.ManagedDatabaseSecurityAlertPolicy]` + - Method `ManagedDatabaseSecurityEventsOperations.list_by_database` changed return type from `Iterable[_models.SecurityEventCollection]` to `ItemPaged[_models.SecurityEvent]` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_current_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `ManagedDatabaseTablesOperations.list_by_schema` changed return type from `Iterable[_models.DatabaseTableListResult]` to `ItemPaged[_models.DatabaseTable]` + - Method `ManagedDatabaseTransparentDataEncryptionOperations.list_by_database` changed return type from `Iterable[_models.ManagedTransparentDataEncryptionListResult]` to `ItemPaged[_models.ManagedTransparentDataEncryption]` + - Method `ManagedDatabaseVulnerabilityAssessmentScansOperations.list_by_database` changed return type from `Iterable[_models.VulnerabilityAssessmentScanRecordListResult]` to `ItemPaged[_models.VulnerabilityAssessmentScanRecord]` + - Method `ManagedDatabaseVulnerabilityAssessmentsOperations.list_by_database` changed return type from `Iterable[_models.DatabaseVulnerabilityAssessmentListResult]` to `ItemPaged[_models.DatabaseVulnerabilityAssessment]` + - Method `ManagedDatabasesOperations.list_by_instance` changed return type from `Iterable[_models.ManagedDatabaseListResult]` to `ItemPaged[_models.ManagedDatabase]` + - Method `ManagedDatabasesOperations.list_inaccessible_by_instance` changed return type from `Iterable[_models.ManagedDatabaseListResult]` to `ItemPaged[_models.ManagedDatabase]` + - Method `ManagedInstanceAdministratorsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceAdministratorListResult]` to `ItemPaged[_models.ManagedInstanceAdministrator]` + - Method `ManagedInstanceAzureADOnlyAuthenticationsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceAzureADOnlyAuthListResult]` to `ItemPaged[_models.ManagedInstanceAzureADOnlyAuthentication]` + - Method `ManagedInstanceEncryptionProtectorsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceEncryptionProtectorListResult]` to `ItemPaged[_models.ManagedInstanceEncryptionProtector]` + - Method `ManagedInstanceKeysOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceKeyListResult]` to `ItemPaged[_models.ManagedInstanceKey]` + - Method `ManagedInstanceLongTermRetentionPoliciesOperations.list_by_database` changed return type from `Iterable[_models.ManagedInstanceLongTermRetentionPolicyListResult]` to `ItemPaged[_models.ManagedInstanceLongTermRetentionPolicy]` + - Method `ManagedInstanceOperationsOperations.list_by_managed_instance` changed return type from `Iterable[_models.ManagedInstanceOperationListResult]` to `ItemPaged[_models.ManagedInstanceOperation]` + - Method `ManagedInstancePrivateEndpointConnectionsOperations.list_by_managed_instance` changed return type from `Iterable[_models.ManagedInstancePrivateEndpointConnectionListResult]` to `ItemPaged[_models.ManagedInstancePrivateEndpointConnection]` + - Method `ManagedInstancePrivateLinkResourcesOperations.list_by_managed_instance` changed return type from `Iterable[_models.ManagedInstancePrivateLinkListResult]` to `ItemPaged[_models.ManagedInstancePrivateLink]` + - Method `ManagedInstanceVulnerabilityAssessmentsOperations.list_by_instance` changed return type from `Iterable[_models.ManagedInstanceVulnerabilityAssessmentListResult]` to `ItemPaged[_models.ManagedInstanceVulnerabilityAssessment]` + - Method `ManagedInstancesOperations.list` changed return type from `Iterable[_models.ManagedInstanceListResult]` to `ItemPaged[_models.ManagedInstance]` + - Method `ManagedInstancesOperations.list_by_instance_pool` changed return type from `Iterable[_models.ManagedInstanceListResult]` to `ItemPaged[_models.ManagedInstance]` + - Method `ManagedInstancesOperations.list_by_managed_instance` changed return type from `Iterable[_models.TopQueriesListResult]` to `ItemPaged[_models.TopQueries]` + - Method `ManagedInstancesOperations.list_by_resource_group` changed return type from `Iterable[_models.ManagedInstanceListResult]` to `ItemPaged[_models.ManagedInstance]` + - Method `ManagedRestorableDroppedDatabaseBackupShortTermRetentionPoliciesOperations.list_by_restorable_dropped_database` changed return type from `Iterable[_models.ManagedBackupShortTermRetentionPolicyListResult]` to `ItemPaged[_models.ManagedBackupShortTermRetentionPolicy]` + - Method `ManagedServerSecurityAlertPoliciesOperations.list_by_instance` changed return type from `Iterable[_models.ManagedServerSecurityAlertPolicyListResult]` to `ItemPaged[_models.ManagedServerSecurityAlertPolicy]` + - Method `Operations.list` changed return type from `Iterable[_models.OperationListResult]` to `ItemPaged[_models.Operation]` + - Method `OutboundFirewallRulesOperations.list_by_server` changed return type from `Iterable[_models.OutboundFirewallRuleListResult]` to `ItemPaged[_models.OutboundFirewallRule]` + - Method `PrivateEndpointConnectionsOperations.list_by_server` changed return type from `Iterable[_models.PrivateEndpointConnectionListResult]` to `ItemPaged[_models.PrivateEndpointConnection]` + - Method `PrivateLinkResourcesOperations.list_by_server` changed return type from `Iterable[_models.PrivateLinkResourceListResult]` to `ItemPaged[_models.PrivateLinkResource]` + - Method `RecoverableDatabasesOperations.list_by_server` changed return type from `Iterable[_models.RecoverableDatabaseListResult]` to `ItemPaged[_models.RecoverableDatabase]` + - Method `RecoverableManagedDatabasesOperations.list_by_instance` changed return type from `Iterable[_models.RecoverableManagedDatabaseListResult]` to `ItemPaged[_models.RecoverableManagedDatabase]` + - Method `ReplicationLinksOperations.begin_failover` changed return type from `LROPoller[None]` to `LROPoller[ReplicationLink]` + - Method `ReplicationLinksOperations.begin_failover_allow_data_loss` changed return type from `LROPoller[None]` to `LROPoller[ReplicationLink]` + - Method `ReplicationLinksOperations.list_by_database` changed return type from `Iterable[_models.ReplicationLinkListResult]` to `ItemPaged[_models.ReplicationLink]` + - Method `ReplicationLinksOperations.list_by_server` changed return type from `Iterable[_models.ReplicationLinkListResult]` to `ItemPaged[_models.ReplicationLink]` + - Method `RestorableDroppedDatabasesOperations.list_by_server` changed return type from `Iterable[_models.RestorableDroppedDatabaseListResult]` to `ItemPaged[_models.RestorableDroppedDatabase]` + - Method `RestorableDroppedManagedDatabasesOperations.list_by_instance` changed return type from `Iterable[_models.RestorableDroppedManagedDatabaseListResult]` to `ItemPaged[_models.RestorableDroppedManagedDatabase]` + - Method `RestorePointsOperations.list_by_database` changed return type from `Iterable[_models.RestorePointListResult]` to `ItemPaged[_models.RestorePoint]` + - Method `SensitivityLabelsOperations.list_current_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `SensitivityLabelsOperations.list_recommended_by_database` changed return type from `Iterable[_models.SensitivityLabelListResult]` to `ItemPaged[_models.SensitivityLabel]` + - Method `ServerAzureADAdministratorsOperations.list_by_server` changed return type from `Iterable[_models.AdministratorListResult]` to `ItemPaged[_models.ServerAzureADAdministrator]` + - Method `ServerAzureADOnlyAuthenticationsOperations.list_by_server` changed return type from `Iterable[_models.AzureADOnlyAuthListResult]` to `ItemPaged[_models.ServerAzureADOnlyAuthentication]` + - Method `ServerBlobAuditingPoliciesOperations.list_by_server` changed return type from `Iterable[_models.ServerBlobAuditingPolicyListResult]` to `ItemPaged[_models.ServerBlobAuditingPolicy]` + - Method `ServerDevOpsAuditSettingsOperations.list_by_server` changed return type from `Iterable[_models.ServerDevOpsAuditSettingsListResult]` to `ItemPaged[_models.ServerDevOpsAuditingSettings]` + - Method `ServerDnsAliasesOperations.list_by_server` changed return type from `Iterable[_models.ServerDnsAliasListResult]` to `ItemPaged[_models.ServerDnsAlias]` + - Method `ServerKeysOperations.list_by_server` changed return type from `Iterable[_models.ServerKeyListResult]` to `ItemPaged[_models.ServerKey]` + - Method `ServerOperationsOperations.list_by_server` changed return type from `Iterable[_models.ServerOperationListResult]` to `ItemPaged[_models.ServerOperation]` + - Method `ServerSecurityAlertPoliciesOperations.list_by_server` changed return type from `Iterable[_models.LogicalServerSecurityAlertPolicyListResult]` to `ItemPaged[_models.ServerSecurityAlertPolicy]` + - Method `ServerTrustGroupsOperations.list_by_instance` changed return type from `Iterable[_models.ServerTrustGroupListResult]` to `ItemPaged[_models.ServerTrustGroup]` + - Method `ServerTrustGroupsOperations.list_by_location` changed return type from `Iterable[_models.ServerTrustGroupListResult]` to `ItemPaged[_models.ServerTrustGroup]` + - Method `ServerUsagesOperations.list_by_server` changed return type from `Iterable[_models.ServerUsageListResult]` to `ItemPaged[_models.ServerUsage]` + - Method `ServerVulnerabilityAssessmentsOperations.list_by_server` changed return type from `Iterable[_models.ServerVulnerabilityAssessmentListResult]` to `ItemPaged[_models.ServerVulnerabilityAssessment]` + - Method `ServersOperations.list` changed return type from `Iterable[_models.ServerListResult]` to `ItemPaged[_models.Server]` + - Method `ServersOperations.list_by_resource_group` changed return type from `Iterable[_models.ServerListResult]` to `ItemPaged[_models.Server]` + - Method `SubscriptionUsagesOperations.list_by_location` changed return type from `Iterable[_models.SubscriptionUsageListResult]` to `ItemPaged[_models.SubscriptionUsage]` + - Method `SyncAgentsOperations.list_by_server` changed return type from `Iterable[_models.SyncAgentListResult]` to `ItemPaged[_models.SyncAgent]` + - Method `SyncAgentsOperations.list_linked_databases` changed return type from `Iterable[_models.SyncAgentLinkedDatabaseListResult]` to `ItemPaged[_models.SyncAgentLinkedDatabase]` + - Method `SyncGroupsOperations.list_by_database` changed return type from `Iterable[_models.SyncGroupListResult]` to `ItemPaged[_models.SyncGroup]` + - Method `SyncGroupsOperations.list_hub_schemas` changed return type from `Iterable[_models.SyncFullSchemaPropertiesListResult]` to `ItemPaged[_models.SyncFullSchemaProperties]` + - Method `SyncGroupsOperations.list_logs` changed return type from `Iterable[_models.SyncGroupLogListResult]` to `ItemPaged[_models.SyncGroupLogProperties]` + - Method `SyncGroupsOperations.list_sync_database_ids` changed return type from `Iterable[_models.SyncDatabaseIdListResult]` to `ItemPaged[_models.SyncDatabaseIdProperties]` + - Method `SyncMembersOperations.list_by_sync_group` changed return type from `Iterable[_models.SyncMemberListResult]` to `ItemPaged[_models.SyncMember]` + - Method `SyncMembersOperations.list_member_schemas` changed return type from `Iterable[_models.SyncFullSchemaPropertiesListResult]` to `ItemPaged[_models.SyncFullSchemaProperties]` + - Method `TimeZonesOperations.list_by_location` changed return type from `Iterable[_models.TimeZoneListResult]` to `ItemPaged[_models.TimeZone]` + - Method `TransparentDataEncryptionsOperations.get` changed return type from `_models.TransparentDataEncryption` to `LogicalDatabaseTransparentDataEncryption` + - Method `UsagesOperations.list_by_instance_pool` changed return type from `Iterable[_models.UsageListResult]` to `ItemPaged[_models.Usage]` + - Method `VirtualClustersOperations.list` changed return type from `Iterable[_models.VirtualClusterListResult]` to `ItemPaged[_models.VirtualCluster]` + - Method `VirtualClustersOperations.list_by_resource_group` changed return type from `Iterable[_models.VirtualClusterListResult]` to `ItemPaged[_models.VirtualCluster]` + - Method `VirtualNetworkRulesOperations.list_by_server` changed return type from `Iterable[_models.VirtualNetworkRuleListResult]` to `ItemPaged[_models.VirtualNetworkRule]` + - Method `WorkloadClassifiersOperations.list_by_workload_group` changed return type from `Iterable[_models.WorkloadClassifierListResult]` to `ItemPaged[_models.WorkloadClassifier]` + - Method `WorkloadGroupsOperations.list_by_database` changed return type from `Iterable[_models.WorkloadGroupListResult]` to `ItemPaged[_models.WorkloadGroup]` + +### Other Changes + + - Deleted model `AdministratorListResult`/`AzureADOnlyAuthListResult`/`BackupShortTermRetentionPolicyListResult`/`DataMaskingRuleListResult`/`DataWarehouseUserActivitiesListResult`/`DatabaseBlobAuditingPolicyListResult`/`DatabaseColumnListResult`/`DatabaseListResult`/`DatabaseOperationListResult`/`DatabaseSchemaListResult`/`DatabaseSecurityAlertListResult`/`DatabaseTableListResult`/`DatabaseUsageListResult`/`DatabaseVulnerabilityAssessmentListResult`/`DeletedServerListResult`/`ElasticPoolActivityListResult`/`ElasticPoolDatabaseActivityListResult`/`ElasticPoolListResult`/`ElasticPoolOperationListResult`/`EncryptionProtectorListResult`/`ExtendedDatabaseBlobAuditingPolicyListResult`/`ExtendedServerBlobAuditingPolicyListResult`/`FailoverGroupListResult`/`FirewallRuleListResult`/`GeoBackupPolicyListResult`/`ImportExportExtensionsOperationListResult`/`InstanceFailoverGroupListResult`/`InstancePoolListResult`/`JobAgentListResult`/`JobCredentialListResult`/`JobExecutionListResult`/`JobListResult`/`JobStepListResult`/`JobTargetGroupListResult`/`JobVersionListResult`/`LedgerDigestUploadsListResult`/`LogicalServerSecurityAlertPolicyListResult`/`LongTermRetentionBackupListResult`/`LongTermRetentionPolicyListResult`/`ManagedBackupShortTermRetentionPolicyListResult`/`ManagedDatabaseListResult`/`ManagedDatabaseSecurityAlertPolicyListResult`/`ManagedInstanceAdministratorListResult`/`ManagedInstanceAzureADOnlyAuthListResult`/`ManagedInstanceEncryptionProtectorListResult`/`ManagedInstanceKeyListResult`/`ManagedInstanceListResult`/`ManagedInstanceLongTermRetentionBackupListResult`/`ManagedInstanceLongTermRetentionPolicyListResult`/`ManagedInstanceOperationListResult`/`ManagedInstancePrivateEndpointConnectionListResult`/`ManagedInstancePrivateLinkListResult`/`ManagedInstanceVulnerabilityAssessmentListResult`/`ManagedServerSecurityAlertPolicyListResult`/`ManagedTransparentDataEncryptionListResult`/`MetricDefinitionListResult`/`MetricListResult`/`OperationListResult`/`OperationsHealthListResult`/`OutboundFirewallRuleListResult`/`PrivateEndpointConnectionListResult`/`PrivateLinkResourceListResult`/`RecoverableDatabaseListResult`/`RecoverableManagedDatabaseListResult`/`ReplicationLinkListResult`/`RestorableDroppedDatabaseListResult`/`RestorableDroppedManagedDatabaseListResult`/`RestorePointListResult`/`SecurityEventCollection`/`SensitivityLabelListResult`/`ServerBlobAuditingPolicyListResult`/`ServerCommunicationLinkListResult`/`ServerDevOpsAuditSettingsListResult`/`ServerDnsAliasListResult`/`ServerKeyListResult`/`ServerListResult`/`ServerOperationListResult`/`ServerTrustGroupListResult`/`ServerUsageListResult`/`ServerVulnerabilityAssessmentListResult`/`ServiceObjectiveListResult`/`SubscriptionUsageListResult`/`SyncAgentLinkedDatabaseListResult`/`SyncAgentListResult`/`SyncDatabaseIdListResult`/`SyncFullSchemaPropertiesListResult`/`SyncGroupListResult`/`SyncGroupLogListResult`/`SyncMemberListResult`/`TimeZoneListResult`/`TopQueriesListResult`/`TransparentDataEncryptionActivityListResult`/`UsageListResult`/`VirtualClusterListResult`/`VirtualNetworkRuleListResult`/`VulnerabilityAssessmentScanRecordListResult`/`WorkloadClassifierListResult`/`WorkloadGroupListResult` which actually were not used by SDK users + +## 4.0.0b25 (2026-06-02) + +### Features Added + + - Client `SqlManagementClient` added method `send_request` + - Client `SqlManagementClient` added operation group `instance_pool_operations` + - Client `SqlManagementClient` added operation group `network_security_perimeter_configurations` + - Model `Advisor` added property `system_data` + - Model `BackupShortTermRetentionPolicy` added property `system_data` + - Enum `CapabilityGroup` added member `SUPPORTED_JOB_AGENT_VERSIONS` + - Model `CheckNameAvailabilityRequest` added property `type` + - Model `DataMaskingPolicy` added property `system_data` + - Model `DataMaskingRule` added property `system_data` + - Model `DataWarehouseUserActivities` added property `system_data` + - Model `Database` added property `system_data` + - Model `DatabaseAutomaticTuning` added property `system_data` + - Model `DatabaseBlobAuditingPolicy` added property `system_data` + - Model `DatabaseColumn` added property `system_data` + - Model `DatabaseExtensions` added property `system_data` + - Model `DatabaseKey` added property `key_version` + - Model `DatabaseOperation` added property `system_data` + - Model `DatabaseSchema` added property `system_data` + - Model `DatabaseTable` added property `system_data` + - Model `DatabaseUsage` added property `system_data` + - Model `DatabaseVulnerabilityAssessment` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentRuleBaseline` added property `system_data` + - Model `DatabaseVulnerabilityAssessmentScansExport` added property `system_data` + - Model `DeletedServer` added property `system_data` + - Model `DistributedAvailabilityGroup` added property `system_data` + - Model `EditionCapability` added property `zone_pinning` + - Model `ElasticPool` added property `system_data` + - Model `ElasticPoolEditionCapability` added property `zone_pinning` + - Model `ElasticPoolOperation` added property `system_data` + - Model `ElasticPoolPerDatabaseSettings` added property `auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_min_capacities` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_per_database_auto_pause_delay` + - Model `ElasticPoolPerformanceLevelCapability` added property `supported_zones` + - Model `EncryptionProtector` added property `system_data` + - Model `EndpointCertificate` added property `system_data` + - Model `ExtendedDatabaseBlobAuditingPolicy` added property `system_data` + - Model `ExtendedServerBlobAuditingPolicy` added property `system_data` + - Model `FailoverGroup` added property `system_data` + - Model `GeoBackupPolicy` added property `system_data` + - Model `ImportExportExtensionsOperationResult` added property `system_data` + - Model `ImportExportOperationResult` added property `system_data` + - Model `InstanceFailoverGroup` added property `system_data` + - Model `InstancePool` added property `system_data` + - Model `Job` added property `system_data` + - Model `JobAgent` added property `identity` + - Model `JobAgent` added property `system_data` + - Model `JobAgentUpdate` added property `identity` + - Model `JobAgentUpdate` added property `sku` + - Model `JobCredential` added property `system_data` + - Model `JobExecution` added property `system_data` + - Model `JobPrivateEndpoint` added property `system_data` + - Model `JobStep` added property `system_data` + - Model `JobTargetGroup` added property `system_data` + - Model `JobVersion` added property `system_data` + - Model `LedgerDigestUploads` added property `system_data` + - Model `LocationCapabilities` added property `supported_job_agent_versions` + - Model `LocationCapabilities` added property `is_zone_resilient_provisioning_allowed` + - Model `LogicalDatabaseTransparentDataEncryption` added property `system_data` + - Model `LongTermRetentionBackup` added property `system_data` + - Model `LongTermRetentionBackupOperationResult` added property `system_data` + - Model `LongTermRetentionPolicy` added property `system_data` + - Model `MaintenanceWindowOptions` added property `system_data` + - Model `MaintenanceWindows` added property `system_data` + - Model `ManagedBackupShortTermRetentionPolicy` added property `system_data` + - Model `ManagedDatabase` added property `system_data` + - Model `ManagedDatabaseMoveOperationResult` added property `system_data` + - Model `ManagedDatabaseRestoreDetailsResult` added property `system_data` + - Model `ManagedDatabaseSecurityAlertPolicy` added property `system_data` + - Model `ManagedInstance` added property `system_data` + - Model `ManagedInstanceAdministrator` added property `system_data` + - Model `ManagedInstanceAzureADOnlyAuthentication` added property `system_data` + - Enum `ManagedInstanceDatabaseFormat` added member `SQL_SERVER2025` + - Model `ManagedInstanceDtc` added property `system_data` + - Model `ManagedInstanceEditionCapability` added property `is_general_purpose_v2` + - Model `ManagedInstanceEncryptionProtector` added property `system_data` + - Model `ManagedInstanceFamilyCapability` added property `zone_redundant` + - Model `ManagedInstanceKey` added property `system_data` + - Model `ManagedInstanceLongTermRetentionBackup` added property `system_data` + - Model `ManagedInstanceLongTermRetentionPolicy` added property `system_data` + - Model `ManagedInstanceOperation` added property `system_data` + - Model `ManagedInstancePrivateEndpointConnection` added property `system_data` + - Model `ManagedInstancePrivateLink` added property `system_data` + - Model `ManagedInstancePrivateLinkProperties` added property `required_zone_names` + - Model `ManagedInstanceQuery` added property `system_data` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_sizes_in_gb` + - Model `ManagedInstanceVcoresCapability` added property `supported_memory_limits_mb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_i_ops` + - Model `ManagedInstanceVcoresCapability` added property `iops_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `iops_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `included_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `supported_storage_throughput_m_bps` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_min_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVcoresCapability` added property `throughput_m_bps_included_value_override_factor_per_selected_storage_gb` + - Model `ManagedInstanceVulnerabilityAssessment` added property `system_data` + - Model `ManagedLedgerDigestUploads` added property `system_data` + - Model `ManagedServerDnsAlias` added property `system_data` + - Model `ManagedTransparentDataEncryption` added property `system_data` + - Enum `OperationMode` added member `EXPORT` + - Enum `OperationMode` added member `IMPORT` + - Model `OutboundFirewallRule` added property `system_data` + - Model `PrivateEndpointConnection` added property `system_data` + - Model `PrivateLinkResource` added property `system_data` + - Model `ProxyResource` added property `system_data` + - Model `QueryStatistics` added property `system_data` + - Model `RecommendedAction` added property `system_data` + - Model `RecommendedSensitivityLabelUpdate` added property `system_data` + - Model `RecoverableDatabase` added property `system_data` + - Model `RecoverableManagedDatabase` added property `system_data` + - Model `RefreshExternalGovernanceStatusOperationResult` added property `system_data` + - Model `RefreshExternalGovernanceStatusOperationResultMI` added property `system_data` + - Model `ReplicationLink` added property `system_data` + - Model `ReplicationLinkUpdate` added property `system_data` + - Model `Resource` added property `system_data` + - Model `RestorableDroppedDatabase` added property `system_data` + - Model `RestorableDroppedManagedDatabase` added property `system_data` + - Model `RestorePoint` added property `system_data` + - Model `SecurityEvent` added property `system_data` + - Model `SensitivityLabel` added property `system_data` + - Model `SensitivityLabelUpdate` added property `system_data` + - Model `Server` added property `system_data` + - Model `ServerAutomaticTuning` added property `system_data` + - Model `ServerAzureADAdministrator` added property `system_data` + - Model `ServerAzureADOnlyAuthentication` added property `system_data` + - Model `ServerBlobAuditingPolicy` added property `system_data` + - Model `ServerConfigurationOption` added property `system_data` + - Model `ServerConnectionPolicy` added property `system_data` + - Model `ServerDnsAlias` added property `system_data` + - Model `ServerKey` added property `system_data` + - Model `ServerOperation` added property `system_data` + - Model `ServerTrustCertificate` added property `system_data` + - Model `ServerTrustGroup` added property `system_data` + - Model `ServerUsage` added property `id` + - Model `ServerUsage` added property `type` + - Model `ServerUsage` added property `system_data` + - Model `ServerVulnerabilityAssessment` added property `system_data` + - Model `ServiceObjectiveCapability` added property `zone_pinning` + - Model `ServiceObjectiveCapability` added property `supported_zones` + - Model `ServiceObjectiveCapability` added property `supported_free_limit_exhaustion_behaviors` + - Model `SqlAgentConfiguration` added property `system_data` + - Enum `StorageCapabilityStorageAccountType` added member `GZRS` + - Model `SubscriptionUsage` added property `system_data` + - Model `SynapseLinkWorkspace` added property `system_data` + - Model `SyncAgent` added property `system_data` + - Model `SyncAgentLinkedDatabase` added property `system_data` + - Model `SyncGroup` added property `system_data` + - Model `SyncMember` added property `system_data` + - Model `TdeCertificate` added property `system_data` + - Model `TimeZone` added property `system_data` + - Model `TrackedResource` added property `system_data` + - Model `UpdateVirtualClusterDnsServersOperation` added property `system_data` + - Model `VirtualCluster` added property `system_data` + - Model `VirtualNetworkRule` added property `system_data` + - Model `VulnerabilityAssessmentScanRecord` added property `system_data` + - Model `WorkloadClassifier` added property `system_data` + - Model `WorkloadGroup` added property `system_data` + - Added enum `CheckNameAvailabilityResourceType` + - Added enum `ClientClassificationSource` + - Added enum `ErrorType` + - Added model `FreeLimitExhaustionBehaviorCapability` + - Added enum `InaccessibilityReason` + - Added model `InstancePoolOperation` + - Added model `InstancePoolOperationProperties` + - Added model `JobAgentEditionCapability` + - Added model `JobAgentIdentity` + - Added enum `JobAgentIdentityType` + - Added model `JobAgentServiceLevelObjectiveCapability` + - Added model `JobAgentUserAssignedIdentity` + - Added model `JobAgentVersionCapability` + - Added model `ManagedDatabaseExtendedAccessibilityInfo` + - Added model `ManagedInstanceValidateAzureKeyVaultEncryptionKeyRequest` + - Added model `MaxLimitRangeCapability` + - Added model `NSPConfigAccessRule` + - Added model `NSPConfigAccessRuleProperties` + - Added model `NSPConfigAssociation` + - Added model `NSPConfigNetworkSecurityPerimeterRule` + - Added model `NSPConfigPerimeter` + - Added model `NSPConfigProfile` + - Added model `NSPProvisioningIssue` + - Added model `NSPProvisioningIssueProperties` + - Added model `NetworkSecurityPerimeterConfiguration` + - Added model `NetworkSecurityPerimeterConfigurationProperties` + - Added model `PerDatabaseAutoPauseDelayTimeRange` + - Added enum `PricingModel` + - Added enum `TransparentDataEncryptionScanState` + - Added model `UpsertManagedServerOperationStepWithEstimatesAndDuration` + - Added enum `UpsertManagedServerOperationStepWithEstimatesAndDurationStatus` + - Added model `ZonePinningCapability` + - Operation group `GeoBackupPoliciesOperations` added method `list` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `skip` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `top` in method `list_by_resource_group_location` + - Operation group `LongTermRetentionManagedInstanceBackupsOperations` added parameter `filter` in method `list_by_resource_group_location` + - Operation group `ManagedDatabaseSensitivityLabelsOperations` added method `list_by_database` + - Operation group `ManagedDatabasesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedInstanceLongTermRetentionPoliciesOperations` added method `begin_delete` + - Operation group `ManagedInstancesOperations` added method `begin_reevaluate_inaccessible_database_state` + - Operation group `ManagedInstancesOperations` added method `begin_validate_azure_key_vault_encryption_key` + - Operation group `SensitivityLabelsOperations` added method `list_by_database` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_resume` + - Operation group `TransparentDataEncryptionsOperations` added method `begin_suspend` + - Operation group `VirtualClustersOperations` added method `begin_create_or_update` + - Added operation group `InstancePoolOperationsOperations` + - Added operation group `NetworkSecurityPerimeterConfigurationsOperations` + +### Breaking Changes + + - This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration. + - For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration. + - Deleted or renamed client operation group `SqlManagementClient.server_communication_links` + - Deleted or renamed client operation group `SqlManagementClient.service_objectives` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_activities` + - Deleted or renamed client operation group `SqlManagementClient.elastic_pool_database_activities` + - Model `CopyLongTermRetentionBackupParameters` moved instance variable `target_subscription_id`, `target_resource_group`, `target_server_resource_id`, `target_server_fully_qualified_domain_name`, `target_database_name` and `target_backup_storage_redundancy` under property `properties` whose type is `CopyLongTermRetentionBackupParametersProperties` + - Model `DatabaseAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `DatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `DatabaseVulnerabilityAssessmentScansExport` moved instance variable `exported_report_location` under property `properties` whose type is `DatabaseVulnerabilityAssessmentScanExportProperties` + - Model `FirewallRule` moved instance variable `start_ip_address` and `end_ip_address` under property `properties` whose type is `ServerFirewallRuleProperties` + - Model `FirewallRuleList` renamed its instance variable `values` to `values_property` + - Model `IPv6FirewallRule` moved instance variable `start_i_pv6_address` and `end_i_pv6_address` under property `properties` whose type is `IPv6ServerFirewallRuleProperties` + - Model `InstancePoolUpdate` moved instance variable `subnet_id`, `v_cores`, `license_type`, `dns_zone` and `maintenance_configuration_id` under property `properties` whose type is `InstancePoolProperties` + - Model `LogicalDatabaseTransparentDataEncryption` moved instance variable `state` under property `properties` whose type is `TransparentDataEncryptionProperties` + - Model `LongTermRetentionBackupOperationResult` moved instance variable `request_id`, `operation_type`, `from_backup_resource_id`, `to_backup_resource_id`, `target_backup_storage_redundancy`, `status` and `message` under property `properties` whose type is `LongTermRetentionOperationResultProperties` + - Model `ManagedDatabaseAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `ManagedDatabaseRestoreDetailsResult` moved instance variable `type_properties_type`, `status`, `block_reason`, `last_uploaded_file_name`, `last_uploaded_file_time`, `last_restored_file_name`, `last_restored_file_time`, `percent_completed`, `current_restored_size_mb`, `current_restore_plan_size_mb`, `current_backup_type`, `current_restoring_file_name`, `number_of_files_detected`, `number_of_files_queued`, `number_of_files_skipped`, `number_of_files_restoring`, `number_of_files_restored`, `number_of_files_unrestorable`, `full_backup_sets`, `diff_backup_sets`, `log_backup_sets` and `unrestorable_files` under property `properties` whose type is `ManagedDatabaseRestoreDetailsProperties` + - Model `ManagedDatabaseSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertPolicyProperties` + - Model `ManagedDatabaseUpdate` moved instance variable `collation`, `status`, `creation_date`, `earliest_restore_point`, `restore_point_in_time`, `default_secondary_location`, `catalog_collation`, `create_mode`, `storage_container_uri`, `source_database_id`, `cross_subscription_source_database_id`, `restorable_dropped_database_id`, `cross_subscription_restorable_dropped_database_id`, `storage_container_identity`, `storage_container_sas_token`, `failover_group_id`, `recoverable_database_id`, `long_term_retention_backup_resource_id`, `auto_complete_restore`, `last_backup_name`, `cross_subscription_target_managed_instance_id` and `is_ledger_on` under property `properties` whose type is `ManagedDatabaseProperties` + - Model `ManagedInstanceAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `ManagedInstanceAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `ManagedInstanceAzureADOnlyAuthProperties` + - Model `ManagedInstanceEditionCapability` deleted or renamed its instance variable `zone_redundant` + - Model `ManagedInstancePrivateEndpointConnection` moved instance variable `private_endpoint`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `ManagedInstancePrivateEndpointConnectionProperties` + - Model `ManagedInstanceQuery` moved instance variable `query_text` under property `properties` whose type is `QueryProperties` + - Model `ManagedInstanceUpdate` moved instance variable `provisioning_state`, `managed_instance_create_mode`, `fully_qualified_domain_name`, `is_general_purpose_v2`, `administrator_login`, `administrator_login_password`, `subnet_id`, `state`, `license_type`, `hybrid_secondary_usage`, `hybrid_secondary_usage_detected`, `v_cores`, `storage_size_in_gb`, `storage_iops`, `storage_throughput_mbps`, `collation`, `dns_zone`, `dns_zone_partner`, `public_data_endpoint_enabled`, `source_managed_instance_id`, `restore_point_in_time`, `proxy_override`, `timezone_id`, `instance_pool_id`, `maintenance_configuration_id`, `private_endpoint_connections`, `minimal_tls_version`, `current_backup_storage_redundancy`, `requested_backup_storage_redundancy`, `zone_redundant`, `primary_user_assigned_identity_id`, `key_id`, `administrators`, `service_principal`, `virtual_cluster_id`, `external_governance_status`, `pricing_model`, `create_time`, `authentication_metadata` and `database_format` under property `properties` whose type is `ManagedInstanceProperties` + - Model `ManagedServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `PrivateEndpointConnection` moved instance variable `private_endpoint`, `group_ids`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `PrivateEndpointConnectionProperties` + - Model `QueryStatistics` moved instance variable `database_name`, `query_id`, `start_time`, `end_time` and `intervals` under property `properties` whose type is `QueryStatisticsProperties` + - Model `RefreshExternalGovernanceStatusOperationResultMI` moved instance variable `request_id`, `request_type`, `queued_time`, `managed_instance_name`, `status` and `error_message` under property `properties` whose type is `RefreshExternalGovernanceStatusOperationResultPropertiesMI` + - Model `ServerAdvancedThreatProtection` moved instance variable `state` and `creation_time` under property `properties` whose type is `AdvancedThreatProtectionProperties` + - Model `ServerAutomaticTuning` moved instance variable `desired_state`, `actual_state` and `options` under property `properties` whose type is `AutomaticTuningServerProperties` + - Model `ServerAzureADAdministrator` moved instance variable `administrator_type`, `login`, `sid`, `tenant_id` and `azure_ad_only_authentication` under property `properties` whose type is `AdministratorProperties` + - Model `ServerAzureADOnlyAuthentication` moved instance variable `azure_ad_only_authentication` under property `properties` whose type is `AzureADOnlyAuthProperties` + - Model `ServerDevOpsAuditingSettings` moved instance variable `is_azure_monitor_target_enabled`, `is_managed_identity_in_use`, `state`, `storage_endpoint`, `storage_account_access_key` and `storage_account_subscription_id` under property `properties` whose type is `ServerDevOpsAuditSettingsProperties` + - Model `ServerSecurityAlertPolicy` moved instance variable `state`, `disabled_alerts`, `email_addresses`, `email_account_admins`, `storage_endpoint`, `storage_account_access_key`, `retention_days` and `creation_time` under property `properties` whose type is `SecurityAlertsPolicyProperties` + - Model `ServerUpdate` moved instance variable `administrator_login`, `administrator_login_password`, `version`, `state`, `fully_qualified_domain_name`, `private_endpoint_connections`, `minimal_tls_version`, `public_network_access`, `workspace_feature`, `primary_user_assigned_identity_id`, `federated_client_id`, `key_id`, `administrators`, `restrict_outbound_network_access`, `is_i_pv6_enabled`, `external_governance_status`, `retention_days` and `create_mode` under property `properties` whose type is `ServerProperties` + - Model `SqlVulnerabilityAssessment` moved instance variable `state` under property `properties` whose type is `SqlVulnerabilityAssessmentPolicyProperties` + - Model `SqlVulnerabilityAssessmentScanResults` moved instance variable `rule_id`, `status`, `error_message`, `is_trimmed`, `query_results`, `remediation`, `baseline_adjusted_result` and `rule_metadata` under property `properties` whose type is `SqlVulnerabilityAssessmentScanResultProperties` + - Model `UpdateLongTermRetentionBackupParameters` moved instance variable `requested_backup_storage_redundancy` under property `properties` whose type is `UpdateLongTermRetentionBackupParametersProperties` + - Model `UpdateVirtualClusterDnsServersOperation` moved instance variable `status` under property `properties` whose type is `VirtualClusterDnsServersProperties` + - Model `VirtualClusterUpdate` moved instance variable `subnet_id`, `version` and `child_resources` under property `properties` whose type is `VirtualClusterProperties` + - Deleted or renamed model `ElasticPoolActivity` + - Deleted or renamed model `ElasticPoolDatabaseActivity` + - Deleted or renamed model `FreemiumType` + - Deleted or renamed model `Metric` + - Deleted or renamed model `MetricAvailability` + - Deleted or renamed model `MetricDefinition` + - Deleted or renamed model `MetricName` + - Deleted or renamed model `MetricValue` + - Deleted or renamed model `OperationImpact` + - Deleted or renamed model `PrimaryAggregationType` + - Deleted or renamed model `QueryMetricIntervalAutoGenerated` + - Deleted or renamed model `ServerCommunicationLink` + - Deleted or renamed model `ServiceObjective` + - Deleted or renamed model `ServiceObjectiveName` + - Deleted or renamed model `SloUsageMetric` + - Deleted or renamed model `UnitDefinitionType` + - Deleted or renamed model `UnitType` + - Deleted or renamed model `UpsertManagedServerOperationStep` + - Deleted or renamed model `UpsertManagedServerOperationStepStatus` + - Method `CapabilitiesOperations.list_by_location` changed its parameter `include` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseAdvisorsOperations.list_by_database` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `DatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `DatabasesOperations.list_by_server` changed its parameter `skip_token` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed method `DatabasesOperations.list_metric_definitions` + - Deleted or renamed method `DatabasesOperations.list_metrics` + - Deleted or renamed method `ElasticPoolsOperations.list_metric_definitions` + - Deleted or renamed method `ElasticPoolsOperations.list_metrics` + - Deleted or renamed method `GeoBackupPoliciesOperations.list_by_database` + - Method `JobExecutionsOperations.list_by_agent` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobExecutionsOperations.list_by_job` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobStepExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_job_execution` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `JobTargetExecutionsOperations.list_by_step` changed its parameter `create_time_min`/`create_time_max`/`end_time_min`/`end_time_max`/`is_active` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_resource_group_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionBackupsOperations.list_by_server` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_database` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_instance` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `LongTermRetentionManagedInstanceBackupsOperations.list_by_resource_group_location` changed its parameter `only_latest_per_database`/`database_state` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowOptionsOperations.get` changed its parameter `maintenance_window_options_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.create_or_update` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `MaintenanceWindowsOperations.get` changed its parameter `maintenance_window_name` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseColumnsOperations.list_by_database` changed its parameter `schema`/`table`/`column`/`order_by`/`skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseMoveOperationsOperations.list_by_location` changed its parameter `only_latest_per_database` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseQueriesOperations.list_by_query` changed its parameter `start_time`/`end_time`/`interval` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSecurityEventsOperations.list_by_database` changed its parameter `skiptoken` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `ManagedDatabaseSensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.begin_failover` changed its parameter `replica_type` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_instance_pool` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_managed_instance` changed its parameter `number_of_queries`/`databases`/`start_time`/`end_time`/`interval`/`aggregation_function`/`observation_metric` from `positional_or_keyword` to `keyword_only` + - Method `ManagedInstancesOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `OutboundFirewallRulesOperations.begin_create_or_update` deleted or renamed its parameter `parameters` of kind `positional_or_keyword` + - Method `RecoverableDatabasesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `RestorableDroppedDatabasesOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `SensitivityLabelsOperations.list_current_by_database` changed its parameter `skip_token`/`count` from `positional_or_keyword` to `keyword_only` + - Method `SensitivityLabelsOperations.list_recommended_by_database` changed its parameter `skip_token`/`include_disabled_recommendations` from `positional_or_keyword` to `keyword_only` + - Method `ServerAdvisorsOperations.list_by_server` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.get` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `ServersOperations.list_by_resource_group` changed its parameter `expand` from `positional_or_keyword` to `keyword_only` + - Method `SyncGroupsOperations.list_logs` changed its parameter `start_time`/`end_time`/`type`/`continuation_token_parameter` from `positional_or_keyword` to `keyword_only` + - Method `UsagesOperations.list_by_instance_pool` changed its parameter `expand_children` from `positional_or_keyword` to `keyword_only` + - Deleted or renamed operation group `ElasticPoolActivitiesOperations` + - Deleted or renamed operation group `ElasticPoolDatabaseActivitiesOperations` + - Deleted or renamed operation group `ServerCommunicationLinksOperations` + - Deleted or renamed operation group `ServiceObjectivesOperations` + +### Other Changes + + - Deleted model `OutboundEnvironmentEndpointCollection`/ `SecurityEventCollection`/`ManagedInstanceQueryStatistics`/`SecurityEventsFilterParameters` which actually were not used by SDK users + +## 4.0.0b24 (2025-10-09) + +### Bugs Fixed + +- Exclude `generated_samples` and `generated_tests` from wheel + +> Changelog entries prior to 4.0.0b24 were removed to reduce file size. See https://pypi.org/project/azure-mgmt-sql/4.0.0b24/ for the older history. diff --git a/eng/tools/azure-sdk-tools/tests/integration/test_package_discovery.py b/eng/tools/azure-sdk-tools/tests/integration/test_package_discovery.py index feee5bf6ae74..7bcace04b9b7 100644 --- a/eng/tools/azure-sdk-tools/tests/integration/test_package_discovery.py +++ b/eng/tools/azure-sdk-tools/tests/integration/test_package_discovery.py @@ -3,7 +3,6 @@ from ci_tools.parsing import ParsedSetup from ci_tools.functions import discover_targeted_packages - repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "..")) sdk_root = os.path.join(repo_root, "sdk") core_service_root = os.path.join(sdk_root, "core") @@ -70,6 +69,22 @@ def test_discovery_single_package(): ] +def test_discovery_single_package_from_sdk_root(): + results = discover_targeted_packages("azure-template", sdk_root, filter_type="Build") + + assert [os.path.basename(result) for result in results] == [ + "azure-template", + ] + + +def test_discovery_single_package_from_repo_root(): + results = discover_targeted_packages("azure-template", repo_root, filter_type="Build") + + assert [os.path.basename(result) for result in results] == [ + "azure-template", + ] + + def test_discovery_omit_regression(): results = discover_targeted_packages("*", core_service_root, filter_type="Regression") diff --git a/eng/tools/azure-sdk-tools/tests/test_apistub.py b/eng/tools/azure-sdk-tools/tests/test_apistub.py index 21d85998eb2b..c9639850e1c6 100644 --- a/eng/tools/azure-sdk-tools/tests/test_apistub.py +++ b/eng/tools/azure-sdk-tools/tests/test_apistub.py @@ -1,5 +1,7 @@ import argparse import os +import pathlib +import subprocess import sys import pytest @@ -8,6 +10,49 @@ from azpysdk.apistub import apistub, get_package_wheel_path, get_cross_language_mapping_path + +def _build_parser(): + parser = argparse.ArgumentParser(prog="azpysdk") + subparsers = parser.add_subparsers(title="commands", dest="command") + apistub().register(subparsers) + return parser + + +class TestApistubRegistration: + def test_generate_from_pypi_flag_sets_version(self): + parser = _build_parser() + + args = parser.parse_args(["apistub", "--generate-from-pypi", "1.0.0"]) + + assert args.command == "apistub" + assert args.generate_from_pypi == "1.0.0" + + +class TestApiViewMetadata: + def test_package_version_is_written(self, tmp_path): + api_markdown = tmp_path / "api.md" + api_markdown.write_text( + "# Package is parsed using apiview-stub-generator(version:0.3.31), Python version: 3.12.9\n" "API body\n", + encoding="utf-8", + ) + metadata_script = pathlib.Path(__file__).parents[3] / "scripts" / "extract_apiview_metadata.py" + + subprocess.run( + [ + sys.executable, + str(metadata_script), + "--api-markdown-path", + str(api_markdown), + "--package-version", + "1.35.0", + ], + check=True, + ) + + metadata = (tmp_path / "api.metadata.yml").read_text(encoding="utf-8") + assert "packageVersion: 1.35.0\n" in metadata + + # ── get_package_wheel_path() ───────────────────────────────────────────── @@ -71,17 +116,25 @@ def test_no_prebuilt_dir_falls_back_to_pkg_root(self, mock_find_whl, mock_parsed class TestRunOutputDirectory: - """Verify that dest_dir controls where the output token path ends up.""" - - def _make_args(self, dest_dir=None, generate_md=False, isolate=False, install_deps=False): + """Verify apistub output directory behavior.""" + + def _make_args( + self, + token_file=False, + isolate=False, + install_deps=False, + dest_dir=None, + generate_from_pypi=None, + ): return argparse.Namespace( target=".", isolate=isolate, command="apistub", service=None, - dest_dir=dest_dir, - generate_md=generate_md, + token_file=token_file, install_deps=install_deps, + dest_dir=dest_dir, + generate_from_pypi=generate_from_pypi, ) @patch( @@ -111,7 +164,7 @@ def test_isolate_does_not_install_dependencies( ) as pip_freeze, patch.object( stub, "run_venv_command" ): - stub.run(self._make_args(isolate=True)) + stub.run(self._make_args(isolate=True, token_file=True)) install_dev_reqs.assert_not_called() install_into_venv.assert_not_called() @@ -144,7 +197,7 @@ def test_install_deps_installs_dependencies( ) as pip_freeze, patch.object( stub, "run_venv_command" ): - args = self._make_args(install_deps=True) + args = self._make_args(install_deps=True, token_file=True) stub.run(args) install_dev_reqs.assert_called_once_with(sys.executable, args, str(tmp_path)) @@ -219,33 +272,38 @@ def test_missing_apistub_installs_apiview_requirements(self, install_into_venv, @patch("azpysdk.apistub.create_package_and_install") @patch("azpysdk.apistub.install_into_venv") @patch("azpysdk.apistub.set_envvar_defaults") - def test_dest_dir_uses_destination_directory( + def test_outputs_use_package_directory( self, _env, _install, _create, _get_whl, _get_mapping, tmp_path, monkeypatch ): - """When --dest-dir is given, output should go directly to /.""" + """Output should go to the package directory.""" monkeypatch.chdir(os.getcwd()) - dest = tmp_path / "output" - dest.mkdir() - stub = apistub() staging = str(tmp_path / "staging") os.makedirs(staging, exist_ok=True) fake_parsed = MagicMock() fake_parsed.folder = str(tmp_path) fake_parsed.name = "azure-core" + fake_parsed.version = "1.35.0" + + captured_cmds = [] + metadata_cmd = None def fake_apistub_run(exe, cmds, **kwargs): - # Simulate apistub generating the token JSON + captured_cmds.append(cmds) out_idx = cmds.index("--out-path") out_dir = cmds[out_idx + 1] - os.makedirs(out_dir, exist_ok=True) open(os.path.join(out_dir, "azure-core_python.json"), "w").close() def fake_pwsh(cmd, **kwargs): - # Simulate pwsh generating api.md - out_idx = cmd.index("-OutputPath") + nonlocal metadata_cmd + output_arg = "--output-path" if "extract_apiview_metadata.py" in cmd[1] else "-OutputPath" + out_idx = cmd.index(output_arg) out_dir = cmd[out_idx + 1] - open(os.path.join(out_dir, "api.md"), "w").close() + if "extract_apiview_metadata.py" in cmd[1]: + metadata_cmd = cmd + open(os.path.join(out_dir, "api.metadata.yml"), "w").close() + else: + open(os.path.join(out_dir, "api.md"), "w").close() return MagicMock(returncode=0) with patch.object(stub, "get_targeted_directories", return_value=[fake_parsed]), patch.object( @@ -258,12 +316,19 @@ def fake_pwsh(cmd, **kwargs): "azpysdk.apistub.run", side_effect=fake_pwsh ): - stub.run(self._make_args(dest_dir=str(dest), generate_md=True)) + stub.run(self._make_args()) - expected_out = str(dest) - assert os.path.isdir(expected_out) - assert os.path.exists(os.path.join(expected_out, "api.md")) - assert os.path.exists(os.path.join(expected_out, "azure-core_python.json")) + # The --out-path passed to apistub should be the package directory + assert len(captured_cmds) == 1 + cmds = captured_cmds[0] + out_idx = cmds.index("--out-path") + assert cmds[out_idx + 1] == os.path.abspath(str(tmp_path)) + assert os.path.exists(os.path.join(str(tmp_path), "api.md")) + assert os.path.exists(os.path.join(str(tmp_path), "api.metadata.yml")) + assert os.path.exists(os.path.join(str(tmp_path), "azure-core_python.json")) + assert metadata_cmd is not None + version_idx = metadata_cmd.index("--package-version") + assert metadata_cmd[version_idx + 1] == "1.35.0" @patch( "azpysdk.apistub.REPO_ROOT", os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..")) @@ -273,11 +338,14 @@ def fake_pwsh(cmd, **kwargs): @patch("azpysdk.apistub.create_package_and_install") @patch("azpysdk.apistub.install_into_venv") @patch("azpysdk.apistub.set_envvar_defaults") - def test_no_dest_dir_uses_staging(self, _env, _install, _create, _get_whl, _get_mapping, tmp_path, monkeypatch): - """When --dest-dir is not given, output path should be the staging directory.""" + def test_outputs_use_custom_destination_directory( + self, _env, _install, _create, _get_whl, _get_mapping, tmp_path, monkeypatch + ): + """When --dest-dir is passed, generated files should go to that directory.""" monkeypatch.chdir(os.getcwd()) stub = apistub() staging = str(tmp_path / "staging") + dest_dir = tmp_path / "artifacts" os.makedirs(staging, exist_ok=True) fake_parsed = MagicMock() fake_parsed.folder = str(tmp_path) @@ -287,15 +355,16 @@ def test_no_dest_dir_uses_staging(self, _env, _install, _create, _get_whl, _get_ def fake_apistub_run(exe, cmds, **kwargs): captured_cmds.append(cmds) - # Simulate apistub generating the token JSON out_idx = cmds.index("--out-path") out_dir = cmds[out_idx + 1] open(os.path.join(out_dir, "azure-core_python.json"), "w").close() def fake_pwsh(cmd, **kwargs): - out_idx = cmd.index("-OutputPath") + output_arg = "--output-path" if "extract_apiview_metadata.py" in cmd[1] else "-OutputPath" + out_idx = cmd.index(output_arg) out_dir = cmd[out_idx + 1] - open(os.path.join(out_dir, "api.md"), "w").close() + output_file = "api.metadata.yml" if "extract_apiview_metadata.py" in cmd[1] else "api.md" + open(os.path.join(out_dir, output_file), "w").close() return MagicMock(returncode=0) with patch.object(stub, "get_targeted_directories", return_value=[fake_parsed]), patch.object( @@ -307,16 +376,14 @@ def fake_pwsh(cmd, **kwargs): ), patch( "azpysdk.apistub.run", side_effect=fake_pwsh ): + stub.run(self._make_args(dest_dir=str(dest_dir))) - stub.run(self._make_args(dest_dir=None, generate_md=True)) - - # The --out-path passed to apistub should be the staging directory assert len(captured_cmds) == 1 cmds = captured_cmds[0] out_idx = cmds.index("--out-path") - assert cmds[out_idx + 1] == os.path.abspath(staging) - assert os.path.exists(os.path.join(staging, "api.md")) - assert os.path.exists(os.path.join(staging, "azure-core_python.json")) + assert cmds[out_idx + 1] == os.path.abspath(str(dest_dir)) + assert os.path.exists(os.path.join(str(dest_dir), "api.md")) + assert os.path.exists(os.path.join(str(dest_dir), "azure-core_python.json")) @patch( "azpysdk.apistub.REPO_ROOT", os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..")) @@ -326,8 +393,10 @@ def fake_pwsh(cmd, **kwargs): @patch("azpysdk.apistub.create_package_and_install") @patch("azpysdk.apistub.install_into_venv") @patch("azpysdk.apistub.set_envvar_defaults") - def test_generate_md_adds_skip_pylint(self, _env, _install, _create, _get_whl, _get_mapping, tmp_path, monkeypatch): - """When --md is passed (generate_md=True), --skip-pylint must be in the cmds.""" + def test_default_generation_adds_skip_pylint( + self, _env, _install, _create, _get_whl, _get_mapping, tmp_path, monkeypatch + ): + """By default, markdown generation should add --skip-pylint to the cmds.""" monkeypatch.chdir(os.getcwd()) stub = apistub() staging = str(tmp_path / "staging") @@ -358,7 +427,7 @@ def fake_pwsh(cmd, **kwargs): ), patch( "azpysdk.apistub.run", side_effect=fake_pwsh ): - stub.run(self._make_args(generate_md=True)) + stub.run(self._make_args()) assert len(captured_cmds) == 1 assert "--skip-pylint" in captured_cmds[0] @@ -371,10 +440,10 @@ def fake_pwsh(cmd, **kwargs): @patch("azpysdk.apistub.create_package_and_install") @patch("azpysdk.apistub.install_into_venv") @patch("azpysdk.apistub.set_envvar_defaults") - def test_no_generate_md_omits_skip_pylint( + def test_token_file_omits_skip_pylint_and_markdown_generation( self, _env, _install, _create, _get_whl, _get_mapping, tmp_path, monkeypatch ): - """When --md is not passed (generate_md=False), --skip-pylint must not be in the cmds.""" + """When --token-file is passed, only the raw token file should be generated.""" monkeypatch.chdir(os.getcwd()) stub = apistub() staging = str(tmp_path / "staging") @@ -387,6 +456,9 @@ def test_no_generate_md_omits_skip_pylint( def fake_apistub_run(exe, cmds, **kwargs): captured_cmds.append(cmds) + out_idx = cmds.index("--out-path") + out_dir = cmds[out_idx + 1] + open(os.path.join(out_dir, "azure-core_python.json"), "w").close() with patch.object(stub, "get_targeted_directories", return_value=[fake_parsed]), patch.object( stub, "get_executable", return_value=(sys.executable, staging) @@ -394,8 +466,114 @@ def fake_apistub_run(exe, cmds, **kwargs): stub, "ensure_apistub_dependencies" ), patch.object( stub, "run_venv_command", side_effect=fake_apistub_run - ): - stub.run(self._make_args(generate_md=False)) + ), patch( + "azpysdk.apistub.run" + ) as pwsh_run: + stub.run(self._make_args(token_file=True)) assert len(captured_cmds) == 1 assert "--skip-pylint" not in captured_cmds[0] + assert os.path.exists(os.path.join(str(tmp_path), "azure-core_python.json")) + pwsh_run.assert_not_called() + + @patch( + "azpysdk.apistub.REPO_ROOT", os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..")) + ) + @patch("azpysdk.apistub.get_cross_language_mapping_path", return_value=None) + @patch("azpysdk.apistub.create_package_and_install") + @patch("azpysdk.apistub.install_into_venv") + @patch("azpysdk.apistub.set_envvar_defaults") + def test_pypi_version_downloads_wheel_instead_of_building( + self, _env, _install, create_package_and_install, _get_mapping, tmp_path, monkeypatch + ): + """When a PyPI version is passed, the wheel is downloaded from PyPI and local build is skipped.""" + monkeypatch.chdir(os.getcwd()) + stub = apistub() + staging = str(tmp_path / "staging") + os.makedirs(staging, exist_ok=True) + fake_parsed = MagicMock() + fake_parsed.folder = str(tmp_path) + fake_parsed.name = "azure-core" + + captured_cmds = [] + + def fake_apistub_run(exe, cmds, **kwargs): + captured_cmds.append(cmds) + out_idx = cmds.index("--out-path") + out_dir = cmds[out_idx + 1] + open(os.path.join(out_dir, "azure-core_python.json"), "w").close() + + with patch.object(stub, "get_targeted_directories", return_value=[fake_parsed]), patch.object( + stub, "get_executable", return_value=(sys.executable, staging) + ), patch.object(stub, "install_dev_reqs"), patch.object(stub, "pip_freeze"), patch.object( + stub, "ensure_apistub_dependencies" + ), patch.object( + stub, "download_pypi_wheel", return_value="/fake/azure_core-1.0.0-py3-none-any.whl" + ) as download_pypi_wheel, patch.object( + stub, "run_venv_command", side_effect=fake_apistub_run + ): + stub.run(self._make_args(token_file=True, generate_from_pypi="1.0.0")) + + download_pypi_wheel.assert_called_once_with(sys.executable, "azure-core", "1.0.0", staging) + create_package_and_install.assert_not_called() + assert len(captured_cmds) == 1 + pkg_idx = captured_cmds[0].index("--pkg-path") + assert captured_cmds[0][pkg_idx + 1] == os.path.abspath("/fake/azure_core-1.0.0-py3-none-any.whl") + + @patch("azpysdk.apistub.find_whl", return_value="azure_core-1.0.0-py3-none-any.whl") + def test_download_pypi_wheel_runs_pip_download(self, _find_whl, tmp_path): + """download_pypi_wheel should pip download the wheel and return its path.""" + stub = apistub() + staging = str(tmp_path) + + with patch.object(stub, "run_venv_command") as run_venv_command: + result = stub.download_pypi_wheel(sys.executable, "azure-core", "1.0.0", staging) + + run_venv_command.assert_called_once() + cmds = run_venv_command.call_args.args[1] + assert cmds[0:4] == ["-m", "pip", "download", "azure-core==1.0.0"] + assert "--no-deps" in cmds + assert ( + "--index-url=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" + in cmds + ) + assert run_venv_command.call_args.kwargs["additional_environment_settings"] == {"PIP_EXTRA_INDEX_URL": ""} + assert result == os.path.join(staging, "azure_core-1.0.0-py3-none-any.whl") + + @patch("azpysdk.apistub.find_whl", return_value="azure_core-1.0.0-py3-none-any.whl") + def test_download_pypi_wheel_falls_back_to_public_pypi(self, _find_whl, tmp_path): + """download_pypi_wheel should retry public PyPI when the Azure SDK feed fails.""" + stub = apistub() + + with patch.object(stub, "run_venv_command", side_effect=[CalledProcessError(1, "pip"), None]) as run: + result = stub.download_pypi_wheel(sys.executable, "azure-core", "1.0.0", str(tmp_path)) + + assert run.call_count == 2 + assert "--index-url=https://pypi.org/simple/" in run.call_args_list[1].args[1] + assert all( + call.kwargs["additional_environment_settings"] == {"PIP_EXTRA_INDEX_URL": ""} for call in run.call_args_list + ) + assert result == os.path.join(str(tmp_path), "azure_core-1.0.0-py3-none-any.whl") + + def test_download_pypi_wheel_reports_both_index_failures(self, tmp_path, caplog): + """download_pypi_wheel should propagate the public PyPI failure after both indexes fail.""" + stub = apistub() + public_pypi_error = CalledProcessError(2, "pip", stderr="public PyPI unavailable") + + with patch.object( + stub, "run_venv_command", side_effect=[CalledProcessError(1, "pip"), public_pypi_error] + ) as run: + with pytest.raises(CalledProcessError) as exc_info: + stub.download_pypi_wheel(sys.executable, "azure-core", "1.0.0", str(tmp_path)) + + assert run.call_count == 2 + assert exc_info.value is public_pypi_error + assert "public PyPI unavailable" in caplog.text + + @patch("azpysdk.apistub.find_whl", return_value=None) + def test_download_pypi_wheel_raises_when_no_wheel(self, _find_whl, tmp_path): + """download_pypi_wheel should raise FileNotFoundError when no wheel is downloaded.""" + stub = apistub() + with patch.object(stub, "run_venv_command"): + with pytest.raises(FileNotFoundError, match="No wheel found"): + stub.download_pypi_wheel(sys.executable, "azure-core", "1.0.0", str(tmp_path)) diff --git a/eng/tools/azure-sdk-tools/tests/test_breaking.py b/eng/tools/azure-sdk-tools/tests/test_breaking.py new file mode 100644 index 000000000000..15049696ee40 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/test_breaking.py @@ -0,0 +1,100 @@ +import argparse +import os +import sys + +from unittest.mock import MagicMock, patch + +from azpysdk.breaking import breaking + + +def _make_args(use_apistub=False, changelog=True, isolate=False): + """Build an argparse.Namespace with every attribute breaking.run() reads.""" + return argparse.Namespace( + target=".", + isolate=isolate, + command="breaking", + service=None, + target_module=None, + in_venv=False, + stable_version=None, + changelog=changelog, + code_report=False, + source_report=None, + target_report=None, + latest_pypi_version=False, + use_apistub=use_apistub, + debug=False, + ) + + +def _run_breaking(args, tmp_path): + """Invoke breaking.run() with all external side effects mocked out. + + Returns a dict of the mocks that assertions can inspect. + """ + chk = breaking() + staging = str(tmp_path / "staging") + os.makedirs(staging, exist_ok=True) + fake_parsed = MagicMock() + fake_parsed.folder = str(tmp_path) + fake_parsed.name = "azure-core" + + original_cwd = os.getcwd() + with patch("azpysdk.breaking.set_envvar_defaults"), patch( + "azpysdk.breaking.install_into_venv" + ) as install_into_venv, patch("azpysdk.breaking.create_package_and_install") as create_package_and_install, patch( + "azpysdk.breaking.check_call" + ) as check_call, patch.object( + chk, "get_targeted_directories", return_value=[fake_parsed] + ), patch.object( + chk, "get_executable", return_value=(sys.executable, staging) + ), patch.object( + chk, "install_dev_reqs" + ) as install_dev_reqs: + try: + result = chk.run(args) + finally: + os.chdir(original_cwd) + + return { + "result": result, + "install_dev_reqs": install_dev_reqs, + "install_into_venv": install_into_venv, + "create_package_and_install": create_package_and_install, + "check_call": check_call, + } + + +class TestBreakingUseApistubGuard: + """The apistub path builds the report via static analysis, so it must not install the + package's dev requirements nor build/install the target package sdist.""" + + def test_use_apistub_skips_dev_reqs_and_sdist_install(self, tmp_path): + mocks = _run_breaking(_make_args(use_apistub=True), tmp_path) + + # The failing/expensive steps are skipped in apistub mode. + mocks["install_dev_reqs"].assert_not_called() + mocks["create_package_and_install"].assert_not_called() + + # jsondiff + breaking-change checker are still required by the detector. + mocks["install_into_venv"].assert_called_once() + + # The detector still runs, and it receives --use-apistub. + mocks["check_call"].assert_called_once() + detector_cmd = mocks["check_call"].call_args.args[0] + assert "--use-apistub" in detector_cmd + assert mocks["result"] == 0 + + def test_default_path_installs_dev_reqs_and_sdist(self, tmp_path): + mocks = _run_breaking(_make_args(use_apistub=False), tmp_path) + + # The import-based path needs the package (and its deps) installed. + mocks["install_dev_reqs"].assert_called_once() + mocks["create_package_and_install"].assert_called_once() + + mocks["install_into_venv"].assert_called_once() + + mocks["check_call"].assert_called_once() + detector_cmd = mocks["check_call"].call_args.args[0] + assert "--use-apistub" not in detector_cmd + assert mocks["result"] == 0 diff --git a/eng/tools/azure-sdk-tools/tests/test_build_interactions.py b/eng/tools/azure-sdk-tools/tests/test_build_interactions.py index 7bc1546390e8..6016165228fb 100644 --- a/eng/tools/azure-sdk-tools/tests/test_build_interactions.py +++ b/eng/tools/azure-sdk-tools/tests/test_build_interactions.py @@ -1,11 +1,12 @@ import os, tempfile, shutil -from ci_tools.build import discover_targeted_packages, build_packages, build +from ci_tools.build import discover_targeted_packages, build_packages, build, create_package repo_root = os.path.join(os.path.dirname(__file__), "..", "..", "..", "..") integration_folder = os.path.join(os.path.dirname(__file__), "integration") pyproject_folder = os.path.join(integration_folder, "scenarios", "pyproject_build_config") pyproject_file = os.path.join(integration_folder, "scenarios", "pyproject_build_config", "pyproject.toml") +pyproject_project_def = os.path.join(integration_folder, "scenarios", "pyproject_project_def") def test_build_core(): @@ -38,3 +39,52 @@ def test_venv_helpers_importable(): from ci_tools.functions import get_venv_call as f_get_venv_call assert f_get_venv_call is get_venv_call + + +def _record_build_commands(monkeypatch): + """Capture the commands build() would run instead of executing them.""" + calls = [] + + def fake_run_logged(command, *args, **kwargs): + calls.append(command) + + class _Result: + returncode = 0 + + return _Result() + + monkeypatch.setattr("ci_tools.build.run_logged", fake_run_logged) + return calls + + +def _tool(calls): + """Reduce recorded commands to the build tool each one invoked.""" + return [c[c.index("-m") + 1] for c in calls if "-m" in c and c.index("-m") + 1 < len(c)] + + +def test_pyproject_without_extension_uses_python_build(tmp_path, monkeypatch): + pkg = tmp_path / "pure" + shutil.copytree(pyproject_project_def, pkg) + + calls = _record_build_commands(monkeypatch) + create_package(str(pkg), str(tmp_path / "dist"), enable_sdist=False) + + assert "cibuildwheel" not in _tool(calls) + assert "build" in _tool(calls) + + +def test_pyproject_with_cibuildwheel_table_uses_cibuildwheel(tmp_path, monkeypatch): + """ + A package that configures [tool.cibuildwheel] but declares no ext_modules (maturin/PyO3) + must still be routed to cibuildwheel, otherwise `python -m build` produces a wheel tagged + for whatever interpreter and toolchain the build agent happens to have. + """ + pkg = tmp_path / "compiled" + shutil.copytree(pyproject_project_def, pkg) + with open(pkg / "pyproject.toml", "a") as f: + f.write('\n[tool.cibuildwheel]\nbuild = "cp310-*"\n') + + calls = _record_build_commands(monkeypatch) + create_package(str(pkg), str(tmp_path / "dist"), enable_sdist=False) + + assert "cibuildwheel" in _tool(calls) diff --git a/eng/tools/azure-sdk-tools/tests/test_dispatch_checks.py b/eng/tools/azure-sdk-tools/tests/test_dispatch_checks.py new file mode 100644 index 000000000000..c286d38c2e68 --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/test_dispatch_checks.py @@ -0,0 +1,47 @@ +import os +import sys +from types import SimpleNamespace +from unittest.mock import patch + +REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..")) +TOOLS_ROOT = os.path.join(REPO_ROOT, "eng", "tools", "azure-sdk-tools") +if TOOLS_ROOT not in sys.path: + sys.path.insert(0, TOOLS_ROOT) +if REPO_ROOT not in sys.path: + sys.path.insert(0, REPO_ROOT) + +from eng.scripts.dispatch_checks import get_check_dest_dir + + +def test_apistub_dest_dir_uses_package_subdirectory(): + package_dir = os.path.join(REPO_ROOT, "sdk", "core", "azure-core") + artifact_dir = os.path.join(REPO_ROOT, "artifacts") + + with patch( + "eng.scripts.dispatch_checks.ParsedSetup.from_path", + return_value=SimpleNamespace(name="azure-core"), + ): + result = get_check_dest_dir(package_dir, "apistub", artifact_dir) + + assert result == os.path.join(artifact_dir, "azure-core") + + +def test_non_apistub_dest_dir_is_unchanged(): + package_dir = os.path.join(REPO_ROOT, "sdk", "core", "azure-core") + artifact_dir = os.path.join(REPO_ROOT, "artifacts") + + with patch("eng.scripts.dispatch_checks.ParsedSetup.from_path") as parsed_setup: + result = get_check_dest_dir(package_dir, "pylint", artifact_dir) + + assert result == artifact_dir + parsed_setup.assert_not_called() + + +def test_empty_dest_dir_is_unchanged(): + package_dir = os.path.join(REPO_ROOT, "sdk", "core", "azure-core") + + with patch("eng.scripts.dispatch_checks.ParsedSetup.from_path") as parsed_setup: + result = get_check_dest_dir(package_dir, "apistub", None) + + assert result is None + parsed_setup.assert_not_called() diff --git a/eng/tools/azure-sdk-tools/tests/test_package_utils.py b/eng/tools/azure-sdk-tools/tests/test_package_utils.py index 53d73a52e705..03433c681012 100644 --- a/eng/tools/azure-sdk-tools/tests/test_package_utils.py +++ b/eng/tools/azure-sdk-tools/tests/test_package_utils.py @@ -1,5 +1,6 @@ from pathlib import Path import os +import json from unittest.mock import patch, MagicMock from packaging.version import Version @@ -32,6 +33,12 @@ def _create_basic_package(tmp_path: Path, package_name: str, version_line: str): return package_dir +def _write_mgmt_version_file(package_dir: Path, sdk_version: str): + version_file = package_dir / "azure" / "mgmt" / package_dir.name.replace("azure-mgmt-", "") / "_version.py" + version_file.parent.mkdir(parents=True, exist_ok=True) + version_file.write_text(f'VERSION = "{sdk_version}"\n') + + def test_check_file_populates_pyproject_stable(tmp_path, monkeypatch): package_name = "azure-ai-foo" package_dir = _create_basic_package(tmp_path, package_name, "## 1.2.3 (2025-01-01)") @@ -73,6 +80,44 @@ def test_check_file_sets_is_stable_false_for_beta(tmp_path, monkeypatch): assert data["packaging"]["title"] == "FooClient" +def test_preview_api_with_stable_sdk_version_adds_changelog_warning(tmp_path): + package_name = "azure-mgmt-foo" + package_dir = _create_basic_package( + tmp_path, + package_name, + "## 1.0.0 (2026-07-27)\n\n### Features Added\n\n - Initial version", + ) + (package_dir / "_metadata.json").write_text(json.dumps({"apiVersion": "2026-01-01-preview"})) + _write_mgmt_version_file(package_dir, "1.0.0") + + checker = pu.CheckFile(package_dir) + checker.check_preview_api_version() + checker.check_preview_api_version() + + changelog_content = (package_dir / "CHANGELOG.md").read_text() + expected_warning = pu.PREVIEW_API_STABLE_VERSION_WARNING.format( + sdk_version="1.0.0", + api_version="2026-01-01-preview", + ) + assert changelog_content.count(expected_warning) == 1 + assert ("## 1.0.0 (2026-07-27)\n\n" f"{expected_warning}\n\n" "### Features Added") in changelog_content + + +def test_stable_api_with_stable_sdk_version_does_not_add_changelog_warning(tmp_path): + package_name = "azure-mgmt-foo" + package_dir = _create_basic_package( + tmp_path, + package_name, + "## 1.0.0 (2026-07-27)\n\n### Features Added\n\n - Initial version", + ) + (package_dir / "_metadata.json").write_text(json.dumps({"apiVersions": {"Foo": "2026-01-01"}})) + _write_mgmt_version_file(package_dir, "1.0.0") + + pu.CheckFile(package_dir).check_preview_api_version() + + assert pu.PREVIEW_API_STABLE_VERSION_WARNING_PREFIX not in (package_dir / "CHANGELOG.md").read_text() + + def test_get_version_info_treats_0_0_0_as_invalid(): """get_version_info should return empty strings when the latest PyPI version is 0.0.0.""" with patch("pypi_tools.pypi.PyPIClient") as MockClient: @@ -107,3 +152,14 @@ def test_get_version_info_does_not_filter_0_0_0_1(): result = pu.get_version_info("azure-some-package", tag_is_stable=False) assert result == ("0.0.0.1", "0.0.0.1") + + +def test_get_version_info_skips_package_specific_version(): + with patch("pypi_tools.pypi.PyPIClient") as MockClient: + mock_client = MagicMock() + MockClient.return_value = mock_client + mock_client.get_ordered_versions.return_value = [Version("0.9.0"), Version("1.0.0b1")] + + result = pu.get_version_info("azure-mgmt-datatransfer", tag_is_stable=False) + + assert result == ("0.9.0", "0.9.0") diff --git a/eng/tools/azure-sdk-tools/tests/test_parse_functionality.py b/eng/tools/azure-sdk-tools/tests/test_parse_functionality.py index 1405850a0285..1cf0b0774342 100644 --- a/eng/tools/azure-sdk-tools/tests/test_parse_functionality.py +++ b/eng/tools/azure-sdk-tools/tests/test_parse_functionality.py @@ -1,6 +1,8 @@ from ci_tools.parsing import parse_require, ParsedSetup +from ci_tools.parsing.parse_functions import has_cibuildwheel_config from packaging.specifiers import SpecifierSet import os +import shutil from unittest.mock import patch import pytest @@ -333,3 +335,31 @@ def test_namespace_discovery_with_substantial_content(): assert result == "test.module" finally: os.unlink(temp_file) + + +def test_cibuildwheel_config_detected_without_ext_modules(tmp_path): + """ + A [tool.cibuildwheel] table marks a package as compiled even when it declares no + setuptools Extension. Backends such as maturin/PyO3 build native code but expose + no ext_modules, so ext_modules alone would misclassify them as pure Python. + """ + # baseline: an ordinary pyproject package opts into neither + assert has_cibuildwheel_config(pyproject_scenario) == False + assert ParsedSetup.from_path(pyproject_scenario).uses_cibuildwheel == False + + pkg = tmp_path / "maturin_style_pkg" + shutil.copytree(pyproject_scenario, pkg) + with open(pkg / "pyproject.toml", "a") as f: + f.write('\n[tool.cibuildwheel]\nbuild = "cp310-*"\n') + + assert has_cibuildwheel_config(str(pkg)) == True + + parsed = ParsedSetup.from_path(str(pkg)) + assert parsed.ext_modules == [] + assert parsed.uses_cibuildwheel == True + + +def test_cibuildwheel_config_absent_when_no_pyproject(): + # setup.py-only packages have no pyproject.toml to read + assert has_cibuildwheel_config(setup_project_scenario) == False + assert ParsedSetup.from_path(setup_project_scenario).uses_cibuildwheel == False diff --git a/eng/tools/azure-sdk-tools/tests/test_pylint.py b/eng/tools/azure-sdk-tools/tests/test_pylint.py new file mode 100644 index 000000000000..650fa56cee9e --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/test_pylint.py @@ -0,0 +1,48 @@ +from pathlib import Path + +from azpysdk.pylint import SNIPPET_SAMPLE_IMPORT_DISABLES, get_snippet_aware_sample_pylint_commands + + +def test_get_snippet_aware_sample_pylint_commands_separates_snippet_files(tmp_path): + samples_dir = tmp_path / "samples" + nested_dir = samples_dir / "nested" + nested_dir.mkdir(parents=True) + + regular_sample = samples_dir / "regular.py" + regular_sample.write_text("print('regular')\n", encoding="utf-8") + + snippet_sample = nested_dir / "snippet.py" + snippet_sample.write_text( + "# [START example]\nimport os\n# [END example]\n", + encoding="utf-8", + ) + + commands = get_snippet_aware_sample_pylint_commands("python", "samples_pylintrc", str(samples_dir)) + + assert commands == [ + [ + "python", + "-m", + "pylint", + "--rcfile=samples_pylintrc", + "--output-format=parseable", + str(regular_sample), + ], + [ + "python", + "-m", + "pylint", + "--rcfile=samples_pylintrc", + "--output-format=parseable", + f"--disable={','.join(SNIPPET_SAMPLE_IMPORT_DISABLES)}", + str(snippet_sample), + ], + ] + + +def test_get_snippet_aware_sample_pylint_commands_ignores_non_python_files(tmp_path): + samples_dir = tmp_path / "samples" + samples_dir.mkdir() + Path(samples_dir / "README.md").write_text("# [START example]\n", encoding="utf-8") + + assert get_snippet_aware_sample_pylint_commands("python", "samples_pylintrc", str(samples_dir)) == [] diff --git a/eng/tools/azure-sdk-tools/tests/test_pypi_client.py b/eng/tools/azure-sdk-tools/tests/test_pypi_client.py index 4e2b9c591364..5d2e678d7b52 100644 --- a/eng/tools/azure-sdk-tools/tests/test_pypi_client.py +++ b/eng/tools/azure-sdk-tools/tests/test_pypi_client.py @@ -286,3 +286,55 @@ def test_filter_packages_for_compatibility(self, mock_sys): filtered = client.get_ordered_versions(WELL_KNOWN_PACKAGE, True) unfiltered = client.get_ordered_versions(WELL_KNOWN_PACKAGE, False) assert len(filtered) < len(unfiltered) + + +# --------------------------------------------------------------------------- +# Backend selection — force_pypi bypasses the Azure Artifacts feed +# --------------------------------------------------------------------------- + + +class TestBackendSelection: + """The AzDO feed is curated and not a full PyPI mirror, so callers that need + public PyPI (e.g. the breaking-change checker) pass force_pypi=True. + """ + + def _with_index_url(self, index_url, **kwargs): + old = os.environ.get("PIP_INDEX_URL") + try: + os.environ["PIP_INDEX_URL"] = index_url + return PyPIClient(**kwargs) + finally: + if old is not None: + os.environ["PIP_INDEX_URL"] = old + elif "PIP_INDEX_URL" in os.environ: + del os.environ["PIP_INDEX_URL"] + + def test_azdo_index_url_selects_azdo_backend_by_default(self): + client = self._with_index_url(AZDO_FEED_URL) + assert client._backend == "azdo" + + def test_force_pypi_overrides_azdo_index_url(self): + client = self._with_index_url(AZDO_FEED_URL, force_pypi=True) + assert client._backend == "pypi" + + def test_force_pypi_get_ordered_versions_queries_pypi_json(self): + # A package present on public PyPI but absent from the curated feed must + # still resolve when force_pypi=True, because get_ordered_versions goes + # through project() (pypi.org JSON API) rather than the AzDO feed. + project_data = { + "info": {"version": "1.0.0b1"}, + "releases": { + "1.0.0b1": [ + { + "packagetype": "sdist", + "url": "https://example.test/pkg-1.0.0b1.tar.gz", + } + ], + }, + } + client = self._with_index_url(AZDO_FEED_URL, force_pypi=True) + + with patch.object(PyPIClient, "project", return_value=project_data): + versions = client.get_ordered_versions("azure-mgmt-datatransfer") + + assert versions == [Version("1.0.0b1")] diff --git a/eng/tools/azure-sdk-tools/tests/test_sdk_changelog.py b/eng/tools/azure-sdk-tools/tests/test_sdk_changelog.py index 856092308cf6..d9ec53326a3f 100644 --- a/eng/tools/azure-sdk-tools/tests/test_sdk_changelog.py +++ b/eng/tools/azure-sdk-tools/tests/test_sdk_changelog.py @@ -1,10 +1,12 @@ import pytest from unittest.mock import patch from pathlib import Path +import json import tempfile import shutil from packaging_tools.sdk_changelog import main as changelog_main +from packaging_tools.sdk_changelog import trim_changelog_if_needed @pytest.fixture @@ -180,3 +182,281 @@ def test_timeout_default_is_900(mock_get_changelog_content, temp_package): mock_get_changelog_content.assert_called_once() _, kwargs = mock_get_changelog_content.call_args assert kwargs["timeout"] == 900 + + +@patch("packaging_tools.sdk_changelog.get_changelog_content") +def test_output_json_detector_mode_breaking(mock_get_changelog_content, temp_arm_package): + package_path, changelog_path = temp_arm_package + md_output = "### Features Added\n\n - foo\n\n### Breaking Changes\n\n - dropped bar\n" + mock_get_changelog_content.return_value = (md_output, "1.2.3") + output_json = package_path / "changes.json" + + changelog_main(package_path, output_json=output_json) + + # JSON output is written with the expected shape + assert output_json.exists() + with open(output_json, "r", encoding="utf-8") as f: + result = json.load(f) + assert result["changes"] == md_output + assert result["hasBreakingChange"] is True + assert "breakingChangeItems" not in result + + # CHANGELOG.md must NOT be modified in detector mode + with open(changelog_path, "r") as f: + assert f.read() == "# Release History\n\n" + + +@patch("packaging_tools.sdk_changelog.get_changelog_content") +def test_output_json_detector_mode_no_breaking(mock_get_changelog_content, temp_arm_package): + package_path, changelog_path = temp_arm_package + md_output = "### Features Added\n\n - only feature\n" + mock_get_changelog_content.return_value = (md_output, "1.0.0") + output_json = package_path / "nested" / "changes.json" + + changelog_main(package_path, output_json=output_json) + + # Nested output directory is created and JSON written + assert output_json.exists() + with open(output_json, "r", encoding="utf-8") as f: + result = json.load(f) + assert result["changes"] == md_output + assert result["hasBreakingChange"] is False + assert "breakingChangeItems" not in result + + # CHANGELOG.md must NOT be modified in detector mode + with open(changelog_path, "r") as f: + assert f.read() == "# Release History\n\n" + + +def _make_changelog(num_versions: int, body_per_version: str = " - some change\n") -> str: + lines = ["# Release History\n", "\n"] + # Newest version first (highest number), matching real CHANGELOG ordering. + for v in range(num_versions, 0, -1): + lines.append(f"## {v}.0.0 (2024-01-01)\n") + lines.append("\n") + lines.append("### Features Added\n") + lines.append("\n") + lines.append(body_per_version) + lines.append("\n") + return "".join(lines) + + +def _version_headers(content: str) -> list[str]: + import re + + header_re = re.compile(r"^##\s+\S+") + return [line.split()[1] for line in content.splitlines() if header_re.match(line)] + + +def test_trim_changelog_when_over_limit(temp_arm_package): + package_path, changelog_path = temp_arm_package + # 10 sizeable version entries so the file is well over the tiny limit. + with open(changelog_path, "w") as f: + f.write(_make_changelog(10, body_per_version=" - " + "x" * 400 + "\n")) + + # Trigger at 2048, but cut down toward an explicit 1024 target. + trimmed = trim_changelog_if_needed(package_path, size_limit=2048, trim_target=1024) + + assert trimmed is True + content = changelog_path.read_text(encoding="utf-8") + + # min-keep forces keeping the newest entries even past the 1024 target, but never past the + # hard 2048 limit. Each entry is ~450 bytes, so 4 entries exceed the limit and it settles on 3. + assert len(content.encode("utf-8")) <= 2048 + assert content.startswith("# Release History\n") + + kept = _version_headers(content) + # Newest entry is always kept; the oldest ones are completely removed. + assert "10.0.0" in kept + assert "1.0.0" not in kept + # The note references exactly the oldest kept version. + oldest_kept = kept[-1] + assert f"> Changelog entries prior to {oldest_kept} were removed" in content + assert f"https://pypi.org/project/azure-mgmt-test/{oldest_kept}/" in content + assert content.count("> Changelog entries prior to") == 1 + + +def test_trim_changelog_target_defaults_to_half_limit(temp_arm_package): + # When trim_target is not given it defaults to half of size_limit, leaving headroom below the + # trigger limit so the file is not immediately re-trimmed on the next release. + package_path, changelog_path = temp_arm_package + with open(changelog_path, "w") as f: + f.write(_make_changelog(20, body_per_version=" - " + "x" * 200 + "\n")) + + trimmed = trim_changelog_if_needed(package_path, size_limit=4096) + + assert trimmed is True + content = changelog_path.read_text(encoding="utf-8") + # Cut to under half the limit (the default target), not merely under the limit. Here the + # target keeps more than the 4-entry minimum, so min-keep does not raise the size. + assert len(content.encode("utf-8")) <= 4096 // 2 + + +def test_trim_changelog_keeps_min_entries_past_target(temp_arm_package): + # Even when the target would keep fewer, at least CHANGELOG_MIN_KEEP_ENTRIES (4) newest entries + # are retained -- as long as they still fit under the hard size_limit. + package_path, changelog_path = temp_arm_package + # Each entry is large enough that only 1 fits under the 4096 target, but 4 fit under 16 KB. + with open(changelog_path, "w") as f: + f.write(_make_changelog(10, body_per_version=" - " + "x" * 3000 + "\n")) + + trimmed = trim_changelog_if_needed(package_path, size_limit=16 * 1024, trim_target=4096) + + assert trimmed is True + content = changelog_path.read_text(encoding="utf-8") + kept = _version_headers(content) + # min-keep wins over the small target: exactly the 4 newest entries are kept. + assert kept == ["10.0.0", "9.0.0", "8.0.0", "7.0.0"] + assert len(content.encode("utf-8")) <= 16 * 1024 + + +def test_trim_changelog_noop_when_under_limit(temp_arm_package): + package_path, changelog_path = temp_arm_package + original = _make_changelog(6) + with open(changelog_path, "w") as f: + f.write(original) + + trimmed = trim_changelog_if_needed(package_path, size_limit=1024 * 1024) + + assert trimmed is False + with open(changelog_path, "r") as f: + assert f.read() == original + + +def test_trim_changelog_skips_when_single_entry(temp_arm_package): + # With only one version entry there is nothing to trim, even if it is over the limit. + package_path, changelog_path = temp_arm_package + original = _make_changelog(1, body_per_version=" - " + "x" * 2000 + "\n") + with open(changelog_path, "w") as f: + f.write(original) + + trimmed = trim_changelog_if_needed(package_path, size_limit=1024) + + assert trimmed is False + with open(changelog_path, "r") as f: + assert f.read() == original + + +def test_trim_changelog_idempotent(temp_arm_package): + package_path, changelog_path = temp_arm_package + with open(changelog_path, "w") as f: + f.write(_make_changelog(10, body_per_version=" - " + "x" * 400 + "\n")) + + assert trim_changelog_if_needed(package_path, size_limit=2048) is True + with open(changelog_path, "r") as f: + first = f.read() + + # Second run: file is now under the limit, so nothing changes and the note is not duplicated. + trim_changelog_if_needed(package_path, size_limit=2048) + with open(changelog_path, "r") as f: + second = f.read() + + assert first == second + assert second.count("> Changelog entries prior to") == 1 + + +def test_trim_changelog_preserves_note_when_single_entry(temp_arm_package): + # A large file that already has a trim note but now has a single version entry and is still + # over the limit must keep its note (regression for destructive no-op mutation). + package_path, changelog_path = temp_arm_package + changelog = _make_changelog(1, body_per_version=" - " + "x" * 2000 + "\n") + note = ( + "> Changelog entries prior to 1.0.0 were removed to reduce file size. " + "See https://pypi.org/project/azure-mgmt-test/1.0.0/ for the older history.\n" + ) + original = changelog + "\n" + note + with open(changelog_path, "w") as f: + f.write(original) + + trimmed = trim_changelog_if_needed(package_path, size_limit=1024) + + assert trimmed is False + with open(changelog_path, "r") as f: + content = f.read() + assert content == original + assert note in content + + +def test_trim_changelog_note_ignores_unreleased_placeholder(temp_arm_package): + package_path, changelog_path = temp_arm_package + changelog = _make_changelog(5, body_per_version=" - " + "x" * 200 + "\n") + placeholder = "## 0.0.0 (UnReleased)\n" "\n" "### Features Added\n" "\n" f" - {'x' * 2000}\n" "\n" + changelog_path.write_text(changelog.replace("\n\n", f"\n\n{placeholder}", 1), encoding="utf-8") + + trimmed = trim_changelog_if_needed(package_path, size_limit=2300, trim_target=1024) + + assert trimmed is True + content = changelog_path.read_text(encoding="utf-8") + assert "## 0.0.0 (UnReleased)" in content + assert "> Changelog entries prior to 0.0.0 were removed" not in content + assert "> Changelog entries prior to 5.0.0 were removed" in content + + +def _assert_real_changelog_trim(tmp_path, package_name, newest, oldest, kept_count): + # Real-world fixtures (~210 KB) trigger trimming (over the 128 KB limit). Trimming aims for the + # 64 KB target but always keeps at least CHANGELOG_MIN_KEEP_ENTRIES (4) newest entries for + # usefulness -- unless keeping 4 would exceed the 128 KB hard limit, in which case only as many + # as fit are kept. The expected trimmed output is checked in for easy review. + data_dir = Path(__file__).parent / "data" + fixture = data_dir / f"{package_name}-CHANGELOG.md" + expected = (data_dir / f"{package_name}-CHANGELOG.trimmed.md").read_text(encoding="utf-8") + + package_path = tmp_path / package_name.rsplit("-", 1)[0] + package_path.mkdir() + shutil.copy(fixture, package_path / "CHANGELOG.md") + + trimmed = trim_changelog_if_needed(package_path) + + assert trimmed is True + content = (package_path / "CHANGELOG.md").read_text(encoding="utf-8") + + # Trimmed output matches the checked-in expected fixture exactly. + assert content == expected + # Stays under the 128 KB hard limit. Measure normalized (LF) bytes so the check matches the + # pipeline (Linux) regardless of the local platform's newline translation. + assert len(content.encode("utf-8")) <= 128 * 1024 + + pkg = package_path.name + kept = _version_headers(content) + # The newest entries are kept; the oldest history is removed completely. + assert len(kept) == kept_count + assert kept[0] == newest + assert kept[-1] == oldest + assert ( + f"> Changelog entries prior to {oldest} were removed to reduce file size. " + f"See https://pypi.org/project/{pkg}/{oldest}/ for the older history." in content + ) + + +def test_trim_changelog_azure_mgmt_sql_fixture(tmp_path): + # The 4.0.0 stable entry alone is ~95 KB, so keeping the 4-entry minimum (~138 KB) would exceed + # the 128 KB limit; the hard-limit cap reduces it to the 3 newest entries (~127 KB). + _assert_real_changelog_trim(tmp_path, "azure-mgmt-sql-4.0.0", newest="4.0.0", oldest="4.0.0b24", kept_count=3) + + +def test_trim_changelog_azure_mgmt_network_fixture(tmp_path): + # min-keep=4 keeps the 4 newest entries (~121 KB), still under the 128 KB limit. + _assert_real_changelog_trim(tmp_path, "azure-mgmt-network-31.0.0", newest="31.0.0", oldest="30.1.0", kept_count=4) + + +def test_trim_changelog_azure_mgmt_datafactory_fixture(tmp_path): + # min-keep=4 keeps the 4 newest entries (~90 KB), well under the 128 KB limit. + _assert_real_changelog_trim( + tmp_path, "azure-mgmt-datafactory-10.0.0b1", newest="10.0.0b1", oldest="9.1.0", kept_count=4 + ) + + +def test_trim_changelog_azure_mgmt_containerservice_fixture(tmp_path): + # Many small entries: the 64 KB target keeps the 15 newest entries (~60 KB), well above the + # 4-entry floor and under the 128 KB limit. + _assert_real_changelog_trim( + tmp_path, "azure-mgmt-containerservice-41.4.0b1", newest="41.4.0b1", oldest="39.1.0", kept_count=15 + ) + + +def test_trim_changelog_azure_mgmt_cosmosdb_fixture(tmp_path): + # Many small entries: the 64 KB target keeps the 18 newest entries (~63 KB), well above the + # 4-entry floor and under the 128 KB limit. + _assert_real_changelog_trim( + tmp_path, "azure-mgmt-cosmosdb-10.0.0b6", newest="10.0.0b6", oldest="9.1.0b1", kept_count=18 + ) diff --git a/eng/tools/azure-sdk-tools/tests/test_vnext_issue_creator.py b/eng/tools/azure-sdk-tools/tests/test_vnext_issue_creator.py new file mode 100644 index 000000000000..1e8ed3eb504d --- /dev/null +++ b/eng/tools/azure-sdk-tools/tests/test_vnext_issue_creator.py @@ -0,0 +1,143 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +from unittest import mock + +import pytest + +from gh_tools import vnext_issue_creator + + +class _FakeParsedSetup: + def __init__(self, name, classifiers): + self.name = name + self.classifiers = classifiers + + +class _FakeIssue: + def __init__(self, number, title, login): + self.number = number + self.title = title + self.user = mock.MagicMock() + self.user.login = login + self.edit = mock.MagicMock() + self.add_to_assignees = mock.MagicMock() + + +@pytest.mark.parametrize( + "classifiers, expected_deprecated", + [ + (["Development Status :: 5 - Production/Stable"], False), + (["Development Status :: 4 - Beta"], False), + (["Development Status :: 7 - Inactive"], True), + (["Development Status :: 5 - Production/Stable", "Development Status :: 7 - Inactive"], True), + ], +) +def test_is_package_deprecated(classifiers, expected_deprecated): + parsed = _FakeParsedSetup("azure-mgmt-fake", classifiers) + with mock.patch.object(vnext_issue_creator.ParsedSetup, "from_path", return_value=parsed): + assert vnext_issue_creator.is_package_deprecated("some/path") is expected_deprecated + + +def test_is_package_deprecated_parse_failure_returns_false(): + with mock.patch.object(vnext_issue_creator.ParsedSetup, "from_path", side_effect=RuntimeError("boom")): + assert vnext_issue_creator.is_package_deprecated("some/path") is False + + +def test_create_vnext_issue_skips_and_closes_for_deprecated_package(): + with mock.patch.object( + vnext_issue_creator, "is_package_deprecated", return_value=True + ) as mock_deprecated, mock.patch.object(vnext_issue_creator, "close_vnext_issue") as mock_close, mock.patch.object( + vnext_issue_creator, "Github" + ) as mock_github: + vnext_issue_creator.create_vnext_issue("sdk/mixedreality/azure-mgmt-mixedreality", "mypy") + + mock_deprecated.assert_called_once() + mock_close.assert_called_once_with("azure-mgmt-mixedreality", "mypy") + # No GitHub client should be constructed when short-circuiting on a deprecated package. + mock_github.assert_not_called() + + +def test_create_vnext_issue_proceeds_for_active_package(): + with mock.patch.object(vnext_issue_creator, "is_package_deprecated", return_value=False), mock.patch.object( + vnext_issue_creator, "close_vnext_issue" + ) as mock_close, mock.patch.dict("os.environ", {"GH_TOKEN": "fake-token"}), mock.patch.object( + vnext_issue_creator, "Github" + ) as mock_github: + repo = mock.MagicMock() + repo.get_issues.return_value = [] + mock_github.return_value.get_repo.return_value = repo + with mock.patch.object(vnext_issue_creator, "get_labels", return_value=([], [])), mock.patch.object( + vnext_issue_creator, "get_build_link", return_value="http://build" + ), mock.patch.object(vnext_issue_creator, "get_date_for_version_bump", return_value="2026-04-13"): + vnext_issue_creator.create_vnext_issue("sdk/fake/azure-mgmt-fake", "mypy", check_version="1.0.0") + + # Active package: we do not close an issue, we create one. + mock_close.assert_not_called() + repo.create_issue.assert_called_once() + + +def test_find_vnext_issues_matches_all_automation_creators_and_ignores_others(): + repo = mock.MagicMock() + repo.get_issues.return_value = [ + _FakeIssue(100, "azure-ai-textanalytics needs typing updates for mypy version 1.19.1", "azure-sdk"), + _FakeIssue( + 200, "azure-ai-textanalytics needs typing updates for mypy version 1.19.1", "azure-sdk-automation[bot]" + ), + # Same title but opened by a human -> must be ignored. + _FakeIssue(300, "azure-ai-textanalytics needs typing updates for mypy version 1.19.1", "some-human"), + # Different package -> must be ignored. + _FakeIssue(400, "azure-core needs typing updates for mypy version 1.19.1", "azure-sdk"), + ] + + result = vnext_issue_creator.find_vnext_issues(repo, "mypy", "azure-ai-textanalytics") + + assert [issue.number for issue in result] == [100, 200] + + +def test_close_vnext_issue_closes_all_duplicates(): + dup_a = _FakeIssue(100, "azure-ai-textanalytics needs typing updates for mypy version 1.19.1", "azure-sdk") + dup_b = _FakeIssue( + 200, "azure-ai-textanalytics needs typing updates for mypy version 1.19.1", "azure-sdk-automation[bot]" + ) + repo = mock.MagicMock() + with mock.patch.dict("os.environ", {"GH_TOKEN": "fake-token"}), mock.patch.object( + vnext_issue_creator, "Github" + ) as mock_github, mock.patch.object(vnext_issue_creator, "find_vnext_issues", return_value=[dup_a, dup_b]): + mock_github.return_value.get_repo.return_value = repo + vnext_issue_creator.close_vnext_issue("azure-ai-textanalytics", "mypy") + + dup_a.edit.assert_called_once_with(state="closed") + dup_b.edit.assert_called_once_with(state="closed") + + +def test_create_vnext_issue_updates_newest_and_closes_older_duplicates(): + dup_a = _FakeIssue(100, "azure-ai-textanalytics needs typing updates for mypy version 1.19.1", "azure-sdk") + dup_b = _FakeIssue( + 200, "azure-ai-textanalytics needs typing updates for mypy version 1.19.1", "azure-sdk-automation[bot]" + ) + repo = mock.MagicMock() + with mock.patch.object(vnext_issue_creator, "is_package_deprecated", return_value=False), mock.patch.dict( + "os.environ", {"GH_TOKEN": "fake-token"} + ), mock.patch.object(vnext_issue_creator, "Github") as mock_github, mock.patch.object( + vnext_issue_creator, "find_vnext_issues", return_value=[dup_a, dup_b] + ), mock.patch.object( + vnext_issue_creator, "get_labels", return_value=([], []) + ), mock.patch.object( + vnext_issue_creator, "get_build_link", return_value="http://build" + ), mock.patch.object( + vnext_issue_creator, "get_date_for_version_bump", return_value="2026-04-13" + ): + mock_github.return_value.get_repo.return_value = repo + vnext_issue_creator.create_vnext_issue( + "sdk/textanalytics/azure-ai-textanalytics", "mypy", check_version="1.19.1" + ) + + # No new issue created when duplicates already exist. + repo.create_issue.assert_not_called() + # Older duplicate is closed; newest is updated (edited but not closed). + dup_a.edit.assert_called_once_with(state="closed") + dup_b.edit.assert_called_once() + assert dup_b.edit.call_args.kwargs.get("state") != "closed" diff --git a/sdk/cosmos/azure-cosmos/Cargo.lock b/sdk/cosmos/azure-cosmos/Cargo.lock index 6dc32445175c..184e1055aa8d 100644 --- a/sdk/cosmos/azure-cosmos/Cargo.lock +++ b/sdk/cosmos/azure-cosmos/Cargo.lock @@ -148,6 +148,7 @@ dependencies = [ [[package]] name = "azure_data_cosmos_driver" version = "0.7.0" +source = "git+https://github.com/Azure/azure-sdk-for-rust?rev=658f396d722aacd8928a9018882f935d815f8bb6#658f396d722aacd8928a9018882f935d815f8bb6" dependencies = [ "arc-swap", "async-lock", @@ -1205,6 +1206,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" dependencies = [ "once_cell", + "python3-dll-a", "target-lexicon", ] @@ -1243,6 +1245,15 @@ dependencies = [ "syn", ] +[[package]] +name = "python3-dll-a" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d80ba7540edb18890d444c5aa8e1f1f99b1bdf26fb26ae383135325f4a36042b" +dependencies = [ + "cc", +] + [[package]] name = "quinn" version = "0.11.9" diff --git a/sdk/cosmos/azure-cosmos/Cargo.toml b/sdk/cosmos/azure-cosmos/Cargo.toml index 623e4e9b74b7..b6b1ef7b286a 100644 --- a/sdk/cosmos/azure-cosmos/Cargo.toml +++ b/sdk/cosmos/azure-cosmos/Cargo.toml @@ -44,7 +44,7 @@ unexpected_cfgs = { level = "warn", check-cfg = ['cfg(test_category, values("emu # --- azure-sdk-for-rust crates --- # azure_core aligned with the driver's published version so the two unify. azure_core = "1.1.0" -azure_identity = { path = "../../../../azure-sdk-for-rust/sdk/identity/azure_identity" } +azure_identity = { git = "https://github.com/Azure/azure-sdk-for-rust", rev = "658f396d722aacd8928a9018882f935d815f8bb6" } # --- crates.io deps the binding uses --- async-lock = "3" diff --git a/sdk/cosmos/azure-cosmos/azure_cosmos_rust/Cargo.toml b/sdk/cosmos/azure-cosmos/azure_cosmos_rust/Cargo.toml index 0994db84cd8e..6f017e012a31 100644 --- a/sdk/cosmos/azure-cosmos/azure_cosmos_rust/Cargo.toml +++ b/sdk/cosmos/azure-cosmos/azure_cosmos_rust/Cargo.toml @@ -20,15 +20,22 @@ crate-type = ["cdylib"] [dependencies] # PyO3 makes Rust functions Python-callable. # -# `extension-module` : build a Python extension (no link to libpython). -# `abi3-py39` : target the stable ABI from Python 3.9 onward, so -# one wheel per platform works for every Python 3.9+. -pyo3 = { version = "0.22", features = ["extension-module", "abi3-py39"] } +# `extension-module` : build a Python extension (no link to libpython). +# `abi3-py310` : target the stable ABI from Python 3.10 onward, so +# one wheel per platform works for every Python 3.10+. +# `generate-import-lib` : synthesize the Windows import library for the target +# architecture instead of taking it from an installed +# interpreter. Required to cross-compile the ARM64 +# Windows wheel, which is built on an x64 agent where +# only an x64 interpreter exists. No effect elsewhere. +pyo3 = { version = "0.22", features = [ + "extension-module", + "abi3-py310", + "generate-import-lib", +] } -# The driver crate, pulled in as a path dependency from a sibling clone of -# the azure-sdk-for-rust repo. Both repos are expected to live side-by-side -# under the same parent directory (e.g. ~/source/repos/). If you keep them -# elsewhere, edit this path or change it to a `git = ...` dependency. +# The driver crate, pinned to a revision of the azure-sdk-for-rust repo so the +# build is reproducible and needs no sibling clone. # # The `__internal_native_query_plan` feature turns on the driver's local # query-plan builder. A query plan is the recipe for how to run a query @@ -40,7 +47,7 @@ pyo3 = { version = "0.22", features = ["extension-module", "abi3-py39"] } # read_feed_ranges does not use it (listing key-space slices needs no query # plan). The `__internal_` prefix marks it as an unstable, not-yet-public # driver feature. -azure_data_cosmos_driver = { path = "../../../../../azure-sdk-for-rust/sdk/cosmos/azure_data_cosmos_driver", features = ["__internal_native_query_plan"] } +azure_data_cosmos_driver = { git = "https://github.com/Azure/azure-sdk-for-rust", rev = "658f396d722aacd8928a9018882f935d815f8bb6", features = ["__internal_native_query_plan"] } # Tokio runtime. Lives here, not in the driver, because the binding is # what bridges Python's sync call into Rust's async world. diff --git a/sdk/cosmos/azure-cosmos/pyproject.toml b/sdk/cosmos/azure-cosmos/pyproject.toml index 18a69203df0c..4b685c319b09 100644 --- a/sdk/cosmos/azure-cosmos/pyproject.toml +++ b/sdk/cosmos/azure-cosmos/pyproject.toml @@ -1,11 +1,154 @@ # Build system. Maturin reads `[tool.maturin]` below to decide what to # compile and where to put the result. +# +# maturin is pinned rather than given a range because the wheel it produces has +# to be identical everywhere. With a range, each platform resolved whatever the +# package feed happened to offer for its architecture: x86_64 and Windows took +# 1.14.1, macOS 1.15.0, and the emulated aarch64 container silently fell back to +# 1.10.2, which built a wheel containing the Python sources but no compiled +# extension. Pinning keeps every target on one known-good version and turns a +# missing wheel into a loud failure instead of a silent downgrade. [build-system] -requires = ["maturin>=1.4,<2.0"] +requires = ["maturin==1.15.0"] build-backend = "azure_cosmos_build_backend" backend-path = ["."] +# Python project metadata, required by maturin. Without this block maturin +# falls back to the Rust crate and produces a wheel named +# `azure_cosmos_rust-0.1.0` with no dependencies; it never reads setup.py. +# +# TODO: consolidate metadata onto a single source. It currently lives in three +# places that must be kept in agreement by hand: +# 1. setup.py - still the source used by the sdist/pure-Python path +# 2. this [project] block - used by every cibuildwheel/maturin wheel +# 3. azure/cosmos/_version.py - read by setup.py and by the runtime +# The copies already disagree on purpose in two spots, and those decisions need +# to be re-made when they are merged: +# - requires-python is >=3.10 here but >=3.9 in setup.py, because abi3-py310 +# wheels cannot load on 3.9. +# - setup.py publishes README + CHANGELOG as the long description; PEP 621 +# `readme` takes one file, so the changelog is absent from the wheel. +# Until then: `azure/cosmos/_version.py` must report the same version as +# `[project].version`, and nothing enforces that. +[project] +name = "azure-cosmos" +version = "4.16.2" +description = "Microsoft Azure Cosmos Client Library for Python" +readme = "README.md" +requires-python = ">=3.10" +license = { text = "MIT License" } +authors = [{ name = "Microsoft Corporation", email = "askdocdb@microsoft.com" }] +maintainers = [{ name = "Microsoft", email = "askdocdb@microsoft.com" }] +keywords = ["azure", "azure sdk"] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "License :: OSI Approved :: MIT License", +] +dependencies = [ + "azure-core>=1.30.0", + "typing-extensions>=4.6.0", +] + +[project.optional-dependencies] +aio = ["azure-core[aio]>=1.30.0"] + +[project.urls] +Homepage = "https://github.com/Azure/azure-sdk-for-python" +Repository = "https://github.com/Azure/azure-sdk-for-python" + +# `abi3-py310` means one wheel per platform serves every CPython 3.10+, so a +# single `cp310-*` build covers the whole supported range. +[tool.cibuildwheel] +build = ["cp310-*"] +skip = ["*-musllinux*"] +test-command = "python -c \"from azure.cosmos import CosmosClient, _rust; assert _rust.create_database\"" + +[tool.cibuildwheel.macos] +archs = ["arm64"] +# The extension is compiled by the internal Microsoft toolchain named in +# rust-toolchain.toml. msrustup's multiplexers must come before any upstream +# rustup proxies in ~/.cargo/bin, otherwise rustup receives the `ms-` channel +# name it cannot resolve. Install msrustup first: https://aka.ms/msrustup +environment = { PATH = "$HOME/.msrustup/multiplexers/bin:$PATH" } + +[tool.cibuildwheel.windows] +# ARM64 is cross-compiled from an x64 agent; see the override below. +archs = ["AMD64", "ARM64"] +# PATH is deliberately not set here. cibuildwheel parses `environment` with +# bashlex, which treats the backslashes in a Windows path as escapes. The +# RustInstaller pipeline task already puts msrustup's multiplexers ahead of any +# upstream rustup proxies on the agent, and msrustup updates the shell profile +# for local builds, so the inherited PATH is already correct in both cases. + +[tool.cibuildwheel.linux] +archs = ["x86_64", "aarch64"] +manylinux-x86_64-image = "manylinux_2_28" +manylinux-aarch64-image = "manylinux_2_28" +# PIP_INDEX_URL lets a build behind a package proxy reach an index from inside +# the container. The MSRUSTUP_* values are the caller's credentials for the +# internal Rust toolchain feed; they are forwarded at build time and must never +# be written into this file. +# +# The CARGO_REGISTRIES_* names point cargo at an Azure Artifacts feed that +# mirrors crates.io, because a build agent cannot reach index.crates.io. Cargo +# reads registries..index and its credentials from the environment, but it +# ignores source replacement set that way, so before-all writes a small config +# naming the same registry. The registry name embedded in these variables has to +# match the one the pipeline authenticates against. +environment-pass = [ + "PIP_INDEX_URL", + "MSRUSTUP_ACCESS_TOKEN", + "MSRUSTUP_PAT", + "MSRUSTUP_FEED_URL", + "CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_INDEX", + "CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_TOKEN", + "CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_CREDENTIAL_PROVIDER", +] +environment = { MSRUSTUP_HOME = "/msrustup", CARGO_HOME = "/cargo", PATH = "/msrustup/multiplexers/bin:$PATH", CARGO_NET_GIT_FETCH_WITH_CLI = "true" } +# The extension is compiled by the internal Microsoft toolchain named in +# rust-toolchain.toml, so the container needs msrustup rather than rustup. The +# manylinux image already provides git, curl, unzip and a C toolchain; only jq +# is missing. The bootstrap runs outside /project because the installer drops +# the msrustup binary into the working directory and /project is the mounted +# source tree, but `toolchain install` runs inside /project so it reads +# rust-toolchain.toml. +# +# The cargo config is only written when an index was forwarded, so a local build +# with direct crates.io access keeps working unchanged. +before-all = "dnf install -y jq && mkdir -p $MSRUSTUP_HOME/bootstrap && cd $MSRUSTUP_HOME/bootstrap && sh /project/scripts/install-msrustup.sh && cd /project && $MSRUSTUP_HOME/bootstrap/msrustup toolchain install && sh /project/scripts/configure-cargo-feed.sh" + +# Windows ARM64 has no hosted ARM64 build agent, so the wheel is cross-compiled +# from x64. maturin reads the target from CARGO_BUILD_TARGET, and the toolchain +# must have been installed with aarch64-pc-windows-msvc as an additional target +# (the pipeline passes it to RustInstaller). +# +# cibuildwheel drives this build with the x64 interpreter, because an ARM64 +# python cannot be executed on an x64 agent. maturin refuses that interpreter +# once it sees the mismatched target, and without PYO3_CROSS_LIB_DIR it falls +# back to searching the host for an ARM64 interpreter that cannot exist. Setting +# the variable moves maturin onto its abi3 Windows cross-compilation path, where +# it substitutes a placeholder interpreter instead of probing for a real one. +# The pipeline points it at the ARM64 CPython it already downloads for +# cibuildwheel, so the value names a real directory of ARM64 import libraries. +[[tool.cibuildwheel.overrides]] +select = "*-win_arm64" +environment = { CARGO_BUILD_TARGET = "aarch64-pc-windows-msvc", PYO3_CROSS_LIB_DIR = "$PYTHON_ARM64_LIB_DIR" } + [tool.maturin] +# Fail the build when Cargo.lock is missing or no longer matches the Cargo.toml +# files, so a release cannot silently resolve different dependency versions. +locked = true + # Path to the binding crate's Cargo.toml. Maturin invokes `cargo build` # from there, locates the produced cdylib, renames it to # _rust.{pyd,so} and drops it into azure/cosmos/. @@ -30,6 +173,17 @@ include = [ { path = "azure_cosmos_build_backend.py", format = "sdist" }, ] +# Byte-compiled output and locally built extensions belong to whoever ran the +# build, not to the release. Without this a developer's working tree leaks its +# __pycache__ directories into every wheel. +exclude = [ + "**/__pycache__/**", + "**/*.py[co]", + "azure/cosmos/_rust.*.so", + "azure/cosmos/_rust.*.pyd", + "azure/cosmos/_rust.*.dylib", +] + [tool.azure-sdk-build] mypy = true pyright = false diff --git a/sdk/cosmos/azure-cosmos/rust-toolchain.toml b/sdk/cosmos/azure-cosmos/rust-toolchain.toml new file mode 100644 index 000000000000..5a7f5ed33321 --- /dev/null +++ b/sdk/cosmos/azure-cosmos/rust-toolchain.toml @@ -0,0 +1,10 @@ +# Toolchain used to build the Rust extension. `ms-` channels are the internal +# Microsoft Rust toolchains resolved by msrustup (https://aka.ms/msrustup); +# upstream rustup cannot resolve them, so msrustup must be installed. +# +# The minor-only channel name keeps this pinned to the production 1.97 line +# while still picking up its point releases via `msrustup toolchain update`. +# It must stay at or above the `rust-version` declared in Cargo.toml. +[toolchain] +channel = "ms-prod-1.97" +profile = "minimal" diff --git a/sdk/cosmos/azure-cosmos/scripts/configure-cargo-feed.sh b/sdk/cosmos/azure-cosmos/scripts/configure-cargo-feed.sh new file mode 100644 index 000000000000..d061569a400d --- /dev/null +++ b/sdk/cosmos/azure-cosmos/scripts/configure-cargo-feed.sh @@ -0,0 +1,44 @@ +#!/bin/sh +# Point cargo at an Azure Artifacts feed that mirrors crates.io. +# +# Run by the cibuildwheel `before-all` hook inside the manylinux container. Build +# agents are network isolated and cannot reach index.crates.io, so cargo has to +# resolve through the feed instead. +# +# Cargo reads `registries..index` and its credentials from the environment, +# but it ignores `source.crates-io.replace-with` set that way, so the replacement +# has to live in a config file. The index and the token stay in the environment +# and are never written to disk here. +# +# Does nothing when no index was forwarded, so a developer building locally with +# direct crates.io access is unaffected. +set -eu + +REGISTRY_NAME=azure-sdk-for-rust-public +INDEX="${CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_INDEX:-}" + +if [ -z "$INDEX" ]; then + echo "No cargo registry index forwarded, leaving crates.io source unchanged." + exit 0 +fi + +if [ -z "${CARGO_REGISTRIES_AZURE_SDK_FOR_RUST_PUBLIC_TOKEN:-}" ]; then + echo "Cargo registry index is set but its token is missing; the feed requires authentication." >&2 + exit 1 +fi + +CARGO_CONFIG_HOME="${CARGO_HOME:-$HOME/.cargo}" +mkdir -p "$CARGO_CONFIG_HOME" + +# git-fetch-with-cli makes cargo shell out to git for git dependencies rather +# than using its built in client, so those fetches use the container's git +# configuration and credentials. +cat > "$CARGO_CONFIG_HOME/config.toml" </dev/null 2>&1 || { echo >&2 "install-msrustup requires uname to detect host."; exit 1; } +command -v curl >/dev/null 2>&1 || { echo >&2 "install-msrustup requires curl to download msrustup."; exit 1; } +command -v jq >/dev/null 2>&1 || { echo >&2 "install-msrustup requires jq to parse Azure Artifact response."; exit 1; } +command -v unzip >/dev/null 2>&1 || { echo >&2 "install-msrustup requires unzip to unzip msrustup."; exit 1; } + +if [ -z "$MSRUSTUP_ACCESS_TOKEN" ] && [ -z "$MSRUSTUP_PAT" ]; then + if $(command -v azureauth >/dev/null 2>&1); then + MSRUSTUP_ACCESS_TOKEN=$(azureauth ado token) + elif $(command -v azureauth.exe >/dev/null 2>&1); then + MSRUSTUP_ACCESS_TOKEN=$(azureauth.exe ado token) + else + echo "MSRUSTUP_ACCESS_TOKEN or MSRUSTUP_PAT must be set or azureauth must be present." + exit 1 + fi +fi + +if [ -z "$MSRUSTUP_ACCESS_TOKEN" ]; then + accessMethod=pat +else + accessMethod=token +fi + +if [ -z "$MSRUSTUP_FEED_URL" ]; then + MSRUSTUP_FEED_URL='https://devdiv.pkgs.visualstudio.com/DevDiv/_packaging/Rust.Sdk%40Release/nuget/v3/index.json' +fi + +# Now that we've tested for missing required variables, treat unset variables as an error. +set -eu + +cleanup() { + rm -f msrustup.zip +} +trap cleanup EXIT + +do_curl() { + if [ "$accessMethod" = "token" ]; then + curl -sSfLH "Authorization: Bearer $MSRUSTUP_ACCESS_TOKEN" --retry 5 $@ + else + curl -sSfLu :$MSRUSTUP_PAT --retry 5 $@ + fi +} + +target_arch='' +target_rest='' + +# We intentionally use the msvc host toolchain for variations of Windows (CYGWIN, MINGW, etc) +# since no other Windows host toolchain is supported. +unameOut="$(uname -s)" +case "${unameOut}" in + Linux*) target_rest="-unknown-linux-gnu";; + Darwin*) target_rest="-apple-darwin";; + CYGWIN*) target_rest="-pc-windows-msvc";; + MINGW*) target_rest="-pc-windows-msvc";; + MSYS_NT*) target_rest="-pc-windows-msvc";; + *) { echo "host environment could not be determined: ${unameOut}"; exit 1; } +esac + +# Detect x86_64 or aarch64 (Apple devices report as "arm64", Linux as "aarch64" usually). +arch="$(uname -m)" +case "${arch}" in + x86_64*) target_arch="x86_64";; + aarch64*) target_arch="aarch64";; + arm64*) target_arch="aarch64";; + *) { echo "unknown host arch: ${arch}"; exit 1; } +esac + +echo "Host is ${target_arch}${target_rest}" +package="rust.msrustup-${target_arch}${target_rest}" + +response=$(do_curl $MSRUSTUP_FEED_URL) +base=$(echo $response | jq -r '.resources[] | select(."@type"=="PackageBaseAddress/3.0.0") | .["@id"]') +version=$(do_curl "$base$package/index.json" | jq -r '.versions[0]') +latest="${base}${package}/$version/$package.$version.nupkg" + +echo "Downloading msrustup $version from $latest" +do_curl "$latest" -o msrustup.zip + +if [ "$target_rest" = "-pc-windows-msvc" ]; then + unzip -jqo msrustup.zip tools/msrustup.exe +else + unzip -jqo msrustup.zip tools/msrustup + chmod +x msrustup +fi \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos/setup.py b/sdk/cosmos/azure-cosmos/setup.py index 1d9aaa9726a0..e8da23405bd7 100644 --- a/sdk/cosmos/azure-cosmos/setup.py +++ b/sdk/cosmos/azure-cosmos/setup.py @@ -6,6 +6,11 @@ # ------------------------------------ # pylint:disable=missing-docstring +# TODO: this file duplicates the metadata in pyproject.toml's [project] block. +# Wheels built by maturin/cibuildwheel use [project] and ignore everything +# below, so any edit here must be mirrored there (and vice versa) until the two +# are consolidated. See the TODO above [project] in pyproject.toml. + import re import os from io import open