diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPool.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPool.tsp index 555896963075..400703fe285d 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPool.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPool.tsp @@ -48,9 +48,7 @@ interface AgentPools { */ @header ifNoneMatch?: string; - }, - LroHeaders = ArmLroLocationHeader & - Azure.Core.Foundations.RetryAfterHeader + } >; /** @@ -58,11 +56,13 @@ interface AgentPools { */ delete is ArmResourceDeleteWithoutOkAsync< AgentPool, + LroHeaders = ArmAsyncOperationHeaderWithLocation & + Azure.Core.Foundations.RetryAfterHeader, Parameters = { /** * ignore-pod-disruption-budget=true to delete those pods on a node without considering Pod Disruption Budget */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @query("ignore-pod-disruption-budget") `ignore-pod-disruption-budget`?: boolean; @@ -82,7 +82,7 @@ interface AgentPools { /** * Aborts the currently running operation on the agent pool. The Agent Pool will be moved to a Canceling state and eventually to a Canceled state when cancellation finishes. If the operation completes before cancellation can take place, a 409 error code is returned. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Keeping both 202 and 204 responses for passing the lintdiff validator. See https://github.com/Azure/azure-openapi-validator/issues/809" @action("abort") @summary("Aborts last operation running on agent pool.") abortLatestOperation is ArmResourceActionAsync< @@ -112,21 +112,21 @@ interface AgentPools { deleteMachines is ArmResourceActionAsyncBase< AgentPool, AgentPoolDeleteMachinesParameter, - ArmAcceptedLroResponse, + ArmAcceptedLroResponse, BaseParameters = Azure.ResourceManager.Foundations.DefaultBaseParameters >; /** * Upgrading the node image version of an agent pool applies the newest OS and runtime updates to the nodes. AKS provides one new image per week with the latest updates. For more details on node image versions, see: https://docs.microsoft.com/azure/aks/node-image-upgrade */ - #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" @summary("Upgrades the node image version of an agent pool to the latest.") upgradeNodeImageVersion is ArmResourceActionAsyncBase< AgentPool, void, { ...AcceptedResponse; - ...ArmAsyncOperationHeader; + ...ArmCombinedLroHeaders; ...Azure.Core.Foundations.RetryAfterHeader; @body diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPoolUpgradeProfile.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPoolUpgradeProfile.tsp index c2e753ef46fe..20c8cce3ab50 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPoolUpgradeProfile.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/AgentPoolUpgradeProfile.tsp @@ -54,7 +54,7 @@ interface AgentPoolUpgradeProfiles { /** * The list of available upgrade versions. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." model AgentPoolUpgradeProfileProperties { /** * The Kubernetes version (major.minor.patch). @@ -130,6 +130,5 @@ model AgentPoolRecentlyUsedVersion { /** * The timestamp when this version was last used. */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. timestamp?: utcDateTime; } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/CommonModels.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/CommonModels.tsp index 3c45f05f85ad..b73ea3e6aded 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/CommonModels.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/CommonModels.tsp @@ -15,6 +15,32 @@ using Versioning; namespace Microsoft.ContainerService; +/** + * Provides both Azure-AsyncOperation and Location headers with + * final-state-via set to azure-async-operation. + * Unlike ArmCombinedLroHeaders which places @finalLocation on Location + * (resulting in final-state-via: location), this model places @finalLocation + * on Azure-AsyncOperation so the emitter outputs final-state-via: azure-async-operation. + */ +model ArmAsyncOperationHeaderWithLocation< + StatusMonitor extends {} = ArmOperationStatus, + FinalResult extends {} | void = never, + PollingUrlValue extends string = ResourceLocation, + FinalUrlValue extends string = string +> { + /** A link to the status monitor */ + @Azure.Core.pollingLocation( + Azure.Core.StatusMonitorPollingOptions + ) + @Azure.Core.finalLocation(FinalResult) + @header("Azure-AsyncOperation") + azureAsyncOperation?: PollingUrlValue; + + /** The Location header contains the URL where the status of the long running operation can be checked. */ + @header("Location") + location?: FinalUrlValue; +} + /** * Different support tiers for AKS managed clusters */ @@ -1404,22 +1430,23 @@ union SnapshotType { /** * The type of identity used for the managed cluster. For more information see [use managed identities in AKS](https://docs.microsoft.com/azure/aks/use-managed-identity). */ -#suppress "@azure-tools/typespec-azure-core/no-enum" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -enum ResourceIdentityType { +union ResourceIdentityType { + string, + /** * Use an implicitly created system assigned managed identity to manage cluster resources. Master components in the control plane such as kube-controller-manager will use the system assigned managed identity to manipulate Azure resources. */ - SystemAssigned, + SystemAssigned: "SystemAssigned", /** * Use a user-specified identity to manage cluster resources. Master components in the control plane such as kube-controller-manager will use the specified user assigned managed identity to manipulate Azure resources. */ - UserAssigned, + UserAssigned: "UserAssigned", /** * Do not use a managed identity for the Managed Cluster, service principal will be used instead. */ - None, + None: "None", } /** @@ -1513,7 +1540,7 @@ model KubernetesVersion { /** * Patch versions of Kubernetes release */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." patchVersions?: Record; } @@ -1570,7 +1597,7 @@ model NodeImageVersion { /** * The SKU of a Managed Cluster. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterSKU { /** * The name of a managed cluster SKU. @@ -1622,13 +1649,13 @@ model ManagedClusterIdentity { /** * The delegated identity resources assigned to this managed cluster. This can only be set by another Azure Resource Provider, and managed cluster only accept one delegated identity resource. Internal use only. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." delegatedResources?: Record; /** * The user identity associated with the managed cluster. This identity will be used in control plane. Only one user assigned identity is allowed. The keys must be ARM resource IDs in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." userAssignedIdentities?: Record; } @@ -1654,7 +1681,7 @@ model ManagedClusterProperties { /** * The current provisioning state. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." @visibility(Lifecycle.Read) provisioningState?: string; @@ -1706,14 +1733,14 @@ model ManagedClusterProperties { /** * The FQDN of private cluster. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) privateFQDN?: string; /** * The special FQDN used by the Azure Portal to access the Managed Cluster. This FQDN is for use only by the Azure Portal and should not be used by other clients. The Azure Portal requires certain Cross-Origin Resource Sharing (CORS) headers to be sent in some responses, which Kubernetes APIServer doesn't handle by default. This special FQDN supports CORS, allowing the Azure Portal to function properly. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) azurePortalFQDN?: string; @@ -1741,7 +1768,7 @@ model ManagedClusterProperties { /** * The profile of managed cluster add-on. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." addonProfiles?: Record; /** @@ -1767,7 +1794,7 @@ model ManagedClusterProperties { /** * Whether to enable Kubernetes Role-Based Access Control. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" enableRBAC?: boolean; /** @@ -1814,7 +1841,7 @@ model ManagedClusterProperties { /** * The Resource ID of the disk encryption set to use for enabling encryption at rest. This is of the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/diskEncryptionSets/{encryptionSetName}' */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" diskEncryptionSetID?: Azure.Core.armResourceIdentifier<[ { type: "Microsoft.Compute/diskEncryptionSets"; @@ -1824,7 +1851,7 @@ model ManagedClusterProperties { /** * The user identity associated with the managed cluster. This identity will be used by the kubelet. Only one user assigned identity is allowed. The only accepted key is "kubeletidentity", with value of "resourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}". */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." identityProfile?: Record; /** @@ -1880,7 +1907,7 @@ model ManagedClusterProperties { /** * The resourceUID uniquely identifies ManagedClusters that reuse ARM ResourceIds (i.e: create, delete, create sequence) */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) resourceUID?: string; @@ -1968,7 +1995,7 @@ model ManagedClusterWindowsProfile { */ adminUsername: string; - #suppress "@azure-tools/typespec-azure-resource-manager/secret-prop" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret @doc("Specifies the password of the administrator account.

**Minimum-length:** 8 characters

**Max-length:** 123 characters

**Complexity requirements:** 3 out of 4 conditions below need to be fulfilled
Has lower characters
Has upper characters
Has a digit
Has a special character (Regex match [\\W_])

**Disallowed values:** \"abc@123\", \"P@$$w0rd\", \"P@ssw0rd\", \"P@ssword123\", \"Pa$$word\", \"pass@word1\", \"Password!\", \"Password1\", \"Password22\", \"iloveyou!\"") adminPassword?: string; @@ -1980,7 +2007,7 @@ model ManagedClusterWindowsProfile { /** * Whether to enable CSI proxy. For more details on CSI proxy, see the [CSI proxy GitHub repo](https://github.com/kubernetes-csi/csi-proxy). */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" enableCSIProxy?: boolean; /** @@ -2021,7 +2048,7 @@ model ManagedClusterServicePrincipalProfile { /** * The secret password associated with the service principal in plain text. */ - #suppress "@azure-tools/typespec-azure-resource-manager/secret-prop" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret secret?: string; } @@ -2037,7 +2064,7 @@ model ManagedClusterAddonProfile { /** * Key-value pairs for configuring an add-on. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." config?: Record; /** @@ -2050,8 +2077,8 @@ model ManagedClusterAddonProfile { /** * Information of user assigned identity used by this add-on. */ -#suppress "@azure-tools/typespec-azure-resource-manager/no-empty-model" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/no-empty-model" "Empty model is intentional for extensibility and matches existing API structure." +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "Inheritance pattern matches existing API structure and cannot be changed without breaking changes." model ManagedClusterAddonProfileIdentity extends UserAssignedIdentity {} /** @@ -2201,19 +2228,19 @@ model ManagedClusterPodIdentityException { /** * The pod labels to match. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." podLabels: Record; } /** * The OIDC issuer profile of the Managed Cluster. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterOIDCIssuerProfile { /** * The OIDC issuer url of the Managed Cluster. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) issuerURL?: string; @@ -2282,7 +2309,7 @@ model ContainerServiceNetworkProfile { /** * An IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @pattern("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$") dnsServiceIP?: string = "10.0.0.10"; @@ -2403,25 +2430,25 @@ model ManagedClusterLoadBalancerProfile { /** * Desired managed outbound IPs for the cluster load balancer. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" managedOutboundIPs?: ManagedClusterLoadBalancerProfileManagedOutboundIPs; /** * Desired outbound IP Prefix resources for the cluster load balancer. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" outboundIPPrefixes?: ManagedClusterLoadBalancerProfileOutboundIPPrefixes; /** * Desired outbound IP resources for the cluster load balancer. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" outboundIPs?: ManagedClusterLoadBalancerProfileOutboundIPs; /** * The effective outbound IP resources of the cluster load balancer. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) effectiveOutboundIPs?: ResourceReference[]; @@ -2459,7 +2486,7 @@ model ManagedClusterLoadBalancerProfile { /** * Desired managed outbound IPs for the cluster load balancer. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterLoadBalancerProfileManagedOutboundIPs { /** * The desired number of IPv4 outbound IPs created/managed by Azure for the cluster load balancer. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1. @@ -2471,7 +2498,7 @@ model ManagedClusterLoadBalancerProfileManagedOutboundIPs { /** * The desired number of IPv6 outbound IPs created/managed by Azure for the cluster load balancer. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 0 for single-stack and 1 for dual-stack. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @maxValue(100) @minValue(0) countIPv6?: int32 = 0; @@ -2484,7 +2511,7 @@ model ManagedClusterLoadBalancerProfileOutboundIPPrefixes { /** * A list of public IP prefix resources. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" publicIPPrefixes?: ResourceReference[]; } @@ -2501,30 +2528,30 @@ model ResourceReference { /** * Desired outbound IP resources for the cluster load balancer. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterLoadBalancerProfileOutboundIPs { /** * A list of public IP resources. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" publicIPs?: ResourceReference[]; } /** * Profile of the managed cluster NAT gateway. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterNATGatewayProfile { /** * Profile of the managed outbound IP resources of the cluster NAT gateway. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" managedOutboundIPProfile?: ManagedClusterManagedOutboundIPProfile; /** * The effective outbound IP resources of the cluster NAT gateway. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) effectiveOutboundIPs?: ResourceReference[]; @@ -2630,7 +2657,7 @@ model AdvancedNetworkingPerformance { /** * AADProfile specifies attributes for Azure Active Directory integration. For more details see [managed AAD on AKS](https://docs.microsoft.com/azure/aks/managed-aad). */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterAADProfile { /** * Whether to enable managed AAD. @@ -2640,37 +2667,37 @@ model ManagedClusterAADProfile { /** * Whether to enable Azure RBAC for Kubernetes authorization. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" enableAzureRBAC?: boolean; /** * The list of AAD group object IDs that will have admin role of the cluster. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" adminGroupObjectIDs?: string[]; /** * (DEPRECATED) The client AAD application ID. Learn more at https://aka.ms/aks/aad-legacy. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" clientAppID?: string; /** * (DEPRECATED) The server AAD application ID. Learn more at https://aka.ms/aks/aad-legacy. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" serverAppID?: string; /** * (DEPRECATED) The server AAD application secret. Learn more at https://aka.ms/aks/aad-legacy. */ - #suppress "@azure-tools/typespec-azure-resource-manager/secret-prop" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret serverAppSecret?: string; /** * The AAD tenant ID to use for authentication. If not specified, will use the tenant of the deployment subscription. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" tenantID?: string; } @@ -2686,7 +2713,7 @@ model ManagedClusterAutoUpgradeProfile { /** * Node OS Upgrade Channel. Manner in which the OS on your nodes is updated. The default is NodeImage. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" nodeOSUpgradeChannel?: NodeOSUpgradeChannel; } @@ -2723,28 +2750,28 @@ model ManagedClusterPropertiesAutoScalerProfile { /** * Detects similar node pools and balances the number of nodes between them. Valid values are 'true' and 'false' */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("balanceSimilarNodeGroups") `balance-similar-node-groups`?: string; /** * DaemonSet pods will be gracefully terminated from empty nodes. If set to true, all daemonset pods on empty nodes will be evicted before deletion of the node. If the daemonset pod cannot be evicted another node will be chosen for scaling. If set to false, the node will be deleted without ensuring that daemonset pods are deleted or evicted. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("daemonsetEvictionForEmptyNodes") `daemonset-eviction-for-empty-nodes`?: boolean; /** * DaemonSet pods will be gracefully terminated from non-empty nodes. If set to true, all daemonset pods on occupied nodes will be evicted before deletion of the node. If the daemonset pod cannot be evicted another node will be chosen for scaling. If set to false, the node will be deleted without ensuring that daemonset pods are deleted or evicted. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("daemonsetEvictionForOccupiedNodes") `daemonset-eviction-for-occupied-nodes`?: boolean; /** * Should CA ignore DaemonSet pods when calculating resource utilization for scaling down. If set to true, the resources used by daemonset will be taken into account when making scaling down decisions. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("ignoreDaemonsetsUtilization") `ignore-daemonsets-utilization`?: boolean; @@ -2756,105 +2783,105 @@ model ManagedClusterPropertiesAutoScalerProfile { /** * The maximum number of empty nodes that can be deleted at the same time. This must be a positive integer. The default is 10. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("maxEmptyBulkDelete") `max-empty-bulk-delete`?: string; /** * The maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node. The default is 600. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("maxGracefulTerminationSec") `max-graceful-termination-sec`?: string; /** * The maximum time the autoscaler waits for a node to be provisioned. The default is '15m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("maxNodeProvisionTime") `max-node-provision-time`?: string; /** * The maximum percentage of unready nodes in the cluster. After this percentage is exceeded, cluster autoscaler halts operations. The default is 45. The maximum is 100 and the minimum is 0. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("maxTotalUnreadyPercentage") `max-total-unready-percentage`?: string; /** * Ignore unscheduled pods before they're a certain age. For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. The default is '0s'. Values must be an integer followed by a unit ('s' for seconds, 'm' for minutes, 'h' for hours, etc). */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("newPodScaleUpDelay") `new-pod-scale-up-delay`?: string; /** * The number of allowed unready nodes, irrespective of max-total-unready-percentage. This must be an integer. The default is 3. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("okTotalUnreadyCount") `ok-total-unready-count`?: string; /** * How often cluster is reevaluated for scale up or down. The default is '10'. Values must be an integer number of seconds. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("scanInterval") `scan-interval`?: string; /** * How long after scale up that scale down evaluation resumes. The default is '10m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("scaleDownDelayAfterAdd") `scale-down-delay-after-add`?: string; /** * How long after node deletion that scale down evaluation resumes. The default is the scan-interval. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("scaleDownDelayAfterDelete") `scale-down-delay-after-delete`?: string; /** * How long after scale down failure that scale down evaluation resumes. The default is '3m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("scaleDownDelayAfterFailure") `scale-down-delay-after-failure`?: string; /** * How long a node should be unneeded before it is eligible for scale down. The default is '10m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("scaleDownUnneededTime") `scale-down-unneeded-time`?: string; /** * How long an unready node should be unneeded before it is eligible for scale down. The default is '20m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("scaleDownUnreadyTime") `scale-down-unready-time`?: string; /** * Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down. The default is '0.5'. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("scaleDownUtilizationThreshold") `scale-down-utilization-threshold`?: string; /** * If cluster autoscaler will skip deleting nodes with pods with local storage, for example, EmptyDir or HostPath. The default is true. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("skipNodesWithLocalStorage") `skip-nodes-with-local-storage`?: string; /** * If cluster autoscaler will skip deleting nodes with pods from kube-system (except for DaemonSet or mirror pods). The default is true. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @clientName("skipNodesWithSystemPods") `skip-nodes-with-system-pods`?: string; } @@ -2862,12 +2889,12 @@ model ManagedClusterPropertiesAutoScalerProfile { /** * Access profile for managed cluster API server. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterAPIServerAccessProfile { /** * The IP ranges authorized to access the Kubernetes API server. IP ranges are specified in CIDR format, e.g. 137.117.106.88/29. This feature is not compatible with clusters that use Public IP Per Node, or clusters that are using a Basic Load Balancer. For more information see [API server authorized IP ranges](https://docs.microsoft.com/azure/aks/api-server-authorized-ip-ranges). */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" authorizedIPRanges?: string[]; /** @@ -2878,13 +2905,13 @@ model ManagedClusterAPIServerAccessProfile { /** * The private DNS zone mode for the cluster. The default is System. For more details see [configure private DNS zone](https://docs.microsoft.com/azure/aks/private-clusters#configure-private-dns-zone). Allowed values are 'system' and 'none'. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" privateDNSZone?: string; /** * Whether to create additional public FQDN for private cluster or not. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" enablePrivateClusterPublicFQDN?: boolean; /** @@ -2917,10 +2944,8 @@ model PrivateLinkResource { id?: string; /** - * The name of the private link resource. + * The name of the private link resource. See [naming rules](https://aka.ms/search-naming-rules) for more details. */ - #suppress "@azure-tools/typespec-azure-core/no-openapi" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - @OpenAPI.externalDocs("https://aka.ms/search-naming-rules") name?: string; /** @@ -2941,7 +2966,7 @@ model PrivateLinkResource { /** * The private link service ID of the resource, this field is exposed only to NRP internally. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) privateLinkServiceID?: Azure.Core.armResourceIdentifier; } @@ -2949,7 +2974,7 @@ model PrivateLinkResource { /** * Cluster HTTP proxy configuration. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterHTTPProxyConfig { /** * The HTTP proxy server endpoint to use. @@ -3030,7 +3055,7 @@ model ManagedClusterSecurityProfile { /** * A list of up to 10 base64 encoded CAs that will be added to the trust store on all nodes in the cluster. For more information see [Custom CA Trust Certificates](https://learn.microsoft.com/en-us/azure/aks/custom-certificate-authority). */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @maxItems(10) @minItems(0) customCATrustCertificates?: bytes[]; @@ -3201,13 +3226,13 @@ model ManagedClusterStorageProfile { /** * AzureDisk CSI Driver settings for the storage profile. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" diskCSIDriver?: ManagedClusterStorageProfileDiskCSIDriver; /** * AzureFile CSI Driver settings for the storage profile. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" fileCSIDriver?: ManagedClusterStorageProfileFileCSIDriver; /** @@ -3218,14 +3243,14 @@ model ManagedClusterStorageProfile { /** * AzureBlob CSI Driver settings for the storage profile. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" blobCSIDriver?: ManagedClusterStorageProfileBlobCSIDriver; } /** * AzureDisk CSI Driver settings for the storage profile. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterStorageProfileDiskCSIDriver { /** * Whether to enable AzureDisk CSI Driver. The default value is true. @@ -3242,7 +3267,7 @@ model ManagedClusterStorageProfileDiskCSIDriver { /** * AzureFile CSI Driver settings for the storage profile. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterStorageProfileFileCSIDriver { /** * Whether to enable AzureFile CSI Driver. The default value is true. @@ -3263,7 +3288,7 @@ model ManagedClusterStorageProfileSnapshotController { /** * AzureBlob CSI Driver settings for the storage profile. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterStorageProfileBlobCSIDriver { /** * Whether to enable AzureBlob CSI Driver. The default value is false. @@ -3283,7 +3308,7 @@ model ManagedClusterIngressProfile { /** * Settings for the managed Gateway API installation */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) gatewayAPI?: ManagedClusterIngressProfileGatewayConfiguration; @@ -3775,7 +3800,7 @@ model ManagedClusterBootstrapProfile { /** * When enabling the operator, a set of AKS managed CRDs and controllers will be installed in the cluster. The operator automates the deployment of OSS models for inference and/or training purposes. It provides a set of preset models and enables distributed inference against them. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" model ManagedClusterAIToolchainOperatorProfile { /** * Whether to enable AI toolchain operator to the cluster. Indicates if AI toolchain operator enabled or not. @@ -3877,7 +3902,7 @@ model Component { /** * Managed cluster Access Profile. */ -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "Inheritance pattern matches existing API structure and cannot be changed without breaking changes." model ManagedClusterAccessProfile extends Azure.ResourceManager.CommonTypes.TrackedResource { /** @@ -3928,12 +3953,12 @@ model CredentialResult { /** * Tags object for patch operations. */ -#suppress "@azure-tools/typespec-azure-resource-manager/patch-envelope" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/patch-envelope" "AKS RP only supports updating tags via PATCH; envelope properties like identity and sku are not yet supported in the PATCH endpoint." model TagsObject { /** * Resource tags. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." tags?: Record; } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/GuardrailsAvailableVersion.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/GuardrailsAvailableVersion.tsp index fa7b2a6303ea..d658bffd5c9a 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/GuardrailsAvailableVersion.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/GuardrailsAvailableVersion.tsp @@ -87,7 +87,7 @@ union GuardrailsSupport { /** * Whether the version is default or not and support info. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." @added(Versions.v2025_10_02_preview) model GuardrailsAvailableVersionsProperties { /** Whether this is the default version. */ diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/JWTAuthenticator.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/JWTAuthenticator.tsp index b5190537a90e..fbf074445bbb 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/JWTAuthenticator.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/JWTAuthenticator.tsp @@ -18,7 +18,7 @@ namespace Microsoft.ContainerService; /** * Configuration for JWT authenticator in the managed cluster. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @parentResource(ManagedCluster) @added(Versions.v2025_10_02_preview) model JWTAuthenticator @@ -41,7 +41,7 @@ model JWTAuthenticator "The JWT authenticator to create or update." ); -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @armResourceOperations @added(Versions.v2025_10_02_preview) interface JWTAuthenticators { @@ -53,7 +53,11 @@ interface JWTAuthenticators { /** * Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to apply the settings. */ - createOrUpdate is ArmResourceCreateOrReplaceAsync; + createOrUpdate is ArmResourceCreateOrReplaceAsync< + JWTAuthenticator, + LroHeaders = ArmLroLocationHeader & + Azure.Core.Foundations.RetryAfterHeader + >; /** * Deletes a JWT authenticator and updates the managed cluster to apply the settings. @@ -115,7 +119,7 @@ union JWTAuthenticatorProvisioningState { /** * The properties of JWTAuthenticator. For details on how to configure the properties of a JWT authenticator, please refer to the Kubernetes documentation: https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-authentication-configuration. Please note that not all fields available in the Kubernetes documentation are supported by AKS. For troubleshooting, please see https://aka.ms/aks-external-issuers-docs. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) model JWTAuthenticatorProperties { /** @@ -150,7 +154,7 @@ model JWTAuthenticatorProperties { /** * The OIDC issuer details for JWTAuthenticator. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) model JWTAuthenticatorIssuer { /** @@ -168,7 +172,7 @@ model JWTAuthenticatorIssuer { /** * The validation rule for JWTAuthenticator. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) model JWTAuthenticatorValidationRule { /** @@ -185,7 +189,7 @@ model JWTAuthenticatorValidationRule { /** * The claim mappings for JWTAuthenticator. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) model JWTAuthenticatorClaimMappings { /** @@ -213,7 +217,7 @@ model JWTAuthenticatorClaimMappings { /** * The claim mapping expression for JWTAuthenticator. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) model JWTAuthenticatorClaimMappingExpression { /** @@ -225,13 +229,13 @@ model JWTAuthenticatorClaimMappingExpression { /** * The extra claim mapping expression for JWTAuthenticator. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) model JWTAuthenticatorExtraClaimMappingExpression { /** * The key of the extra attribute. */ - #suppress "@azure-tools/typespec-azure-resource-manager/secret-prop" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/secret-prop" "The 'key' property refers to the key of an extra claim mapping attribute, not a secret or credential." key: string; /** diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LoadBalancer.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LoadBalancer.tsp index d1355afc3325..11adbc32d636 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LoadBalancer.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LoadBalancer.tsp @@ -56,7 +56,7 @@ interface LoadBalancers { */ delete is ArmResourceDeleteWithoutOkAsync< LoadBalancer, - LroHeaders = ArmCombinedLroHeaders & + LroHeaders = ArmAsyncOperationHeaderWithLocation & Azure.Core.Foundations.RetryAfterHeader >; @@ -129,7 +129,7 @@ model LoadBalancerProperties { /** * The current provisioning state. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." @visibility(Lifecycle.Read) provisioningState?: string; } @@ -159,7 +159,7 @@ model LabelSelectorRequirement { /** * key is the label key that the selector applies to. */ - #suppress "@azure-tools/typespec-azure-resource-manager/secret-prop" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/secret-prop" "The 'key' property refers to a Kubernetes label selector key, not a secret or credential." key?: string; /** diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LocationRoutes.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LocationRoutes.tsp index c68eb1c98734..48963087c61d 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LocationRoutes.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/LocationRoutes.tsp @@ -14,7 +14,7 @@ namespace Microsoft.ContainerService; // Location-scoped operation groups // ============================================================================= -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "Adding @armResourceOperations would inject an undesired resource-derived tag on these location-scoped operations." interface ManagedClustersOperationGroup { /** * Contains extra metadata on the version, including supported patch versions, capabilities, available upgrades, and details on preview status of the version @@ -31,7 +31,7 @@ interface ManagedClustersOperationGroup { >; } -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "Adding @armResourceOperations would inject an undesired resource-derived tag on these location-scoped operations." interface TrustedAccessRolesOperationGroup { /** * List supported trusted access roles. @@ -48,7 +48,7 @@ interface TrustedAccessRolesOperationGroup { >; } -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "For backward compatibility" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "Adding @armResourceOperations would inject an undesired resource-derived tag on these location-scoped operations." @added(Versions.v2025_10_02_preview) interface ContainerServiceOperationGroup { /** diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Machine.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Machine.tsp index a1ae8c2e3eac..b8d5b19738f5 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Machine.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Machine.tsp @@ -30,7 +30,7 @@ model Machine is Azure.ResourceManager.ProxyResource { /** * The Availability zone in which machine is located. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "Property intentionally at envelope level for this resource. This is a published API pattern that cannot be changed without breaking existing clients." @visibility(Lifecycle.Read) zones?: string[]; } @@ -41,7 +41,7 @@ model Machine is Azure.ResourceManager.ProxyResource { "The machine to create or update." ); -#suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" "Machine resources do not support individual DELETE. Instead, machines are deleted in bulk via AgentPools_DeleteMachines, or automatically when node pools scale down." @armResourceOperations interface Machines { /** @@ -123,7 +123,7 @@ model MachineSecurityProfile { /** * vTPM is a Trusted Launch feature for configuring a dedicated secure vault for keys and measurements held locally on the node. For more details, see aka.ms/aks/trustedlaunch. If not specified, the default is false. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" enableVTPM?: boolean; /** @@ -176,13 +176,13 @@ model MachineOSProfile { /** * Specifies the OS SKU used by the agent pool. If not specified, the default is Ubuntu if OSType=Linux or Windows2019 if OSType=Windows. And the default Windows OSSKU will be changed to Windows2022 after Windows2019 is deprecated. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" osSKU?: OSSKU; /** * OS Disk Size in GB to be used to specify the disk size for every machine in the master/agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @maxValue(2048) @minValue(0) osDiskSizeGB?: int32; @@ -195,7 +195,7 @@ model MachineOSProfile { /** * Whether to use a FIPS-enabled OS. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" enableFIPS?: boolean; /** @@ -212,7 +212,7 @@ model MachineOSProfile { /** * The Linux machine's specific profile. */ -#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) model MachineOSProfileLinuxProfile { /** @@ -234,7 +234,7 @@ model MachineKubernetesProfile { /** * The node labels on the machine. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." nodeLabels?: Record; /** @@ -330,7 +330,7 @@ model MachineStatus { /** * The properties of the machine */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." model MachineProperties { /** * network properties of the machine @@ -397,7 +397,7 @@ model MachineProperties { /** * The current deployment or provisioning state. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." @added(Versions.v2025_10_02_preview) @visibility(Lifecycle.Read) provisioningState?: string; @@ -405,7 +405,7 @@ model MachineProperties { /** * The tags to be persisted on the machine. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." @added(Versions.v2025_10_02_preview) tags?: Record; @@ -438,7 +438,7 @@ model MachineNetworkProperties { /** * The ID of the subnet which node and optionally pods will join on startup. If this is not specified, a VNET and subnet will be generated and used. If no podSubnetID is specified, this applies to nodes and pods, otherwise it applies to just nodes. This is of the form: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName} */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) vnetSubnetID?: Azure.Core.armResourceIdentifier<[ { @@ -449,7 +449,7 @@ model MachineNetworkProperties { /** * The ID of the subnet which pods will join when launched. If omitted, pod IPs are statically assigned on the node subnet (see vnetSubnetID for more details). This is of the form: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName} */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) podSubnetID?: Azure.Core.armResourceIdentifier<[ { @@ -460,14 +460,14 @@ model MachineNetworkProperties { /** * Whether the machine is allocated its own public IP. Some scenarios may require the machine to receive their own dedicated public IP addresses. A common scenario is for gaming workloads, where a console needs to make a direct connection to a cloud virtual machine to minimize hops. The default is false. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) enableNodePublicIP?: boolean; /** * The public IP prefix ID which VM node should use IPs from. This is of the form: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIPPrefixName} */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) nodePublicIPPrefixID?: Azure.Core.armResourceIdentifier<[ { @@ -478,7 +478,7 @@ model MachineNetworkProperties { /** * IPTags of instance-level public IPs. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) @identifiers(#[]) nodePublicIPTags?: IPTag[]; diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MaintenanceConfiguration.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MaintenanceConfiguration.tsp index ce557381432f..8befa4a9dc06 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MaintenanceConfiguration.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MaintenanceConfiguration.tsp @@ -128,7 +128,7 @@ union Type { /** * Properties used to configure planned maintenance for a Managed Cluster. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." model MaintenanceConfigurationProperties { /** * Time slots during the week when planned maintenance is allowed to proceed. If two array entries specify the same day of the week, the applied configuration is the union of times in both entries. @@ -177,13 +177,11 @@ model TimeSpan { /** * The start of a time span */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. start?: utcDateTime; /** * The end of a time span */ - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. end?: utcDateTime; } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedCluster.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedCluster.tsp index a78863c8c10a..3eb5d9a2645d 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedCluster.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedCluster.tsp @@ -123,14 +123,12 @@ model CommandResultProperties { * The time when the command started. */ @visibility(Lifecycle.Read) - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. startedAt?: utcDateTime; /** * The time when the command finished. */ @visibility(Lifecycle.Read) - // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. finishedAt?: utcDateTime; /** @@ -236,25 +234,25 @@ model ManagedCluster /** * The managed cluster SKU. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "This field is allowed at the top-level as per the ARM resource specification." sku?: ManagedClusterSKU; /** * The extended location of the Virtual Machine. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "Property intentionally at envelope level for this resource. This is a published API pattern that cannot be changed without breaking existing clients." extendedLocation?: ExtendedLocation; /** * The identity of the managed cluster, if configured. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "This field is allowed at the top-level as per the ARM resource specification." identity?: ManagedClusterIdentity; /** * This is primarily used to expose different UI experiences in the portal for different kinds */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "This field is allowed at the top-level as per the ARM resource specification." kind?: string; } @@ -284,9 +282,7 @@ interface ManagedClusters { */ @header ifNoneMatch?: string; - }, - LroHeaders = ArmLroLocationHeader & - Azure.Core.Foundations.RetryAfterHeader + } >; /** @@ -297,6 +293,8 @@ interface ManagedClusters { updateTags is ArmCustomPatchAsync< ManagedCluster, PatchModel = TagsObject, + LroHeaders = ArmAsyncOperationHeaderWithLocation & + Azure.Core.Foundations.RetryAfterHeader, Parameters = { /** * The request should only proceed if an entity matches this string. @@ -312,6 +310,8 @@ interface ManagedClusters { @tag("ManagedClusters") delete is ArmResourceDeleteWithoutOkAsync< ManagedCluster, + LroHeaders = ArmAsyncOperationHeaderWithLocation & + Azure.Core.Foundations.RetryAfterHeader, Parameters = { /** * The request should only proceed if an entity matches this string. @@ -322,7 +322,7 @@ interface ManagedClusters { /** * ignore-pod-disruption-budget=true to delete those pods on a node without considering Pod Disruption Budget */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @added(Versions.v2025_10_02_preview) @query("ignore-pod-disruption-budget") `ignore-pod-disruption-budget`?: boolean; @@ -375,7 +375,7 @@ interface ManagedClusters { /** * server fqdn type for credentials to be returned */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @query("server-fqdn") `server-fqdn`?: string; } @@ -394,7 +394,7 @@ interface ManagedClusters { /** * server fqdn type for credentials to be returned */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @query("server-fqdn") `server-fqdn`?: string; @@ -419,7 +419,7 @@ interface ManagedClusters { /** * server fqdn type for credentials to be returned */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @query("server-fqdn") `server-fqdn`?: string; } @@ -442,7 +442,7 @@ interface ManagedClusters { * **WARNING**: This API will be deprecated. Please see [AKS-managed Azure Active Directory integration](https://aka.ms/aks-managed-aad) to update your cluster with AKS-managed Azure AD. */ #deprecated "This API will be deprecated. Please see [AKS-managed Azure Active Directory integration](https://aka.ms/aks-managed-aad) to update your cluster with AKS-managed Azure AD." - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @tag("ManagedClusters") @summary("Reset the AAD Profile of a managed cluster.") resetAADProfile is ArmResourceActionAsync< @@ -456,7 +456,7 @@ interface ManagedClusters { /** * See [Certificate rotation](https://docs.microsoft.com/azure/aks/certificate-rotation) for more details about rotating managed cluster certificates. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Keeping both 202 and 204 responses for passing the lintdiff validator. See https://github.com/Azure/azure-openapi-validator/issues/809" @tag("ManagedClusters") @summary("Rotates the certificates of a managed cluster.") rotateClusterCertificates is ArmResourceActionAsync< @@ -470,7 +470,7 @@ interface ManagedClusters { /** * Aborts the currently running operation on the managed cluster. The Managed Cluster will be moved to a Canceling state and eventually to a Canceled state when cancellation finishes. If the operation completes before cancellation can take place, a 409 error code is returned. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Keeping both 202 and 204 responses for passing the lintdiff validator. See https://github.com/Azure/azure-openapi-validator/issues/809" @tag("ManagedClusters") @action("abort") @summary("Aborts last operation running on managed cluster.") @@ -485,7 +485,7 @@ interface ManagedClusters { /** * Rotates the service account signing keys of a managed cluster. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Keeping both 202 and 204 responses for passing the lintdiff validator. See https://github.com/Azure/azure-openapi-validator/issues/809" @tag("ManagedClusters") rotateServiceAccountSigningKeys is ArmResourceActionAsync< ManagedCluster, @@ -498,7 +498,7 @@ interface ManagedClusters { /** * This can only be performed on Azure Virtual Machine Scale set backed clusters. Stopping a cluster stops the control plane and agent nodes entirely, while maintaining all object and cluster state. A cluster does not accrue charges while it is stopped. See [stopping a cluster](https://docs.microsoft.com/azure/aks/start-stop-cluster) for more details about stopping a cluster. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Keeping both 202 and 204 responses for passing the lintdiff validator. See https://github.com/Azure/azure-openapi-validator/issues/809" @tag("ManagedClusters") @summary("Stops a Managed Cluster") stop is ArmResourceActionAsync< @@ -512,7 +512,7 @@ interface ManagedClusters { /** * See [starting a cluster](https://docs.microsoft.com/azure/aks/start-stop-cluster) for more details about starting a cluster. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Keeping both 202 and 204 responses for passing the lintdiff validator. See https://github.com/Azure/azure-openapi-validator/issues/809" @tag("ManagedClusters") @summary("Starts a previously stopped Managed Cluster") start is ArmResourceActionAsync< @@ -575,7 +575,7 @@ interface ManagedClusters { rebalanceLoadBalancers is ArmResourceActionAsyncBase< ManagedCluster, RebalanceLoadBalancersRequestBody, - ArmAcceptedLroResponse, BaseParameters = Azure.ResourceManager.Foundations.DefaultBaseParameters >; diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterSnapshot.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterSnapshot.tsp index 4f8adb50bc8e..4b8beb863c8b 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterSnapshot.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterSnapshot.tsp @@ -86,7 +86,7 @@ interface ManagedClusterSnapshots { /** * Properties for a managed cluster snapshot. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." @added(Versions.v2025_10_02_preview) model ManagedClusterSnapshotProperties { /** diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterUpgradeProfile.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterUpgradeProfile.tsp index 258154596c8b..966479f09926 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterUpgradeProfile.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedClusterUpgradeProfile.tsp @@ -54,7 +54,7 @@ interface ManagedClusterUpgradeProfiles { /** * Control plane and agent pool upgrade profiles. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." model ManagedClusterUpgradeProfileProperties { /** * The list of available upgrade versions for the control plane. diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedNamespace.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedNamespace.tsp index 36ee05553fde..8c580dda309d 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedNamespace.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/ManagedNamespace.tsp @@ -17,7 +17,7 @@ namespace Microsoft.ContainerService; /** * Namespace managed by ARM. */ -#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Legacy usage pattern is required for backward compatibility with existing API versions." @parentResource(ManagedCluster) model ManagedNamespace is Azure.ResourceManager.Legacy.TrackedResourceWithOptionalLocation { @@ -64,7 +64,7 @@ interface ManagedNamespaces { */ delete is ArmResourceDeleteWithoutOkAsync< ManagedNamespace, - LroHeaders = ArmCombinedLroHeaders & + LroHeaders = ArmAsyncOperationHeaderWithLocation & Azure.Core.Foundations.RetryAfterHeader >; @@ -186,13 +186,13 @@ model NamespaceProperties { /** * The labels of managed namespace. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." labels?: Record; /** * The annotations of managed namespace. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Record<> is used for dynamic key-value structures where keys cannot be pre-defined (e.g., tags, addon names, version numbers)." annotations?: Record; /** diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshMembership.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshMembership.tsp index aa8d4cbecd84..d52c53859615 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshMembership.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshMembership.tsp @@ -32,7 +32,7 @@ model MeshMembership /** * The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is managed by another Azure resource. If this is present, complete mode deployment will not delete the resource if it is removed from the template since it is managed by another resource. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "This field is allowed at the top-level as per the ARM resource specification." @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) managedBy?: string; @@ -60,16 +60,16 @@ interface MeshMemberships { /** * Creates or updates the mesh membership of a managed cluster. */ - createOrUpdate is ArmResourceCreateOrReplaceAsync< - MeshMembership, - LroHeaders = ArmLroLocationHeader & - Azure.Core.Foundations.RetryAfterHeader - >; + createOrUpdate is ArmResourceCreateOrReplaceAsync; /** * Deletes the mesh membership of a managed cluster. */ - delete is ArmResourceDeleteWithoutOkAsync; + delete is ArmResourceDeleteWithoutOkAsync< + MeshMembership, + LroHeaders = ArmAsyncOperationHeaderWithLocation & + Azure.Core.Foundations.RetryAfterHeader + >; /** * Lists mesh memberships in a managed cluster. @@ -136,7 +136,7 @@ model MeshMembershipProperties { /** * The ARM resource id for the managed mesh member. This is of the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/applinks/{appLinkName}/appLinkMembers/{appLinkMemberName}'. Visit https://aka.ms/applink for more information. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" managedMeshID: Azure.Core.armResourceIdentifier<[ { type: "Microsoft.AppLink/applinks"; diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshRevisionProfile.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshRevisionProfile.tsp index 0a206ff44c24..548e069f9069 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshRevisionProfile.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshRevisionProfile.tsp @@ -68,7 +68,7 @@ model MeshRevisionProfileList is Azure.Core.Page; /** * Mesh revision profile properties for a mesh */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." model MeshRevisionProfileProperties { /** Available mesh revisions. */ @identifiers(#[]) diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshUpgradeProfile.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshUpgradeProfile.tsp index 9ba5a5cf6ccc..41dbee216c02 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshUpgradeProfile.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/MeshUpgradeProfile.tsp @@ -65,7 +65,7 @@ model MeshUpgradeProfileList is Azure.Core.Page; /** * Mesh upgrade profile properties for a major.minor release. */ -#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" -#suppress "@azure-tools/typespec-azure-resource-manager/no-empty-model" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "Inheritance pattern matches existing API structure and cannot be changed without breaking changes." +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." +#suppress "@azure-tools/typespec-azure-resource-manager/no-empty-model" "Empty model is intentional for extensibility and matches existing API structure." model MeshUpgradeProfileProperties extends MeshRevision {} diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/PrivateEndpointConnection.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/PrivateEndpointConnection.tsp index dff57e0c7dce..e2d9d9839838 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/PrivateEndpointConnection.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/PrivateEndpointConnection.tsp @@ -54,12 +54,7 @@ interface PrivateEndpointConnections { /** * Deletes a private endpoint connection. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" - delete is ArmResourceDeleteWithoutOkAsync< - PrivateEndpointConnection, - Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse - >; + delete is ArmResourceDeleteSync; /** * To learn more about private clusters, see: https://docs.microsoft.com/azure/aks/private-clusters diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/SafeguardsAvailableVersion.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/SafeguardsAvailableVersion.tsp index f5eb92aa6bbf..d8086e895e47 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/SafeguardsAvailableVersion.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/SafeguardsAvailableVersion.tsp @@ -87,7 +87,7 @@ union SafeguardsSupport { /** * Whether the version is default or not and support info. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." @added(Versions.v2025_10_02_preview) model SafeguardsAvailableVersionsProperties { /** Whether this is the default version. */ diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Snapshot.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Snapshot.tsp index 95e9b9dff39b..5f9893b0a2c3 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Snapshot.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/Snapshot.tsp @@ -77,7 +77,7 @@ interface Snapshots { /** * Properties used to configure a node pool snapshot. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "AKS uses custom provisioning states beyond standard ARM states. Using string type for forward compatibility." model SnapshotProperties { /** * CreationData to be used to specify the source agent pool resource ID to create this snapshot. @@ -122,7 +122,7 @@ model SnapshotProperties { /** * Whether to use a FIPS-enabled OS. */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) enableFIPS?: boolean; } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/TrustedAccessRoleBinding.tsp b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/TrustedAccessRoleBinding.tsp index 7495ad8ffe63..98c4f2e021f9 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/TrustedAccessRoleBinding.tsp +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/TrustedAccessRoleBinding.tsp @@ -55,17 +55,17 @@ interface TrustedAccessRoleBindings { * Create or update a trusted access role binding */ @tag("TrustedAccess") - createOrUpdate is ArmResourceCreateOrReplaceAsync< - TrustedAccessRoleBinding, - LroHeaders = ArmLroLocationHeader & - Azure.Core.Foundations.RetryAfterHeader - >; + createOrUpdate is ArmResourceCreateOrReplaceAsync; /** * Delete a trusted access role binding. */ @tag("TrustedAccess") - delete is ArmResourceDeleteWithoutOkAsync; + delete is ArmResourceDeleteWithoutOkAsync< + TrustedAccessRoleBinding, + LroHeaders = ArmAsyncOperationHeaderWithLocation & + Azure.Core.Foundations.RetryAfterHeader + >; /** * List trusted access role bindings. @@ -181,7 +181,7 @@ model TrustedAccessRoleRule { /** * List of allowed nonResourceURLs */ - #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/casing-style" "Property name maintained for backward compatibility with existing API versions" @visibility(Lifecycle.Read) nonResourceURLs?: string[]; } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-01/PrivateEndpointConnectionsDelete.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-01/PrivateEndpointConnectionsDelete.json index c7d3ebfab457..3cceb9ee2d57 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-01/PrivateEndpointConnectionsDelete.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-01/PrivateEndpointConnectionsDelete.json @@ -8,11 +8,6 @@ }, "responses": { "200": {}, - "202": { - "headers": { - "location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operationresults/00000000-0000-0000-0000-000000000000?api-version=2025-10-01" - } - }, "204": {} }, "operationId": "PrivateEndpointConnections_Delete", diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-02-preview/PrivateEndpointConnectionsDelete.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-02-preview/PrivateEndpointConnectionsDelete.json index 929cf68ab5a3..ababce1b55b5 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-02-preview/PrivateEndpointConnectionsDelete.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/examples/2025-10-02-preview/PrivateEndpointConnectionsDelete.json @@ -8,11 +8,6 @@ }, "responses": { "200": {}, - "202": { - "headers": { - "location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operationresults/00000000-0000-0000-0000-000000000000?api-version=2025-10-01" - } - }, "204": {} }, "operationId": "PrivateEndpointConnections_Delete", diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/examples/PrivateEndpointConnectionsDelete.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/examples/PrivateEndpointConnectionsDelete.json index 929cf68ab5a3..ababce1b55b5 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/examples/PrivateEndpointConnectionsDelete.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/examples/PrivateEndpointConnectionsDelete.json @@ -8,11 +8,6 @@ }, "responses": { "200": {}, - "202": { - "headers": { - "location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operationresults/00000000-0000-0000-0000-000000000000?api-version=2025-10-01" - } - }, "204": {} }, "operationId": "PrivateEndpointConnections_Delete", diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/managedClusters.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/managedClusters.json index d106e5ab17ed..69d416c56124 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/managedClusters.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/preview/2025-10-02-preview/managedClusters.json @@ -799,9 +799,9 @@ "$ref": "#/definitions/ManagedCluster" }, "headers": { - "Location": { + "Azure-AsyncOperation": { "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." + "description": "A link to the status monitor" }, "Retry-After": { "type": "integer", @@ -925,7 +925,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/ManagedCluster" }, "x-ms-long-running-operation": true @@ -984,6 +984,11 @@ "202": { "description": "Resource update request accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -1008,7 +1013,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/ManagedCluster" }, "x-ms-long-running-operation": true @@ -1059,6 +1064,11 @@ "202": { "description": "Resource deletion accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -1086,7 +1096,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -1404,9 +1414,9 @@ "$ref": "#/definitions/AgentPool" }, "headers": { - "Location": { + "Azure-AsyncOperation": { "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." + "description": "A link to the status monitor" }, "Retry-After": { "type": "integer", @@ -1491,7 +1501,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/AgentPool" }, "x-ms-long-running-operation": true @@ -1552,6 +1562,11 @@ "202": { "description": "Resource deletion accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -1582,7 +1597,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -1795,6 +1810,11 @@ "202": { "description": "Resource operation accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -1819,7 +1839,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -2116,8 +2136,13 @@ "headers": { "Azure-AsyncOperation": { "type": "string", + "format": "uri", "description": "A link to the status monitor" }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, "Retry-After": { "type": "integer", "format": "int32", @@ -2138,7 +2163,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" + "final-state-via": "location" }, "x-ms-long-running-operation": true } @@ -2770,9 +2795,9 @@ "$ref": "#/definitions/JWTAuthenticator" }, "headers": { - "Azure-AsyncOperation": { + "Location": { "type": "string", - "description": "A link to the status monitor" + "description": "The Location header contains the URL where the status of the long running operation can be checked." }, "Retry-After": { "type": "integer", @@ -2794,7 +2819,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation", + "final-state-via": "location", "final-state-schema": "#/definitions/JWTAuthenticator" }, "x-ms-long-running-operation": true @@ -3327,7 +3352,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -3900,7 +3925,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -4133,9 +4158,9 @@ "$ref": "#/definitions/MeshMembership" }, "headers": { - "Location": { + "Azure-AsyncOperation": { "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." + "description": "A link to the status monitor" }, "Retry-After": { "type": "integer", @@ -4157,7 +4182,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/MeshMembership" }, "x-ms-long-running-operation": true @@ -4203,6 +4228,11 @@ "202": { "description": "Resource deletion accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -4230,7 +4260,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -4664,20 +4694,6 @@ "200": { "description": "Resource deleted successfully." }, - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, "204": { "description": "Resource does not exist." }, @@ -4692,11 +4708,7 @@ "Delete Private Endpoint Connection": { "$ref": "./examples/PrivateEndpointConnectionsDelete.json" } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true + } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/privateLinkResources": { @@ -4819,7 +4831,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -5537,9 +5549,9 @@ "$ref": "#/definitions/TrustedAccessRoleBinding" }, "headers": { - "Location": { + "Azure-AsyncOperation": { "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." + "description": "A link to the status monitor" }, "Retry-After": { "type": "integer", @@ -5561,7 +5573,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/TrustedAccessRoleBinding" }, "x-ms-long-running-operation": true @@ -5607,6 +5619,11 @@ "202": { "description": "Resource deletion accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -5634,7 +5651,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -9770,7 +9787,9 @@ }, "serverAppSecret": { "type": "string", - "description": "(DEPRECATED) The server AAD application secret. Learn more at https://aka.ms/aks/aad-legacy." + "format": "password", + "description": "(DEPRECATED) The server AAD application secret. Learn more at https://aka.ms/aks/aad-legacy.", + "x-ms-secret": true }, "tenantID": { "type": "string", @@ -11826,7 +11845,9 @@ }, "secret": { "type": "string", - "description": "The secret password associated with the service principal in plain text." + "format": "password", + "description": "The secret password associated with the service principal in plain text.", + "x-ms-secret": true } }, "required": [ @@ -12048,7 +12069,9 @@ }, "adminPassword": { "type": "string", - "description": "Specifies the password of the administrator account.

**Minimum-length:** 8 characters

**Max-length:** 123 characters

**Complexity requirements:** 3 out of 4 conditions below need to be fulfilled
Has lower characters
Has upper characters
Has a digit
Has a special character (Regex match [\\W_])

**Disallowed values:** \"abc@123\", \"P@$$w0rd\", \"P@ssw0rd\", \"P@ssword123\", \"Pa$$word\", \"pass@word1\", \"Password!\", \"Password1\", \"Password22\", \"iloveyou!\"" + "format": "password", + "description": "Specifies the password of the administrator account.

**Minimum-length:** 8 characters

**Max-length:** 123 characters

**Complexity requirements:** 3 out of 4 conditions below need to be fulfilled
Has lower characters
Has upper characters
Has a digit
Has a special character (Regex match [\\W_])

**Disallowed values:** \"abc@123\", \"P@$$w0rd\", \"P@ssw0rd\", \"P@ssword123\", \"Pa$$word\", \"pass@word1\", \"Password!\", \"Password1\", \"Password22\", \"iloveyou!\"", + "x-ms-secret": true }, "licenseType": { "$ref": "#/definitions/LicenseType", @@ -13466,10 +13489,7 @@ }, "name": { "type": "string", - "description": "The name of the private link resource.", - "externalDocs": { - "url": "https://aka.ms/search-naming-rules" - } + "description": "The name of the private link resource. See [naming rules](https://aka.ms/search-naming-rules) for more details." }, "type": { "type": "string", @@ -13648,7 +13668,7 @@ ], "x-ms-enum": { "name": "ResourceIdentityType", - "modelAsString": false, + "modelAsString": true, "values": [ { "name": "SystemAssigned", diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/examples/PrivateEndpointConnectionsDelete.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/examples/PrivateEndpointConnectionsDelete.json index c7d3ebfab457..3cceb9ee2d57 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/examples/PrivateEndpointConnectionsDelete.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/examples/PrivateEndpointConnectionsDelete.json @@ -8,11 +8,6 @@ }, "responses": { "200": {}, - "202": { - "headers": { - "location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerService/locations/eastus/operationresults/00000000-0000-0000-0000-000000000000?api-version=2025-10-01" - } - }, "204": {} }, "operationId": "PrivateEndpointConnections_Delete", diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/managedClusters.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/managedClusters.json index 9890c51c5aee..5185f0a7ee38 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/managedClusters.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/aks/stable/2025-10-01/managedClusters.json @@ -515,9 +515,9 @@ "$ref": "#/definitions/ManagedCluster" }, "headers": { - "Location": { + "Azure-AsyncOperation": { "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." + "description": "A link to the status monitor" }, "Retry-After": { "type": "integer", @@ -620,7 +620,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/ManagedCluster" }, "x-ms-long-running-operation": true @@ -679,6 +679,11 @@ "202": { "description": "Resource update request accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -703,7 +708,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/ManagedCluster" }, "x-ms-long-running-operation": true @@ -747,6 +752,11 @@ "202": { "description": "Resource deletion accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -774,7 +784,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -1092,9 +1102,9 @@ "$ref": "#/definitions/AgentPool" }, "headers": { - "Location": { + "Azure-AsyncOperation": { "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." + "description": "A link to the status monitor" }, "Retry-After": { "type": "integer", @@ -1176,7 +1186,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/AgentPool" }, "x-ms-long-running-operation": true @@ -1237,6 +1247,11 @@ "202": { "description": "Resource deletion accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -1264,7 +1279,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -1400,6 +1415,11 @@ "202": { "description": "Resource operation accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -1424,7 +1444,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -1609,8 +1629,13 @@ "headers": { "Azure-AsyncOperation": { "type": "string", + "format": "uri", "description": "A link to the status monitor" }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, "Retry-After": { "type": "integer", "format": "int32", @@ -1631,7 +1656,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" + "final-state-via": "location" }, "x-ms-long-running-operation": true } @@ -2576,7 +2601,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -3017,20 +3042,6 @@ "200": { "description": "Resource deleted successfully." }, - "202": { - "description": "Resource deletion accepted.", - "headers": { - "Location": { - "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." - }, - "Retry-After": { - "type": "integer", - "format": "int32", - "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." - } - } - }, "204": { "description": "Resource does not exist." }, @@ -3045,11 +3056,7 @@ "Delete Private Endpoint Connection": { "$ref": "./examples/PrivateEndpointConnectionsDelete.json" } - }, - "x-ms-long-running-operation-options": { - "final-state-via": "location" - }, - "x-ms-long-running-operation": true + } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/privateLinkResources": { @@ -3815,9 +3822,9 @@ "$ref": "#/definitions/TrustedAccessRoleBinding" }, "headers": { - "Location": { + "Azure-AsyncOperation": { "type": "string", - "description": "The Location header contains the URL where the status of the long running operation can be checked." + "description": "A link to the status monitor" }, "Retry-After": { "type": "integer", @@ -3839,7 +3846,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location", + "final-state-via": "azure-async-operation", "final-state-schema": "#/definitions/TrustedAccessRoleBinding" }, "x-ms-long-running-operation": true @@ -3885,6 +3892,11 @@ "202": { "description": "Resource deletion accepted.", "headers": { + "Azure-AsyncOperation": { + "type": "string", + "format": "uri", + "description": "A link to the status monitor" + }, "Location": { "type": "string", "description": "The Location header contains the URL where the status of the long running operation can be checked." @@ -3912,7 +3924,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -6380,7 +6392,9 @@ }, "serverAppSecret": { "type": "string", - "description": "(DEPRECATED) The server AAD application secret. Learn more at https://aka.ms/aks/aad-legacy." + "format": "password", + "description": "(DEPRECATED) The server AAD application secret. Learn more at https://aka.ms/aks/aad-legacy.", + "x-ms-secret": true }, "tenantID": { "type": "string", @@ -8090,7 +8104,9 @@ }, "secret": { "type": "string", - "description": "The secret password associated with the service principal in plain text." + "format": "password", + "description": "The secret password associated with the service principal in plain text.", + "x-ms-secret": true } }, "required": [ @@ -8231,7 +8247,9 @@ }, "adminPassword": { "type": "string", - "description": "Specifies the password of the administrator account.

**Minimum-length:** 8 characters

**Max-length:** 123 characters

**Complexity requirements:** 3 out of 4 conditions below need to be fulfilled
Has lower characters
Has upper characters
Has a digit
Has a special character (Regex match [\\W_])

**Disallowed values:** \"abc@123\", \"P@$$w0rd\", \"P@ssw0rd\", \"P@ssword123\", \"Pa$$word\", \"pass@word1\", \"Password!\", \"Password1\", \"Password22\", \"iloveyou!\"" + "format": "password", + "description": "Specifies the password of the administrator account.

**Minimum-length:** 8 characters

**Max-length:** 123 characters

**Complexity requirements:** 3 out of 4 conditions below need to be fulfilled
Has lower characters
Has upper characters
Has a digit
Has a special character (Regex match [\\W_])

**Disallowed values:** \"abc@123\", \"P@$$w0rd\", \"P@ssw0rd\", \"P@ssword123\", \"Pa$$word\", \"pass@word1\", \"Password!\", \"Password1\", \"Password22\", \"iloveyou!\"", + "x-ms-secret": true }, "licenseType": { "$ref": "#/definitions/LicenseType", @@ -9254,10 +9272,7 @@ }, "name": { "type": "string", - "description": "The name of the private link resource.", - "externalDocs": { - "url": "https://aka.ms/search-naming-rules" - } + "description": "The name of the private link resource. See [naming rules](https://aka.ms/search-naming-rules) for more details." }, "type": { "type": "string", @@ -9393,7 +9408,7 @@ ], "x-ms-enum": { "name": "ResourceIdentityType", - "modelAsString": false, + "modelAsString": true, "values": [ { "name": "SystemAssigned",