---
title: 0.63.0
---

import { LinkCard } from "@astrojs/starlight/components";

<LinkCard
  title="TypeSpec Core 1.7"
  description="See changes to the TypeSpec language and core libraries"
  href="https://typespec.io/docs/release-notes/release-2025-12-09"
/>

# 0.63.0

## Breaking Changes

### @azure-tools/typespec-autorest

- [#3522](https://github.com/Azure/typespec-azure/pull/3522) - Remove deprecated `arm-resource-flattening` option

  ```diff lang=yaml title=tspconfig.yaml
  options:
    @azure-tools/typespec-autorest:
  -   arm-resource-flattening: true
  ```

  ```diff lang=tsp title=MyResource.tsp
  +@@Azure.ClientGenerator.Core.Legacy.flattenProperty(MyResource.properties, "autorest");
  ```

### @azure-tools/typespec-azure-resource-manager

- [#3522](https://github.com/Azure/typespec-azure/pull/3522) - Remove Private decorator `@Azure.ResourceManager.Private.conditionalClientFlatten`

  ```diff lang=tsp
  @Azure.ResourceManager.Private.conditionalClientFlatten
  ```

  ```diff lang=tsp title=MyResource.tsp
  +@Azure.ClientGenerator.Core.Legacy.flattenProperty
  ```

### @azure-tools/typespec-client-generator-core

- [#3493](https://github.com/Azure/typespec-azure/pull/3493) Add `optional` property to `SdkMethodResponse` to distinguish responses without body from nullable body types.
- [#3495](https://github.com/Azure/typespec-azure/pull/3495) Filter read-only parameters from `SdkServiceMethod` parameters. Read-only parameters (those with `@visibility(Lifecycle.Read))` are now correctly excluded from method signatures since they cannot be set by the user.

## Features

### @azure-tools/typespec-azure-core

- [#3475](https://github.com/Azure/typespec-azure/pull/3475) Add new `no-case-mismatch` rule checking for types with names only differing by case

### @azure-tools/typespec-azure-resource-manager

- [#3572](https://github.com/Azure/typespec-azure/pull/3572) Remove single service restriction for ARM specs

### @azure-tools/typespec-client-generator-core

- [#3583](https://github.com/Azure/typespec-azure/pull/3583) Support array encode on model property.
- [#3494](https://github.com/Azure/typespec-azure/pull/3494) Add `methodParameterSegments` property to replace `correspondingMethodParams` with complete path segments.
- [#3596](https://github.com/Azure/typespec-azure/pull/3596) Extend `@scope` decorator usage to `ModelProperty` targets.
- [#3496](https://github.com/Azure/typespec-azure/pull/3496) Support `@convenientAPI` and `@protocolAPI` decorators at namespace/interface level to enable decorator inheritance for all contained operations with explicit override support at the operation level.
- [#3460](https://github.com/Azure/typespec-azure/pull/3460) Add support to define one client from multiple services. Api versions for services will rest on the subclient

## Bug Fixes

### @azure-tools/typespec-autorest

- [#3613](https://github.com/Azure/typespec-azure/pull/3613) Deduplicate authentication schemes with same name
- [#3558](https://github.com/Azure/typespec-azure/pull/3558) Respect `@externalDocs` on properties
- [#3602](https://github.com/Azure/typespec-azure/pull/3602) Fix constraints not applied on nullable properties
- [#3602](https://github.com/Azure/typespec-azure/pull/3602) Fix `x-ms-enum.name` not being set on nullable enum properties with default

### @azure-tools/typespec-azure-core

- [#3529](https://github.com/Azure/typespec-azure/pull/3529) Fix `no-legacy-usage` linting rule to check for model is, spread and augment decorators
- [#3604](https://github.com/Azure/typespec-azure/pull/3604) Add pagination decorators to query parameter models: `@pageSize` to `MaxPageSizeQueryParameter.maxpagesize` and `@offset` to `SkipQueryParameter.skip`
- [#3483](https://github.com/Azure/typespec-azure/pull/3483) Add new `no-unnamed-union` rule to prevent usage of unnamed unions in Azure

### @azure-tools/typespec-client-generator-core

- [#3498](https://github.com/Azure/typespec-azure/pull/3498) Fix incorrect usage flags being set on types when `@alternateType` is applied to operation parameters. When a parameter has `@alternateType`, the original type should not receive usage flags since it's being replaced by the alternate type. This fix ensures the usage value correctly reflects that the original type is not used (Usage = 0/None).
