diff --git a/src/foundry-cost-control/HISTORY.rst b/src/foundry-cost-control/HISTORY.rst new file mode 100644 index 00000000000..abbff5a61a7 --- /dev/null +++ b/src/foundry-cost-control/HISTORY.rst @@ -0,0 +1,8 @@ +.. :changelog: + +Release History +=============== + +1.0.0b1 +++++++ +* Initial release. \ No newline at end of file diff --git a/src/foundry-cost-control/PostEmitter.ps1 b/src/foundry-cost-control/PostEmitter.ps1 new file mode 100644 index 00000000000..206d4372c92 --- /dev/null +++ b/src/foundry-cost-control/PostEmitter.ps1 @@ -0,0 +1,23 @@ +# +# Run this script after re-emitting the code: +# powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\PostEmitter.ps1 +# + +# Change 1: +# I did manual edits to README.md and setup.py files. Make sure you restore +# this version after you re-emit + +& git -C $PSScriptRoot restore -- README.md +if ($LASTEXITCODE -ne 0) { + throw "Failed to restore README.md after CLI emission." +} + +& git -C $PSScriptRoot restore -- setup.py +if ($LASTEXITCODE -ne 0) { + throw "Failed to restore setup.py after CLI emission." +} + +# Change 2: +# Use CoPilot to fix an emitter bug (?). Use this prompt: +# Run "cls & azdev test foundry-cost-control --live --debug" and fix the resulting error. A similar fix was made in the past, so you can look at this commit for reference: https://github.com/Azure/azure-cli-extensions/pull/10298/changes/d981f14597cdcd118c3ab7b17264057944496a97 +# diff --git a/src/foundry-cost-control/README.md b/src/foundry-cost-control/README.md new file mode 100644 index 00000000000..e73cebc8a48 --- /dev/null +++ b/src/foundry-cost-control/README.md @@ -0,0 +1,214 @@ +# Azure CLI Foundry Cost Control Extension + +This is an extension to Azure CLI to manage Foundry Cost Control policies. + +## Install the extension + +Add the extension: + +``` +az extension add --name foundry-cost-control +``` + +Verify your installation by viewing all extensions: + +``` +az extension list --output table +``` + +## Get usage help on affected commands + +``` +az cognitiveservices account update --help +az cognitiveservices account deployment create --help +az cognitiveservices account deployment update --help +az cognitiveservices account costcontrol --help +``` + +## Cost control CRUD operations + +Cost-control policy commands use `az cognitiveservices account costcontrol`. +The examples below assume that the owning AI Services account already exists. + +First, save the following rule definition as `cost-control-rules.json`: + +```json +[ + { + "name": "per-agent-monthly", + "counterKey": [ + { + "type": "agent" + } + ], + "unit": "usd", + "amount": 200, + "period": "month", + "recurring": true, + "match": { + "foundryCallerAgentId": [ + "agent-123" + ] + }, + "thresholds": [ + { + "type": "percentage", + "value": 80, + "action": "alert" + }, + { + "type": "absolute", + "value": 0, + "action": "audit" + } + ] + } +] +``` + +Set values used by the examples: + +```powershell +$resourceGroup = "my-resource-group" +$accountName = "my-account" +$costControlName = "production-agents" +$rulesFile = ".\cost-control-rules.json" +``` + +### Create + +Create a cost control and save its resource ID for use when attaching it to an +account or deployment: + +```powershell +$costControlId = az cognitiveservices account costcontrol create ` + --resource-group $resourceGroup ` + --account-name $accountName ` + --cost-control-name $costControlName ` + --display-name "Production agent monthly budget" ` + --rules "@$rulesFile" ` + --query id ` + --output tsv +``` + +### List + +List all cost controls owned by an account: + +```powershell +az cognitiveservices account costcontrol list ` + --resource-group $resourceGroup ` + --account-name $accountName ` + --output table +``` + +### Show + +Get a specific cost control: + +```powershell +az cognitiveservices account costcontrol show ` + --resource-group $resourceGroup ` + --account-name $accountName ` + --cost-control-name $costControlName +``` + +### Update + +Update the display name while preserving the existing rules: + +```powershell +az cognitiveservices account costcontrol update ` + --resource-group $resourceGroup ` + --account-name $accountName ` + --cost-control-name $costControlName ` + --display-name "Updated production agent monthly budget" +``` + +To replace the rules, also pass `--rules "@$rulesFile"` with the updated rules +file. + +### Delete + +Detach the cost control from any accounts or deployments that use it, and then +delete it: + +```powershell +az cognitiveservices account costcontrol delete ` + --resource-group $resourceGroup ` + --account-name $accountName ` + --cost-control-name $costControlName ` + --yes +``` + +## Attach cost controls to an account + +The extension overrides `az cognitiveservices account update` to add preview +arguments for attaching cost controls and configuring account-level telemetry +and event connections: + +```powershell +az cognitiveservices account update ` + --name my-account ` + --resource-group my-resource-group ` + --cost-control-ids $costControlId1 $costControlId2 ` + --cost-control-connections '{ + "appInsightsConnectionId": "/subscriptions/.../connections/application-insights", + "eventGridConnectionId": "/subscriptions/.../connections/event-grid" + }' +``` + +Remove all cost-control attachments by specifying the argument without values: + +```powershell +az cognitiveservices account update ` + --name my-account ` + --resource-group my-resource-group ` + --cost-control-ids +``` + +Remove the configured account-level connections with: + +```powershell +az cognitiveservices account update ` + --name my-account ` + --resource-group my-resource-group ` + --clear-cost-control-connections +``` + +These arguments use the `2026-09-15-preview` Cognitive Services Management API. + +## Attach a cost control to a deployment + +Create a deployment with its cost-control attachment in the same request: + +```powershell +az cognitiveservices account deployment create ` + --name my-account ` + --resource-group my-resource-group ` + --deployment-name my-deployment ` + --model-name gpt-4.1 ` + --model-version 2025-04-14 ` + --model-format OpenAI ` + --sku-name GlobalStandard ` + --sku-capacity 10 ` + --cost-control-ids $costControlId +``` + +Update or clear the attachment on an existing deployment: + +```powershell +az cognitiveservices account deployment update ` + --name my-account ` + --resource-group my-resource-group ` + --deployment-name my-deployment ` + --cost-control-ids $costControlId + +az cognitiveservices account deployment update ` + --name my-account ` + --resource-group my-resource-group ` + --deployment-name my-deployment ` + --cost-control-ids +``` + +The current preview supports at most one cost control per deployment. \ No newline at end of file diff --git a/src/foundry-cost-control/azext_foundry_cost_control/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/__init__.py new file mode 100644 index 00000000000..40de4b87fba --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/__init__.py @@ -0,0 +1,42 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from azure.cli.core import AzCommandsLoader +from azext_foundry_cost_control._help import helps # pylint: disable=unused-import + + +class FoundryCostControlCommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + custom_command_type = CliCommandType( + operations_tmpl='azext_foundry_cost_control.custom#{}') + super().__init__(cli_ctx=cli_ctx, + custom_command_type=custom_command_type) + + def load_command_table(self, args): + from azext_foundry_cost_control.commands import load_command_table + from azure.cli.core.aaz import load_aaz_command_table + try: + from . import aaz + except ImportError: + aaz = None + if aaz: + load_aaz_command_table( + loader=self, + aaz_pkg_name=aaz.__name__, + args=args + ) + load_command_table(self, args) + return self.command_table + + def load_arguments(self, command): + from azext_foundry_cost_control._params import load_arguments + load_arguments(self, command) + + +COMMAND_LOADER_CLS = FoundryCostControlCommandsLoader diff --git a/src/foundry-cost-control/azext_foundry_cost_control/_help.py b/src/foundry-cost-control/azext_foundry_cost_control/_help.py new file mode 100644 index 00000000000..8c4429d0e87 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/_help.py @@ -0,0 +1,48 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=line-too-long +# pylint: disable=too-many-lines + +from knack.help_files import helps # pylint: disable=unused-import + + +helps["cognitiveservices account update"] = """ +type: command +short-summary: Update a Cognitive Services account. +examples: + - name: Attach cost controls and configure telemetry and event connections + text: |- + az cognitiveservices account update --name my-account --resource-group my-resource-group + --cost-control-ids /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.CognitiveServices/accounts/my-account/costControls/my-control + --cost-control-connections '{"appInsightsConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.CognitiveServices/accounts/my-account/connections/application-insights","eventGridConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.CognitiveServices/accounts/my-account/connections/event-grid"}' + - name: Remove all cost-control attachments + text: |- + az cognitiveservices account update --name my-account --resource-group my-resource-group + --cost-control-ids +""" + +helps["cognitiveservices account deployment create"] = """ +type: command +short-summary: Create a Cognitive Services account deployment. +examples: + - name: Create a deployment with a cost-control attachment + text: |- + az cognitiveservices account deployment create --name my-account --resource-group my-resource-group --deployment-name my-deployment --model-name gpt-4.1 --model-version 2025-04-14 --model-format OpenAI --sku-name GlobalStandard --sku-capacity 10 --cost-control-ids /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.CognitiveServices/accounts/my-account/costControls/my-control +""" + +helps["cognitiveservices account deployment update"] = """ +type: command +short-summary: Update a Cognitive Services account deployment. +examples: + - name: Attach a cost control to an existing deployment + text: |- + az cognitiveservices account deployment update --name my-account --resource-group my-resource-group --deployment-name my-deployment --cost-control-ids /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.CognitiveServices/accounts/my-account/costControls/my-control + - name: Remove the cost-control attachment + text: |- + az cognitiveservices account deployment update --name my-account --resource-group my-resource-group --deployment-name my-deployment --cost-control-ids +""" diff --git a/src/foundry-cost-control/azext_foundry_cost_control/_params.py b/src/foundry-cost-control/azext_foundry_cost_control/_params.py new file mode 100644 index 00000000000..1daa32eda26 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/_params.py @@ -0,0 +1,184 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +from azure.cli.core.azclierror import InvalidArgumentValueError +from azure.cli.core.commands.parameters import get_enum_type +from azure.cli.core.util import shell_safe_json_parse +from azure.mgmt.core.tools import is_valid_resource_id, parse_resource_id +from azure.mgmt.cognitiveservices.models import DeploymentScaleType + + +_CONNECTION_PROPERTIES = { + "appInsightsConnectionId", + "eventGridConnectionId", +} + + +def _parse_resource_id(value): + if not isinstance(value, str) or not is_valid_resource_id(value): + raise InvalidArgumentValueError( + "Expected a fully qualified Azure resource ID: '{}'".format(value) + ) + return value + + +def _parse_cost_control_id(value): + _parse_resource_id(value) + parsed_id = parse_resource_id(value) + if ( + parsed_id.get("namespace", "").lower() != "microsoft.cognitiveservices" + or parsed_id.get("type", "").lower() != "accounts" + or parsed_id.get("child_type_1", "").lower() != "costcontrols" + or not parsed_id.get("child_name_1") + or parsed_id.get("last_child_num") != 1): + raise InvalidArgumentValueError( + "Expected a Microsoft.CognitiveServices/accounts/costControls resource ID: " + "'{}'".format(value) + ) + return value + + +def _parse_cost_control_connections(value): + connections = shell_safe_json_parse(value) + if not isinstance(connections, dict): + raise InvalidArgumentValueError( + "--cost-control-connections must be a JSON object." + ) + + unsupported = set(connections) - _CONNECTION_PROPERTIES + if unsupported: + raise InvalidArgumentValueError( + "Unsupported cost-control connection properties: {}".format( + ", ".join(sorted(unsupported)) + ) + ) + + for resource_id in connections.values(): + if resource_id is not None: + _parse_resource_id(resource_id) + + return connections + + +def load_arguments(self, _): # pylint: disable=unused-argument + with self.argument_context( + "cognitiveservices account update", + arg_group="Cost Control") as context: + context.argument( + "cost_control_ids", + options_list=["--cost-control-ids"], + nargs="*", + type=_parse_cost_control_id, + help=( + "Space-separated resource IDs of cost controls attached to the account. " + "Specify the option without values to remove all cost-control attachments." + ), + ) + context.argument( + "cost_control_connections", + options_list=["--cost-control-connections", "--cc-connections"], + type=_parse_cost_control_connections, + help=( + "JSON object containing appInsightsConnectionId and/or " + "eventGridConnectionId." + ), + ) + context.argument( + "clear_cost_control_connections", + options_list=[ + "--clear-cost-control-connections", + "--clear-cc-connections", + ], + action="store_true", + help="Remove the account-level cost-control connections.", + ) + + with self.argument_context( + "cognitiveservices account update", + arg_group="AI Services") as context: + context.argument( + "kind", + arg_type=get_enum_type(data=["AIServices", "OpenAI"]), + help="The target API name to transform the existing account into.", + ) + + with self.argument_context( + "cognitiveservices account deployment", + arg_group="Cost Control") as context: + context.argument( + "cost_control_ids", + options_list=["--cost-control-ids"], + nargs="*", + type=_parse_cost_control_id, + help=( + "Resource ID of the cost control attached to the deployment. " + "Specify the option without a value to remove the attachment." + ), + ) + + with self.argument_context("cognitiveservices account deployment") as context: + context.argument( + "account_name", + options_list=["--name", "-n"], + help="Cognitive service account name.", + ) + context.argument( + "deployment_name", + options_list=["--deployment-name"], + help="Cognitive Services account deployment name.", + required=True, + ) + context.argument( + "spillover_deployment_name", + options_list=["--spillover-deployment-name", "--spillover-name"], + help="The standard deployment to use as a spillover when at capacity.", + ) + context.argument( + "sku_capacity", + options_list=["--capacity", "--sku-capacity"], + type=int, + help="Capacity value of the Sku of Cognitive Services account/deployment.", + ) + + with self.argument_context( + "cognitiveservices account deployment", + arg_group="DeploymentModel") as context: + context.argument( + "model_name", + help="Cognitive Services account deployment model name.", + ) + context.argument( + "model_format", + help="Cognitive Services account deployment model format.", + ) + context.argument( + "model_version", + help="Cognitive Services account deployment model version.", + ) + context.argument( + "model_source", + help="Cognitive Services account deployment model source.", + ) + + with self.argument_context( + "cognitiveservices account deployment", + arg_group="DeploymentScaleSettings") as context: + context.argument( + "scale_settings_scale_type", + arg_type=get_enum_type(DeploymentScaleType), + options_list=["--scale-type", "--scale-settings-scale-type"], + help="Cognitive Services account deployment scale settings scale type.", + ) + context.argument( + "scale_settings_capacity", + options_list=["--scale-capacity", "--scale-settings-capacity"], + type=int, + help="Cognitive Services account deployment scale settings capacity.", + ) diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/__init__.py new file mode 100644 index 00000000000..f6acc11aa4e --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/__init__.py @@ -0,0 +1,10 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/__cmd_group.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/__cmd_group.py new file mode 100644 index 00000000000..eac9cab9faf --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/__cmd_group.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "cognitiveservices", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Cognitive Services + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/__init__.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/__cmd_group.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/__cmd_group.py new file mode 100644 index 00000000000..cba86311a50 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/__cmd_group.py @@ -0,0 +1,24 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "cognitiveservices account", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Account + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/__init__.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/__cmd_group.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/__cmd_group.py new file mode 100644 index 00000000000..0ffb1d83d9b --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/__cmd_group.py @@ -0,0 +1,26 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "cognitiveservices account costcontrol", + is_preview=True, +) +class __CMDGroup(AAZCommandGroup): + """Manage Cost Control Policies in Foundry + + A set of commands to manage Cost Control Policies in Foundry. Supported commands are `create`, `delete`, `list`, `show` and `update`. Use those policies to set a threshold on the cost (in USD) per time period for token use by your account or deployment. You can also set alerts to get notified when this threshold approaches. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/__init__.py new file mode 100644 index 00000000000..c401f439385 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/__init__.py @@ -0,0 +1,16 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_create.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_create.py new file mode 100644 index 00000000000..abddbaa8778 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_create.py @@ -0,0 +1,565 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "cognitiveservices account costcontrol create", + is_preview=True, +) +class Create(AAZCommand): + """Create a cost control. + + :example: Create a cost control with all settings + az cognitive-services account cost-control create --resource-group foundry-resource-group --account-name foundry-account --cost-control-name production-agents --if-none-match * --display-name Production agent monthly budget --rules "[{name:monthly-agent-budget,counter-key:[{type:agent}],unit:usd,amount:1000,period:month,recurring:True,match:{foundry-caller-agent-id:[customer-support-agent,sales-assistant-agent],foundry-caller-identity-oid:[11111111-2222-3333-4444-555555555555],foundry-caller-session-id:[production-session],foundry-project-id:[/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/foundry-resource-group/providers/Microsoft.CognitiveServices/accounts/foundry-account/projects/production]},thresholds:[{type:percentage,value:80,action:alert},{type:absolute,value:1000,action:audit}]},{name:daily-tenant-budget,counter-key:[{type:custom,attribute:x-tenant-id}],unit:usd,amount:100,period:day,recurring:True,thresholds:[{type:percentage,value:90,action:alert}]}]" + """ + + _aaz_info = { + "version": "2026-09-15-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.cognitiveservices/accounts/{}/costcontrols/{}", "2026-09-15-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.if_match = AAZStrArg( + options=["--if-match"], + help="Proceeds only when the current entity tag matches this value.", + ) + _args_schema.if_none_match = AAZStrArg( + options=["--if-none-match"], + help="Proceeds only when the current entity tag does not match this value.", + ) + _args_schema.account_name = AAZStrArg( + options=["--account-name"], + help="The name of Cognitive Services account.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]*$", + max_length=64, + min_length=2, + ), + ) + _args_schema.cost_control_name = AAZStrArg( + options=["-n", "--name", "--cost-control-name"], + help="The name of the CostControl", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,63}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="An optional human-readable name for the cost control.", + fmt=AAZStrArgFormat( + max_length=128, + ), + ) + _args_schema.rules = AAZListArg( + options=["--rules"], + arg_group="Properties", + help="The rules enforced by the cost control.", + fmt=AAZListArgFormat( + max_length=50, + min_length=1, + ), + ) + + rules = cls._args_schema.rules + rules.Element = AAZObjectArg() + + _element = cls._args_schema.rules.Element + _element.amount = AAZFloatArg( + options=["amount"], + help="The maximum consumption allowed by this rule, expressed in the selected unit.", + required=True, + fmt=AAZFloatArgFormat( + minimum=0.0, + exclusive_minimum=True, + ), + ) + _element.counter_key = AAZListArg( + options=["counter-key"], + help="The built-in dimension used to partition consumption. The initial preview supports exactly one dimension.", + required=True, + fmt=AAZListArgFormat( + max_length=1, + min_length=1, + ), + ) + _element.match = AAZObjectArg( + options=["match"], + help="Trusted request attributes and allowed values used to select matching requests.", + ) + _element.name = AAZStrArg( + options=["name"], + help="The stable rule identifier, unique within the cost control without regard to case.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,63}$", + max_length=64, + ), + ) + _element.period = AAZStrArg( + options=["period"], + help="The calendar-aligned UTC renewal period. This property is required for recurring rules and omitted for non-recurring rules.", + enum={"day": "day", "hour": "hour", "minute": "minute", "month": "month", "week": "week", "year": "year"}, + ) + _element.recurring = AAZBoolArg( + options=["recurring"], + help="Whether the cost control renews. The default is true.", + default=True, + ) + _element.thresholds = AAZListArg( + options=["thresholds"], + help="The actions evaluated as consumption approaches the configured amount.", + nullable=True, + fmt=AAZListArgFormat( + max_length=10, + ), + ) + _element.unit = AAZStrArg( + options=["unit"], + help="The unit used for the cost control amount and absolute thresholds.", + required=True, + enum={"usd": "usd"}, + ) + + counter_key = cls._args_schema.rules.Element.counter_key + counter_key.Element = AAZObjectArg() + + _element = cls._args_schema.rules.Element.counter_key.Element + _element.attribute = AAZStrArg( + options=["attribute"], + help="The request attribute used by a custom dimension. This property is required for custom dimensions and must be omitted for built-in dimensions.", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9_.-]{0,127}$", + max_length=128, + ), + ) + _element.type = AAZStrArg( + options=["type"], + help="The kind of request dimension.", + required=True, + enum={"account": "account", "agent": "agent", "custom": "custom", "identity": "identity", "project": "project", "session": "session"}, + ) + + match = cls._args_schema.rules.Element.match + match.foundry_caller_agent_id = AAZListArg( + options=["foundry-caller-agent-id"], + help="The stable Foundry agent IDs to match.", + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + match.foundry_caller_identity_oid = AAZListArg( + options=["foundry-caller-identity-oid"], + help="The authenticated principal object IDs to match.", + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + match.foundry_caller_session_id = AAZListArg( + options=["foundry-caller-session-id"], + help="The Foundry session IDs to match.", + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + match.foundry_project_id = AAZListArg( + options=["foundry-project-id"], + help="The Foundry project resource IDs to match.", + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + + foundry_caller_agent_id = cls._args_schema.rules.Element.match.foundry_caller_agent_id + foundry_caller_agent_id.Element = AAZStrArg( + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + foundry_caller_identity_oid = cls._args_schema.rules.Element.match.foundry_caller_identity_oid + foundry_caller_identity_oid.Element = AAZStrArg( + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + foundry_caller_session_id = cls._args_schema.rules.Element.match.foundry_caller_session_id + foundry_caller_session_id.Element = AAZStrArg( + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + foundry_project_id = cls._args_schema.rules.Element.match.foundry_project_id + foundry_project_id.Element = AAZStrArg( + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + thresholds = cls._args_schema.rules.Element.thresholds + thresholds.Element = AAZObjectArg() + + _element = cls._args_schema.rules.Element.thresholds.Element + _element.action = AAZStrArg( + options=["action"], + help="The action taken when the threshold is reached. The default is audit.", + default="audit", + enum={"alert": "alert", "audit": "audit", "block": "block"}, + ) + _element.type = AAZStrArg( + options=["type"], + help="How the threshold value is interpreted.", + required=True, + enum={"absolute": "absolute", "percentage": "percentage"}, + ) + _element.value = AAZFloatArg( + options=["value"], + help="The threshold value. Percentage values range from 0 through 100, and absolute values cannot exceed the rule amount.", + required=True, + fmt=AAZFloatArgFormat( + minimum=0.0, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.CostControlsCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class CostControlsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/costControls/{costControlName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "accountName", self.ctx.args.account_name, + required=True, + ), + **self.serialize_url_param( + "costControlName", self.ctx.args.cost_control_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-09-15-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "If-Match", self.ctx.args.if_match, + ), + **self.serialize_header_param( + "If-None-Match", self.ctx.args.if_none_match, + ), + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("displayName", AAZStrType, ".display_name") + properties.set_prop("rules", AAZListType, ".rules", typ_kwargs={"flags": {"required": True}}) + + rules = _builder.get(".properties.rules") + if rules is not None: + rules.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[]") + if _elements is not None: + _elements.set_prop("amount", AAZFloatType, ".amount", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("counterKey", AAZListType, ".counter_key", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("match", AAZObjectType, ".match") + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("period", AAZStrType, ".period") + _elements.set_prop("recurring", AAZBoolType, ".recurring") + _elements.set_prop("thresholds", AAZListType, ".thresholds", typ_kwargs={"nullable": True}) + _elements.set_prop("unit", AAZStrType, ".unit", typ_kwargs={"flags": {"required": True}}) + + counter_key = _builder.get(".properties.rules[].counterKey") + if counter_key is not None: + counter_key.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[].counterKey[]") + if _elements is not None: + _elements.set_prop("attribute", AAZStrType, ".attribute") + _elements.set_prop("type", AAZStrType, ".type", typ_kwargs={"flags": {"required": True}}) + + match = _builder.get(".properties.rules[].match") + if match is not None: + foundry_caller_agent_id = match.set_prop( + "foundry.caller.agent.id", AAZListType, ".foundry_caller_agent_id") + if foundry_caller_agent_id is not None: + foundry_caller_agent_id.set_elements(AAZStrType, ".") + + foundry_caller_identity_oid = match.set_prop( + "foundry.caller.identity.oid", AAZListType, ".foundry_caller_identity_oid") + if foundry_caller_identity_oid is not None: + foundry_caller_identity_oid.set_elements(AAZStrType, ".") + + foundry_caller_session_id = match.set_prop( + "foundry.caller.session.id", AAZListType, ".foundry_caller_session_id") + if foundry_caller_session_id is not None: + foundry_caller_session_id.set_elements(AAZStrType, ".") + + foundry_project_id = match.set_prop( + "foundry.project.id", AAZListType, ".foundry_project_id") + if foundry_project_id is not None: + foundry_project_id.set_elements(AAZStrType, ".") + + thresholds = _builder.get(".properties.rules[].thresholds") + if thresholds is not None: + thresholds.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[].thresholds[]") + if _elements is not None: + _elements.set_prop("action", AAZStrType, ".action") + _elements.set_prop("type", AAZStrType, ".type", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("value", AAZFloatType, ".value", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType() + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.rules = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200_201.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element + _element.amount = AAZFloatType( + flags={"required": True}, + ) + _element.counter_key = AAZListType( + serialized_name="counterKey", + flags={"required": True}, + ) + _element.match = AAZObjectType() + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.period = AAZStrType() + _element.recurring = AAZBoolType() + _element.thresholds = AAZListType( + nullable=True, + ) + _element.unit = AAZStrType( + flags={"required": True}, + ) + + counter_key = cls._schema_on_200_201.properties.rules.Element.counter_key + counter_key.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element.counter_key.Element + _element.attribute = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + + match = cls._schema_on_200_201.properties.rules.Element.match + match["foundry.caller.agent.id"] = AAZListType() + match["foundry.caller.identity.oid"] = AAZListType() + match["foundry.caller.session.id"] = AAZListType() + match["foundry.project.id"] = AAZListType() + + foundry_caller_agent_id = match["foundry.caller.agent.id"] + foundry_caller_agent_id.Element = AAZStrType() + + foundry_caller_identity_oid = match["foundry.caller.identity.oid"] + foundry_caller_identity_oid.Element = AAZStrType() + + foundry_caller_session_id = match["foundry.caller.session.id"] + foundry_caller_session_id.Element = AAZStrType() + + foundry_project_id = match["foundry.project.id"] + foundry_project_id.Element = AAZStrType() + + thresholds = cls._schema_on_200_201.properties.rules.Element.thresholds + thresholds.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element.thresholds.Element + _element.action = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + _element.value = AAZFloatType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_delete.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_delete.py new file mode 100644 index 00000000000..395f70b44d6 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_delete.py @@ -0,0 +1,171 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "cognitiveservices account costcontrol delete", + is_preview=True, + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a cost control. + + :example: Delete a cost control conditionally + az cognitive-services account cost-control delete --resource-group foundry-resource-group --account-name foundry-account --cost-control-name production-agents --if-match "00000000-0000-0000-0000-000000000002" + """ + + _aaz_info = { + "version": "2026-09-15-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.cognitiveservices/accounts/{}/costcontrols/{}", "2026-09-15-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.if_match = AAZStrArg( + options=["--if-match"], + help="Proceeds only when the current entity tag matches this value.", + ) + _args_schema.account_name = AAZStrArg( + options=["--account-name"], + help="The name of Cognitive Services account.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]*$", + max_length=64, + min_length=2, + ), + ) + _args_schema.cost_control_name = AAZStrArg( + options=["-n", "--name", "--cost-control-name"], + help="The name of the CostControl", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,63}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.CostControlsDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class CostControlsDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/costControls/{costControlName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "accountName", self.ctx.args.account_name, + required=True, + ), + **self.serialize_url_param( + "costControlName", self.ctx.args.cost_control_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-09-15-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "If-Match", self.ctx.args.if_match, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_list.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_list.py new file mode 100644 index 00000000000..92a90305ab0 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_list.py @@ -0,0 +1,288 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "cognitiveservices account costcontrol list", + is_preview=True, +) +class List(AAZCommand): + """List the cost controls owned by an account. + + :example: List cost controls with all settings + az cognitive-services account cost-control list --resource-group foundry-resource-group --account-name foundry-account + """ + + _aaz_info = { + "version": "2026-09-15-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.cognitiveservices/accounts/{}/costcontrols", "2026-09-15-preview"], + ] + } + + AZ_SUPPORT_PAGINATION = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.account_name = AAZStrArg( + options=["--account-name"], + help="The name of Cognitive Services account.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]*$", + max_length=64, + min_length=2, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.CostControlsList(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class CostControlsList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/costControls", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "accountName", self.ctx.args.account_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-09-15-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType() + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.etag = AAZStrType( + flags={"read_only": True}, + ) + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.rules = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200.value.Element.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.rules.Element + _element.amount = AAZFloatType( + flags={"required": True}, + ) + _element.counter_key = AAZListType( + serialized_name="counterKey", + flags={"required": True}, + ) + _element.match = AAZObjectType() + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.period = AAZStrType() + _element.recurring = AAZBoolType() + _element.thresholds = AAZListType( + nullable=True, + ) + _element.unit = AAZStrType( + flags={"required": True}, + ) + + counter_key = cls._schema_on_200.value.Element.properties.rules.Element.counter_key + counter_key.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.rules.Element.counter_key.Element + _element.attribute = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + + match = cls._schema_on_200.value.Element.properties.rules.Element.match + match["foundry.caller.agent.id"] = AAZListType() + match["foundry.caller.identity.oid"] = AAZListType() + match["foundry.caller.session.id"] = AAZListType() + match["foundry.project.id"] = AAZListType() + + foundry_caller_agent_id = match["foundry.caller.agent.id"] + foundry_caller_agent_id.Element = AAZStrType() + + foundry_caller_identity_oid = match["foundry.caller.identity.oid"] + foundry_caller_identity_oid.Element = AAZStrType() + + foundry_caller_session_id = match["foundry.caller.session.id"] + foundry_caller_session_id.Element = AAZStrType() + + foundry_project_id = match["foundry.project.id"] + foundry_project_id.Element = AAZStrType() + + thresholds = cls._schema_on_200.value.Element.properties.rules.Element.thresholds + thresholds.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.rules.Element.thresholds.Element + _element.action = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + _element.value = AAZFloatType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_show.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_show.py new file mode 100644 index 00000000000..39c908d1619 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_show.py @@ -0,0 +1,291 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "cognitiveservices account costcontrol show", + is_preview=True, +) +class Show(AAZCommand): + """Get a cost control. + + :example: Get a cost control with all settings + az cognitive-services account cost-control show --resource-group foundry-resource-group --account-name foundry-account --cost-control-name production-agents + """ + + _aaz_info = { + "version": "2026-09-15-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.cognitiveservices/accounts/{}/costcontrols/{}", "2026-09-15-preview"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.account_name = AAZStrArg( + options=["--account-name"], + help="The name of Cognitive Services account.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]*$", + max_length=64, + min_length=2, + ), + ) + _args_schema.cost_control_name = AAZStrArg( + options=["-n", "--name", "--cost-control-name"], + help="The name of the CostControl", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,63}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.CostControlsGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class CostControlsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/costControls/{costControlName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "accountName", self.ctx.args.account_name, + required=True, + ), + **self.serialize_url_param( + "costControlName", self.ctx.args.cost_control_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-09-15-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.rules = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element + _element.amount = AAZFloatType( + flags={"required": True}, + ) + _element.counter_key = AAZListType( + serialized_name="counterKey", + flags={"required": True}, + ) + _element.match = AAZObjectType() + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.period = AAZStrType() + _element.recurring = AAZBoolType() + _element.thresholds = AAZListType( + nullable=True, + ) + _element.unit = AAZStrType( + flags={"required": True}, + ) + + counter_key = cls._schema_on_200.properties.rules.Element.counter_key + counter_key.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element.counter_key.Element + _element.attribute = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + + match = cls._schema_on_200.properties.rules.Element.match + match["foundry.caller.agent.id"] = AAZListType() + match["foundry.caller.identity.oid"] = AAZListType() + match["foundry.caller.session.id"] = AAZListType() + match["foundry.project.id"] = AAZListType() + + foundry_caller_agent_id = match["foundry.caller.agent.id"] + foundry_caller_agent_id.Element = AAZStrType() + + foundry_caller_identity_oid = match["foundry.caller.identity.oid"] + foundry_caller_identity_oid.Element = AAZStrType() + + foundry_caller_session_id = match["foundry.caller.session.id"] + foundry_caller_session_id.Element = AAZStrType() + + foundry_project_id = match["foundry.project.id"] + foundry_project_id.Element = AAZStrType() + + thresholds = cls._schema_on_200.properties.rules.Element.thresholds + thresholds.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element.thresholds.Element + _element.action = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + _element.value = AAZFloatType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_update.py b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_update.py new file mode 100644 index 00000000000..fd70b65b497 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/aaz/latest/cognitiveservices/account/costcontrol/_update.py @@ -0,0 +1,810 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "cognitiveservices account costcontrol update", + is_preview=True, +) +class Update(AAZCommand): + """Update a cost control. + + :example: Create a cost control with all settings + az cognitive-services account cost-control update --resource-group foundry-resource-group --account-name foundry-account --cost-control-name production-agents --if-none-match * --display-name Production agent monthly budget --rules "[{name:monthly-agent-budget,counter-key:[{type:agent}],unit:usd,amount:1000,period:month,recurring:True,match:{foundry-caller-agent-id:[customer-support-agent,sales-assistant-agent],foundry-caller-identity-oid:[11111111-2222-3333-4444-555555555555],foundry-caller-session-id:[production-session],foundry-project-id:[/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/foundry-resource-group/providers/Microsoft.CognitiveServices/accounts/foundry-account/projects/production]},thresholds:[{type:percentage,value:80,action:alert},{type:absolute,value:1000,action:audit}]},{name:daily-tenant-budget,counter-key:[{type:custom,attribute:x-tenant-id}],unit:usd,amount:100,period:day,recurring:True,thresholds:[{type:percentage,value:90,action:alert}]}]" + """ + + _aaz_info = { + "version": "2026-09-15-preview", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.cognitiveservices/accounts/{}/costcontrols/{}", "2026-09-15-preview"], + ] + } + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.if_match = AAZStrArg( + options=["--if-match"], + help="Proceeds only when the current entity tag matches this value.", + ) + _args_schema.if_none_match = AAZStrArg( + options=["--if-none-match"], + help="Proceeds only when the current entity tag does not match this value.", + ) + _args_schema.account_name = AAZStrArg( + options=["--account-name"], + help="The name of Cognitive Services account.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]*$", + max_length=64, + min_length=2, + ), + ) + _args_schema.cost_control_name = AAZStrArg( + options=["-n", "--name", "--cost-control-name"], + help="The name of the CostControl", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,63}$", + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.display_name = AAZStrArg( + options=["--display-name"], + arg_group="Properties", + help="An optional human-readable name for the cost control.", + nullable=True, + fmt=AAZStrArgFormat( + max_length=128, + ), + ) + _args_schema.rules = AAZListArg( + options=["--rules"], + arg_group="Properties", + help="The rules enforced by the cost control.", + fmt=AAZListArgFormat( + max_length=50, + min_length=1, + ), + ) + + rules = cls._args_schema.rules + rules.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.rules.Element + _element.amount = AAZFloatArg( + options=["amount"], + help="The maximum consumption allowed by this rule, expressed in the selected unit.", + fmt=AAZFloatArgFormat( + minimum=0.0, + exclusive_minimum=True, + ), + ) + _element.counter_key = AAZListArg( + options=["counter-key"], + help="The built-in dimension used to partition consumption. The initial preview supports exactly one dimension.", + fmt=AAZListArgFormat( + max_length=1, + min_length=1, + ), + ) + _element.match = AAZObjectArg( + options=["match"], + help="Trusted request attributes and allowed values used to select matching requests.", + nullable=True, + ) + _element.name = AAZStrArg( + options=["name"], + help="The stable rule identifier, unique within the cost control without regard to case.", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,63}$", + max_length=64, + ), + ) + _element.period = AAZStrArg( + options=["period"], + help="The calendar-aligned UTC renewal period. This property is required for recurring rules and omitted for non-recurring rules.", + nullable=True, + enum={"day": "day", "hour": "hour", "minute": "minute", "month": "month", "week": "week", "year": "year"}, + ) + _element.recurring = AAZBoolArg( + options=["recurring"], + help="Whether the cost control renews. The default is true.", + nullable=True, + ) + _element.thresholds = AAZListArg( + options=["thresholds"], + help="The actions evaluated as consumption approaches the configured amount.", + nullable=True, + fmt=AAZListArgFormat( + max_length=10, + ), + ) + _element.unit = AAZStrArg( + options=["unit"], + help="The unit used for the cost control amount and absolute thresholds.", + enum={"usd": "usd"}, + ) + + counter_key = cls._args_schema.rules.Element.counter_key + counter_key.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.rules.Element.counter_key.Element + _element.attribute = AAZStrArg( + options=["attribute"], + help="The request attribute used by a custom dimension. This property is required for custom dimensions and must be omitted for built-in dimensions.", + nullable=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z][a-zA-Z0-9_.-]{0,127}$", + max_length=128, + ), + ) + _element.type = AAZStrArg( + options=["type"], + help="The kind of request dimension.", + enum={"account": "account", "agent": "agent", "custom": "custom", "identity": "identity", "project": "project", "session": "session"}, + ) + + match = cls._args_schema.rules.Element.match + match.foundry_caller_agent_id = AAZListArg( + options=["foundry-caller-agent-id"], + help="The stable Foundry agent IDs to match.", + nullable=True, + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + match.foundry_caller_identity_oid = AAZListArg( + options=["foundry-caller-identity-oid"], + help="The authenticated principal object IDs to match.", + nullable=True, + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + match.foundry_caller_session_id = AAZListArg( + options=["foundry-caller-session-id"], + help="The Foundry session IDs to match.", + nullable=True, + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + match.foundry_project_id = AAZListArg( + options=["foundry-project-id"], + help="The Foundry project resource IDs to match.", + nullable=True, + fmt=AAZListArgFormat( + max_length=20, + min_length=1, + ), + ) + + foundry_caller_agent_id = cls._args_schema.rules.Element.match.foundry_caller_agent_id + foundry_caller_agent_id.Element = AAZStrArg( + nullable=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + foundry_caller_identity_oid = cls._args_schema.rules.Element.match.foundry_caller_identity_oid + foundry_caller_identity_oid.Element = AAZStrArg( + nullable=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + foundry_caller_session_id = cls._args_schema.rules.Element.match.foundry_caller_session_id + foundry_caller_session_id.Element = AAZStrArg( + nullable=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + foundry_project_id = cls._args_schema.rules.Element.match.foundry_project_id + foundry_project_id.Element = AAZStrArg( + nullable=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + + thresholds = cls._args_schema.rules.Element.thresholds + thresholds.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.rules.Element.thresholds.Element + _element.action = AAZStrArg( + options=["action"], + help="The action taken when the threshold is reached. The default is audit.", + nullable=True, + enum={"alert": "alert", "audit": "audit", "block": "block"}, + ) + _element.type = AAZStrArg( + options=["type"], + help="How the threshold value is interpreted.", + enum={"absolute": "absolute", "percentage": "percentage"}, + ) + _element.value = AAZFloatArg( + options=["value"], + help="The threshold value. Percentage values range from 0 through 100, and absolute values cannot exceed the rule amount.", + fmt=AAZFloatArgFormat( + minimum=0.0, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.CostControlsGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.vars.instance) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.post_instance_update(self.ctx.vars.instance) + self.CostControlsCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + @register_callback + def pre_instance_update(self, instance): + pass + + @register_callback + def post_instance_update(self, instance): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class CostControlsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/costControls/{costControlName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "accountName", self.ctx.args.account_name, + required=True, + ), + **self.serialize_url_param( + "costControlName", self.ctx.args.cost_control_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-09-15-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.etag = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.rules = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element + _element.amount = AAZFloatType( + flags={"required": True}, + ) + _element.counter_key = AAZListType( + serialized_name="counterKey", + flags={"required": True}, + ) + _element.match = AAZObjectType() + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.period = AAZStrType() + _element.recurring = AAZBoolType() + _element.thresholds = AAZListType( + nullable=True, + ) + _element.unit = AAZStrType( + flags={"required": True}, + ) + + counter_key = cls._schema_on_200.properties.rules.Element.counter_key + counter_key.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element.counter_key.Element + _element.attribute = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + + match = cls._schema_on_200.properties.rules.Element.match + match["foundry.caller.agent.id"] = AAZListType() + match["foundry.caller.identity.oid"] = AAZListType() + match["foundry.caller.session.id"] = AAZListType() + match["foundry.project.id"] = AAZListType() + + foundry_caller_agent_id = match["foundry.caller.agent.id"] + foundry_caller_agent_id.Element = AAZStrType() + + foundry_caller_identity_oid = match["foundry.caller.identity.oid"] + foundry_caller_identity_oid.Element = AAZStrType() + + foundry_caller_session_id = match["foundry.caller.session.id"] + foundry_caller_session_id.Element = AAZStrType() + + foundry_project_id = match["foundry.project.id"] + foundry_project_id.Element = AAZStrType() + + thresholds = cls._schema_on_200.properties.rules.Element.thresholds + thresholds.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.rules.Element.thresholds.Element + _element.action = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + _element.value = AAZFloatType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + class CostControlsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200, 201]: + return self.on_200_201(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/costControls/{costControlName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "accountName", self.ctx.args.account_name, + required=True, + ), + **self.serialize_url_param( + "costControlName", self.ctx.args.cost_control_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-09-15-preview", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "If-Match", self.ctx.args.if_match, + ), + **self.serialize_header_param( + "If-None-Match", self.ctx.args.if_none_match, + ), + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.etag = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType() + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.display_name = AAZStrType( + serialized_name="displayName", + ) + properties.rules = AAZListType( + flags={"required": True}, + ) + + rules = cls._schema_on_200_201.properties.rules + rules.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element + _element.amount = AAZFloatType( + flags={"required": True}, + ) + _element.counter_key = AAZListType( + serialized_name="counterKey", + flags={"required": True}, + ) + _element.match = AAZObjectType() + _element.name = AAZStrType( + flags={"required": True}, + ) + _element.period = AAZStrType() + _element.recurring = AAZBoolType() + _element.thresholds = AAZListType( + nullable=True, + ) + _element.unit = AAZStrType( + flags={"required": True}, + ) + + counter_key = cls._schema_on_200_201.properties.rules.Element.counter_key + counter_key.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element.counter_key.Element + _element.attribute = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + + match = cls._schema_on_200_201.properties.rules.Element.match + match["foundry.caller.agent.id"] = AAZListType() + match["foundry.caller.identity.oid"] = AAZListType() + match["foundry.caller.session.id"] = AAZListType() + match["foundry.project.id"] = AAZListType() + + foundry_caller_agent_id = match["foundry.caller.agent.id"] + foundry_caller_agent_id.Element = AAZStrType() + + foundry_caller_identity_oid = match["foundry.caller.identity.oid"] + foundry_caller_identity_oid.Element = AAZStrType() + + foundry_caller_session_id = match["foundry.caller.session.id"] + foundry_caller_session_id.Element = AAZStrType() + + foundry_project_id = match["foundry.project.id"] + foundry_project_id.Element = AAZStrType() + + thresholds = cls._schema_on_200_201.properties.rules.Element.thresholds + thresholds.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.rules.Element.thresholds.Element + _element.action = AAZStrType() + _element.type = AAZStrType( + flags={"required": True}, + ) + _element.value = AAZFloatType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("displayName", AAZStrType, ".display_name") + properties.set_prop("rules", AAZListType, ".rules", typ_kwargs={"flags": {"required": True}}) + + rules = _builder.get(".properties.rules") + if rules is not None: + rules.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[]") + if _elements is not None: + _elements.set_prop("amount", AAZFloatType, ".amount", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("counterKey", AAZListType, ".counter_key", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("match", AAZObjectType, ".match") + _elements.set_prop("name", AAZStrType, ".name", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("period", AAZStrType, ".period") + _elements.set_prop("recurring", AAZBoolType, ".recurring") + _elements.set_prop("thresholds", AAZListType, ".thresholds", typ_kwargs={"nullable": True}) + _elements.set_prop("unit", AAZStrType, ".unit", typ_kwargs={"flags": {"required": True}}) + + counter_key = _builder.get(".properties.rules[].counterKey") + if counter_key is not None: + counter_key.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[].counterKey[]") + if _elements is not None: + _elements.set_prop("attribute", AAZStrType, ".attribute") + _elements.set_prop("type", AAZStrType, ".type", typ_kwargs={"flags": {"required": True}}) + + match = _builder.get(".properties.rules[].match") + if match is not None: + foundry_caller_agent_id = match.set_prop( + "foundry.caller.agent.id", AAZListType, ".foundry_caller_agent_id") + if foundry_caller_agent_id is not None: + foundry_caller_agent_id.set_elements(AAZStrType, ".") + + foundry_caller_identity_oid = match.set_prop( + "foundry.caller.identity.oid", AAZListType, ".foundry_caller_identity_oid") + if foundry_caller_identity_oid is not None: + foundry_caller_identity_oid.set_elements(AAZStrType, ".") + + foundry_caller_session_id = match.set_prop( + "foundry.caller.session.id", AAZListType, ".foundry_caller_session_id") + if foundry_caller_session_id is not None: + foundry_caller_session_id.set_elements(AAZStrType, ".") + + foundry_project_id = match.set_prop( + "foundry.project.id", AAZListType, ".foundry_project_id") + if foundry_project_id is not None: + foundry_project_id.set_elements(AAZStrType, ".") + + thresholds = _builder.get(".properties.rules[].thresholds") + if thresholds is not None: + thresholds.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.rules[].thresholds[]") + if _elements is not None: + _elements.set_prop("action", AAZStrType, ".action") + _elements.set_prop("type", AAZStrType, ".type", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("value", AAZFloatType, ".value", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +class _UpdateHelper: + """Helper class for Update""" + + +__all__ = ["Update"] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/azext_metadata.json b/src/foundry-cost-control/azext_foundry_cost_control/azext_metadata.json new file mode 100644 index 00000000000..71889bb136b --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/azext_metadata.json @@ -0,0 +1,4 @@ +{ + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.75.0" +} \ No newline at end of file diff --git a/src/foundry-cost-control/azext_foundry_cost_control/commands.py b/src/foundry-cost-control/azext_foundry_cost_control/commands.py new file mode 100644 index 00000000000..b27b8878cb6 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/commands.py @@ -0,0 +1,27 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + + +def load_command_table(self, _): # pylint: disable=unused-argument + from azure.cli.command_modules.cognitiveservices._client_factory import ( + cf_accounts, + cf_deployments, + ) + + with self.command_group( + "cognitiveservices account", + client_factory=cf_accounts) as group: + group.custom_command("update", "account_update") + + with self.command_group( + "cognitiveservices account deployment", + client_factory=cf_deployments) as group: + group.custom_command("create", "deployment_create") + group.custom_command("update", "deployment_update") diff --git a/src/foundry-cost-control/azext_foundry_cost_control/custom.py b/src/foundry-cost-control/azext_foundry_cost_control/custom.py new file mode 100644 index 00000000000..4cccf2827ad --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/custom.py @@ -0,0 +1,276 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +import json + +from azure.cli.command_modules.cognitiveservices.custom import ( + deployment_begin_create_or_update as core_deployment_create, + update as core_account_update, +) +from azure.cli.command_modules.resource.custom import patch_resource, show_resource, update_resource +from azure.cli.core.azclierror import InvalidArgumentValueError, MutuallyExclusiveArgumentError +from azure.cli.core.commands.client_factory import get_subscription_id +from azure.mgmt.core.tools import resource_id +from azure.mgmt.resource.resources.models import GenericResource +from knack.log import get_logger + + +logger = get_logger(__name__) + +_API_VERSION = "2026-09-15-preview" +_MAX_COST_CONTROL_IDS = 20 +_MAX_DEPLOYMENT_COST_CONTROL_IDS = 1 +_DEPLOYMENT_MUTABLE_PROPERTIES = { + "model", + "contextCacheContainerId", + "speculativeDecoding", + "scaleSettings", + "raiPolicyName", + "versionUpgradeOption", + "capacitySettings", + "parentDeploymentName", + "spilloverDeploymentName", + "serviceTier", + "deploymentState", + "routing", + "costControlIds", +} + + +def _validate_cost_control_ids(cost_control_ids): + if cost_control_ids is not None and len(cost_control_ids) > _MAX_COST_CONTROL_IDS: + raise InvalidArgumentValueError( + "--cost-control-ids accepts at most {} resource IDs.".format( + _MAX_COST_CONTROL_IDS + ) + ) + + +def _validate_deployment_cost_control_ids(cost_control_ids): + if ( + cost_control_ids is not None + and len(cost_control_ids) > _MAX_DEPLOYMENT_COST_CONTROL_IDS): + raise InvalidArgumentValueError( + "--cost-control-ids accepts at most one resource ID for a deployment." + ) + + +def _deployment_resource_id(cmd, resource_group_name, account_name, deployment_name): + return resource_id( + subscription=get_subscription_id(cmd.cli_ctx), + resource_group=resource_group_name, + namespace="Microsoft.CognitiveServices", + type="accounts", + name=account_name, + child_type_1="deployments", + child_name_1=deployment_name, + ) + + +def account_update( + cmd, + client, + resource_group_name, + account_name, + sku_name=None, + custom_domain=None, + tags=None, + api_properties=None, + storage=None, + encryption=None, + allow_project_management=None, + kind=None, + cost_control_ids=None, + cost_control_connections=None, + clear_cost_control_connections=False): + """Update a Cognitive Services account, including preview cost-control settings.""" + if cost_control_connections is not None and clear_cost_control_connections: + raise MutuallyExclusiveArgumentError( + "--cost-control-connections and --clear-cost-control-connections " + "cannot be used together." + ) + + _validate_cost_control_ids(cost_control_ids) + + has_cost_control_update = ( + cost_control_ids is not None + or cost_control_connections is not None + or clear_cost_control_connections + ) + + legacy_arguments = ( + sku_name, + custom_domain, + tags, + api_properties, + storage, + encryption, + allow_project_management, + kind, + ) + has_legacy_update = any(value is not None for value in legacy_arguments) + + core_update_arguments = { + "client": client, + "resource_group_name": resource_group_name, + "account_name": account_name, + "sku_name": sku_name, + "custom_domain": custom_domain, + "tags": tags, + "api_properties": api_properties, + "storage": storage, + "encryption": encryption, + "allow_project_management": allow_project_management, + "kind": kind, + } + + if not has_cost_control_update: + return core_account_update(**core_update_arguments) + + if has_legacy_update: + legacy_result = core_account_update(**core_update_arguments) + if hasattr(legacy_result, "result"): + legacy_result.result() + + properties = {} + if cost_control_ids is not None: + properties["costControlIds"] = cost_control_ids + + if cost_control_connections is not None: + properties["costControlConnections"] = cost_control_connections + elif clear_cost_control_connections: + properties["costControlConnections"] = None + + account_id = resource_id( + subscription=get_subscription_id(cmd.cli_ctx), + resource_group=resource_group_name, + namespace="Microsoft.CognitiveServices", + type="accounts", + name=account_name, + ) + + return patch_resource( + cmd, + properties=json.dumps(properties), + resource_ids=[account_id], + api_version=_API_VERSION, + ) + + +def deployment_create( + cmd, + client, + resource_group_name, + account_name, + deployment_name, + model_format, + model_name, + model_version, + model_source=None, + sku_name=None, + sku_capacity=None, + scale_settings_scale_type=None, + scale_settings_capacity=None, + spillover_deployment_name=None, + cost_control_ids=None): + """Create or replace a deployment using the preview cost-control API.""" + _validate_deployment_cost_control_ids(cost_control_ids) + if cost_control_ids is None: + return core_deployment_create( + client=client, + resource_group_name=resource_group_name, + account_name=account_name, + deployment_name=deployment_name, + model_format=model_format, + model_name=model_name, + model_version=model_version, + model_source=model_source, + sku_name=sku_name, + sku_capacity=sku_capacity, + scale_settings_scale_type=scale_settings_scale_type, + scale_settings_capacity=scale_settings_capacity, + spillover_deployment_name=spillover_deployment_name, + ) + + model = { + "format": model_format, + "name": model_name, + "version": model_version, + } + if model_source is not None: + model["source"] = model_source + + properties = {"model": model} + if scale_settings_scale_type is not None: + properties["scaleSettings"] = {"scaleType": scale_settings_scale_type} + if scale_settings_capacity is not None: + properties["scaleSettings"]["capacity"] = scale_settings_capacity + if spillover_deployment_name is not None: + properties["spilloverDeploymentName"] = spillover_deployment_name + if cost_control_ids is not None: + properties["costControlIds"] = cost_control_ids + + sku = None + if sku_name is not None: + sku = {"name": sku_name} + if sku_capacity is not None: + sku["capacity"] = sku_capacity + + deployment_id = _deployment_resource_id( + cmd, resource_group_name, account_name, deployment_name + ) + deployment = GenericResource(properties=properties, sku=sku) + return update_resource( + cmd, + parameters=deployment, + resource_ids=[deployment_id], + api_version=_API_VERSION, + ) + + +def deployment_update( + cmd, + resource_group_name, + account_name, + deployment_name, + cost_control_ids=None): + """Update the cost-control attachment on an existing deployment.""" + _validate_deployment_cost_control_ids(cost_control_ids) + if cost_control_ids is None: + raise InvalidArgumentValueError( + "Specify --cost-control-ids to update the deployment." + ) + + deployment_id = _deployment_resource_id( + cmd, resource_group_name, account_name, deployment_name + ) + current = show_resource( + cmd, + resource_ids=[deployment_id], + api_version=_API_VERSION, + ) + properties = { + name: value + for name, value in (current.properties or {}).items() + if name in _DEPLOYMENT_MUTABLE_PROPERTIES + } + properties["costControlIds"] = cost_control_ids + + deployment = GenericResource( + properties=properties, + sku=current.sku, + tags=current.tags, + ) + return update_resource( + cmd, + parameters=deployment, + resource_ids=[deployment_id], + api_version=_API_VERSION, + ) diff --git a/src/foundry-cost-control/azext_foundry_cost_control/tests/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/tests/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/tests/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/__init__.py b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/cost-control-rules-1.json b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/cost-control-rules-1.json new file mode 100644 index 00000000000..a01c015d28d --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/cost-control-rules-1.json @@ -0,0 +1,31 @@ +[ + { + "name": "per-agent-monthly", + "counterKey": [ + { + "type": "agent" + } + ], + "unit": "usd", + "amount": 200, + "period": "month", + "recurring": true, + "match": { + "foundryCallerAgentId": [ + "agent-123" + ] + }, + "thresholds": [ + { + "type": "percentage", + "value": 80, + "action": "alert" + }, + { + "type": "absolute", + "value": 0, + "action": "audit" + } + ] + } +] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/cost-control-rules-2.json b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/cost-control-rules-2.json new file mode 100644 index 00000000000..341cdf85bcc --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/cost-control-rules-2.json @@ -0,0 +1,31 @@ +[ + { + "name": "per-project-monthly", + "counterKey": [ + { + "type": "project" + } + ], + "unit": "usd", + "amount": 500, + "period": "month", + "recurring": true, + "match": { + "foundryProjectId": [ + "project-456" + ] + }, + "thresholds": [ + { + "type": "percentage", + "value": 90, + "action": "alert" + }, + { + "type": "absolute", + "value": 0, + "action": "audit" + } + ] + } +] diff --git a/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/recordings/test_foundry_cost_control.yaml b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/recordings/test_foundry_cost_control.yaml new file mode 100644 index 00000000000..d9db6fe5139 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/recordings/test_foundry_cost_control.yaml @@ -0,0 +1,1776 @@ +interactions: +- request: + body: '{"sku": {"name": "S0"}, "kind": "AIServices", "location": "westus2", "properties": + {"allowProjectManagement": true}, "identity": {"type": "SystemAssigned"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account create + Connection: + - keep-alive + Content-Length: + - '156' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --kind --sku --location --yes + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002?api-version=2026-05-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002","name":"test-account-000002","type":"Microsoft.CognitiveServices/accounts","etag":"\"0401bcd4-0000-0800-0000-6aa9b8980000\"","location":"westus2","sku":{"name":"S0"},"kind":"AIServices","properties":{"internalId":"f105e2ba0fdc4c938ffaf9d984aee907","dateCreated":"2026-09-15T21:28:56.1438807Z","apiProperties":{"qnaAzureSearchEndpointKey":null},"callRateLimit":{"rules":[{"key":"documentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"POST"}]},{"key":"documentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"GET"}]},{"key":"documentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"*"}]},{"key":"textTranslation","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"translator/text/*","method":"*"}]},{"key":"singledocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document:translate","method":"*"}]},{"key":"batchDocumentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"POST"}]},{"key":"batchDocumentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"GET"}]},{"key":"batchDocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"*"}]},{"key":"textAnalytics.analyze","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.2/analyze/*","method":"*"}]},{"key":"textAnalytics.healthcare","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/entities/health","method":"*"},{"path":"text/analytics/v3.2-preview.1/health","method":"*"},{"path":"text/analytics/v3.2-preview.2/health","method":"*"}]},{"key":"textAnalytics.languagedetection","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/v3.1/languages","method":"*"}]},{"key":"textAnalytics","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.march.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.march.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.internal.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.internal.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"*"}]},{"key":"textAnalytics.analyze.internal.autoTagging","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-auto-tagging","method":"*"}]},{"key":"textAnalytics.analyze.internal.evaluation","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-evaluation","method":"*"}]},{"key":"token","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"sts/v1.0/*","method":"*"}]},{"key":"speech.synthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/synthesize","method":"*"}]},{"key":"speech.customvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customvoicesynthesize","method":"*"}]},{"key":"speech.neuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/neuralvoicesynthesize","method":"*"}]},{"key":"speech.customneuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customneuralvoicesynthesize","method":"*"}]},{"key":"speech.personalvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/personalvoicesynthesize","method":"*"}]},{"key":"speech.liveavatarconnect","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"speech/liveavatarconnect","method":"*"}]},{"key":"speech.livecustomavatarconnect","renewalPeriod":60,"count":200,"matchPatterns":[{"path":"speech/livecustomavatarconnect","method":"*"}]},{"key":"speech.batchavatarcreate","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"avatar/batchsyntheses/*","method":"PUT"}]},{"key":"speech.speechtotext","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"speechtotext/*","method":"*"}]},{"key":"speech.batchtexttospeechcreate","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/batchsyntheses/*","method":"PUT"}]},{"key":"speech.texttospeech","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/*","method":"*"}]},{"key":"speech.customvoice","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"customvoice/*","method":"*"}]},{"key":"speech.speakerrecognitionv2","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"speaker/*","method":"*"},{"path":"speaker-recognition/*","method":"*"}]},{"key":"speech.speakerrecognitionv1","renewalPeriod":1,"count":5,"matchPatterns":[{"path":"spid/*","method":"*"}]},{"key":"voicelive.realtime","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"voice-live/realtime","method":"*"},{"path":"voice-agent/realtime","method":"*"}]},{"key":"formrecognizer.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"formrecognizer/custom/models/{id}/analyze","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/businessCard/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/idDocument/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/invoice/analyze","method":"POST"},{"path":"formrecognizer/layout/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/asyncBatchAnalyze","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:analyze","method":"POST"},{"path":"formrecognizer/read","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}:analyze","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:analyze","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}:analyze","method":"POST"}]},{"key":"formrecognizer.get.object","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/businessCard/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/idDocument/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/invoice/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/operations/{operationId}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/layout/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}/copyResults/{resultId}","method":"GET"},{"path":"formrecognizer/operations/{operationId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{id}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/operations/{operationId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"}]},{"key":"formrecognizer.list.objects","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/operations","method":"GET"},{"path":"formrecognizer/info","method":"GET"},{"path":"formrecognizer/documentModels","method":"GET"},{"path":"formrecognizer/custom/models","method":"GET"},{"path":"formrecognizer/documentClassifiers","method":"GET"},{"path":"documentintelligence/documentModels","method":"GET"},{"path":"documentintelligence/operations","method":"GET"},{"path":"documentintelligence/info","method":"GET"},{"path":"documentintelligence/documentClassifiers","method":"GET"}]},{"key":"formrecognizer.model.management","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models","method":"POST"},{"path":"formrecognizer/custom/models/compose","method":"POST"},{"path":"formrecognizer/custom/models/copyAuthorization","method":"POST"},{"path":"formrecognizer/custom/models/{id}","method":"DELETE"},{"path":"formrecognizer/custom/models/{id}/keys","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/custom/models/{modelId}/copy","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:copyTo","method":"POST"},{"path":"formrecognizer/documentModels:authorizeCopy","method":"POST"},{"path":"formrecognizer/documentModels:build","method":"POST"},{"path":"formrecognizer/documentModels:compose","method":"POST"},{"path":"formrecognizer/custom/train","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentModels/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentClassifiers:build","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"DELETE"},{"path":"documentintelligence/documentModels:authorizeCopy","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:copyTo","method":"POST"},{"path":"documentintelligence/documentModels:build","method":"POST"},{"path":"documentintelligence/documentModels:compose","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}","method":"DELETE"},{"path":"documentintelligence/documentClassifiers:build","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"DELETE"}]},{"key":"formrecognizer.chat.build","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"documentintelligence/chat:build","method":"POST"}]},{"key":"formrecognizer.chat.complete","renewalPeriod":60,"count":5,"matchPatterns":[{"path":"documentintelligence/chat/{chatId}:complete","method":"POST"}]},{"key":"vision.recognizeText","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"vision/recognizeText","method":"POST"},{"path":"vision/textOperations/*","method":"GET"},{"path":"vision/read/*","method":"*"}]},{"key":"vision","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"vision/*","method":"*"}]},{"key":"container.billing","renewalPeriod":10,"count":500,"matchPatterns":[{"path":"billing/*","method":"*"}]},{"key":"ContentSafety.List","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/blocklists*","method":"*"}]},{"key":"ContentSafety.TextGroundedDetection","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectGroundedness*","method":"*"}]},{"key":"ContentSafety.TextShieldPrompt","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:shieldPrompt*","method":"*"}]},{"key":"ContentSafety.TextDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectIncidents*","method":"*"}]},{"key":"ContentSafety.TextAnalyzeCustomCategory","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:analyzeCustomCategory*","method":"*"}]},{"key":"ContentSafety.TextAutoReview","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:autoReview*","method":"*"}]},{"key":"ContentSafety.GPTFeature","renewalPeriod":10,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectungroundedness*","method":"*"}]},{"key":"ContentSafety.TextJailbreak","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectJailbreak*","method":"*"}]},{"key":"ContentSafety.TextProtectedMaterial","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectProtectedMaterial*","method":"*"}]},{"key":"ContentSafety.UnifiedModerate","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/content:unifiedModerate*","method":"*"}]},{"key":"ContentSafety.TextIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/incidents*","method":"*"}]},{"key":"ContentSafety.TextAutoReviewers","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/autoReviewers*","method":"*"}]},{"key":"ContentSafety.TextCustomCategories","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/categories*","method":"*"}]},{"key":"ContentSafety.Text","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text*","method":"*"}]},{"key":"ContentSafety.ImageWithText","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/imageWithText*","method":"*"}]},{"key":"ContentSafety.ImageDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image:detectIncidents*","method":"*"}]},{"key":"ContentSafety.ImageIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image/incidents*","method":"*"}]},{"key":"ContentSafety.Image","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image*","method":"*"}]},{"key":"ContentSafety.Project","renewalPeriod":1,"count":30,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/projects*","method":"*"}]},{"key":"ContentSafety.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/metrics*","method":"*"}]},{"key":"ContentSafety.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/whitelist*","method":"*"}]},{"key":"ContentSafetyInternal.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/metrics*","method":"*"}]},{"key":"ContentSafetyInternal.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/whitelist*","method":"*"}]},{"key":"ContentSafety.Provenance.ClientWatermarkRegistration","renewalPeriod":10,"count":2,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/provenance/client-watermark:register","method":"POST"}]},{"key":"contentunderstanding.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}:analyze","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinary","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeInline","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinaryInline","method":"POST"},{"path":"contentunderstanding/classifiers/{classifierId}:classify","method":"POST"}]},{"key":"contentunderstanding.get.object","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/operations/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}/files/{path}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{resultId}/*","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}/images/{imageId}","method":"GET"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"GET"},{"path":"contentunderstanding/classifierResults/{operationId}","method":"GET"},{"path":"contentunderstanding/defaults","method":"GET"}]},{"key":"contentunderstanding.list.object","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/analyzers","method":"GET"},{"path":"contentunderstanding/classifiers","method":"GET"}]},{"key":"contentunderstanding.analyzer.management","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PUT"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"DELETE"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PATCH"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PUT"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"DELETE"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PATCH"},{"path":"contentunderstanding/analyzers/{analyzerId}:grantCopyAuthorization","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:copy","method":"POST"},{"path":"contentunderstanding/defaults","method":"PATCH"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"DELETE"}]},{"key":"contentunderstanding.labeling","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"contentunderstanding/labelingProjects","method":"GET"},{"path":"contentunderstanding/labelingProjects/*","method":"*"},{"path":"contentunderstanding/classificationProjects","method":"GET"},{"path":"contentunderstanding/classificationProjects/*","method":"*"}]},{"key":"contentunderstanding.face","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/personDirectories","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces/{faceId}","method":"*"},{"path":"contentunderstanding/faces:detect","method":"*"},{"path":"contentunderstanding/faces:compare","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons:identify","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces:find","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}:verify","method":"*"}]},{"key":"mai","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/mai","method":"*"}]},{"key":"models","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/models","method":"*"}]},{"key":"openai.dalle.post","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"POST"},{"path":"openai/images/*","method":"POST"}]},{"key":"openai.dalle.other","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"*"},{"path":"openai/operations/images/*","method":"*"}]},{"key":"openai.assistants.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/assistants","method":"GET"}]},{"key":"openai.threads.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/threads","method":"GET"}]},{"key":"openai.vectorstores.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/vector_stores","method":"GET"}]},{"key":"openai.vectorstores.post","renewalPeriod":1,"count":60,"matchPatterns":[{"path":"openai/vector_stores","method":"POST"},{"path":"openai/vector_stores/*","method":"POST"}]},{"key":"openai.assistants.default","renewalPeriod":60,"count":6000,"matchPatterns":[{"path":"openai/assistants","method":"*"},{"path":"openai/assistants/*","method":"*"},{"path":"openai/threads","method":"*"},{"path":"openai/threads/*","method":"*"},{"path":"openai/vector_stores","method":"*"},{"path":"openai/vector_stores/*","method":"*"}]},{"key":"openai.responses.default","renewalPeriod":1,"count":100000,"matchPatterns":[{"path":"openai/responses","method":"*"},{"path":"openai/responses/*","method":"*"}]},{"key":"openai.moderations.post","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/v1/moderations","method":"POST"},{"path":"openai/v1/moderations/exp/m4","method":"POST"},{"path":"openai/v1/moderations/exp/safeberry","method":"POST"},{"path":"openai/v1/safeberry/moderations","method":"POST"}]},{"key":"openai","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"openai/*","method":"*"}]},{"key":"api.projects.default","renewalPeriod":1,"count":1000000,"matchPatterns":[{"path":"api/projects/*","method":"*"}]},{"key":"default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"*","method":"*"}]}]},"isMigrated":false,"allowProjectManagement":true,"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","capabilities":[{"name":"VirtualNetworks"},{"name":"EnabledApimVnet","value":"true"},{"name":"CustomerManagedKey"},{"name":"CustomerManagedStorage"},{"name":"TrustedServices","value":"Microsoft.CognitiveServices,Microsoft.MachineLearningServices,Microsoft.Search,Microsoft.VideoIndexer"},{"name":"NetworkSecurityPerimeter"},{"name":"MaxFineTuneCount","value":"100"},{"name":"MaxRunningFineTuneCount","value":"2"},{"name":"MaxUserFileCount","value":"50"},{"name":"MaxTrainingFileSize","value":"512000000"},{"name":"MaxUserFileImportDurationInHours","value":"1"},{"name":"MaxFineTuneJobDurationInHours","value":"720"},{"name":"MaxRunningGlobalStandardFineTuneCount","value":"1"},{"name":"RaiMonitor"},{"name":"CustomerManagedAmlWorkspace"},{"name":"v1GA"},{"name":"useEndpointRateLimiter","value":"Enabled"},{"name":"FinetunedModelRouterEndpoint"},{"name":"FinetunedModelRouterScoreThreshold","value":"0.171"},{"name":"quotaRefundsEnabled","value":"false"},{"name":"audio","value":"true"},{"name":"imageGenerations","value":"true"},{"name":"chatCompletion","value":"true"},{"name":"fineTune","value":"true"},{"name":"imageEdits","value":"true"},{"name":"realtimeTranscription","value":"true"},{"name":"Container","value":"ContentSafety.*,ContentSafety.TextAnalyze,ContentSafety.ImageAnalyze,ContentSafety.Jailbreak,ContentSafety.jailbreakanalyze,ComputerVision.*,FormRecognizer.*,FormRecognizer.Forms,FormRecognizer.FormRecognizerCustomSupervised,FormRecognizer.FormRecognizerLayout,FormRecognizer.formrecognizerreadlayout,FormRecognizer.FormRecognizerId,FormRecognizer.FormRecognizerInvoice,FormRecognizer.FormRecognizerReceipt,FormRecognizer.FormRecognizerBusinessCard,FormRecognizer.FormRecognizerRead,FormRecognizer.FormRecognizerKvp,SpeechServices.*,SpeechServices.CustomSpeechToText,SpeechServices.NeuralTextToSpeechOnPrem,SpeechServices.DPP,SpeechServices.SpeechToText,SpeechServices.BatchSpeechToTextSync,TextAnalytics.*,TextAnalytics.Healthcare,TextAnalytics.Keyphrase,TextAnalytics.KeyphraseV2,TextAnalytics.KeyPhraseONNX,TextAnalytics.LanguageFastText,TextAnalytics.Language,TextAnalytics.LanguageV2,TextAnalytics.Sentiment,TextAnalytics.SentimentV2,TextAnalytics.SentimentV3,TextAnalytics.SentimentV3Preview,TextAnalytics.SentimentONNX,TextAnalytics.SummarizationFrontend,TextAnalytics.SummarizationWorker,TextAnalytics.CluRuntime,TextAnalytics.CluContainer,TextAnalytics.PII,TextAnalytics.NER"},{"name":"DynamicThrottling"},{"name":"Cloud","value":"TextAnalytics.CustomText,TextAnalytics.ConversationalLU,TextAnalytics.Healthcare,TextAnalytics.Analyze,TextAnalytics.AnalyzeText,QuestionAnswer.AllApis,LanguageService.QuestionAnsweringApis"}],"a365LoggingEnabled":true,"a365Status":"Enabled","provisioningState":"Creating"},"identity":{"principalId":"df047297-78b3-4854-8903-d334906e267f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:28:54.3826461Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:28:54.3826461Z"}}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/e35c95fa-5944-4995-ab6f-3246b64313cd?api-version=2017-04-18&t=639251045367576553&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=DlKmFPd0vGsvMYLWzsl7EjogdNgYE898o673BS_gH87vqShqwsjOxqN8n2hhRGeTRVzMw-Z3zKPYzKoC4h3aGEKo9ma4ss3EmMAf4socklT8pbNrmfcy3b4eFbH02UYNyGYMmr258tQvcl_S5pVQ-2-85q0Sh492UNI4_nugfgogvtH6kmAXGIhkrCQmmWVZyaYDMAMJkLeFcbicT5_tsXxgWJvOWQHoZ_qsFekn2sX7ygWcDXTw_20Hv4gbgHVKDdLsBDUgvhI_oltLBNvZO1RCJdM2237iz14w5cBHhCmmwhTuixWy64vS9qHIH5Wbig7aaVJcKzv1Fdi_R370jg&h=aELsy2_248Lkki10MiQVz026OjVbi8-b3Tgho89oqLQ + cache-control: + - no-cache + content-length: + - '26412' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:28:56 GMT + etag: + - '"0401bcd4-0000-0800-0000-6aa9b8980000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '938' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/01e5945d-59be-4536-8aa7-f0496cb0ea3a + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 624F3DA00C3D4A879E893FAF9FF53D72 Ref B: CO6AA3150218029 Ref C: 2026-09-15T21:28:54Z' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --kind --sku --location --yes + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/e35c95fa-5944-4995-ab6f-3246b64313cd?api-version=2017-04-18&t=639251045367576553&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=DlKmFPd0vGsvMYLWzsl7EjogdNgYE898o673BS_gH87vqShqwsjOxqN8n2hhRGeTRVzMw-Z3zKPYzKoC4h3aGEKo9ma4ss3EmMAf4socklT8pbNrmfcy3b4eFbH02UYNyGYMmr258tQvcl_S5pVQ-2-85q0Sh492UNI4_nugfgogvtH6kmAXGIhkrCQmmWVZyaYDMAMJkLeFcbicT5_tsXxgWJvOWQHoZ_qsFekn2sX7ygWcDXTw_20Hv4gbgHVKDdLsBDUgvhI_oltLBNvZO1RCJdM2237iz14w5cBHhCmmwhTuixWy64vS9qHIH5Wbig7aaVJcKzv1Fdi_R370jg&h=aELsy2_248Lkki10MiQVz026OjVbi8-b3Tgho89oqLQ + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/e35c95fa-5944-4995-ab6f-3246b64313cd","name":"e35c95fa-5944-4995-ab6f-3246b64313cd","status":"Creating","startTime":"2026-09-15T21:28:56Z"}' + headers: + cache-control: + - no-cache + content-length: + - '271' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:28:56 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '9' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/9955b084-de5b-4250-87d0-26ab56970d80 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: F56C10A875C44A179080C69274DCDCE6 Ref B: CO6AA3150218021 Ref C: 2026-09-15T21:28:57Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --kind --sku --location --yes + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/e35c95fa-5944-4995-ab6f-3246b64313cd?api-version=2017-04-18&t=639251045367576553&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=DlKmFPd0vGsvMYLWzsl7EjogdNgYE898o673BS_gH87vqShqwsjOxqN8n2hhRGeTRVzMw-Z3zKPYzKoC4h3aGEKo9ma4ss3EmMAf4socklT8pbNrmfcy3b4eFbH02UYNyGYMmr258tQvcl_S5pVQ-2-85q0Sh492UNI4_nugfgogvtH6kmAXGIhkrCQmmWVZyaYDMAMJkLeFcbicT5_tsXxgWJvOWQHoZ_qsFekn2sX7ygWcDXTw_20Hv4gbgHVKDdLsBDUgvhI_oltLBNvZO1RCJdM2237iz14w5cBHhCmmwhTuixWy64vS9qHIH5Wbig7aaVJcKzv1Fdi_R370jg&h=aELsy2_248Lkki10MiQVz026OjVbi8-b3Tgho89oqLQ + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/e35c95fa-5944-4995-ab6f-3246b64313cd","name":"e35c95fa-5944-4995-ab6f-3246b64313cd","status":"Creating","startTime":"2026-09-15T21:28:56Z"}' + headers: + cache-control: + - no-cache + content-length: + - '271' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:29:27 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '9' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/88ea423f-c903-47b2-a772-5c45f4e7606d + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: DF1910904FCD42CA9903E483B50BFB1E Ref B: CO1AA3060818036 Ref C: 2026-09-15T21:29:27Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --kind --sku --location --yes + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/e35c95fa-5944-4995-ab6f-3246b64313cd?api-version=2017-04-18&t=639251045367576553&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=DlKmFPd0vGsvMYLWzsl7EjogdNgYE898o673BS_gH87vqShqwsjOxqN8n2hhRGeTRVzMw-Z3zKPYzKoC4h3aGEKo9ma4ss3EmMAf4socklT8pbNrmfcy3b4eFbH02UYNyGYMmr258tQvcl_S5pVQ-2-85q0Sh492UNI4_nugfgogvtH6kmAXGIhkrCQmmWVZyaYDMAMJkLeFcbicT5_tsXxgWJvOWQHoZ_qsFekn2sX7ygWcDXTw_20Hv4gbgHVKDdLsBDUgvhI_oltLBNvZO1RCJdM2237iz14w5cBHhCmmwhTuixWy64vS9qHIH5Wbig7aaVJcKzv1Fdi_R370jg&h=aELsy2_248Lkki10MiQVz026OjVbi8-b3Tgho89oqLQ + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/e35c95fa-5944-4995-ab6f-3246b64313cd","name":"e35c95fa-5944-4995-ab6f-3246b64313cd","status":"Succeeded","startTime":"2026-09-15T21:28:56Z","endTime":"2026-09-15T21:29:35Z"}' + headers: + cache-control: + - no-cache + content-length: + - '305' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:29:58 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '9' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/26a522be-a020-4623-b203-6caa95d16ee5 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 68CAE5BCE6CE4ED0B04060D7FE976CE4 Ref B: MWH011020809031 Ref C: 2026-09-15T21:29:58Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account create + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --kind --sku --location --yes + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002?api-version=2026-05-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002","name":"test-account-000002","type":"Microsoft.CognitiveServices/accounts","etag":"\"04013fd9-0000-0800-0000-6aa9b8be0000\"","location":"westus2","sku":{"name":"S0"},"kind":"AIServices","properties":{"endpoint":"https://test-account-000002-f105e.cognitiveservices.azure.com/","internalId":"f105e2ba0fdc4c938ffaf9d984aee907","dateCreated":"2026-09-15T21:28:56.1438807Z","apiProperties":{"qnaAzureSearchEndpointKey":null},"callRateLimit":{"rules":[{"key":"documentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"POST"}]},{"key":"documentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"GET"}]},{"key":"documentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"*"}]},{"key":"textTranslation","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"translator/text/*","method":"*"}]},{"key":"singledocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document:translate","method":"*"}]},{"key":"batchDocumentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"POST"}]},{"key":"batchDocumentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"GET"}]},{"key":"batchDocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"*"}]},{"key":"textAnalytics.analyze","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.2/analyze/*","method":"*"}]},{"key":"textAnalytics.healthcare","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/entities/health","method":"*"},{"path":"text/analytics/v3.2-preview.1/health","method":"*"},{"path":"text/analytics/v3.2-preview.2/health","method":"*"}]},{"key":"textAnalytics.languagedetection","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/v3.1/languages","method":"*"}]},{"key":"textAnalytics","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.march.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.march.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.internal.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.internal.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"*"}]},{"key":"textAnalytics.analyze.internal.autoTagging","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-auto-tagging","method":"*"}]},{"key":"textAnalytics.analyze.internal.evaluation","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-evaluation","method":"*"}]},{"key":"token","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"sts/v1.0/*","method":"*"}]},{"key":"speech.synthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/synthesize","method":"*"}]},{"key":"speech.customvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customvoicesynthesize","method":"*"}]},{"key":"speech.neuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/neuralvoicesynthesize","method":"*"}]},{"key":"speech.customneuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customneuralvoicesynthesize","method":"*"}]},{"key":"speech.personalvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/personalvoicesynthesize","method":"*"}]},{"key":"speech.liveavatarconnect","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"speech/liveavatarconnect","method":"*"}]},{"key":"speech.livecustomavatarconnect","renewalPeriod":60,"count":200,"matchPatterns":[{"path":"speech/livecustomavatarconnect","method":"*"}]},{"key":"speech.batchavatarcreate","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"avatar/batchsyntheses/*","method":"PUT"}]},{"key":"speech.speechtotext","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"speechtotext/*","method":"*"}]},{"key":"speech.batchtexttospeechcreate","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/batchsyntheses/*","method":"PUT"}]},{"key":"speech.texttospeech","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/*","method":"*"}]},{"key":"speech.customvoice","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"customvoice/*","method":"*"}]},{"key":"speech.speakerrecognitionv2","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"speaker/*","method":"*"},{"path":"speaker-recognition/*","method":"*"}]},{"key":"speech.speakerrecognitionv1","renewalPeriod":1,"count":5,"matchPatterns":[{"path":"spid/*","method":"*"}]},{"key":"voicelive.realtime","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"voice-live/realtime","method":"*"},{"path":"voice-agent/realtime","method":"*"}]},{"key":"formrecognizer.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"formrecognizer/custom/models/{id}/analyze","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/businessCard/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/idDocument/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/invoice/analyze","method":"POST"},{"path":"formrecognizer/layout/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/asyncBatchAnalyze","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:analyze","method":"POST"},{"path":"formrecognizer/read","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}:analyze","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:analyze","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}:analyze","method":"POST"}]},{"key":"formrecognizer.get.object","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/businessCard/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/idDocument/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/invoice/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/operations/{operationId}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/layout/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}/copyResults/{resultId}","method":"GET"},{"path":"formrecognizer/operations/{operationId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{id}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/operations/{operationId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"}]},{"key":"formrecognizer.list.objects","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/operations","method":"GET"},{"path":"formrecognizer/info","method":"GET"},{"path":"formrecognizer/documentModels","method":"GET"},{"path":"formrecognizer/custom/models","method":"GET"},{"path":"formrecognizer/documentClassifiers","method":"GET"},{"path":"documentintelligence/documentModels","method":"GET"},{"path":"documentintelligence/operations","method":"GET"},{"path":"documentintelligence/info","method":"GET"},{"path":"documentintelligence/documentClassifiers","method":"GET"}]},{"key":"formrecognizer.model.management","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models","method":"POST"},{"path":"formrecognizer/custom/models/compose","method":"POST"},{"path":"formrecognizer/custom/models/copyAuthorization","method":"POST"},{"path":"formrecognizer/custom/models/{id}","method":"DELETE"},{"path":"formrecognizer/custom/models/{id}/keys","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/custom/models/{modelId}/copy","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:copyTo","method":"POST"},{"path":"formrecognizer/documentModels:authorizeCopy","method":"POST"},{"path":"formrecognizer/documentModels:build","method":"POST"},{"path":"formrecognizer/documentModels:compose","method":"POST"},{"path":"formrecognizer/custom/train","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentModels/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentClassifiers:build","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"DELETE"},{"path":"documentintelligence/documentModels:authorizeCopy","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:copyTo","method":"POST"},{"path":"documentintelligence/documentModels:build","method":"POST"},{"path":"documentintelligence/documentModels:compose","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}","method":"DELETE"},{"path":"documentintelligence/documentClassifiers:build","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"DELETE"}]},{"key":"formrecognizer.chat.build","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"documentintelligence/chat:build","method":"POST"}]},{"key":"formrecognizer.chat.complete","renewalPeriod":60,"count":5,"matchPatterns":[{"path":"documentintelligence/chat/{chatId}:complete","method":"POST"}]},{"key":"vision.recognizeText","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"vision/recognizeText","method":"POST"},{"path":"vision/textOperations/*","method":"GET"},{"path":"vision/read/*","method":"*"}]},{"key":"vision","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"vision/*","method":"*"}]},{"key":"container.billing","renewalPeriod":10,"count":500,"matchPatterns":[{"path":"billing/*","method":"*"}]},{"key":"ContentSafety.List","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/blocklists*","method":"*"}]},{"key":"ContentSafety.TextGroundedDetection","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectGroundedness*","method":"*"}]},{"key":"ContentSafety.TextShieldPrompt","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:shieldPrompt*","method":"*"}]},{"key":"ContentSafety.TextDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectIncidents*","method":"*"}]},{"key":"ContentSafety.TextAnalyzeCustomCategory","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:analyzeCustomCategory*","method":"*"}]},{"key":"ContentSafety.TextAutoReview","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:autoReview*","method":"*"}]},{"key":"ContentSafety.GPTFeature","renewalPeriod":10,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectungroundedness*","method":"*"}]},{"key":"ContentSafety.TextJailbreak","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectJailbreak*","method":"*"}]},{"key":"ContentSafety.TextProtectedMaterial","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectProtectedMaterial*","method":"*"}]},{"key":"ContentSafety.UnifiedModerate","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/content:unifiedModerate*","method":"*"}]},{"key":"ContentSafety.TextIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/incidents*","method":"*"}]},{"key":"ContentSafety.TextAutoReviewers","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/autoReviewers*","method":"*"}]},{"key":"ContentSafety.TextCustomCategories","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/categories*","method":"*"}]},{"key":"ContentSafety.Text","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text*","method":"*"}]},{"key":"ContentSafety.ImageWithText","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/imageWithText*","method":"*"}]},{"key":"ContentSafety.ImageDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image:detectIncidents*","method":"*"}]},{"key":"ContentSafety.ImageIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image/incidents*","method":"*"}]},{"key":"ContentSafety.Image","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image*","method":"*"}]},{"key":"ContentSafety.Project","renewalPeriod":1,"count":30,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/projects*","method":"*"}]},{"key":"ContentSafety.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/metrics*","method":"*"}]},{"key":"ContentSafety.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/whitelist*","method":"*"}]},{"key":"ContentSafetyInternal.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/metrics*","method":"*"}]},{"key":"ContentSafetyInternal.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/whitelist*","method":"*"}]},{"key":"ContentSafety.Provenance.ClientWatermarkRegistration","renewalPeriod":10,"count":2,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/provenance/client-watermark:register","method":"POST"}]},{"key":"contentunderstanding.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}:analyze","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinary","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeInline","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinaryInline","method":"POST"},{"path":"contentunderstanding/classifiers/{classifierId}:classify","method":"POST"}]},{"key":"contentunderstanding.get.object","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/operations/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}/files/{path}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{resultId}/*","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}/images/{imageId}","method":"GET"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"GET"},{"path":"contentunderstanding/classifierResults/{operationId}","method":"GET"},{"path":"contentunderstanding/defaults","method":"GET"}]},{"key":"contentunderstanding.list.object","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/analyzers","method":"GET"},{"path":"contentunderstanding/classifiers","method":"GET"}]},{"key":"contentunderstanding.analyzer.management","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PUT"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"DELETE"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PATCH"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PUT"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"DELETE"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PATCH"},{"path":"contentunderstanding/analyzers/{analyzerId}:grantCopyAuthorization","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:copy","method":"POST"},{"path":"contentunderstanding/defaults","method":"PATCH"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"DELETE"}]},{"key":"contentunderstanding.labeling","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"contentunderstanding/labelingProjects","method":"GET"},{"path":"contentunderstanding/labelingProjects/*","method":"*"},{"path":"contentunderstanding/classificationProjects","method":"GET"},{"path":"contentunderstanding/classificationProjects/*","method":"*"}]},{"key":"contentunderstanding.face","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/personDirectories","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces/{faceId}","method":"*"},{"path":"contentunderstanding/faces:detect","method":"*"},{"path":"contentunderstanding/faces:compare","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons:identify","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces:find","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}:verify","method":"*"}]},{"key":"mai","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/mai","method":"*"}]},{"key":"models","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/models","method":"*"}]},{"key":"openai.dalle.post","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"POST"},{"path":"openai/images/*","method":"POST"}]},{"key":"openai.dalle.other","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"*"},{"path":"openai/operations/images/*","method":"*"}]},{"key":"openai.assistants.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/assistants","method":"GET"}]},{"key":"openai.threads.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/threads","method":"GET"}]},{"key":"openai.vectorstores.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/vector_stores","method":"GET"}]},{"key":"openai.vectorstores.post","renewalPeriod":1,"count":60,"matchPatterns":[{"path":"openai/vector_stores","method":"POST"},{"path":"openai/vector_stores/*","method":"POST"}]},{"key":"openai.assistants.default","renewalPeriod":60,"count":6000,"matchPatterns":[{"path":"openai/assistants","method":"*"},{"path":"openai/assistants/*","method":"*"},{"path":"openai/threads","method":"*"},{"path":"openai/threads/*","method":"*"},{"path":"openai/vector_stores","method":"*"},{"path":"openai/vector_stores/*","method":"*"}]},{"key":"openai.responses.default","renewalPeriod":1,"count":100000,"matchPatterns":[{"path":"openai/responses","method":"*"},{"path":"openai/responses/*","method":"*"}]},{"key":"openai.moderations.post","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/v1/moderations","method":"POST"},{"path":"openai/v1/moderations/exp/m4","method":"POST"},{"path":"openai/v1/moderations/exp/safeberry","method":"POST"},{"path":"openai/v1/safeberry/moderations","method":"POST"}]},{"key":"openai","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"openai/*","method":"*"}]},{"key":"api.projects.default","renewalPeriod":1,"count":1000000,"matchPatterns":[{"path":"api/projects/*","method":"*"}]},{"key":"default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"*","method":"*"}]}]},"isMigrated":false,"amlWorkspace":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.MachineLearningServices/workspaces/test-account-000002@AML","internalId":"f105e2ba-0fdc-4c93-8ffa-f9d984aee907","amlWorkspace":"test-account-000002@AML"},"allowProjectManagement":true,"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","capabilities":[{"name":"VirtualNetworks"},{"name":"EnabledApimVnet","value":"true"},{"name":"CustomerManagedKey"},{"name":"CustomerManagedStorage"},{"name":"TrustedServices","value":"Microsoft.CognitiveServices,Microsoft.MachineLearningServices,Microsoft.Search,Microsoft.VideoIndexer"},{"name":"NetworkSecurityPerimeter"},{"name":"MaxFineTuneCount","value":"100"},{"name":"MaxRunningFineTuneCount","value":"2"},{"name":"MaxUserFileCount","value":"50"},{"name":"MaxTrainingFileSize","value":"512000000"},{"name":"MaxUserFileImportDurationInHours","value":"1"},{"name":"MaxFineTuneJobDurationInHours","value":"720"},{"name":"MaxRunningGlobalStandardFineTuneCount","value":"1"},{"name":"RaiMonitor"},{"name":"CustomerManagedAmlWorkspace"},{"name":"v1GA"},{"name":"useEndpointRateLimiter","value":"Enabled"},{"name":"FinetunedModelRouterEndpoint"},{"name":"FinetunedModelRouterScoreThreshold","value":"0.171"},{"name":"quotaRefundsEnabled","value":"false"},{"name":"audio","value":"true"},{"name":"imageGenerations","value":"true"},{"name":"chatCompletion","value":"true"},{"name":"fineTune","value":"true"},{"name":"imageEdits","value":"true"},{"name":"realtimeTranscription","value":"true"},{"name":"Container","value":"ContentSafety.*,ContentSafety.TextAnalyze,ContentSafety.ImageAnalyze,ContentSafety.Jailbreak,ContentSafety.jailbreakanalyze,ComputerVision.*,FormRecognizer.*,FormRecognizer.Forms,FormRecognizer.FormRecognizerCustomSupervised,FormRecognizer.FormRecognizerLayout,FormRecognizer.formrecognizerreadlayout,FormRecognizer.FormRecognizerId,FormRecognizer.FormRecognizerInvoice,FormRecognizer.FormRecognizerReceipt,FormRecognizer.FormRecognizerBusinessCard,FormRecognizer.FormRecognizerRead,FormRecognizer.FormRecognizerKvp,SpeechServices.*,SpeechServices.CustomSpeechToText,SpeechServices.NeuralTextToSpeechOnPrem,SpeechServices.DPP,SpeechServices.SpeechToText,SpeechServices.BatchSpeechToTextSync,TextAnalytics.*,TextAnalytics.Healthcare,TextAnalytics.Keyphrase,TextAnalytics.KeyphraseV2,TextAnalytics.KeyPhraseONNX,TextAnalytics.LanguageFastText,TextAnalytics.Language,TextAnalytics.LanguageV2,TextAnalytics.Sentiment,TextAnalytics.SentimentV2,TextAnalytics.SentimentV3,TextAnalytics.SentimentV3Preview,TextAnalytics.SentimentONNX,TextAnalytics.SummarizationFrontend,TextAnalytics.SummarizationWorker,TextAnalytics.CluRuntime,TextAnalytics.CluContainer,TextAnalytics.PII,TextAnalytics.NER"},{"name":"DynamicThrottling"},{"name":"Cloud","value":"TextAnalytics.CustomText,TextAnalytics.ConversationalLU,TextAnalytics.Healthcare,TextAnalytics.Analyze,TextAnalytics.AnalyzeText,QuestionAnswer.AllApis,LanguageService.QuestionAnsweringApis"}],"endpoints":{"AI + Foundry API":"https://test-account-000002.services.ai.azure.com/","Azure AI + Model Inference API (UDP)":"https://test-account-000002-f105e.cognitiveservices.azure.com/","ProjectA + APIs":"https://test-account-000002-f105e.cognitiveservices.azure.com/","MAAP + Managed Deployments API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Language Model Instance API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Dall-E API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Sora API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Moderations API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Whisper API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Model Scaleset API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token + Service API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Metering + and Throttling API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + OpenAI Legacy API - Latest moniker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Response API on Websocket":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Translation WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Live WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + AI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Cohere + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Mistral + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Realtime API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Understanding":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Safety":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Container":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Computer + Vision":"https://test-account-000002-f105e.cognitiveservices.azure.com/","FormRecognizer":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text v3.2_internal.1":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice Trial":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Video + Translation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Audio Content Creation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services TTS Player":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Podcast":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Text to Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text (Standard)":"https://westus2.stt.speech.microsoft.com","Speech + Services Text to Speech (Neural)":"https://westus2.tts.speech.microsoft.com","Voice + Agent Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Media Gateway Calls API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Capabilities API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Text + Analytics":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QnAMaker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QuestionAnswering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","LUIS.Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Text Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Conversational + Language Understanding Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language + Remote MCP Server":"https://test-account-000002-f105e.cognitiveservices.azure.com/","TextTranslation-Global":"https://api.cognitive.microsofttranslator.com/","TextTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","DocumentTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","CustomTranslator":"https://test-account-000002-f105e.cognitiveservices.azure.com/"},"a365LoggingEnabled":true,"a365Status":"Enabled","provisioningState":"Succeeded"},"identity":{"principalId":"df047297-78b3-4854-8903-d334906e267f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:28:54.3826461Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:28:54.3826461Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '32279' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:29:59 GMT + etag: + - '"04013fd9-0000-0800-0000-6aa9b8be0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '140' + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 6B88E949C2EA47F3910BA8CC09148300 Ref B: CO6AA3150217037 Ref C: 2026-09-15T21:29:59Z' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"displayName": "first display name", "rules": [{"amount": + 200.0, "counterKey": [{"type": "agent"}], "match": {"foundry.caller.agent.id": + ["agent-123"]}, "name": "per-agent-monthly", "period": "month", "recurring": + true, "thresholds": [{"action": "alert", "type": "percentage", "value": 80.0}, + {"action": "audit", "type": "absolute", "value": 0.0}], "unit": "usd"}]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol create + Connection: + - keep-alive + Content-Length: + - '382' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --account-name --cost-control-name --display-name --rules + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-1","properties":{"displayName":"first + display name","rules":[{"name":"per-agent-monthly","counterKey":[{"type":"agent"}],"unit":"usd","amount":200.0,"period":"month","recurring":true,"match":{"foundry.caller.agent.id":["agent-123"]},"thresholds":[{"type":"percentage","value":80.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:01.095038Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:01.095038Z"},"etag":"\"c7ddc54d-eec0-4099-826d-71e1a47ffd28\""}' + headers: + cache-control: + - no-cache + content-length: + - '893' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:00 GMT + etag: + - '"c7ddc54d-eec0-4099-826d-71e1a47ffd28"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '62' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/0491c141-837b-4d9f-bd44-b6cb9d3e43fa + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 6CCC84D3094942E89D7E4081A402DCB3 Ref B: MWH011020809042 Ref C: 2026-09-15T21:30:00Z' + status: + code: 201 + message: Created +- request: + body: '{"properties": {"displayName": "second display name", "rules": [{"amount": + 500.0, "counterKey": [{"type": "project"}], "match": {"foundry.project.id": + ["project-456"]}, "name": "per-project-monthly", "period": "month", "recurring": + true, "thresholds": [{"action": "alert", "type": "percentage", "value": 90.0}, + {"action": "audit", "type": "absolute", "value": 0.0}], "unit": "usd"}]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol create + Connection: + - keep-alive + Content-Length: + - '384' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --account-name --cost-control-name --display-name --rules + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-2?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-2","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-2","properties":{"displayName":"second + display name","rules":[{"name":"per-project-monthly","counterKey":[{"type":"project"}],"unit":"usd","amount":500.0,"period":"month","recurring":true,"match":{"foundry.project.id":["project-456"]},"thresholds":[{"type":"percentage","value":90.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:02.2715063Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:02.2715063Z"},"etag":"\"b2bec68f-e253-4593-b869-c8b13491ea05\""}' + headers: + cache-control: + - no-cache + content-length: + - '897' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:02 GMT + etag: + - '"b2bec68f-e253-4593-b869-c8b13491ea05"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '78' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/2bf0727b-cee0-4702-9c9c-2459ed20151f + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: D094860DB40748E090ACAAF36C3439E2 Ref B: MWH011020806052 Ref C: 2026-09-15T21:30:02Z' + status: + code: 201 + message: Created +- request: + body: '{"properties": {"costControlIds": ["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1"], + "costControlConnections": {"appInsightsConnectionId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-connection", + "eventGridConnectionId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-event-grid-connection"}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + Content-Length: + - '717' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --cost-control-connections --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002","name":"test-account-000002","type":"Microsoft.CognitiveServices/accounts","etag":"\"0401c3dc-0000-0800-0000-6aa9b8db0000\"","location":"westus2","sku":{"name":"S0"},"kind":"AIServices","properties":{"endpoint":"https://test-account-000002-f105e.cognitiveservices.azure.com/","provisioningState":"Accepted","internalId":"f105e2ba0fdc4c938ffaf9d984aee907","dateCreated":"2026-09-15T21:28:56.1438807Z","apiProperties":{"qnaAzureSearchEndpointKey":null},"callRateLimit":{"rules":[{"key":"documentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"POST"}]},{"key":"documentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"GET"}]},{"key":"documentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"*"}]},{"key":"textTranslation","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"translator/text/*","method":"*"}]},{"key":"singledocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document:translate","method":"*"}]},{"key":"batchDocumentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"POST"}]},{"key":"batchDocumentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"GET"}]},{"key":"batchDocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"*"}]},{"key":"textAnalytics.analyze","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.2/analyze/*","method":"*"}]},{"key":"textAnalytics.healthcare","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/entities/health","method":"*"},{"path":"text/analytics/v3.2-preview.1/health","method":"*"},{"path":"text/analytics/v3.2-preview.2/health","method":"*"}]},{"key":"textAnalytics.languagedetection","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/v3.1/languages","method":"*"}]},{"key":"textAnalytics","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.march.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.march.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.internal.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.internal.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"*"}]},{"key":"textAnalytics.analyze.internal.autoTagging","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-auto-tagging","method":"*"}]},{"key":"textAnalytics.analyze.internal.evaluation","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-evaluation","method":"*"}]},{"key":"token","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"sts/v1.0/*","method":"*"}]},{"key":"speech.synthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/synthesize","method":"*"}]},{"key":"speech.customvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customvoicesynthesize","method":"*"}]},{"key":"speech.neuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/neuralvoicesynthesize","method":"*"}]},{"key":"speech.customneuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customneuralvoicesynthesize","method":"*"}]},{"key":"speech.personalvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/personalvoicesynthesize","method":"*"}]},{"key":"speech.liveavatarconnect","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"speech/liveavatarconnect","method":"*"}]},{"key":"speech.livecustomavatarconnect","renewalPeriod":60,"count":200,"matchPatterns":[{"path":"speech/livecustomavatarconnect","method":"*"}]},{"key":"speech.batchavatarcreate","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"avatar/batchsyntheses/*","method":"PUT"}]},{"key":"speech.speechtotext","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"speechtotext/*","method":"*"}]},{"key":"speech.batchtexttospeechcreate","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/batchsyntheses/*","method":"PUT"}]},{"key":"speech.texttospeech","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/*","method":"*"}]},{"key":"speech.customvoice","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"customvoice/*","method":"*"}]},{"key":"speech.speakerrecognitionv2","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"speaker/*","method":"*"},{"path":"speaker-recognition/*","method":"*"}]},{"key":"speech.speakerrecognitionv1","renewalPeriod":1,"count":5,"matchPatterns":[{"path":"spid/*","method":"*"}]},{"key":"voicelive.realtime","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"voice-live/realtime","method":"*"},{"path":"voice-agent/realtime","method":"*"}]},{"key":"formrecognizer.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"formrecognizer/custom/models/{id}/analyze","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/businessCard/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/idDocument/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/invoice/analyze","method":"POST"},{"path":"formrecognizer/layout/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/asyncBatchAnalyze","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:analyze","method":"POST"},{"path":"formrecognizer/read","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}:analyze","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:analyze","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}:analyze","method":"POST"}]},{"key":"formrecognizer.get.object","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/businessCard/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/idDocument/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/invoice/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/operations/{operationId}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/layout/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}/copyResults/{resultId}","method":"GET"},{"path":"formrecognizer/operations/{operationId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{id}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/operations/{operationId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"}]},{"key":"formrecognizer.list.objects","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/operations","method":"GET"},{"path":"formrecognizer/info","method":"GET"},{"path":"formrecognizer/documentModels","method":"GET"},{"path":"formrecognizer/custom/models","method":"GET"},{"path":"formrecognizer/documentClassifiers","method":"GET"},{"path":"documentintelligence/documentModels","method":"GET"},{"path":"documentintelligence/operations","method":"GET"},{"path":"documentintelligence/info","method":"GET"},{"path":"documentintelligence/documentClassifiers","method":"GET"}]},{"key":"formrecognizer.model.management","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models","method":"POST"},{"path":"formrecognizer/custom/models/compose","method":"POST"},{"path":"formrecognizer/custom/models/copyAuthorization","method":"POST"},{"path":"formrecognizer/custom/models/{id}","method":"DELETE"},{"path":"formrecognizer/custom/models/{id}/keys","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/custom/models/{modelId}/copy","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:copyTo","method":"POST"},{"path":"formrecognizer/documentModels:authorizeCopy","method":"POST"},{"path":"formrecognizer/documentModels:build","method":"POST"},{"path":"formrecognizer/documentModels:compose","method":"POST"},{"path":"formrecognizer/custom/train","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentModels/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentClassifiers:build","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"DELETE"},{"path":"documentintelligence/documentModels:authorizeCopy","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:copyTo","method":"POST"},{"path":"documentintelligence/documentModels:build","method":"POST"},{"path":"documentintelligence/documentModels:compose","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}","method":"DELETE"},{"path":"documentintelligence/documentClassifiers:build","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"DELETE"}]},{"key":"formrecognizer.chat.build","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"documentintelligence/chat:build","method":"POST"}]},{"key":"formrecognizer.chat.complete","renewalPeriod":60,"count":5,"matchPatterns":[{"path":"documentintelligence/chat/{chatId}:complete","method":"POST"}]},{"key":"vision.recognizeText","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"vision/recognizeText","method":"POST"},{"path":"vision/textOperations/*","method":"GET"},{"path":"vision/read/*","method":"*"}]},{"key":"vision","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"vision/*","method":"*"}]},{"key":"container.billing","renewalPeriod":10,"count":500,"matchPatterns":[{"path":"billing/*","method":"*"}]},{"key":"ContentSafety.List","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/blocklists*","method":"*"}]},{"key":"ContentSafety.TextGroundedDetection","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectGroundedness*","method":"*"}]},{"key":"ContentSafety.TextShieldPrompt","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:shieldPrompt*","method":"*"}]},{"key":"ContentSafety.TextDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectIncidents*","method":"*"}]},{"key":"ContentSafety.TextAnalyzeCustomCategory","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:analyzeCustomCategory*","method":"*"}]},{"key":"ContentSafety.TextAutoReview","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:autoReview*","method":"*"}]},{"key":"ContentSafety.GPTFeature","renewalPeriod":10,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectungroundedness*","method":"*"}]},{"key":"ContentSafety.TextJailbreak","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectJailbreak*","method":"*"}]},{"key":"ContentSafety.TextProtectedMaterial","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectProtectedMaterial*","method":"*"}]},{"key":"ContentSafety.UnifiedModerate","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/content:unifiedModerate*","method":"*"}]},{"key":"ContentSafety.TextIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/incidents*","method":"*"}]},{"key":"ContentSafety.TextAutoReviewers","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/autoReviewers*","method":"*"}]},{"key":"ContentSafety.TextCustomCategories","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/categories*","method":"*"}]},{"key":"ContentSafety.Text","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text*","method":"*"}]},{"key":"ContentSafety.ImageWithText","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/imageWithText*","method":"*"}]},{"key":"ContentSafety.ImageDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image:detectIncidents*","method":"*"}]},{"key":"ContentSafety.ImageIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image/incidents*","method":"*"}]},{"key":"ContentSafety.Image","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image*","method":"*"}]},{"key":"ContentSafety.Project","renewalPeriod":1,"count":30,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/projects*","method":"*"}]},{"key":"ContentSafety.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/metrics*","method":"*"}]},{"key":"ContentSafety.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/whitelist*","method":"*"}]},{"key":"ContentSafetyInternal.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/metrics*","method":"*"}]},{"key":"ContentSafetyInternal.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/whitelist*","method":"*"}]},{"key":"ContentSafety.Provenance.ClientWatermarkRegistration","renewalPeriod":10,"count":2,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/provenance/client-watermark:register","method":"POST"}]},{"key":"contentunderstanding.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}:analyze","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinary","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeInline","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinaryInline","method":"POST"},{"path":"contentunderstanding/classifiers/{classifierId}:classify","method":"POST"}]},{"key":"contentunderstanding.get.object","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/operations/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}/files/{path}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{resultId}/*","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}/images/{imageId}","method":"GET"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"GET"},{"path":"contentunderstanding/classifierResults/{operationId}","method":"GET"},{"path":"contentunderstanding/defaults","method":"GET"}]},{"key":"contentunderstanding.list.object","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/analyzers","method":"GET"},{"path":"contentunderstanding/classifiers","method":"GET"}]},{"key":"contentunderstanding.analyzer.management","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PUT"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"DELETE"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PATCH"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PUT"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"DELETE"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PATCH"},{"path":"contentunderstanding/analyzers/{analyzerId}:grantCopyAuthorization","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:copy","method":"POST"},{"path":"contentunderstanding/defaults","method":"PATCH"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"DELETE"}]},{"key":"contentunderstanding.labeling","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"contentunderstanding/labelingProjects","method":"GET"},{"path":"contentunderstanding/labelingProjects/*","method":"*"},{"path":"contentunderstanding/classificationProjects","method":"GET"},{"path":"contentunderstanding/classificationProjects/*","method":"*"}]},{"key":"contentunderstanding.face","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/personDirectories","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces/{faceId}","method":"*"},{"path":"contentunderstanding/faces:detect","method":"*"},{"path":"contentunderstanding/faces:compare","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons:identify","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces:find","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}:verify","method":"*"}]},{"key":"mai","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/mai","method":"*"}]},{"key":"models","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/models","method":"*"}]},{"key":"openai.dalle.post","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"POST"},{"path":"openai/images/*","method":"POST"}]},{"key":"openai.dalle.other","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"*"},{"path":"openai/operations/images/*","method":"*"}]},{"key":"openai.assistants.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/assistants","method":"GET"}]},{"key":"openai.threads.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/threads","method":"GET"}]},{"key":"openai.vectorstores.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/vector_stores","method":"GET"}]},{"key":"openai.vectorstores.post","renewalPeriod":1,"count":60,"matchPatterns":[{"path":"openai/vector_stores","method":"POST"},{"path":"openai/vector_stores/*","method":"POST"}]},{"key":"openai.assistants.default","renewalPeriod":60,"count":6000,"matchPatterns":[{"path":"openai/assistants","method":"*"},{"path":"openai/assistants/*","method":"*"},{"path":"openai/threads","method":"*"},{"path":"openai/threads/*","method":"*"},{"path":"openai/vector_stores","method":"*"},{"path":"openai/vector_stores/*","method":"*"}]},{"key":"openai.responses.default","renewalPeriod":1,"count":100000,"matchPatterns":[{"path":"openai/responses","method":"*"},{"path":"openai/responses/*","method":"*"}]},{"key":"openai.moderations.post","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/v1/moderations","method":"POST"},{"path":"openai/v1/moderations/exp/m4","method":"POST"},{"path":"openai/v1/moderations/exp/safeberry","method":"POST"},{"path":"openai/v1/safeberry/moderations","method":"POST"}]},{"key":"openai","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"openai/*","method":"*"}]},{"key":"api.projects.default","renewalPeriod":1,"count":1000000,"matchPatterns":[{"path":"api/projects/*","method":"*"}]},{"key":"default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"*","method":"*"}]}]},"isMigrated":false,"amlWorkspace":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.MachineLearningServices/workspaces/test-account-000002@AML","internalId":"f105e2ba-0fdc-4c93-8ffa-f9d984aee907","amlWorkspace":"test-account-000002@AML"},"allowProjectManagement":true,"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","capabilities":[{"name":"VirtualNetworks"},{"name":"EnabledApimVnet","value":"true"},{"name":"CustomerManagedKey"},{"name":"CustomerManagedStorage"},{"name":"TrustedServices","value":"Microsoft.CognitiveServices,Microsoft.MachineLearningServices,Microsoft.Search,Microsoft.VideoIndexer"},{"name":"NetworkSecurityPerimeter"},{"name":"MaxFineTuneCount","value":"100"},{"name":"MaxRunningFineTuneCount","value":"2"},{"name":"MaxUserFileCount","value":"50"},{"name":"MaxTrainingFileSize","value":"512000000"},{"name":"MaxUserFileImportDurationInHours","value":"1"},{"name":"MaxFineTuneJobDurationInHours","value":"720"},{"name":"MaxRunningGlobalStandardFineTuneCount","value":"1"},{"name":"RaiMonitor"},{"name":"CustomerManagedAmlWorkspace"},{"name":"v1GA"},{"name":"useEndpointRateLimiter","value":"Enabled"},{"name":"FinetunedModelRouterEndpoint"},{"name":"FinetunedModelRouterScoreThreshold","value":"0.171"},{"name":"quotaRefundsEnabled","value":"false"},{"name":"audio","value":"true"},{"name":"imageGenerations","value":"true"},{"name":"chatCompletion","value":"true"},{"name":"fineTune","value":"true"},{"name":"imageEdits","value":"true"},{"name":"realtimeTranscription","value":"true"},{"name":"Container","value":"ContentSafety.*,ContentSafety.TextAnalyze,ContentSafety.ImageAnalyze,ContentSafety.Jailbreak,ContentSafety.jailbreakanalyze,ComputerVision.*,FormRecognizer.*,FormRecognizer.Forms,FormRecognizer.FormRecognizerCustomSupervised,FormRecognizer.FormRecognizerLayout,FormRecognizer.formrecognizerreadlayout,FormRecognizer.FormRecognizerId,FormRecognizer.FormRecognizerInvoice,FormRecognizer.FormRecognizerReceipt,FormRecognizer.FormRecognizerBusinessCard,FormRecognizer.FormRecognizerRead,FormRecognizer.FormRecognizerKvp,SpeechServices.*,SpeechServices.CustomSpeechToText,SpeechServices.NeuralTextToSpeechOnPrem,SpeechServices.DPP,SpeechServices.SpeechToText,SpeechServices.BatchSpeechToTextSync,TextAnalytics.*,TextAnalytics.Healthcare,TextAnalytics.Keyphrase,TextAnalytics.KeyphraseV2,TextAnalytics.KeyPhraseONNX,TextAnalytics.LanguageFastText,TextAnalytics.Language,TextAnalytics.LanguageV2,TextAnalytics.Sentiment,TextAnalytics.SentimentV2,TextAnalytics.SentimentV3,TextAnalytics.SentimentV3Preview,TextAnalytics.SentimentONNX,TextAnalytics.SummarizationFrontend,TextAnalytics.SummarizationWorker,TextAnalytics.CluRuntime,TextAnalytics.CluContainer,TextAnalytics.PII,TextAnalytics.NER"},{"name":"DynamicThrottling"},{"name":"Cloud","value":"TextAnalytics.CustomText,TextAnalytics.ConversationalLU,TextAnalytics.Healthcare,TextAnalytics.Analyze,TextAnalytics.AnalyzeText,QuestionAnswer.AllApis,LanguageService.QuestionAnsweringApis"}],"endpoints":{"AI + Foundry API":"https://test-account-000002.services.ai.azure.com/","Azure AI + Model Inference API (UDP)":"https://test-account-000002-f105e.cognitiveservices.azure.com/","ProjectA + APIs":"https://test-account-000002-f105e.cognitiveservices.azure.com/","MAAP + Managed Deployments API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Language Model Instance API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Dall-E API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Sora API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Moderations API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Whisper API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Model Scaleset API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token + Service API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Metering + and Throttling API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + OpenAI Legacy API - Latest moniker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Response API on Websocket":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Translation WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Live WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + AI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Cohere + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Mistral + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Realtime API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Understanding":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Safety":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Container":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Computer + Vision":"https://test-account-000002-f105e.cognitiveservices.azure.com/","FormRecognizer":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text v3.2_internal.1":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice Trial":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Video + Translation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Audio Content Creation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services TTS Player":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Podcast":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Text to Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text (Standard)":"https://westus2.stt.speech.microsoft.com","Speech + Services Text to Speech (Neural)":"https://westus2.tts.speech.microsoft.com","Voice + Agent Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Media Gateway Calls API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Capabilities API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Text + Analytics":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QnAMaker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QuestionAnswering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","LUIS.Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Text Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Conversational + Language Understanding Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language + Remote MCP Server":"https://test-account-000002-f105e.cognitiveservices.azure.com/","TextTranslation-Global":"https://api.cognitive.microsofttranslator.com/","TextTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","DocumentTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","CustomTranslator":"https://test-account-000002-f105e.cognitiveservices.azure.com/"},"armFeatures":["Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForHealthRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForPIIRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.ComputerVision.SpatialAnaysisRAITermsAccepted","Microsoft.CognitiveServices/OpenAITest","Microsoft.CognitiveServices/OpenAI.gpt-45-preview","Microsoft.CognitiveServices/OnYourDataMongoDB","Microsoft.CognitiveServices/OnYourDataElasticsearch","Microsoft.CognitiveServices/OnYourDataPinecone","Microsoft.CognitiveServices/OnYourDataSql","Microsoft.CognitiveServices/openAIRegions.WestUS2","Microsoft.CognitiveServices/UnifiedResourceProvider","Microsoft.CognitiveServices/OpenAI.1PGatingTier","Microsoft.CognitiveServices/CostControls","Microsoft.CognitiveServices/TiP","Microsoft.CognitiveServices/AllowAIFoundryUpgrade","Microsoft.Resources/EuapParticipation"],"a365LoggingEnabled":true,"a365Status":"Enabled","costControlIds":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1"],"costControlConnections":{"appInsightsConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-connection","eventGridConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-event-grid-connection"}},"identity":{"principalId":"df047297-78b3-4854-8903-d334906e267f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:28:54.3826461Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:03.5414601Z"}}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/0db06475-4c7c-4956-9f67-625c2fd68170?api-version=2017-04-18&t=639251046037445833&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=QFF-zPOhVVu3L63lSdXpa8N_0UIB7ZSTQY42ycifHs8ig_qmsyOU-nYIAmxYcHAaHPSDiyavZsNYdt3HoMoyK0kX1vg3C-a38REqf3FK5eE5pwUtMQzrUewMPJswRPVulq6aHcUMszIYSXewSVS_xF1xqi1Qtk5YOvv3giazzhDYGzPq16EtmJBnX9azPksxS0l7myBRWJ_NgjH9fh9_MbqZvR1xyDwWPki92fCz2XNT9wGQd8fdzp5ZOEoR_EKreKJZ_m7BkC70j3ew_NCTv1uMxFqe84htoRc7pWCX4-AppskRplsFHKDphqHO-PaG4iQdt6XRNnPDQkL0Yu16VA&h=11_-mTUz8-840x5lfvpomBRtY04RwTg8bO6pLD5-L-0 + cache-control: + - no-cache + content-length: + - '33851' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:03 GMT + etag: + - '"0401c3dc-0000-0800-0000-6aa9b8db0000"' + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/0db06475-4c7c-4956-9f67-625c2fd68170?api-version=2017-04-18&operationResultResponseType=Location&t=639251046037445833&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=bl5U23OE-lu1h2NGifYcu5xNM_8zNpKUGVcCuxS-rBBcq1Cv_rAWw798Jd0BYIOmCuSou9MrO_2aek50wSRpMFn4gqK8w4kK8sDo7neVAQvXswVGczBt6_bf08jmLjqgdK3_XrKaXVuFqoQ7SrQlW8wRarUc1tqiodDbGWQyYIvM-igcoAPbr6Loh7BxVgmXqUUstOwihTcs9SuphvUaGLz4ahJkM6pGzLz1XvFUoeFmJvjwQo008bAnDfxGFUSoNRdMOnQe64o0cUrXXfazCGG66OYEYmp27xyb8tLvycjKHgvWVyvnuYA-PWYUsdVjQgxKT4cu-LYtryZ9LKcsUQ&h=11_-mTUz8-840x5lfvpomBRtY04RwTg8bO6pLD5-L-0 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '173' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/15d9bf3b-11e0-4572-85ee-85b47a63735e + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: F8AB667405A84673A509DA6E23C2ACDC Ref B: CO6AA3150218027 Ref C: 2026-09-15T21:30:03Z' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --cost-control-connections --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/0db06475-4c7c-4956-9f67-625c2fd68170?api-version=2017-04-18&t=639251046037445833&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=QFF-zPOhVVu3L63lSdXpa8N_0UIB7ZSTQY42ycifHs8ig_qmsyOU-nYIAmxYcHAaHPSDiyavZsNYdt3HoMoyK0kX1vg3C-a38REqf3FK5eE5pwUtMQzrUewMPJswRPVulq6aHcUMszIYSXewSVS_xF1xqi1Qtk5YOvv3giazzhDYGzPq16EtmJBnX9azPksxS0l7myBRWJ_NgjH9fh9_MbqZvR1xyDwWPki92fCz2XNT9wGQd8fdzp5ZOEoR_EKreKJZ_m7BkC70j3ew_NCTv1uMxFqe84htoRc7pWCX4-AppskRplsFHKDphqHO-PaG4iQdt6XRNnPDQkL0Yu16VA&h=11_-mTUz8-840x5lfvpomBRtY04RwTg8bO6pLD5-L-0 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/0db06475-4c7c-4956-9f67-625c2fd68170","name":"0db06475-4c7c-4956-9f67-625c2fd68170","status":"Updating","startTime":"2026-09-15T21:30:03Z"}' + headers: + cache-control: + - no-cache + content-length: + - '271' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:03 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '7' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/7231e01f-9d61-4de4-a9f2-47e9291469e1 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: CB6353105F7B431C811F1E8385E39FF6 Ref B: CO6AA3150220037 Ref C: 2026-09-15T21:30:04Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --cost-control-connections --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/0db06475-4c7c-4956-9f67-625c2fd68170?api-version=2017-04-18&t=639251046037445833&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=QFF-zPOhVVu3L63lSdXpa8N_0UIB7ZSTQY42ycifHs8ig_qmsyOU-nYIAmxYcHAaHPSDiyavZsNYdt3HoMoyK0kX1vg3C-a38REqf3FK5eE5pwUtMQzrUewMPJswRPVulq6aHcUMszIYSXewSVS_xF1xqi1Qtk5YOvv3giazzhDYGzPq16EtmJBnX9azPksxS0l7myBRWJ_NgjH9fh9_MbqZvR1xyDwWPki92fCz2XNT9wGQd8fdzp5ZOEoR_EKreKJZ_m7BkC70j3ew_NCTv1uMxFqe84htoRc7pWCX4-AppskRplsFHKDphqHO-PaG4iQdt6XRNnPDQkL0Yu16VA&h=11_-mTUz8-840x5lfvpomBRtY04RwTg8bO6pLD5-L-0 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/0db06475-4c7c-4956-9f67-625c2fd68170","name":"0db06475-4c7c-4956-9f67-625c2fd68170","status":"Succeeded","startTime":"2026-09-15T21:30:03Z","endTime":"2026-09-15T21:30:05Z"}' + headers: + cache-control: + - no-cache + content-length: + - '305' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:35 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '7' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/cb7b9350-f7db-48e7-aaba-8295206a6011 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 62B828133979494DAE239C781FFD47EA Ref B: CO1AA3060820054 Ref C: 2026-09-15T21:30:35Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --cost-control-connections --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002","name":"test-account-000002","type":"Microsoft.CognitiveServices/accounts","etag":"\"040103dd-0000-0800-0000-6aa9b8dd0000\"","location":"westus2","sku":{"name":"S0"},"kind":"AIServices","properties":{"endpoint":"https://test-account-000002-f105e.cognitiveservices.azure.com/","provisioningState":"Succeeded","internalId":"f105e2ba0fdc4c938ffaf9d984aee907","dateCreated":"2026-09-15T21:28:56.1438807Z","apiProperties":{"qnaAzureSearchEndpointKey":null},"callRateLimit":{"rules":[{"key":"documentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"POST"}]},{"key":"documentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"GET"}]},{"key":"documentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"*"}]},{"key":"textTranslation","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"translator/text/*","method":"*"}]},{"key":"singledocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document:translate","method":"*"}]},{"key":"batchDocumentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"POST"}]},{"key":"batchDocumentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"GET"}]},{"key":"batchDocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"*"}]},{"key":"textAnalytics.analyze","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.2/analyze/*","method":"*"}]},{"key":"textAnalytics.healthcare","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/entities/health","method":"*"},{"path":"text/analytics/v3.2-preview.1/health","method":"*"},{"path":"text/analytics/v3.2-preview.2/health","method":"*"}]},{"key":"textAnalytics.languagedetection","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/v3.1/languages","method":"*"}]},{"key":"textAnalytics","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.march.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.march.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.internal.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.internal.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"*"}]},{"key":"textAnalytics.analyze.internal.autoTagging","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-auto-tagging","method":"*"}]},{"key":"textAnalytics.analyze.internal.evaluation","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-evaluation","method":"*"}]},{"key":"token","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"sts/v1.0/*","method":"*"}]},{"key":"speech.synthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/synthesize","method":"*"}]},{"key":"speech.customvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customvoicesynthesize","method":"*"}]},{"key":"speech.neuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/neuralvoicesynthesize","method":"*"}]},{"key":"speech.customneuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customneuralvoicesynthesize","method":"*"}]},{"key":"speech.personalvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/personalvoicesynthesize","method":"*"}]},{"key":"speech.liveavatarconnect","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"speech/liveavatarconnect","method":"*"}]},{"key":"speech.livecustomavatarconnect","renewalPeriod":60,"count":200,"matchPatterns":[{"path":"speech/livecustomavatarconnect","method":"*"}]},{"key":"speech.batchavatarcreate","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"avatar/batchsyntheses/*","method":"PUT"}]},{"key":"speech.speechtotext","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"speechtotext/*","method":"*"}]},{"key":"speech.batchtexttospeechcreate","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/batchsyntheses/*","method":"PUT"}]},{"key":"speech.texttospeech","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/*","method":"*"}]},{"key":"speech.customvoice","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"customvoice/*","method":"*"}]},{"key":"speech.speakerrecognitionv2","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"speaker/*","method":"*"},{"path":"speaker-recognition/*","method":"*"}]},{"key":"speech.speakerrecognitionv1","renewalPeriod":1,"count":5,"matchPatterns":[{"path":"spid/*","method":"*"}]},{"key":"voicelive.realtime","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"voice-live/realtime","method":"*"},{"path":"voice-agent/realtime","method":"*"}]},{"key":"formrecognizer.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"formrecognizer/custom/models/{id}/analyze","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/businessCard/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/idDocument/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/invoice/analyze","method":"POST"},{"path":"formrecognizer/layout/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/asyncBatchAnalyze","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:analyze","method":"POST"},{"path":"formrecognizer/read","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}:analyze","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:analyze","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}:analyze","method":"POST"}]},{"key":"formrecognizer.get.object","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/businessCard/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/idDocument/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/invoice/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/operations/{operationId}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/layout/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}/copyResults/{resultId}","method":"GET"},{"path":"formrecognizer/operations/{operationId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{id}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/operations/{operationId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"}]},{"key":"formrecognizer.list.objects","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/operations","method":"GET"},{"path":"formrecognizer/info","method":"GET"},{"path":"formrecognizer/documentModels","method":"GET"},{"path":"formrecognizer/custom/models","method":"GET"},{"path":"formrecognizer/documentClassifiers","method":"GET"},{"path":"documentintelligence/documentModels","method":"GET"},{"path":"documentintelligence/operations","method":"GET"},{"path":"documentintelligence/info","method":"GET"},{"path":"documentintelligence/documentClassifiers","method":"GET"}]},{"key":"formrecognizer.model.management","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models","method":"POST"},{"path":"formrecognizer/custom/models/compose","method":"POST"},{"path":"formrecognizer/custom/models/copyAuthorization","method":"POST"},{"path":"formrecognizer/custom/models/{id}","method":"DELETE"},{"path":"formrecognizer/custom/models/{id}/keys","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/custom/models/{modelId}/copy","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:copyTo","method":"POST"},{"path":"formrecognizer/documentModels:authorizeCopy","method":"POST"},{"path":"formrecognizer/documentModels:build","method":"POST"},{"path":"formrecognizer/documentModels:compose","method":"POST"},{"path":"formrecognizer/custom/train","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentModels/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentClassifiers:build","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"DELETE"},{"path":"documentintelligence/documentModels:authorizeCopy","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:copyTo","method":"POST"},{"path":"documentintelligence/documentModels:build","method":"POST"},{"path":"documentintelligence/documentModels:compose","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}","method":"DELETE"},{"path":"documentintelligence/documentClassifiers:build","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"DELETE"}]},{"key":"formrecognizer.chat.build","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"documentintelligence/chat:build","method":"POST"}]},{"key":"formrecognizer.chat.complete","renewalPeriod":60,"count":5,"matchPatterns":[{"path":"documentintelligence/chat/{chatId}:complete","method":"POST"}]},{"key":"vision.recognizeText","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"vision/recognizeText","method":"POST"},{"path":"vision/textOperations/*","method":"GET"},{"path":"vision/read/*","method":"*"}]},{"key":"vision","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"vision/*","method":"*"}]},{"key":"container.billing","renewalPeriod":10,"count":500,"matchPatterns":[{"path":"billing/*","method":"*"}]},{"key":"ContentSafety.List","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/blocklists*","method":"*"}]},{"key":"ContentSafety.TextGroundedDetection","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectGroundedness*","method":"*"}]},{"key":"ContentSafety.TextShieldPrompt","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:shieldPrompt*","method":"*"}]},{"key":"ContentSafety.TextDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectIncidents*","method":"*"}]},{"key":"ContentSafety.TextAnalyzeCustomCategory","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:analyzeCustomCategory*","method":"*"}]},{"key":"ContentSafety.TextAutoReview","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:autoReview*","method":"*"}]},{"key":"ContentSafety.GPTFeature","renewalPeriod":10,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectungroundedness*","method":"*"}]},{"key":"ContentSafety.TextJailbreak","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectJailbreak*","method":"*"}]},{"key":"ContentSafety.TextProtectedMaterial","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectProtectedMaterial*","method":"*"}]},{"key":"ContentSafety.UnifiedModerate","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/content:unifiedModerate*","method":"*"}]},{"key":"ContentSafety.TextIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/incidents*","method":"*"}]},{"key":"ContentSafety.TextAutoReviewers","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/autoReviewers*","method":"*"}]},{"key":"ContentSafety.TextCustomCategories","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/categories*","method":"*"}]},{"key":"ContentSafety.Text","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text*","method":"*"}]},{"key":"ContentSafety.ImageWithText","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/imageWithText*","method":"*"}]},{"key":"ContentSafety.ImageDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image:detectIncidents*","method":"*"}]},{"key":"ContentSafety.ImageIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image/incidents*","method":"*"}]},{"key":"ContentSafety.Image","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image*","method":"*"}]},{"key":"ContentSafety.Project","renewalPeriod":1,"count":30,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/projects*","method":"*"}]},{"key":"ContentSafety.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/metrics*","method":"*"}]},{"key":"ContentSafety.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/whitelist*","method":"*"}]},{"key":"ContentSafetyInternal.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/metrics*","method":"*"}]},{"key":"ContentSafetyInternal.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/whitelist*","method":"*"}]},{"key":"ContentSafety.Provenance.ClientWatermarkRegistration","renewalPeriod":10,"count":2,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/provenance/client-watermark:register","method":"POST"}]},{"key":"contentunderstanding.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}:analyze","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinary","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeInline","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinaryInline","method":"POST"},{"path":"contentunderstanding/classifiers/{classifierId}:classify","method":"POST"}]},{"key":"contentunderstanding.get.object","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/operations/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}/files/{path}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{resultId}/*","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}/images/{imageId}","method":"GET"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"GET"},{"path":"contentunderstanding/classifierResults/{operationId}","method":"GET"},{"path":"contentunderstanding/defaults","method":"GET"}]},{"key":"contentunderstanding.list.object","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/analyzers","method":"GET"},{"path":"contentunderstanding/classifiers","method":"GET"}]},{"key":"contentunderstanding.analyzer.management","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PUT"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"DELETE"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PATCH"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PUT"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"DELETE"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PATCH"},{"path":"contentunderstanding/analyzers/{analyzerId}:grantCopyAuthorization","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:copy","method":"POST"},{"path":"contentunderstanding/defaults","method":"PATCH"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"DELETE"}]},{"key":"contentunderstanding.labeling","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"contentunderstanding/labelingProjects","method":"GET"},{"path":"contentunderstanding/labelingProjects/*","method":"*"},{"path":"contentunderstanding/classificationProjects","method":"GET"},{"path":"contentunderstanding/classificationProjects/*","method":"*"}]},{"key":"contentunderstanding.face","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/personDirectories","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces/{faceId}","method":"*"},{"path":"contentunderstanding/faces:detect","method":"*"},{"path":"contentunderstanding/faces:compare","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons:identify","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces:find","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}:verify","method":"*"}]},{"key":"mai","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/mai","method":"*"}]},{"key":"models","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/models","method":"*"}]},{"key":"openai.dalle.post","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"POST"},{"path":"openai/images/*","method":"POST"}]},{"key":"openai.dalle.other","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"*"},{"path":"openai/operations/images/*","method":"*"}]},{"key":"openai.assistants.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/assistants","method":"GET"}]},{"key":"openai.threads.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/threads","method":"GET"}]},{"key":"openai.vectorstores.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/vector_stores","method":"GET"}]},{"key":"openai.vectorstores.post","renewalPeriod":1,"count":60,"matchPatterns":[{"path":"openai/vector_stores","method":"POST"},{"path":"openai/vector_stores/*","method":"POST"}]},{"key":"openai.assistants.default","renewalPeriod":60,"count":6000,"matchPatterns":[{"path":"openai/assistants","method":"*"},{"path":"openai/assistants/*","method":"*"},{"path":"openai/threads","method":"*"},{"path":"openai/threads/*","method":"*"},{"path":"openai/vector_stores","method":"*"},{"path":"openai/vector_stores/*","method":"*"}]},{"key":"openai.responses.default","renewalPeriod":1,"count":100000,"matchPatterns":[{"path":"openai/responses","method":"*"},{"path":"openai/responses/*","method":"*"}]},{"key":"openai.moderations.post","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/v1/moderations","method":"POST"},{"path":"openai/v1/moderations/exp/m4","method":"POST"},{"path":"openai/v1/moderations/exp/safeberry","method":"POST"},{"path":"openai/v1/safeberry/moderations","method":"POST"}]},{"key":"openai","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"openai/*","method":"*"}]},{"key":"api.projects.default","renewalPeriod":1,"count":1000000,"matchPatterns":[{"path":"api/projects/*","method":"*"}]},{"key":"default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"*","method":"*"}]}]},"isMigrated":false,"amlWorkspace":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.MachineLearningServices/workspaces/test-account-000002@AML","internalId":"f105e2ba-0fdc-4c93-8ffa-f9d984aee907","amlWorkspace":"test-account-000002@AML"},"allowProjectManagement":true,"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","capabilities":[{"name":"VirtualNetworks"},{"name":"EnabledApimVnet","value":"true"},{"name":"CustomerManagedKey"},{"name":"CustomerManagedStorage"},{"name":"TrustedServices","value":"Microsoft.CognitiveServices,Microsoft.MachineLearningServices,Microsoft.Search,Microsoft.VideoIndexer"},{"name":"NetworkSecurityPerimeter"},{"name":"MaxFineTuneCount","value":"100"},{"name":"MaxRunningFineTuneCount","value":"2"},{"name":"MaxUserFileCount","value":"50"},{"name":"MaxTrainingFileSize","value":"512000000"},{"name":"MaxUserFileImportDurationInHours","value":"1"},{"name":"MaxFineTuneJobDurationInHours","value":"720"},{"name":"MaxRunningGlobalStandardFineTuneCount","value":"1"},{"name":"RaiMonitor"},{"name":"CustomerManagedAmlWorkspace"},{"name":"v1GA"},{"name":"useEndpointRateLimiter","value":"Enabled"},{"name":"FinetunedModelRouterEndpoint"},{"name":"FinetunedModelRouterScoreThreshold","value":"0.171"},{"name":"quotaRefundsEnabled","value":"false"},{"name":"audio","value":"true"},{"name":"imageGenerations","value":"true"},{"name":"chatCompletion","value":"true"},{"name":"fineTune","value":"true"},{"name":"imageEdits","value":"true"},{"name":"realtimeTranscription","value":"true"},{"name":"Container","value":"ContentSafety.*,ContentSafety.TextAnalyze,ContentSafety.ImageAnalyze,ContentSafety.Jailbreak,ContentSafety.jailbreakanalyze,ComputerVision.*,FormRecognizer.*,FormRecognizer.Forms,FormRecognizer.FormRecognizerCustomSupervised,FormRecognizer.FormRecognizerLayout,FormRecognizer.formrecognizerreadlayout,FormRecognizer.FormRecognizerId,FormRecognizer.FormRecognizerInvoice,FormRecognizer.FormRecognizerReceipt,FormRecognizer.FormRecognizerBusinessCard,FormRecognizer.FormRecognizerRead,FormRecognizer.FormRecognizerKvp,SpeechServices.*,SpeechServices.CustomSpeechToText,SpeechServices.NeuralTextToSpeechOnPrem,SpeechServices.DPP,SpeechServices.SpeechToText,SpeechServices.BatchSpeechToTextSync,TextAnalytics.*,TextAnalytics.Healthcare,TextAnalytics.Keyphrase,TextAnalytics.KeyphraseV2,TextAnalytics.KeyPhraseONNX,TextAnalytics.LanguageFastText,TextAnalytics.Language,TextAnalytics.LanguageV2,TextAnalytics.Sentiment,TextAnalytics.SentimentV2,TextAnalytics.SentimentV3,TextAnalytics.SentimentV3Preview,TextAnalytics.SentimentONNX,TextAnalytics.SummarizationFrontend,TextAnalytics.SummarizationWorker,TextAnalytics.CluRuntime,TextAnalytics.CluContainer,TextAnalytics.PII,TextAnalytics.NER"},{"name":"DynamicThrottling"},{"name":"Cloud","value":"TextAnalytics.CustomText,TextAnalytics.ConversationalLU,TextAnalytics.Healthcare,TextAnalytics.Analyze,TextAnalytics.AnalyzeText,QuestionAnswer.AllApis,LanguageService.QuestionAnsweringApis"}],"endpoints":{"AI + Foundry API":"https://test-account-000002.services.ai.azure.com/","Azure AI + Model Inference API (UDP)":"https://test-account-000002-f105e.cognitiveservices.azure.com/","ProjectA + APIs":"https://test-account-000002-f105e.cognitiveservices.azure.com/","MAAP + Managed Deployments API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Language Model Instance API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Dall-E API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Sora API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Moderations API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Whisper API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Model Scaleset API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token + Service API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Metering + and Throttling API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + OpenAI Legacy API - Latest moniker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Response API on Websocket":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Translation WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Live WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + AI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Cohere + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Mistral + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Realtime API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Understanding":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Safety":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Container":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Computer + Vision":"https://test-account-000002-f105e.cognitiveservices.azure.com/","FormRecognizer":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text v3.2_internal.1":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice Trial":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Video + Translation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Audio Content Creation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services TTS Player":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Podcast":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Text to Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text (Standard)":"https://westus2.stt.speech.microsoft.com","Speech + Services Text to Speech (Neural)":"https://westus2.tts.speech.microsoft.com","Voice + Agent Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Media Gateway Calls API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Capabilities API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Text + Analytics":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QnAMaker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QuestionAnswering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","LUIS.Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Text Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Conversational + Language Understanding Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language + Remote MCP Server":"https://test-account-000002-f105e.cognitiveservices.azure.com/","TextTranslation-Global":"https://api.cognitive.microsofttranslator.com/","TextTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","DocumentTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","CustomTranslator":"https://test-account-000002-f105e.cognitiveservices.azure.com/"},"armFeatures":["Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForHealthRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForPIIRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.ComputerVision.SpatialAnaysisRAITermsAccepted","Microsoft.CognitiveServices/OpenAITest","Microsoft.CognitiveServices/OpenAI.gpt-45-preview","Microsoft.CognitiveServices/OnYourDataMongoDB","Microsoft.CognitiveServices/OnYourDataElasticsearch","Microsoft.CognitiveServices/OnYourDataPinecone","Microsoft.CognitiveServices/OnYourDataSql","Microsoft.CognitiveServices/openAIRegions.WestUS2","Microsoft.CognitiveServices/UnifiedResourceProvider","Microsoft.CognitiveServices/OpenAI.1PGatingTier","Microsoft.CognitiveServices/CostControls","Microsoft.CognitiveServices/TiP","Microsoft.CognitiveServices/AllowAIFoundryUpgrade","Microsoft.Resources/EuapParticipation"],"a365LoggingEnabled":true,"a365Status":"Enabled","costControlIds":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1"],"costControlConnections":{"appInsightsConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-connection","eventGridConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-event-grid-connection"}},"identity":{"principalId":"df047297-78b3-4854-8903-d334906e267f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:28:54.3826461Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:03.5414601Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '33852' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:35 GMT + etag: + - '"040103dd-0000-0800-0000-6aa9b8dd0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '91' + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 3175E9E2FF424BBBBDEDD7405DB58CBD Ref B: CO1AA3060815034 Ref C: 2026-09-15T21:30:35Z' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"model": {"format": "OpenAI", "name": "gpt-4o-mini", "version": + "2024-07-18"}, "costControlIds": ["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1"]}, + "sku": {"name": "GlobalStandard", "capacity": 1}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account deployment create + Connection: + - keep-alive + Content-Length: + - '357' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --deployment-name --model-name --model-version --model-format + --sku-name --sku-capacity --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/mock-deployment?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/test-deployment","type":"Microsoft.CognitiveServices/accounts/deployments","name":"test-deployment","sku":{"name":"GlobalStandard","capacity":1},"properties":{"model":{"format":"OpenAI","name":"gpt-4o-mini","version":"2024-07-18"},"costControlIds":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1"],"versionUpgradeOption":"OnceNewDefaultVersionAvailable","currentCapacity":1,"capabilities":{"chatCompletion":"true","completion":"true","jsonObjectResponse":"true","assistants":"true","maxContextToken":"128000","maxOutputToken":"16384","responses":"true","agentsV2":"true"},"raiPolicyName":"Microsoft.DefaultV2","provisioningState":"Succeeded","rateLimits":[{"key":"request","renewalPeriod":60,"count":10},{"key":"token","renewalPeriod":60,"count":1000}],"deploymentState":"Running"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:37.2029868Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:37.2029868Z"},"etag":"\"e89031f1-b4ba-4b90-afbb-70dc719befdc\""}' + headers: + cache-control: + - no-cache + content-length: + - '1387' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:43 GMT + etag: + - '"e89031f1-b4ba-4b90-afbb-70dc719befdc"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '6786' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/54d99c5e-7cdc-439e-9300-b759cef03b40 + x-ms-ratelimit-remaining-subscription-global-writes: + - '12000' + x-ms-ratelimit-remaining-subscription-writes: + - '800' + x-msedge-ref: + - 'Ref A: 1E23133A6ABB4289B538DF281DF9F75E Ref B: CO1AA3060815034 Ref C: 2026-09-15T21:30:37Z' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account deployment update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --deployment-name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/mock-deployment?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/test-deployment","type":"Microsoft.CognitiveServices/accounts/deployments","name":"test-deployment","sku":{"name":"GlobalStandard","capacity":1},"properties":{"model":{"format":"OpenAI","name":"gpt-4o-mini","version":"2024-07-18"},"costControlIds":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1"],"versionUpgradeOption":"OnceNewDefaultVersionAvailable","currentCapacity":1,"capabilities":{"chatCompletion":"true","completion":"true","jsonObjectResponse":"true","assistants":"true","maxContextToken":"128000","maxOutputToken":"16384","responses":"true","agentsV2":"true"},"raiPolicyName":"Microsoft.DefaultV2","provisioningState":"Succeeded","rateLimits":[{"key":"request","renewalPeriod":60,"count":10},{"key":"token","renewalPeriod":60,"count":1000}],"deploymentState":"Running"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:37.2029868Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:37.2029868Z"},"etag":"\"e89031f1-b4ba-4b90-afbb-70dc719befdc\""}' + headers: + cache-control: + - no-cache + content-length: + - '1387' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:44 GMT + etag: + - '"e89031f1-b4ba-4b90-afbb-70dc719befdc"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '22' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/01277913-7504-4ab2-85ec-696012929fe5 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 3354CCEC1EFE45CAA4F581E7B5CF9A1C Ref B: CO1AA3060818040 Ref C: 2026-09-15T21:30:44Z' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"model": {"format": "OpenAI", "name": "gpt-4o-mini", "version": + "2024-07-18"}, "costControlIds": ["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-2"], + "versionUpgradeOption": "OnceNewDefaultVersionAvailable", "raiPolicyName": "Microsoft.DefaultV2", + "deploymentState": "Running"}, "sku": {"name": "GlobalStandard", "capacity": + 1}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account deployment update + Connection: + - keep-alive + Content-Length: + - '485' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --deployment-name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/mock-deployment?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/test-deployment","type":"Microsoft.CognitiveServices/accounts/deployments","name":"test-deployment","sku":{"name":"GlobalStandard","capacity":1},"properties":{"model":{"format":"OpenAI","name":"gpt-4o-mini","version":"2024-07-18"},"costControlIds":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-2"],"versionUpgradeOption":"OnceNewDefaultVersionAvailable","currentCapacity":1,"capabilities":{"chatCompletion":"true","completion":"true","jsonObjectResponse":"true","assistants":"true","maxContextToken":"128000","maxOutputToken":"16384","responses":"true","agentsV2":"true"},"raiPolicyName":"Microsoft.DefaultV2","provisioningState":"Succeeded","rateLimits":[{"key":"request","renewalPeriod":60,"count":10},{"key":"token","renewalPeriod":60,"count":1000}],"deploymentState":"Running"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:37.2029868Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:45.447845Z"},"etag":"\"76a1c57d-c060-4a4d-8796-be7492c92eff\""}' + headers: + cache-control: + - no-cache + content-length: + - '1386' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:45 GMT + etag: + - '"76a1c57d-c060-4a4d-8796-be7492c92eff"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '771' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/a939faaa-ff12-43f5-9da5-8a7e395600a8 + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: EB4B4D1505DD465DABB5B0CC965AEE18 Ref B: CO1AA3060817025 Ref C: 2026-09-15T21:30:45Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol list + Connection: + - keep-alive + ParameterSetName: + - --resource-group --account-name + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls?api-version=2026-09-15-preview + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-1","properties":{"displayName":"first + display name","rules":[{"name":"per-agent-monthly","counterKey":[{"type":"agent"}],"unit":"usd","amount":200.0,"period":"month","recurring":true,"match":{"foundry.caller.agent.id":["agent-123"]},"thresholds":[{"type":"percentage","value":80.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:01.095038Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:01.095038Z"},"etag":"\"c7ddc54d-eec0-4099-826d-71e1a47ffd28\""},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-2","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-2","properties":{"displayName":"second + display name","rules":[{"name":"per-project-monthly","counterKey":[{"type":"project"}],"unit":"usd","amount":500.0,"period":"month","recurring":true,"match":{"foundry.project.id":["project-456"]},"thresholds":[{"type":"percentage","value":90.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:02.2715063Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:02.2715063Z"},"etag":"\"b2bec68f-e253-4593-b869-c8b13491ea05\""}]}' + headers: + cache-control: + - no-cache + content-length: + - '1803' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:46 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '12' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/80ab9477-df3d-46ae-9360-25f269970c7e + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: DB62008D6B744884AFA5FBF83588D9CF Ref B: CO1AA3060815036 Ref C: 2026-09-15T21:30:46Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol show + Connection: + - keep-alive + ParameterSetName: + - --resource-group --account-name --cost-control-name + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-1","properties":{"displayName":"first + display name","rules":[{"name":"per-agent-monthly","counterKey":[{"type":"agent"}],"unit":"usd","amount":200.0,"period":"month","recurring":true,"match":{"foundry.caller.agent.id":["agent-123"]},"thresholds":[{"type":"percentage","value":80.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:01.095038Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:01.095038Z"},"etag":"\"c7ddc54d-eec0-4099-826d-71e1a47ffd28\""}' + headers: + cache-control: + - no-cache + content-length: + - '893' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:47 GMT + etag: + - '"c7ddc54d-eec0-4099-826d-71e1a47ffd28"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '17' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/b5013e0f-ca86-4c62-8bae-83021433ed89 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: A5E51434A15C42D8A250081B673F2C00 Ref B: MWH011020808036 Ref C: 2026-09-15T21:30:47Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --account-name --cost-control-name --display-name + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-1","properties":{"displayName":"first + display name","rules":[{"name":"per-agent-monthly","counterKey":[{"type":"agent"}],"unit":"usd","amount":200.0,"period":"month","recurring":true,"match":{"foundry.caller.agent.id":["agent-123"]},"thresholds":[{"type":"percentage","value":80.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:01.095038Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:01.095038Z"},"etag":"\"c7ddc54d-eec0-4099-826d-71e1a47ffd28\""}' + headers: + cache-control: + - no-cache + content-length: + - '893' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:47 GMT + etag: + - '"c7ddc54d-eec0-4099-826d-71e1a47ffd28"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '16' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/4dfd3b5d-3f5f-44b7-b5e5-e0309f268f4f + x-ms-ratelimit-remaining-subscription-global-reads: + - '16498' + x-msedge-ref: + - 'Ref A: 7802569033E9425FA810030B418B52CD Ref B: CO1AA3060819062 Ref C: 2026-09-15T21:30:48Z' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"displayName": "updated first display name", "rules": [{"amount": + 200.0, "counterKey": [{"type": "agent"}], "match": {"foundry.caller.agent.id": + ["agent-123"]}, "name": "per-agent-monthly", "period": "month", "recurring": + true, "thresholds": [{"action": "alert", "type": "percentage", "value": 80.0}, + {"action": "audit", "type": "absolute", "value": 0.0}], "unit": "usd"}]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol update + Connection: + - keep-alive + Content-Length: + - '390' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --account-name --cost-control-name --display-name + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-1","properties":{"displayName":"updated + first display name","rules":[{"name":"per-agent-monthly","counterKey":[{"type":"agent"}],"unit":"usd","amount":200.0,"period":"month","recurring":true,"match":{"foundry.caller.agent.id":["agent-123"]},"thresholds":[{"type":"percentage","value":80.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:01.095038Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:49.4378246Z"},"etag":"\"0e6bbd84-638c-47f2-8126-f11cdec29d5e\""}' + headers: + cache-control: + - no-cache + content-length: + - '902' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:49 GMT + etag: + - '"0e6bbd84-638c-47f2-8126-f11cdec29d5e"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '132' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/50e3be36-0609-431e-90af-b57b54db2e4d + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: DC847200B6CD4C79AED2D2ED6B255D48 Ref B: CO1AA3060813036 Ref C: 2026-09-15T21:30:49Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol show + Connection: + - keep-alive + ParameterSetName: + - --resource-group --account-name --cost-control-name + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1","type":"Microsoft.CognitiveServices/accounts/costControls","name":"test-1","properties":{"displayName":"updated + first display name","rules":[{"name":"per-agent-monthly","counterKey":[{"type":"agent"}],"unit":"usd","amount":200.0,"period":"month","recurring":true,"match":{"foundry.caller.agent.id":["agent-123"]},"thresholds":[{"type":"percentage","value":80.0,"action":"alert"},{"type":"absolute","value":0.0,"action":"audit"}]}]},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:01.095038Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:49.4378246Z"},"etag":"\"0e6bbd84-638c-47f2-8126-f11cdec29d5e\""}' + headers: + cache-control: + - no-cache + content-length: + - '902' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:49 GMT + etag: + - '"0e6bbd84-638c-47f2-8126-f11cdec29d5e"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '15' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/65b9b658-e52a-41d5-b477-6e88c88665b7 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 0EB8CAD425F9498EA91DCAEDF146F722 Ref B: CO1AA3060816023 Ref C: 2026-09-15T21:30:50Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account deployment update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --deployment-name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/mock-deployment?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/test-deployment","type":"Microsoft.CognitiveServices/accounts/deployments","name":"test-deployment","sku":{"name":"GlobalStandard","capacity":1},"properties":{"model":{"format":"OpenAI","name":"gpt-4o-mini","version":"2024-07-18"},"costControlIds":["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-2"],"versionUpgradeOption":"OnceNewDefaultVersionAvailable","currentCapacity":1,"capabilities":{"chatCompletion":"true","completion":"true","jsonObjectResponse":"true","assistants":"true","maxContextToken":"128000","maxOutputToken":"16384","responses":"true","agentsV2":"true"},"raiPolicyName":"Microsoft.DefaultV2","provisioningState":"Succeeded","rateLimits":[{"key":"request","renewalPeriod":60,"count":10},{"key":"token","renewalPeriod":60,"count":1000}],"deploymentState":"Running"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:37.2029868Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:45.447845Z"},"etag":"\"76a1c57d-c060-4a4d-8796-be7492c92eff\""}' + headers: + cache-control: + - no-cache + content-length: + - '1386' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:51 GMT + etag: + - '"76a1c57d-c060-4a4d-8796-be7492c92eff"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '27' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/14e2b650-7212-412f-835e-a87a154823fd + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 8D4AE9DAB88F400F83558EFBB126E55E Ref B: CO1AA3060816060 Ref C: 2026-09-15T21:30:51Z' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"model": {"format": "OpenAI", "name": "gpt-4o-mini", "version": + "2024-07-18"}, "costControlIds": [], "versionUpgradeOption": "OnceNewDefaultVersionAvailable", + "raiPolicyName": "Microsoft.DefaultV2", "deploymentState": "Running"}, "sku": + {"name": "GlobalStandard", "capacity": 1}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account deployment update + Connection: + - keep-alive + Content-Length: + - '295' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --deployment-name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/mock-deployment?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/deployments/test-deployment","type":"Microsoft.CognitiveServices/accounts/deployments","name":"test-deployment","sku":{"name":"GlobalStandard","capacity":1},"properties":{"model":{"format":"OpenAI","name":"gpt-4o-mini","version":"2024-07-18"},"costControlIds":[],"versionUpgradeOption":"OnceNewDefaultVersionAvailable","currentCapacity":1,"capabilities":{"chatCompletion":"true","completion":"true","jsonObjectResponse":"true","assistants":"true","maxContextToken":"128000","maxOutputToken":"16384","responses":"true","agentsV2":"true"},"raiPolicyName":"Microsoft.DefaultV2","provisioningState":"Succeeded","rateLimits":[{"key":"request","renewalPeriod":60,"count":10},{"key":"token","renewalPeriod":60,"count":1000}],"deploymentState":"Running"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:30:37.2029868Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:51.9465064Z"},"etag":"\"41138c51-1732-4a6a-918f-b0034bc9b824\""}' + headers: + cache-control: + - no-cache + content-length: + - '1197' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:55 GMT + etag: + - '"41138c51-1732-4a6a-918f-b0034bc9b824"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '4566' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/ec2367d8-dc61-4b72-b4d4-5ddc44159992 + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 9001F5252BA4484DB8D4A0581A18E37F Ref B: CO1AA3060813062 Ref C: 2026-09-15T21:30:51Z' + status: + code: 200 + message: OK +- request: + body: '{"properties": {"costControlIds": []}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + Content-Length: + - '38' + Content-Type: + - application/json + ParameterSetName: + - --resource-group --name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002","name":"test-account-000002","type":"Microsoft.CognitiveServices/accounts","etag":"\"040199e5-0000-0800-0000-6aa9b9110000\"","location":"westus2","sku":{"name":"S0"},"kind":"AIServices","properties":{"endpoint":"https://test-account-000002-f105e.cognitiveservices.azure.com/","provisioningState":"Accepted","internalId":"f105e2ba0fdc4c938ffaf9d984aee907","dateCreated":"2026-09-15T21:28:56.1438807Z","apiProperties":{"qnaAzureSearchEndpointKey":null},"callRateLimit":{"rules":[{"key":"documentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"POST"}]},{"key":"documentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"GET"}]},{"key":"documentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"*"}]},{"key":"textTranslation","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"translator/text/*","method":"*"}]},{"key":"singledocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document:translate","method":"*"}]},{"key":"batchDocumentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"POST"}]},{"key":"batchDocumentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"GET"}]},{"key":"batchDocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"*"}]},{"key":"textAnalytics.analyze","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.2/analyze/*","method":"*"}]},{"key":"textAnalytics.healthcare","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/entities/health","method":"*"},{"path":"text/analytics/v3.2-preview.1/health","method":"*"},{"path":"text/analytics/v3.2-preview.2/health","method":"*"}]},{"key":"textAnalytics.languagedetection","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/v3.1/languages","method":"*"}]},{"key":"textAnalytics","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.march.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.march.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.internal.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.internal.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"*"}]},{"key":"textAnalytics.analyze.internal.autoTagging","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-auto-tagging","method":"*"}]},{"key":"textAnalytics.analyze.internal.evaluation","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-evaluation","method":"*"}]},{"key":"token","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"sts/v1.0/*","method":"*"}]},{"key":"speech.synthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/synthesize","method":"*"}]},{"key":"speech.customvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customvoicesynthesize","method":"*"}]},{"key":"speech.neuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/neuralvoicesynthesize","method":"*"}]},{"key":"speech.customneuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customneuralvoicesynthesize","method":"*"}]},{"key":"speech.personalvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/personalvoicesynthesize","method":"*"}]},{"key":"speech.liveavatarconnect","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"speech/liveavatarconnect","method":"*"}]},{"key":"speech.livecustomavatarconnect","renewalPeriod":60,"count":200,"matchPatterns":[{"path":"speech/livecustomavatarconnect","method":"*"}]},{"key":"speech.batchavatarcreate","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"avatar/batchsyntheses/*","method":"PUT"}]},{"key":"speech.speechtotext","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"speechtotext/*","method":"*"}]},{"key":"speech.batchtexttospeechcreate","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/batchsyntheses/*","method":"PUT"}]},{"key":"speech.texttospeech","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/*","method":"*"}]},{"key":"speech.customvoice","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"customvoice/*","method":"*"}]},{"key":"speech.speakerrecognitionv2","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"speaker/*","method":"*"},{"path":"speaker-recognition/*","method":"*"}]},{"key":"speech.speakerrecognitionv1","renewalPeriod":1,"count":5,"matchPatterns":[{"path":"spid/*","method":"*"}]},{"key":"voicelive.realtime","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"voice-live/realtime","method":"*"},{"path":"voice-agent/realtime","method":"*"}]},{"key":"formrecognizer.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"formrecognizer/custom/models/{id}/analyze","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/businessCard/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/idDocument/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/invoice/analyze","method":"POST"},{"path":"formrecognizer/layout/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/asyncBatchAnalyze","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:analyze","method":"POST"},{"path":"formrecognizer/read","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}:analyze","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:analyze","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}:analyze","method":"POST"}]},{"key":"formrecognizer.get.object","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/businessCard/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/idDocument/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/invoice/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/operations/{operationId}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/layout/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}/copyResults/{resultId}","method":"GET"},{"path":"formrecognizer/operations/{operationId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{id}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/operations/{operationId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"}]},{"key":"formrecognizer.list.objects","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/operations","method":"GET"},{"path":"formrecognizer/info","method":"GET"},{"path":"formrecognizer/documentModels","method":"GET"},{"path":"formrecognizer/custom/models","method":"GET"},{"path":"formrecognizer/documentClassifiers","method":"GET"},{"path":"documentintelligence/documentModels","method":"GET"},{"path":"documentintelligence/operations","method":"GET"},{"path":"documentintelligence/info","method":"GET"},{"path":"documentintelligence/documentClassifiers","method":"GET"}]},{"key":"formrecognizer.model.management","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models","method":"POST"},{"path":"formrecognizer/custom/models/compose","method":"POST"},{"path":"formrecognizer/custom/models/copyAuthorization","method":"POST"},{"path":"formrecognizer/custom/models/{id}","method":"DELETE"},{"path":"formrecognizer/custom/models/{id}/keys","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/custom/models/{modelId}/copy","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:copyTo","method":"POST"},{"path":"formrecognizer/documentModels:authorizeCopy","method":"POST"},{"path":"formrecognizer/documentModels:build","method":"POST"},{"path":"formrecognizer/documentModels:compose","method":"POST"},{"path":"formrecognizer/custom/train","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentModels/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentClassifiers:build","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"DELETE"},{"path":"documentintelligence/documentModels:authorizeCopy","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:copyTo","method":"POST"},{"path":"documentintelligence/documentModels:build","method":"POST"},{"path":"documentintelligence/documentModels:compose","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}","method":"DELETE"},{"path":"documentintelligence/documentClassifiers:build","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"DELETE"}]},{"key":"formrecognizer.chat.build","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"documentintelligence/chat:build","method":"POST"}]},{"key":"formrecognizer.chat.complete","renewalPeriod":60,"count":5,"matchPatterns":[{"path":"documentintelligence/chat/{chatId}:complete","method":"POST"}]},{"key":"vision.recognizeText","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"vision/recognizeText","method":"POST"},{"path":"vision/textOperations/*","method":"GET"},{"path":"vision/read/*","method":"*"}]},{"key":"vision","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"vision/*","method":"*"}]},{"key":"container.billing","renewalPeriod":10,"count":500,"matchPatterns":[{"path":"billing/*","method":"*"}]},{"key":"ContentSafety.List","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/blocklists*","method":"*"}]},{"key":"ContentSafety.TextGroundedDetection","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectGroundedness*","method":"*"}]},{"key":"ContentSafety.TextShieldPrompt","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:shieldPrompt*","method":"*"}]},{"key":"ContentSafety.TextDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectIncidents*","method":"*"}]},{"key":"ContentSafety.TextAnalyzeCustomCategory","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:analyzeCustomCategory*","method":"*"}]},{"key":"ContentSafety.TextAutoReview","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:autoReview*","method":"*"}]},{"key":"ContentSafety.GPTFeature","renewalPeriod":10,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectungroundedness*","method":"*"}]},{"key":"ContentSafety.TextJailbreak","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectJailbreak*","method":"*"}]},{"key":"ContentSafety.TextProtectedMaterial","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectProtectedMaterial*","method":"*"}]},{"key":"ContentSafety.UnifiedModerate","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/content:unifiedModerate*","method":"*"}]},{"key":"ContentSafety.TextIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/incidents*","method":"*"}]},{"key":"ContentSafety.TextAutoReviewers","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/autoReviewers*","method":"*"}]},{"key":"ContentSafety.TextCustomCategories","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/categories*","method":"*"}]},{"key":"ContentSafety.Text","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text*","method":"*"}]},{"key":"ContentSafety.ImageWithText","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/imageWithText*","method":"*"}]},{"key":"ContentSafety.ImageDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image:detectIncidents*","method":"*"}]},{"key":"ContentSafety.ImageIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image/incidents*","method":"*"}]},{"key":"ContentSafety.Image","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image*","method":"*"}]},{"key":"ContentSafety.Project","renewalPeriod":1,"count":30,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/projects*","method":"*"}]},{"key":"ContentSafety.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/metrics*","method":"*"}]},{"key":"ContentSafety.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/whitelist*","method":"*"}]},{"key":"ContentSafetyInternal.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/metrics*","method":"*"}]},{"key":"ContentSafetyInternal.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/whitelist*","method":"*"}]},{"key":"ContentSafety.Provenance.ClientWatermarkRegistration","renewalPeriod":10,"count":2,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/provenance/client-watermark:register","method":"POST"}]},{"key":"contentunderstanding.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}:analyze","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinary","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeInline","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinaryInline","method":"POST"},{"path":"contentunderstanding/classifiers/{classifierId}:classify","method":"POST"}]},{"key":"contentunderstanding.get.object","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/operations/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}/files/{path}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{resultId}/*","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}/images/{imageId}","method":"GET"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"GET"},{"path":"contentunderstanding/classifierResults/{operationId}","method":"GET"},{"path":"contentunderstanding/defaults","method":"GET"}]},{"key":"contentunderstanding.list.object","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/analyzers","method":"GET"},{"path":"contentunderstanding/classifiers","method":"GET"}]},{"key":"contentunderstanding.analyzer.management","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PUT"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"DELETE"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PATCH"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PUT"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"DELETE"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PATCH"},{"path":"contentunderstanding/analyzers/{analyzerId}:grantCopyAuthorization","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:copy","method":"POST"},{"path":"contentunderstanding/defaults","method":"PATCH"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"DELETE"}]},{"key":"contentunderstanding.labeling","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"contentunderstanding/labelingProjects","method":"GET"},{"path":"contentunderstanding/labelingProjects/*","method":"*"},{"path":"contentunderstanding/classificationProjects","method":"GET"},{"path":"contentunderstanding/classificationProjects/*","method":"*"}]},{"key":"contentunderstanding.face","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/personDirectories","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces/{faceId}","method":"*"},{"path":"contentunderstanding/faces:detect","method":"*"},{"path":"contentunderstanding/faces:compare","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons:identify","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces:find","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}:verify","method":"*"}]},{"key":"mai","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/mai","method":"*"}]},{"key":"models","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/models","method":"*"}]},{"key":"openai.dalle.post","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"POST"},{"path":"openai/images/*","method":"POST"}]},{"key":"openai.dalle.other","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"*"},{"path":"openai/operations/images/*","method":"*"}]},{"key":"openai.assistants.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/assistants","method":"GET"}]},{"key":"openai.threads.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/threads","method":"GET"}]},{"key":"openai.vectorstores.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/vector_stores","method":"GET"}]},{"key":"openai.vectorstores.post","renewalPeriod":1,"count":60,"matchPatterns":[{"path":"openai/vector_stores","method":"POST"},{"path":"openai/vector_stores/*","method":"POST"}]},{"key":"openai.assistants.default","renewalPeriod":60,"count":6000,"matchPatterns":[{"path":"openai/assistants","method":"*"},{"path":"openai/assistants/*","method":"*"},{"path":"openai/threads","method":"*"},{"path":"openai/threads/*","method":"*"},{"path":"openai/vector_stores","method":"*"},{"path":"openai/vector_stores/*","method":"*"}]},{"key":"openai.responses.default","renewalPeriod":1,"count":100000,"matchPatterns":[{"path":"openai/responses","method":"*"},{"path":"openai/responses/*","method":"*"}]},{"key":"openai.moderations.post","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/v1/moderations","method":"POST"},{"path":"openai/v1/moderations/exp/m4","method":"POST"},{"path":"openai/v1/moderations/exp/safeberry","method":"POST"},{"path":"openai/v1/safeberry/moderations","method":"POST"}]},{"key":"openai","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"openai/*","method":"*"}]},{"key":"api.projects.default","renewalPeriod":1,"count":1000000,"matchPatterns":[{"path":"api/projects/*","method":"*"}]},{"key":"default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"*","method":"*"}]}]},"isMigrated":false,"amlWorkspace":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.MachineLearningServices/workspaces/test-account-000002@AML","internalId":"f105e2ba-0fdc-4c93-8ffa-f9d984aee907","amlWorkspace":"test-account-000002@AML"},"allowProjectManagement":true,"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","capabilities":[{"name":"VirtualNetworks"},{"name":"EnabledApimVnet","value":"true"},{"name":"CustomerManagedKey"},{"name":"CustomerManagedStorage"},{"name":"TrustedServices","value":"Microsoft.CognitiveServices,Microsoft.MachineLearningServices,Microsoft.Search,Microsoft.VideoIndexer"},{"name":"NetworkSecurityPerimeter"},{"name":"MaxFineTuneCount","value":"100"},{"name":"MaxRunningFineTuneCount","value":"2"},{"name":"MaxUserFileCount","value":"50"},{"name":"MaxTrainingFileSize","value":"512000000"},{"name":"MaxUserFileImportDurationInHours","value":"1"},{"name":"MaxFineTuneJobDurationInHours","value":"720"},{"name":"MaxRunningGlobalStandardFineTuneCount","value":"1"},{"name":"RaiMonitor"},{"name":"CustomerManagedAmlWorkspace"},{"name":"v1GA"},{"name":"useEndpointRateLimiter","value":"Enabled"},{"name":"FinetunedModelRouterEndpoint"},{"name":"FinetunedModelRouterScoreThreshold","value":"0.171"},{"name":"quotaRefundsEnabled","value":"false"},{"name":"audio","value":"true"},{"name":"imageGenerations","value":"true"},{"name":"chatCompletion","value":"true"},{"name":"fineTune","value":"true"},{"name":"imageEdits","value":"true"},{"name":"realtimeTranscription","value":"true"},{"name":"Container","value":"ContentSafety.*,ContentSafety.TextAnalyze,ContentSafety.ImageAnalyze,ContentSafety.Jailbreak,ContentSafety.jailbreakanalyze,ComputerVision.*,FormRecognizer.*,FormRecognizer.Forms,FormRecognizer.FormRecognizerCustomSupervised,FormRecognizer.FormRecognizerLayout,FormRecognizer.formrecognizerreadlayout,FormRecognizer.FormRecognizerId,FormRecognizer.FormRecognizerInvoice,FormRecognizer.FormRecognizerReceipt,FormRecognizer.FormRecognizerBusinessCard,FormRecognizer.FormRecognizerRead,FormRecognizer.FormRecognizerKvp,SpeechServices.*,SpeechServices.CustomSpeechToText,SpeechServices.NeuralTextToSpeechOnPrem,SpeechServices.DPP,SpeechServices.SpeechToText,SpeechServices.BatchSpeechToTextSync,TextAnalytics.*,TextAnalytics.Healthcare,TextAnalytics.Keyphrase,TextAnalytics.KeyphraseV2,TextAnalytics.KeyPhraseONNX,TextAnalytics.LanguageFastText,TextAnalytics.Language,TextAnalytics.LanguageV2,TextAnalytics.Sentiment,TextAnalytics.SentimentV2,TextAnalytics.SentimentV3,TextAnalytics.SentimentV3Preview,TextAnalytics.SentimentONNX,TextAnalytics.SummarizationFrontend,TextAnalytics.SummarizationWorker,TextAnalytics.CluRuntime,TextAnalytics.CluContainer,TextAnalytics.PII,TextAnalytics.NER"},{"name":"DynamicThrottling"},{"name":"Cloud","value":"TextAnalytics.CustomText,TextAnalytics.ConversationalLU,TextAnalytics.Healthcare,TextAnalytics.Analyze,TextAnalytics.AnalyzeText,QuestionAnswer.AllApis,LanguageService.QuestionAnsweringApis"}],"endpoints":{"AI + Foundry API":"https://test-account-000002.services.ai.azure.com/","Azure AI + Model Inference API (UDP)":"https://test-account-000002-f105e.cognitiveservices.azure.com/","ProjectA + APIs":"https://test-account-000002-f105e.cognitiveservices.azure.com/","MAAP + Managed Deployments API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Language Model Instance API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Dall-E API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Sora API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Moderations API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Whisper API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Model Scaleset API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token + Service API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Metering + and Throttling API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + OpenAI Legacy API - Latest moniker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Response API on Websocket":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Translation WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Live WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + AI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Cohere + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Mistral + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Realtime API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Understanding":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Safety":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Container":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Computer + Vision":"https://test-account-000002-f105e.cognitiveservices.azure.com/","FormRecognizer":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text v3.2_internal.1":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice Trial":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Video + Translation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Audio Content Creation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services TTS Player":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Podcast":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Text to Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text (Standard)":"https://westus2.stt.speech.microsoft.com","Speech + Services Text to Speech (Neural)":"https://westus2.tts.speech.microsoft.com","Voice + Agent Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Media Gateway Calls API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Capabilities API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Text + Analytics":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QnAMaker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QuestionAnswering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","LUIS.Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Text Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Conversational + Language Understanding Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language + Remote MCP Server":"https://test-account-000002-f105e.cognitiveservices.azure.com/","TextTranslation-Global":"https://api.cognitive.microsofttranslator.com/","TextTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","DocumentTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","CustomTranslator":"https://test-account-000002-f105e.cognitiveservices.azure.com/"},"armFeatures":["Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForHealthRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForPIIRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.ComputerVision.SpatialAnaysisRAITermsAccepted","Microsoft.CognitiveServices/OpenAITest","Microsoft.CognitiveServices/OpenAI.gpt-45-preview","Microsoft.CognitiveServices/OnYourDataMongoDB","Microsoft.CognitiveServices/OnYourDataElasticsearch","Microsoft.CognitiveServices/OnYourDataPinecone","Microsoft.CognitiveServices/OnYourDataSql","Microsoft.CognitiveServices/openAIRegions.WestUS2","Microsoft.CognitiveServices/UnifiedResourceProvider","Microsoft.CognitiveServices/OpenAI.1PGatingTier","Microsoft.CognitiveServices/CostControls","Microsoft.CognitiveServices/TiP","Microsoft.CognitiveServices/AllowAIFoundryUpgrade","Microsoft.Resources/EuapParticipation"],"a365LoggingEnabled":true,"a365Status":"Enabled","costControlIds":[],"costControlConnections":{"appInsightsConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-connection","eventGridConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-event-grid-connection"}},"identity":{"principalId":"df047297-78b3-4854-8903-d334906e267f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:28:54.3826461Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:57.5788004Z"}}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/cb9e217d-7e79-457a-ab87-c7e1132606eb?api-version=2017-04-18&t=639251046578756715&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=dQ3Una9bJIE1EitJ1xnIMKjqM7NNK0xjxEG0xBYMSRS2BX14ccjlXh0Abf_dJn9WP-6X2A_HpfteXdyAxlX5Tv-_m6aegzpQBajiILeSZ2rmbnxeM3Ywh8qUnJD02SHEKqQXQOcZ2uMkIt9aMBpHBC2LOKDcEA2Zu9NXIJW3vHUJ93MWds7g-z2Tys1CYJMPpyJPke-XVtIqPu-L0ocMgZ-Aw6c_arZPkdAUTY0jaWyMJoWIyK9ob1jffMmu9PobiZIAgE9ZWYz1frQx-OmWihsCeBLy0tEwR5A0cIJ9t-M1eHS9XUqAhnYIq-mhy_uwpdAgZuYJlR6bnp8qbSmmRw&h=4ZgVPBdilhr6BnKszRxlHirHW_G1Cvc1GnI9suxhtCM + cache-control: + - no-cache + content-length: + - '33661' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:56 GMT + etag: + - '"040199e5-0000-0800-0000-6aa9b9110000"' + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/cb9e217d-7e79-457a-ab87-c7e1132606eb?api-version=2017-04-18&operationResultResponseType=Location&t=639251046578756715&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=H7hIu488KTEFNFSjpq5hmLwUuo9z6TRxIia6g9NlOzgUu4cqg3SvmXXdcOd90IlF1Yd29lx9vrzvg9jAzS4yzop7e_5T-1WGClfpzoaLgvSbkwvsFR3XI9Bs8qZlMEzgUBI97lnhfZ_xUxtxE6jmezKAjKNfP545MPxnCjk3Xiwf9Zb9I9qW1nOgv4BIBGTyesOVcNDVv60W-ptdUSIAeebebWv4tIZ9lQsZgpadGjUkSRRDLy5_cXkz5SHgVTrQEKTWKdhS0mEMw6goeb12rgpnOKRaSoz9zd6CcTir2Ri3HDbFXaBTw-6UzQxwNdeRu6Ueo9PhT5UyGgno0BusLg&h=4ZgVPBdilhr6BnKszRxlHirHW_G1Cvc1GnI9suxhtCM + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '272' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/a0011992-425b-4434-bea2-ed841a97c25e + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 82E4DD0467664B00BBB113F0F49C40D0 Ref B: CO1AA3060814031 Ref C: 2026-09-15T21:30:57Z' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/cb9e217d-7e79-457a-ab87-c7e1132606eb?api-version=2017-04-18&t=639251046578756715&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=dQ3Una9bJIE1EitJ1xnIMKjqM7NNK0xjxEG0xBYMSRS2BX14ccjlXh0Abf_dJn9WP-6X2A_HpfteXdyAxlX5Tv-_m6aegzpQBajiILeSZ2rmbnxeM3Ywh8qUnJD02SHEKqQXQOcZ2uMkIt9aMBpHBC2LOKDcEA2Zu9NXIJW3vHUJ93MWds7g-z2Tys1CYJMPpyJPke-XVtIqPu-L0ocMgZ-Aw6c_arZPkdAUTY0jaWyMJoWIyK9ob1jffMmu9PobiZIAgE9ZWYz1frQx-OmWihsCeBLy0tEwR5A0cIJ9t-M1eHS9XUqAhnYIq-mhy_uwpdAgZuYJlR6bnp8qbSmmRw&h=4ZgVPBdilhr6BnKszRxlHirHW_G1Cvc1GnI9suxhtCM + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/cb9e217d-7e79-457a-ab87-c7e1132606eb","name":"cb9e217d-7e79-457a-ab87-c7e1132606eb","status":"Updating","startTime":"2026-09-15T21:30:57Z"}' + headers: + cache-control: + - no-cache + content-length: + - '271' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:30:58 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '8' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/d1628a0a-ce25-47da-a2c8-410a0cc0b553 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: EA6A47AD9F5C481A93E21B8C9D886DFA Ref B: CO1AA3060818052 Ref C: 2026-09-15T21:30:58Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/cb9e217d-7e79-457a-ab87-c7e1132606eb?api-version=2017-04-18&t=639251046578756715&c=MIIIJjCCBw6gAwIBAgIQQsgxla0M-7x6wLiaXV8gNzANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBXQ1VTIENBIDAxMB4XDTI2MDgxMjE5NTYzN1oXDTI3MDIwODAxNTYzN1owQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjyQHyKRQ8UpdzxWWmCxMDjs6UMG9UbX9c9OJQKRD6Vai9vjx5MJuD6y4Uxn_YQqnEDALPbdoRwyZAdcXPY31TFD_XnfajmM-ZAQlS9ZBdI-60cOBzeuSODBevgfQ0gq_hMbZEC0Gr1XAAgQqCPsDLKjYiVH3oIGsLWkoCqvZR4ia1rQCx7vc3lMlGGfppWILnw6mAlIEM_SgbK4PavIUii4QNGXK2NR4CMgJ-Zp_gP6e8XW6ImAcOaDhsUJoyJmxR-GCBPhxrDngK1ixA-r7uNDfXWC7ksmzehqGfAupArw6Zdbh21RA3hjU104hl9GSgZ2FREhNYHcvCVol3oY9RAgMBAAGjggUkMIIFIDCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBTDKruM3AEmoKnjmjE6ukKa0VlRvTAfBgNVHSMEGDAWgBQU0jfg9tZ9ft2NurplqwSUJeCWHTCCAfsGA1UdHwSCAfIwggHuMHugeaB3hnVodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwfaB7oHmGd2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L3dlc3RjZW50cmFsdXMvY3Jscy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxLzMyL2N1cnJlbnQuY3JsMGygaqBohmZodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vd2VzdGNlbnRyYWx1cy9jcmxzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwgYGgf6B9hntodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvMzIvY3VycmVudC5jcmwwggIABggrBgEFBQcBAQSCAfIwggHuMH4GCCsGAQUFBzAChnJodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvd2VzdGNlbnRyYWx1cy9jYWNlcnRzL2NjbWV3ZXN0Y2VudHJhbHVzcGtpL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEvY2VydC5jZXIwgYAGCCsGAQUFBzAChnRodHRwOi8vc2Vjb25kYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC93ZXN0Y2VudHJhbHVzL2NhY2VydHMvY2NtZXdlc3RjZW50cmFsdXNwa2kvY2NtZXdlc3RjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBvBggrBgEFBQcwAoZjaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3dlc3RjZW50cmFsdXMvY2FjZXJ0cy9jY21ld2VzdGNlbnRyYWx1c3BraS9jY21ld2VzdGNlbnRyYWx1c2ljYTAxL2NlcnQuY2VyMHgGCCsGAQUFBzAChmxodHRwOi8vY2NtZXdlc3RjZW50cmFsdXNwa2kud2VzdGNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWV3ZXN0Y2VudHJhbHVzaWNhMDEwDQYJKoZIhvcNAQELBQADggEBAHlzTkQ03xhxyAyJLFgMbgclkkaQSsTdGfKPvuLkqxHhbwnnnQj0qIblVcex8MFLZvU3I4zzPrs3huVLUyBtiVr2Y78czcDCslyFYf_yD7yDQmCDeFn-Dh3_NNn9SxCCh7Moi0fLyv3UL6gFl2WyfNkvWwxj6hdhpIup-yc0PzkaeZJLOrPxWWgfHFH7UqxWxDdkBrV72ZkyuZF3SBC9yXBvvWUpO4Lk4CnfX6Ne4e0TrUrhxQ8sAk04P8J9qzMFa_9nBHpIKyFVHLuwKrjo5GIbhIakXmn1NckxGDEMHDRg5_Nj4ZHsdrSm8aMM6wj5pMXv4cza_0NwReDfvipkjEw&s=dQ3Una9bJIE1EitJ1xnIMKjqM7NNK0xjxEG0xBYMSRS2BX14ccjlXh0Abf_dJn9WP-6X2A_HpfteXdyAxlX5Tv-_m6aegzpQBajiILeSZ2rmbnxeM3Ywh8qUnJD02SHEKqQXQOcZ2uMkIt9aMBpHBC2LOKDcEA2Zu9NXIJW3vHUJ93MWds7g-z2Tys1CYJMPpyJPke-XVtIqPu-L0ocMgZ-Aw6c_arZPkdAUTY0jaWyMJoWIyK9ob1jffMmu9PobiZIAgE9ZWYz1frQx-OmWihsCeBLy0tEwR5A0cIJ9t-M1eHS9XUqAhnYIq-mhy_uwpdAgZuYJlR6bnp8qbSmmRw&h=4ZgVPBdilhr6BnKszRxlHirHW_G1Cvc1GnI9suxhtCM + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/westus2/operationResults/cb9e217d-7e79-457a-ab87-c7e1132606eb","name":"cb9e217d-7e79-457a-ab87-c7e1132606eb","status":"Succeeded","startTime":"2026-09-15T21:30:57Z","endTime":"2026-09-15T21:31:00Z"}' + headers: + cache-control: + - no-cache + content-length: + - '305' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:31:29 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '7' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/96846524-1690-43d1-a067-c075b9bd8369 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 4316D0D0CFDB422E9EEE5ECFF3E50851 Ref B: CO6AA3150217011 Ref C: 2026-09-15T21:31:29Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account update + Connection: + - keep-alive + ParameterSetName: + - --resource-group --name --cost-control-ids + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002?api-version=2026-09-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002","name":"test-account-000002","type":"Microsoft.CognitiveServices/accounts","etag":"\"0401d2e5-0000-0800-0000-6aa9b9120000\"","location":"westus2","sku":{"name":"S0"},"kind":"AIServices","properties":{"endpoint":"https://test-account-000002-f105e.cognitiveservices.azure.com/","provisioningState":"Succeeded","internalId":"f105e2ba0fdc4c938ffaf9d984aee907","dateCreated":"2026-09-15T21:28:56.1438807Z","apiProperties":{"qnaAzureSearchEndpointKey":null},"callRateLimit":{"rules":[{"key":"documentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"POST"}]},{"key":"documentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"GET"}]},{"key":"documentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/text/batch/*","method":"*"}]},{"key":"textTranslation","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"translator/text/*","method":"*"}]},{"key":"singledocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document:translate","method":"*"}]},{"key":"batchDocumentTranslation.post","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"POST"}]},{"key":"batchDocumentTranslation.get","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"GET"}]},{"key":"batchDocumentTranslation.default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"translator/document/*","method":"*"}]},{"key":"textAnalytics.analyze","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.1/analyze/*","method":"*"},{"path":"text/analytics/v3.2-preview.2/analyze/*","method":"*"}]},{"key":"textAnalytics.healthcare","renewalPeriod":60,"count":300,"matchPatterns":[{"path":"text/analytics/v3.1/entities/health","method":"*"},{"path":"text/analytics/v3.2-preview.1/health","method":"*"},{"path":"text/analytics/v3.2-preview.2/health","method":"*"}]},{"key":"textAnalytics.languagedetection","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/v3.1/languages","method":"*"}]},{"key":"textAnalytics","renewalPeriod":60,"count":1000,"matchPatterns":[{"path":"text/analytics/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.march.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.march.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-text/projects/*","method":"*"}]},{"key":"textAnalytics.authoring.customtext.internal.getcalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.internal.updatecalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-text/internal/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.march.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/authoring/analyze-conversations/projects/*","method":"*"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.getCalls","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"GET"}]},{"key":"textAnalytics.unifiedAuthoring.clu.internal.updateCalls","renewalPeriod":60,"count":10,"matchPatterns":[{"path":"language/analyze-conversations/internal/projects/*","method":"*"}]},{"key":"textAnalytics.analyze.internal.autoTagging","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-auto-tagging","method":"*"}]},{"key":"textAnalytics.analyze.internal.evaluation","renewalPeriod":60,"count":150,"matchPatterns":[{"path":"TextAnalytics/ct-evaluation","method":"*"}]},{"key":"token","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"sts/v1.0/*","method":"*"}]},{"key":"speech.synthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/synthesize","method":"*"}]},{"key":"speech.customvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customvoicesynthesize","method":"*"}]},{"key":"speech.neuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/neuralvoicesynthesize","method":"*"}]},{"key":"speech.customneuralvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/customneuralvoicesynthesize","method":"*"}]},{"key":"speech.personalvoicesynthesize","renewalPeriod":1,"count":200,"matchPatterns":[{"path":"speech/personalvoicesynthesize","method":"*"}]},{"key":"speech.liveavatarconnect","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"speech/liveavatarconnect","method":"*"}]},{"key":"speech.livecustomavatarconnect","renewalPeriod":60,"count":200,"matchPatterns":[{"path":"speech/livecustomavatarconnect","method":"*"}]},{"key":"speech.batchavatarcreate","renewalPeriod":60,"count":2,"matchPatterns":[{"path":"avatar/batchsyntheses/*","method":"PUT"}]},{"key":"speech.speechtotext","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"speechtotext/*","method":"*"}]},{"key":"speech.batchtexttospeechcreate","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/batchsyntheses/*","method":"PUT"}]},{"key":"speech.texttospeech","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"texttospeech/*","method":"*"}]},{"key":"speech.customvoice","renewalPeriod":10,"count":100,"matchPatterns":[{"path":"customvoice/*","method":"*"}]},{"key":"speech.speakerrecognitionv2","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"speaker/*","method":"*"},{"path":"speaker-recognition/*","method":"*"}]},{"key":"speech.speakerrecognitionv1","renewalPeriod":1,"count":5,"matchPatterns":[{"path":"spid/*","method":"*"}]},{"key":"voicelive.realtime","renewalPeriod":60,"count":100,"matchPatterns":[{"path":"voice-live/realtime","method":"*"},{"path":"voice-agent/realtime","method":"*"}]},{"key":"formrecognizer.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"formrecognizer/custom/models/{id}/analyze","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/businessCard/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/idDocument/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/invoice/analyze","method":"POST"},{"path":"formrecognizer/layout/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/analyze","method":"POST"},{"path":"formrecognizer/prebuilt/receipt/asyncBatchAnalyze","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:analyze","method":"POST"},{"path":"formrecognizer/read","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}:analyze","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:analyze","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}:analyze","method":"POST"}]},{"key":"formrecognizer.get.object","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/businessCard/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/idDocument/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/invoice/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/prebuilt/receipt/operations/{operationId}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/layout/analyzeResults/{resultId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}/copyResults/{resultId}","method":"GET"},{"path":"formrecognizer/operations/{operationId}","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"GET"},{"path":"formrecognizer/custom/models/{id}","method":"GET"},{"path":"formrecognizer/documentModels/{modelId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"GET"},{"path":"formrecognizer/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}/analyzeResults/{resultId}","method":"GET"},{"path":"documentintelligence/operations/{operationId}","method":"GET"},{"path":"documentintelligence/documentModels/{modelId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"GET"},{"path":"documentintelligence/documentClassifiers/{classifierId}/analyzeResults/{resultId}","method":"GET"}]},{"key":"formrecognizer.list.objects","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/operations","method":"GET"},{"path":"formrecognizer/info","method":"GET"},{"path":"formrecognizer/documentModels","method":"GET"},{"path":"formrecognizer/custom/models","method":"GET"},{"path":"formrecognizer/documentClassifiers","method":"GET"},{"path":"documentintelligence/documentModels","method":"GET"},{"path":"documentintelligence/operations","method":"GET"},{"path":"documentintelligence/info","method":"GET"},{"path":"documentintelligence/documentClassifiers","method":"GET"}]},{"key":"formrecognizer.model.management","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"formrecognizer/custom/models","method":"POST"},{"path":"formrecognizer/custom/models/compose","method":"POST"},{"path":"formrecognizer/custom/models/copyAuthorization","method":"POST"},{"path":"formrecognizer/custom/models/{id}","method":"DELETE"},{"path":"formrecognizer/custom/models/{id}/keys","method":"GET"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/custom/models/{modelId}/copy","method":"POST"},{"path":"formrecognizer/documentModels/{modelId}:copyTo","method":"POST"},{"path":"formrecognizer/documentModels:authorizeCopy","method":"POST"},{"path":"formrecognizer/documentModels:build","method":"POST"},{"path":"formrecognizer/documentModels:compose","method":"POST"},{"path":"formrecognizer/custom/train","method":"POST"},{"path":"formrecognizer/custom/models/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentModels/{modelId}","method":"DELETE"},{"path":"formrecognizer/documentClassifiers:build","method":"POST"},{"path":"formrecognizer/documentClassifiers/{classifierId}","method":"DELETE"},{"path":"documentintelligence/documentModels:authorizeCopy","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}:copyTo","method":"POST"},{"path":"documentintelligence/documentModels:build","method":"POST"},{"path":"documentintelligence/documentModels:compose","method":"POST"},{"path":"documentintelligence/documentModels/{modelId}","method":"DELETE"},{"path":"documentintelligence/documentClassifiers:build","method":"POST"},{"path":"documentintelligence/documentClassifiers/{classifierId}","method":"DELETE"}]},{"key":"formrecognizer.chat.build","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"documentintelligence/chat:build","method":"POST"}]},{"key":"formrecognizer.chat.complete","renewalPeriod":60,"count":5,"matchPatterns":[{"path":"documentintelligence/chat/{chatId}:complete","method":"POST"}]},{"key":"vision.recognizeText","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"vision/recognizeText","method":"POST"},{"path":"vision/textOperations/*","method":"GET"},{"path":"vision/read/*","method":"*"}]},{"key":"vision","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"vision/*","method":"*"}]},{"key":"container.billing","renewalPeriod":10,"count":500,"matchPatterns":[{"path":"billing/*","method":"*"}]},{"key":"ContentSafety.List","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/blocklists*","method":"*"}]},{"key":"ContentSafety.TextGroundedDetection","renewalPeriod":1,"count":50,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectGroundedness*","method":"*"}]},{"key":"ContentSafety.TextShieldPrompt","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:shieldPrompt*","method":"*"}]},{"key":"ContentSafety.TextDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectIncidents*","method":"*"}]},{"key":"ContentSafety.TextAnalyzeCustomCategory","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:analyzeCustomCategory*","method":"*"}]},{"key":"ContentSafety.TextAutoReview","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:autoReview*","method":"*"}]},{"key":"ContentSafety.GPTFeature","renewalPeriod":10,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectungroundedness*","method":"*"}]},{"key":"ContentSafety.TextJailbreak","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectJailbreak*","method":"*"}]},{"key":"ContentSafety.TextProtectedMaterial","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text:detectProtectedMaterial*","method":"*"}]},{"key":"ContentSafety.UnifiedModerate","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/content:unifiedModerate*","method":"*"}]},{"key":"ContentSafety.TextIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/incidents*","method":"*"}]},{"key":"ContentSafety.TextAutoReviewers","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/autoReviewers*","method":"*"}]},{"key":"ContentSafety.TextCustomCategories","renewalPeriod":1,"count":5,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text/categories*","method":"*"}]},{"key":"ContentSafety.Text","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/text*","method":"*"}]},{"key":"ContentSafety.ImageWithText","renewalPeriod":1,"count":10,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/imageWithText*","method":"*"}]},{"key":"ContentSafety.ImageDetectIncidents","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image:detectIncidents*","method":"*"}]},{"key":"ContentSafety.ImageIncidentResponse","renewalPeriod":10,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image/incidents*","method":"*"}]},{"key":"ContentSafety.Image","renewalPeriod":10,"count":1000,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/image*","method":"*"}]},{"key":"ContentSafety.Project","renewalPeriod":1,"count":30,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/projects*","method":"*"}]},{"key":"ContentSafety.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/metrics*","method":"*"}]},{"key":"ContentSafety.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/whitelist*","method":"*"}]},{"key":"ContentSafetyInternal.Metrics","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/metrics*","method":"*"}]},{"key":"ContentSafetyInternal.Feature","renewalPeriod":1,"count":100,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/internal/whitelist*","method":"*"}]},{"key":"ContentSafety.Provenance.ClientWatermarkRegistration","renewalPeriod":10,"count":2,"dynamicThrottlingEnabled":true,"matchPatterns":[{"path":"contentsafety/provenance/client-watermark:register","method":"POST"}]},{"key":"contentunderstanding.analyze","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}:analyze","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinary","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeInline","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:analyzeBinaryInline","method":"POST"},{"path":"contentunderstanding/classifiers/{classifierId}:classify","method":"POST"}]},{"key":"contentunderstanding.get.object","renewalPeriod":1,"count":50,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/operations/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{operationId}/files/{path}","method":"GET"},{"path":"contentunderstanding/analyzerResults/{resultId}/*","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}","method":"GET"},{"path":"contentunderstanding/analyzers/{analyzerId}/results/{operationId}/images/{imageId}","method":"GET"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"GET"},{"path":"contentunderstanding/classifierResults/{operationId}","method":"GET"},{"path":"contentunderstanding/defaults","method":"GET"}]},{"key":"contentunderstanding.list.object","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/analyzers","method":"GET"},{"path":"contentunderstanding/classifiers","method":"GET"}]},{"key":"contentunderstanding.analyzer.management","renewalPeriod":1,"count":15,"matchPatterns":[{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PUT"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"DELETE"},{"path":"contentunderstanding/analyzers/{analyzerId}","method":"PATCH"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PUT"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"DELETE"},{"path":"contentunderstanding/classifiers/{classifierId}","method":"PATCH"},{"path":"contentunderstanding/analyzers/{analyzerId}:grantCopyAuthorization","method":"POST"},{"path":"contentunderstanding/analyzers/{analyzerId}:copy","method":"POST"},{"path":"contentunderstanding/defaults","method":"PATCH"},{"path":"contentunderstanding/analyzerResults/{operationId}","method":"DELETE"}]},{"key":"contentunderstanding.labeling","renewalPeriod":1,"count":100,"matchPatterns":[{"path":"contentunderstanding/labelingProjects","method":"GET"},{"path":"contentunderstanding/labelingProjects/*","method":"*"},{"path":"contentunderstanding/classificationProjects","method":"GET"},{"path":"contentunderstanding/classificationProjects/*","method":"*"}]},{"key":"contentunderstanding.face","renewalPeriod":1,"count":10,"matchPatterns":[{"path":"contentunderstanding/personDirectories","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces/{faceId}","method":"*"},{"path":"contentunderstanding/faces:detect","method":"*"},{"path":"contentunderstanding/faces:compare","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons:identify","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/faces:find","method":"*"},{"path":"contentunderstanding/personDirectories/{personDirectoryId}/persons/{personId}:verify","method":"*"}]},{"key":"mai","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/mai","method":"*"}]},{"key":"models","renewalPeriod":1,"count":30000,"matchPatterns":[{"path":"/models","method":"*"}]},{"key":"openai.dalle.post","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"POST"},{"path":"openai/images/*","method":"POST"}]},{"key":"openai.dalle.other","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"dalle/*","method":"*"},{"path":"openai/operations/images/*","method":"*"}]},{"key":"openai.assistants.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/assistants","method":"GET"}]},{"key":"openai.threads.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/threads","method":"GET"}]},{"key":"openai.vectorstores.list","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/vector_stores","method":"GET"}]},{"key":"openai.vectorstores.post","renewalPeriod":1,"count":60,"matchPatterns":[{"path":"openai/vector_stores","method":"POST"},{"path":"openai/vector_stores/*","method":"POST"}]},{"key":"openai.assistants.default","renewalPeriod":60,"count":6000,"matchPatterns":[{"path":"openai/assistants","method":"*"},{"path":"openai/assistants/*","method":"*"},{"path":"openai/threads","method":"*"},{"path":"openai/threads/*","method":"*"},{"path":"openai/vector_stores","method":"*"},{"path":"openai/vector_stores/*","method":"*"}]},{"key":"openai.responses.default","renewalPeriod":1,"count":100000,"matchPatterns":[{"path":"openai/responses","method":"*"},{"path":"openai/responses/*","method":"*"}]},{"key":"openai.moderations.post","renewalPeriod":60,"count":120,"matchPatterns":[{"path":"openai/v1/moderations","method":"POST"},{"path":"openai/v1/moderations/exp/m4","method":"POST"},{"path":"openai/v1/moderations/exp/safeberry","method":"POST"},{"path":"openai/v1/safeberry/moderations","method":"POST"}]},{"key":"openai","renewalPeriod":1,"count":30,"matchPatterns":[{"path":"openai/*","method":"*"}]},{"key":"api.projects.default","renewalPeriod":1,"count":1000000,"matchPatterns":[{"path":"api/projects/*","method":"*"}]},{"key":"default","renewalPeriod":1,"count":20,"matchPatterns":[{"path":"*","method":"*"}]}]},"isMigrated":false,"amlWorkspace":{"resourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.MachineLearningServices/workspaces/test-account-000002@AML","internalId":"f105e2ba-0fdc-4c93-8ffa-f9d984aee907","amlWorkspace":"test-account-000002@AML"},"allowProjectManagement":true,"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","capabilities":[{"name":"VirtualNetworks"},{"name":"EnabledApimVnet","value":"true"},{"name":"CustomerManagedKey"},{"name":"CustomerManagedStorage"},{"name":"TrustedServices","value":"Microsoft.CognitiveServices,Microsoft.MachineLearningServices,Microsoft.Search,Microsoft.VideoIndexer"},{"name":"NetworkSecurityPerimeter"},{"name":"MaxFineTuneCount","value":"100"},{"name":"MaxRunningFineTuneCount","value":"2"},{"name":"MaxUserFileCount","value":"50"},{"name":"MaxTrainingFileSize","value":"512000000"},{"name":"MaxUserFileImportDurationInHours","value":"1"},{"name":"MaxFineTuneJobDurationInHours","value":"720"},{"name":"MaxRunningGlobalStandardFineTuneCount","value":"1"},{"name":"RaiMonitor"},{"name":"CustomerManagedAmlWorkspace"},{"name":"v1GA"},{"name":"useEndpointRateLimiter","value":"Enabled"},{"name":"FinetunedModelRouterEndpoint"},{"name":"FinetunedModelRouterScoreThreshold","value":"0.171"},{"name":"quotaRefundsEnabled","value":"false"},{"name":"audio","value":"true"},{"name":"imageGenerations","value":"true"},{"name":"chatCompletion","value":"true"},{"name":"fineTune","value":"true"},{"name":"imageEdits","value":"true"},{"name":"realtimeTranscription","value":"true"},{"name":"Container","value":"ContentSafety.*,ContentSafety.TextAnalyze,ContentSafety.ImageAnalyze,ContentSafety.Jailbreak,ContentSafety.jailbreakanalyze,ComputerVision.*,FormRecognizer.*,FormRecognizer.Forms,FormRecognizer.FormRecognizerCustomSupervised,FormRecognizer.FormRecognizerLayout,FormRecognizer.formrecognizerreadlayout,FormRecognizer.FormRecognizerId,FormRecognizer.FormRecognizerInvoice,FormRecognizer.FormRecognizerReceipt,FormRecognizer.FormRecognizerBusinessCard,FormRecognizer.FormRecognizerRead,FormRecognizer.FormRecognizerKvp,SpeechServices.*,SpeechServices.CustomSpeechToText,SpeechServices.NeuralTextToSpeechOnPrem,SpeechServices.DPP,SpeechServices.SpeechToText,SpeechServices.BatchSpeechToTextSync,TextAnalytics.*,TextAnalytics.Healthcare,TextAnalytics.Keyphrase,TextAnalytics.KeyphraseV2,TextAnalytics.KeyPhraseONNX,TextAnalytics.LanguageFastText,TextAnalytics.Language,TextAnalytics.LanguageV2,TextAnalytics.Sentiment,TextAnalytics.SentimentV2,TextAnalytics.SentimentV3,TextAnalytics.SentimentV3Preview,TextAnalytics.SentimentONNX,TextAnalytics.SummarizationFrontend,TextAnalytics.SummarizationWorker,TextAnalytics.CluRuntime,TextAnalytics.CluContainer,TextAnalytics.PII,TextAnalytics.NER"},{"name":"DynamicThrottling"},{"name":"Cloud","value":"TextAnalytics.CustomText,TextAnalytics.ConversationalLU,TextAnalytics.Healthcare,TextAnalytics.Analyze,TextAnalytics.AnalyzeText,QuestionAnswer.AllApis,LanguageService.QuestionAnsweringApis"}],"endpoints":{"AI + Foundry API":"https://test-account-000002.services.ai.azure.com/","Azure AI + Model Inference API (UDP)":"https://test-account-000002-f105e.cognitiveservices.azure.com/","ProjectA + APIs":"https://test-account-000002-f105e.cognitiveservices.azure.com/","MAAP + Managed Deployments API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Language Model Instance API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Dall-E API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Sora API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Moderations API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Whisper API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Model Scaleset API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token + Service API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Metering + and Throttling API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + OpenAI Legacy API - Latest moniker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Response API on Websocket":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Translation WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","OpenAI + Realtime Live WebSocket API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + AI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Cohere + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Mistral + AI API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Model Inference API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Azure + MAI Realtime API v1.0":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Understanding":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Content + Safety":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Container":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Computer + Vision":"https://test-account-000002-f105e.cognitiveservices.azure.com/","FormRecognizer":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text v3.2_internal.1":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Voice Trial":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Video + Translation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Audio Content Creation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services TTS Player":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Podcast":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Custom Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Avatar":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Batch Text to Speech":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Speech + Services Speech to Text (Standard)":"https://westus2.stt.speech.microsoft.com","Speech + Services Text to Speech (Neural)":"https://westus2.tts.speech.microsoft.com","Voice + Agent Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Realtime API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Media Gateway Calls API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Voice + Live Capabilities API":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Token":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Text + Analytics":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QnAMaker":"https://test-account-000002-f105e.cognitiveservices.azure.com/","QuestionAnswering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","LUIS.Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Text Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Conversational + Language Understanding Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering Authoring":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Custom + Question Answering":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language":"https://test-account-000002-f105e.cognitiveservices.azure.com/","Language + Remote MCP Server":"https://test-account-000002-f105e.cognitiveservices.azure.com/","TextTranslation-Global":"https://api.cognitive.microsofttranslator.com/","TextTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","DocumentTranslation":"https://test-account-000002-f105e.cognitiveservices.azure.com/","CustomTranslator":"https://test-account-000002-f105e.cognitiveservices.azure.com/"},"armFeatures":["Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForHealthRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForPIIRAITermsAccepted","Microsoft.CognitiveServices/LegalTerms.ComputerVision.SpatialAnaysisRAITermsAccepted","Microsoft.CognitiveServices/OpenAITest","Microsoft.CognitiveServices/OpenAI.gpt-45-preview","Microsoft.CognitiveServices/OnYourDataMongoDB","Microsoft.CognitiveServices/OnYourDataElasticsearch","Microsoft.CognitiveServices/OnYourDataPinecone","Microsoft.CognitiveServices/OnYourDataSql","Microsoft.CognitiveServices/openAIRegions.WestUS2","Microsoft.CognitiveServices/UnifiedResourceProvider","Microsoft.CognitiveServices/OpenAI.1PGatingTier","Microsoft.CognitiveServices/CostControls","Microsoft.CognitiveServices/TiP","Microsoft.CognitiveServices/AllowAIFoundryUpgrade","Microsoft.Resources/EuapParticipation"],"a365LoggingEnabled":true,"a365Status":"Enabled","costControlIds":[],"costControlConnections":{"appInsightsConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-connection","eventGridConnectionId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/accounts/placeholder-account/connections/placeholder-event-grid-connection"}},"identity":{"principalId":"df047297-78b3-4854-8903-d334906e267f","tenantId":"72f988bf-86f1-41af-91ab-2d7cd011db47","type":"SystemAssigned"},"systemData":{"createdBy":"test@example.com","createdByType":"User","createdAt":"2026-09-15T21:28:54.3826461Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User","lastModifiedAt":"2026-09-15T21:30:57.5788004Z"}}' + headers: + cache-control: + - no-cache + content-length: + - '33662' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:31:29 GMT + etag: + - '"0401d2e5-0000-0800-0000-6aa9b9120000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '81' + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: D711CB86DDF6450C938FC0E07FDFAB02 Ref B: MWH011020809042 Ref C: 2026-09-15T21:31:29Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --resource-group --account-name --cost-control-name --yes + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-1?api-version=2026-09-15-preview + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 15 Sep 2026 21:31:30 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '89' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/e343f354-fb23-4e81-9818-4fb3cf2bc631 + x-ms-ratelimit-remaining-subscription-deletes: + - '799' + x-ms-ratelimit-remaining-subscription-global-deletes: + - '11999' + x-msedge-ref: + - 'Ref A: 0DBB544725B64415BAC66E07B5DB30B2 Ref B: MWH011020809029 Ref C: 2026-09-15T21:31:31Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - --resource-group --account-name --cost-control-name --yes + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls/test-2?api-version=2026-09-15-preview + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + date: + - Tue, 15 Sep 2026 21:31:32 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '63' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/72737faf-81c9-4492-9b29-56b09a90172d + x-ms-ratelimit-remaining-subscription-deletes: + - '799' + x-ms-ratelimit-remaining-subscription-global-deletes: + - '11999' + x-msedge-ref: + - 'Ref A: AD8073A3E2184466AC3879205535F7A0 Ref B: MWH011020806042 Ref C: 2026-09-15T21:31:32Z' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate, zstd + CommandName: + - cognitiveservices account costcontrol list + Connection: + - keep-alive + ParameterSetName: + - --resource-group --account-name + User-Agent: + - AZURECLI/2.90.0 azsdk-python-core/1.39.0 Python/3.14.3 (Windows-11-10.0.26200-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/az-cli-cost-control-test-rg-000001/providers/Microsoft.CognitiveServices/accounts/test-account-000002/costControls?api-version=2026-09-15-preview + response: + body: + string: '{"value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '12' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2026 21:31:32 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '16' + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=644a5b64-0c15-4aa4-91b4-220ef886a553/westus2/97acdf74-1901-432c-81e4-fbc1f1b57ad6 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 7F875DCE9B46424DBA73F063DD31B268 Ref B: CO1AA3060815054 Ref C: 2026-09-15T21:31:32Z' + status: + code: 200 + message: OK +version: 1 diff --git a/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/test_foundry_cost_control.py b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/test_foundry_cost_control.py new file mode 100644 index 00000000000..dd483baee4a --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/test_foundry_cost_control.py @@ -0,0 +1,267 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# Test recording location: recordings/test_foundry_cost_control.yaml + +# To run this test live with full request/response logs: +# azdev test foundry-cost-control --live --series -a -s --log-cli-level=DEBUG ` +# --log-file="cost-control-http-debug.log" --log-file-level=DEBUG + +import os +from azure.cli.testsdk import ResourceGroupPreparer, ScenarioTest + +TEST_DIR = os.path.dirname(os.path.abspath(__file__)) + +class FoundryCostControlScenario(ScenarioTest): + + # This decorator automatically creates and cleans up a resource group for the test. + @ResourceGroupPreparer( + name_prefix='az-cli-cost-control-test-rg-', + location='westus2', + random_name_length=38 + ) + def test_foundry_cost_control(self, resource_group): + + #================================================================================== + # Define test params + #================================================================================== + + self.kwargs.update({ + 'account_name': self.create_random_name('test-account-', 23), + 'cost_control_name_1': 'test-1', + 'cost_control_name_2': 'test-2', + 'deployment_name': 'test-deployment', + 'display_name_1': 'first display name', + 'display_name_2': 'second display name', + 'updated_display_name_1': 'updated first display name', + 'app_insights_connection_id': ( # The service only validates the format, not the existence of the resource + '/subscriptions/00000000-0000-0000-0000-000000000000/' + 'resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/' + 'accounts/placeholder-account/connections/placeholder-connection' + ), + 'event_grid_connection_id': ( # The service only validates the format, not the existence of the resource + '/subscriptions/00000000-0000-0000-0000-000000000000/' + 'resourceGroups/placeholder-resource-group/providers/Microsoft.CognitiveServices/' + 'accounts/placeholder-account/connections/placeholder-event-grid-connection' + ), + 'location': 'westus2', + 'resource_group': resource_group, + 'rules_file_1': os.path.join(TEST_DIR, 'cost-control-rules-1.json'), + 'rules_file_2': os.path.join(TEST_DIR, 'cost-control-rules-2.json'), + }) + + #================================================================================== + # BEGIN creation of resources in the resource group + #================================================================================== + + # Create the AI Services account that owns the cost controls. + account = self.cmd( + 'cognitiveservices account create ' + '--resource-group {resource_group} ' + '--name {account_name} ' + '--kind AIServices ' + '--sku S0 ' + '--location {location} ' + '--yes' + ).get_output_in_json() + self.kwargs['account_id'] = account['id'] + + #================================================================================== + # BEGIN actual cost-control tests + #================================================================================== + + # Create the first cost control with the agent-based rules. + cost_control_1 = self.cmd( + 'cognitiveservices account costcontrol create ' + '--resource-group {resource_group} ' + '--account-name {account_name} ' + '--cost-control-name {cost_control_name_1} ' + '--display-name "{display_name_1}" ' + '--rules "@{rules_file_1}"', + checks=[ + self.check('name', '{cost_control_name_1}'), + self.check('properties.displayName', '{display_name_1}'), + self.check('properties.rules[0].name', 'per-agent-monthly'), + ] + ).get_output_in_json() + self.kwargs['cost_control_id_1'] = cost_control_1['id'] + + # Create the second cost control with the project-based rules. + cost_control_2 = self.cmd( + 'cognitiveservices account costcontrol create ' + '--resource-group {resource_group} ' + '--account-name {account_name} ' + '--cost-control-name {cost_control_name_2} ' + '--display-name "{display_name_2}" ' + '--rules "@{rules_file_2}"', + checks=[ + self.check('name', '{cost_control_name_2}'), + self.check('properties.displayName', '{display_name_2}'), + self.check('properties.rules[0].name', 'per-project-monthly'), + ] + ).get_output_in_json() + self.kwargs['cost_control_id_2'] = cost_control_2['id'] + + # Attach the first cost control to the account. + self.cmd( + 'cognitiveservices account update ' + '--resource-group {resource_group} ' + '--name {account_name} ' + '--cost-control-connections ' + '\'{{' + '"appInsightsConnectionId":"{app_insights_connection_id}",' + '"eventGridConnectionId":"{event_grid_connection_id}"' + '}}\' ' + '--cost-control-ids {cost_control_id_1}', + checks=[ + self.check( + 'properties.costControlConnections.appInsightsConnectionId', + '{app_insights_connection_id}' + ), + self.check( + 'properties.costControlConnections.eventGridConnectionId', + '{event_grid_connection_id}' + ), + self.check('properties.costControlIds[0]', '{cost_control_id_1}'), + ] + ) + + # Create a deployment with the first cost control attached. + self.cmd( + 'cognitiveservices account deployment create ' + '--resource-group {resource_group} ' + '--name {account_name} ' + '--deployment-name {deployment_name} ' + '--model-name gpt-4o-mini ' + '--model-version 2024-07-18 ' + '--model-format OpenAI ' + '--sku-name GlobalStandard ' + '--sku-capacity 1 ' + '--cost-control-ids {cost_control_id_1}', + checks=[ + self.check('properties.model.name', 'gpt-4o-mini'), + self.check('length(properties.costControlIds)', 1), + self.check( + 'properties.costControlIds[0]', + '{cost_control_id_1}' + ), + ] + ) + + # Replace the deployment's attachment with the second cost control. + self.cmd( + 'cognitiveservices account deployment update ' + '--resource-group {resource_group} ' + '--name {account_name} ' + '--deployment-name {deployment_name} ' + '--cost-control-ids {cost_control_id_2}', + checks=[ + self.check('properties.model.name', 'gpt-4o-mini'), + self.check('length(properties.costControlIds)', 1), + self.check( + 'properties.costControlIds[0]', + '{cost_control_id_2}' + ), + ] + ) + + # List the account's cost controls and verify both were created. + self.cmd( + 'cognitiveservices account costcontrol list ' + '--resource-group {resource_group} ' + '--account-name {account_name}', + checks=[ + self.check('length(@)', 2), + self.check("length([?name=='{cost_control_name_1}'])", 1), + self.check("length([?name=='{cost_control_name_2}'])", 1), + ] + ) + + # Show the first cost control and verify its configured values. + self.cmd( + 'cognitiveservices account costcontrol show ' + '--resource-group {resource_group} ' + '--account-name {account_name} ' + '--cost-control-name {cost_control_name_1}', + checks=[ + self.check('name', '{cost_control_name_1}'), + self.check('properties.displayName', '{display_name_1}'), + self.check('properties.rules[0].name', 'per-agent-monthly'), + ] + ) + + # Update the first cost control and verify unspecified rules are preserved. + self.cmd( + 'cognitiveservices account costcontrol update ' + '--resource-group {resource_group} ' + '--account-name {account_name} ' + '--cost-control-name {cost_control_name_1} ' + '--display-name "{updated_display_name_1}"', + checks=[ + self.check('name', '{cost_control_name_1}'), + self.check('properties.displayName', '{updated_display_name_1}'), + self.check('properties.rules[0].name', 'per-agent-monthly'), + ] + ) + + # Show the first cost control again and verify the update persisted. + self.cmd( + 'cognitiveservices account costcontrol show ' + '--resource-group {resource_group} ' + '--account-name {account_name} ' + '--cost-control-name {cost_control_name_1}', + checks=[ + self.check('name', '{cost_control_name_1}'), + self.check('properties.displayName', '{updated_display_name_1}'), + self.check('properties.rules[0].name', 'per-agent-monthly'), + ] + ) + + # Detach the second cost control from the deployment before deleting it. + self.cmd( + 'cognitiveservices account deployment update ' + '--resource-group {resource_group} ' + '--name {account_name} ' + '--deployment-name {deployment_name} ' + '--cost-control-ids', + checks=[self.check('properties.costControlIds', [])] + ) + + # Detach the first cost control from the account before deleting it. + self.cmd( + 'cognitiveservices account update ' + '--resource-group {resource_group} ' + '--name {account_name} ' + '--cost-control-ids', + checks=[self.check('properties.costControlIds', [])] + ) + + # Delete the first cost control. + self.cmd( + 'cognitiveservices account costcontrol delete ' + '--resource-group {resource_group} ' + '--account-name {account_name} ' + '--cost-control-name {cost_control_name_1} ' + '--yes' + ) + + # Delete the second cost control. + self.cmd( + 'cognitiveservices account costcontrol delete ' + '--resource-group {resource_group} ' + '--account-name {account_name} ' + '--cost-control-name {cost_control_name_2} ' + '--yes' + ) + + # List the account's cost controls and verify both were deleted. + self.cmd( + 'cognitiveservices account costcontrol list ' + '--resource-group {resource_group} ' + '--account-name {account_name}', + checks=[self.check('length(@)', 0)] + ) diff --git a/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/test_foundry_cost_control_custom_code.py b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/test_foundry_cost_control_custom_code.py new file mode 100644 index 00000000000..c75a0a8bcc6 --- /dev/null +++ b/src/foundry-cost-control/azext_foundry_cost_control/tests/latest/test_foundry_cost_control_custom_code.py @@ -0,0 +1,272 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import json +import unittest +from unittest import mock + +from azure.cli.core.azclierror import InvalidArgumentValueError, MutuallyExclusiveArgumentError +from azure.mgmt.resource.resources.models import GenericResource + +from azext_foundry_cost_control._params import ( + _parse_cost_control_connections, + _parse_cost_control_id, +) +from azext_foundry_cost_control.custom import ( + account_update, + deployment_create, + deployment_update, +) + + +ACCOUNT_ID = ( + "/subscriptions/00000000-0000-0000-0000-000000000000/" + "resourceGroups/test-rg/providers/Microsoft.CognitiveServices/accounts/test-account" +) +COST_CONTROL_ID = ACCOUNT_ID + "/costControls/test-control" +CONNECTION_ID = ACCOUNT_ID + "/connections/test-connection" +DEPLOYMENT_ID = ACCOUNT_ID + "/deployments/test-deployment" + + +class FoundryCostControlCustomTest(unittest.TestCase): + + def test_parse_cost_control_connections(self): + result = _parse_cost_control_connections(json.dumps({ + "appInsightsConnectionId": CONNECTION_ID, + "eventGridConnectionId": None, + })) + + self.assertEqual(result["appInsightsConnectionId"], CONNECTION_ID) + self.assertIsNone(result["eventGridConnectionId"]) + + def test_parse_cost_control_connections_rejects_unknown_property(self): + with self.assertRaises(InvalidArgumentValueError): + _parse_cost_control_connections('{"unsupported":"value"}') + + def test_parse_cost_control_connections_rejects_non_object(self): + with self.assertRaises(InvalidArgumentValueError): + _parse_cost_control_connections("[]") + + def test_parse_cost_control_id_rejects_other_resource_type(self): + with self.assertRaises(InvalidArgumentValueError): + _parse_cost_control_id(ACCOUNT_ID) + + @mock.patch("azext_foundry_cost_control.custom.patch_resource") + @mock.patch("azext_foundry_cost_control.custom.resource_id", return_value=ACCOUNT_ID) + @mock.patch("azext_foundry_cost_control.custom.get_subscription_id", return_value="subscription-id") + def test_account_update_patches_cost_control_properties( + self, get_subscription_id_mock, resource_id_mock, patch_resource_mock): + cmd = mock.Mock() + client = mock.Mock() + connections = {"appInsightsConnectionId": CONNECTION_ID} + + result = account_update( + cmd=cmd, + client=client, + resource_group_name="test-rg", + account_name="test-account", + cost_control_ids=[COST_CONTROL_ID], + cost_control_connections=connections, + ) + + self.assertIs(result, patch_resource_mock.return_value) + get_subscription_id_mock.assert_called_once_with(cmd.cli_ctx) + resource_id_mock.assert_called_once_with( + subscription="subscription-id", + resource_group="test-rg", + namespace="Microsoft.CognitiveServices", + type="accounts", + name="test-account", + ) + patch_resource_mock.assert_called_once() + patch_arguments = patch_resource_mock.call_args.kwargs + self.assertEqual(patch_arguments["resource_ids"], [ACCOUNT_ID]) + self.assertEqual(patch_arguments["api_version"], "2026-09-15-preview") + self.assertEqual( + json.loads(patch_arguments["properties"]), + { + "costControlIds": [COST_CONTROL_ID], + "costControlConnections": connections, + }, + ) + + @mock.patch("azext_foundry_cost_control.custom.patch_resource") + @mock.patch("azext_foundry_cost_control.custom.core_account_update") + def test_account_update_delegates_legacy_update( + self, core_account_update_mock, patch_resource_mock): + result = account_update( + cmd=mock.Mock(), + client=mock.Mock(), + resource_group_name="test-rg", + account_name="test-account", + tags={"environment": "test"}, + ) + + self.assertIs(result, core_account_update_mock.return_value) + core_account_update_mock.assert_called_once() + patch_resource_mock.assert_not_called() + + @mock.patch("azext_foundry_cost_control.custom.patch_resource") + @mock.patch("azext_foundry_cost_control.custom.resource_id", return_value=ACCOUNT_ID) + @mock.patch("azext_foundry_cost_control.custom.get_subscription_id", return_value="subscription-id") + @mock.patch("azext_foundry_cost_control.custom.core_account_update") + def test_account_update_waits_for_legacy_update_before_preview_patch( + self, + core_account_update_mock, + _get_subscription_id_mock, + _resource_id_mock, + patch_resource_mock): + poller = mock.Mock() + core_account_update_mock.return_value = poller + + account_update( + cmd=mock.Mock(), + client=mock.Mock(), + resource_group_name="test-rg", + account_name="test-account", + tags={"environment": "test"}, + cost_control_ids=[COST_CONTROL_ID], + ) + + poller.result.assert_called_once_with() + patch_resource_mock.assert_called_once() + + def test_account_update_rejects_more_than_twenty_cost_controls(self): + with self.assertRaises(InvalidArgumentValueError): + account_update( + cmd=mock.Mock(), + client=mock.Mock(), + resource_group_name="test-rg", + account_name="test-account", + cost_control_ids=[COST_CONTROL_ID] * 21, + ) + + def test_account_update_rejects_connections_and_clear_together(self): + with self.assertRaises(MutuallyExclusiveArgumentError): + account_update( + cmd=mock.Mock(), + client=mock.Mock(), + resource_group_name="test-rg", + account_name="test-account", + cost_control_connections={"appInsightsConnectionId": CONNECTION_ID}, + clear_cost_control_connections=True, + ) + + @mock.patch("azext_foundry_cost_control.custom.update_resource") + @mock.patch( + "azext_foundry_cost_control.custom._deployment_resource_id", + return_value=DEPLOYMENT_ID, + ) + def test_deployment_create_includes_cost_control_in_put( + self, _deployment_resource_id_mock, update_resource_mock): + result = deployment_create( + cmd=mock.Mock(), + client=mock.Mock(), + resource_group_name="test-rg", + account_name="test-account", + deployment_name="test-deployment", + model_format="OpenAI", + model_name="gpt-4.1", + model_version="2025-04-14", + sku_name="GlobalStandard", + sku_capacity=10, + cost_control_ids=[COST_CONTROL_ID], + ) + + self.assertIs(result, update_resource_mock.return_value) + parameters = update_resource_mock.call_args.kwargs["parameters"] + self.assertEqual( + parameters.properties, + { + "model": { + "format": "OpenAI", + "name": "gpt-4.1", + "version": "2025-04-14", + }, + "costControlIds": [COST_CONTROL_ID], + }, + ) + self.assertEqual(parameters.sku, {"name": "GlobalStandard", "capacity": 10}) + self.assertEqual( + update_resource_mock.call_args.kwargs["api_version"], + "2026-09-15-preview", + ) + + @mock.patch("azext_foundry_cost_control.custom.core_deployment_create") + def test_deployment_create_delegates_without_cost_control_ids( + self, core_deployment_create_mock): + client = mock.Mock() + + result = deployment_create( + cmd=mock.Mock(), + client=client, + resource_group_name="test-rg", + account_name="test-account", + deployment_name="test-deployment", + model_format="OpenAI", + model_name="gpt-4.1", + model_version="2025-04-14", + ) + + self.assertIs(result, core_deployment_create_mock.return_value) + self.assertIs( + core_deployment_create_mock.call_args.kwargs["client"], + client, + ) + + @mock.patch("azext_foundry_cost_control.custom.update_resource") + @mock.patch("azext_foundry_cost_control.custom.show_resource") + @mock.patch( + "azext_foundry_cost_control.custom._deployment_resource_id", + return_value=DEPLOYMENT_ID, + ) + def test_deployment_update_preserves_existing_properties( + self, + _deployment_resource_id_mock, + show_resource_mock, + update_resource_mock): + show_resource_mock.return_value = GenericResource( + properties={ + "model": { + "format": "OpenAI", + "name": "gpt-4.1", + "version": "2025-04-14", + }, + "provisioningState": "Succeeded", + }, + sku={"name": "GlobalStandard", "capacity": 10}, + tags={"environment": "test"}, + ) + + deployment_update( + cmd=mock.Mock(), + resource_group_name="test-rg", + account_name="test-account", + deployment_name="test-deployment", + cost_control_ids=[COST_CONTROL_ID], + ) + + parameters = update_resource_mock.call_args.kwargs["parameters"] + self.assertEqual( + parameters.properties["costControlIds"], + [COST_CONTROL_ID], + ) + self.assertEqual(parameters.properties["model"]["name"], "gpt-4.1") + self.assertNotIn("provisioningState", parameters.properties) + self.assertEqual(parameters.tags, {"environment": "test"}) + + def test_deployment_rejects_more_than_one_cost_control(self): + with self.assertRaises(InvalidArgumentValueError): + deployment_create( + cmd=mock.Mock(), + client=mock.Mock(), + resource_group_name="test-rg", + account_name="test-account", + deployment_name="test-deployment", + model_format="OpenAI", + model_name="gpt-4.1", + model_version="2025-04-14", + cost_control_ids=[COST_CONTROL_ID, COST_CONTROL_ID], + ) diff --git a/src/foundry-cost-control/setup.cfg b/src/foundry-cost-control/setup.cfg new file mode 100644 index 00000000000..2fdd96e5d39 --- /dev/null +++ b/src/foundry-cost-control/setup.cfg @@ -0,0 +1 @@ +#setup.cfg \ No newline at end of file diff --git a/src/foundry-cost-control/setup.py b/src/foundry-cost-control/setup.py new file mode 100644 index 00000000000..e7a7e19c97e --- /dev/null +++ b/src/foundry-cost-control/setup.py @@ -0,0 +1,50 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from setuptools import setup, find_packages + + +# HISTORY.rst entry. +VERSION = '1.0.0b1' + +# The full list of classifiers is available at +# https://pypi.python.org/pypi?%3Aaction=list_classifiers +CLASSIFIERS = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', + 'License :: OSI Approved :: MIT License', +] + +DEPENDENCIES = [] + +with open('README.md', 'r', encoding='utf-8') as f: + README = f.read() +with open('HISTORY.rst', 'r', encoding='utf-8') as f: + HISTORY = f.read() + +setup( + name='foundry-cost-control', + version=VERSION, + description='Microsoft Azure Command-Line Tools -- Foundry Cost Control Extension.', + long_description=README + '\n\n' + HISTORY, + license='MIT', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/Azure/azure-cli-extensions/tree/main/src/foundry-cost-control', + classifiers=CLASSIFIERS, + packages=find_packages(exclude=["tests"]), + package_data={'azext_foundry_cost_control': ['azext_metadata.json']}, + install_requires=DEPENDENCIES +) diff --git a/src/service_name.json b/src/service_name.json index 42593e99f73..7790915814f 100644 --- a/src/service_name.json +++ b/src/service_name.json @@ -124,6 +124,11 @@ "AzureServiceName": "Azure Cloud HSM", "URL": "https://learn.microsoft.com/en-us/azure/cloud-hsm" }, + { + "Command": "az cognitiveservices", + "AzureServiceName": "Foundry", + "URL": "https://learn.microsoft.com/azure/foundry" + }, { "Command": "az communication", "AzureServiceName": "Communication Services",