Skip to content

Releases: Azure/typespec-azure

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

25 May 07:21
7181847

Choose a tag to compare

Features

  • #4480 Extend isExactName to additional SDK types whose names can be changed by @clientName: SdkClientType, SdkServiceMethodBase (and its derived method kinds), and SdkEnumValueType. Also fixed SdkClientType.name to strip the internal exact() marker.

Bug Fixes

  • #4477 Fix reorderParameters, addParameter, removeParameter, and replaceParameter so that decorators copied to cloned model properties and cloned operations are applied (by calling finishType after cloning). This fixes scenarios such as parameters with @typeChangedFrom under a @versioned service.
  • #4487 Fix example value matching for decimal and decimal128 typed properties. JSON number values in example files are now correctly recognized as matching decimal / decimal128 typed properties.
  • #4484 Fix example values being dropped on subtypes added via @hierarchyBuilding by propagating serialization options from the nearest ancestor to the newly added subtype

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

20 May 17:43
cb2e2c9

Choose a tag to compare

Bug Fixes

  • #4440 Fix @@usage and @@access augment decorators being silently dropped when targeting models from imported libraries (npm packages) whose namespaces are not user-defined. Explicitly-tagged models are now honored regardless of which namespace they live in.

@azure-tools/typespec-python@0.62.1

13 May 18:28
5d6a117

Choose a tag to compare

Bump dependencies

  • #4418 Bump @typespec/http-client-python to 0.29.1

typespec-azure@0.68.0

12 May 19:03
5f7f1ef

Choose a tag to compare

@azure-tools/typespec-autorest

Bug Fixes

  • #4397 Add an autorest emitter warning when multiple operations resolve to the same OpenAPI operationId, and report the warning on each conflicting operation.
  • #4322 Fix @armProviderNamespace to inject the canonical absolute ARM scope https://management.azure.com/.default as the default OAuth2 scope instead of the bare relative user_impersonation value. For backwards compatibility with existing ARM Swagger, the @azure-tools/typespec-autorest emitter now rewrites this scope back to user_impersonation when emitting OpenAPI v2 for namespaces decorated with @armProviderNamespace.
  • #4357 Fix crash in autorest emitter when no @service is declared but a spec references a model from a versioned namespace (e.g. CommonTypes.AzureEntityResource).
  • #4393 Emit intrinsic @TypeSpec.example(...) on model properties in the autorest OpenAPI2 emitter so property example values are preserved in generated definitions.

@azure-tools/typespec-azure-core

Features

  • #4144 Add no-route-parameter-name-mismatch linting rule that detects when two operation routes differ only by path parameter name.

Bug Fixes

  • #4394 Make @useFinalStateVia validation decorator-order independent for PUT operations.

@azure-tools/typespec-azure-portal-core

No changes, version bump only.

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

Features

  • #4185 Add ArmListBySubscriptionScope operation template for listing resources at the subscription scope with a flat path, useful for child resources that need a subscription-level list operation without parent path segments.
  • #4347 Add new version-progression linter rule that validates ARM service versions all use unique dates and are declared in strictly increasing chronological order. Two api-versions sharing the same YYYY-MM-DD date (for example, 2026-04-28 and 2026-04-28-preview) are not allowed.
  • #4379 Add new linter rule arm-no-path-casing-conflicts that flags ARM operation paths which differ only by character casing. The rule is enabled in the @azure-tools/typespec-azure-rulesets resource-manager ruleset.

Bug Fixes

  • #4322 Fix @armProviderNamespace to inject the canonical absolute ARM scope https://management.azure.com/.default as the default OAuth2 scope instead of the bare relative user_impersonation value. For backwards compatibility with existing ARM Swagger, the @azure-tools/typespec-autorest emitter now rewrites this scope back to user_impersonation when emitting OpenAPI v2 for namespaces decorated with @armProviderNamespace.
  • #4369 Fix doc comment typos and errors in ARM foundations library.
  • #4357 Fix AzureEntityResource emitting TrackedResource reference in OpenAPI. It now correctly references the AzureEntityResource definition in the ARM common-types schema.

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

Breaking Changes

  • #4358 When an operation's response declares multiple content types (e.g. Http.File<"image/png" | "image/jpeg">), the synthetic accept parameter is now generated as a single string constant whose value joins all response content types with , (structured content types such as JSON/XML/text-plain are listed first), instead of an enum. This avoids modeling such operations as content negotiation. Use @sharedRoute to split an operation if real content negotiation is required.

Features

  • #4378 Added exact() function for use with @clientName to preserve client names without language-specific casing transformations. When a name is marked with exact(), emitters should use it as-is. Also added isExactName boolean field to SDK type interfaces (SdkModelType, SdkEnumType, SdkUnionType, SdkModelPropertyTypeBase, etc.) so emitters can check whether to skip casing transformations.
  • #4332 Enhance @Azure.ClientGenerator.Core.Legacy.hierarchyBuilding to support arbitrary inheritance replacement. The decorator no longer requires the target to be a property-superset of the new base; properties contributed by removed intermediate parents are lifted onto the target so the SDK model preserves its observable property set.
  • #4274 Add serializationOptions to SdkBodyParameter and SdkHttpResponse/SdkHttpErrorResponse so emitters can determine the serialization format for request/response bodies regardless of whether the body type is a model or a basic type.
  • #4339 Add inconsistent-multiple-service-dependency warning that is reported when services merged into a single client (via autoMergeService) declare diverging @useDependency versions for the same shared library (e.g., ARM common-types). Aligning the versions avoids generating duplicated/diverged models in the SDK.

Bug Fixes

  • #4344 Fix wrong methodParameterSegments for op with @clientLocation and @override
  • #4365 Remove usage of node APIs for browser compatible ones
  • #4236 Types that are only used within external alternate types are no longer included in sdkPackage models, enums, or unions.
  • #4341 Fix wrong API version param judgement: a body model property whose name matches apiVersion/api-version is no longer incorrectly flagged as isApiVersionParam with a service-derived clientDefaultValue. Only operation parameters can be considered API version parameters.
  • #4391 Fix broken links to linter rule documentation pages from the Linter usage reference page.
  • #4386 Fix regression introduced in PR #4341: a server URL template parameter (declared in @server) named apiVersion/api-version with a plain string type in a versioned service is now correctly recognized as isApiVersionParam.
  • #4343 Fix @responseAsBool setting bodyType on HEAD operation HTTP responses

@azure-tools/typespec-azure-rulesets

Features

  • #4347 Add new version-progression linter rule that validates ARM service versions all use unique dates and are declared in strictly increasing chronological order. Two api-versions sharing the same YYYY-MM-DD date (for example, 2026-04-28 and 2026-04-28-preview) are not allowed.
  • #4379 Add new linter rule arm-no-path-casing-conflicts that flags ARM operation paths which differ only by character casing. The rule is enabled in the @azure-tools/typespec-azure-rulesets resource-manager ruleset.
  • #4144 Add no-route-parameter-name-mismatch linting rule that detects when two operation routes differ only by path parameter name.

@azure-tools/typespec-python@0.62.0

12 May 19:03
5f7f1ef

Choose a tag to compare

Features

  • #4263 Add @azure-tools/typespec-python to typespec-azure repo

Bug Fixes

  • #4305 Fix DEP0190 deprecation warning in Python emitter setup script

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

12 May 21:22
0f02931

Choose a tag to compare

Bug Fixes

  • Remove self import from common-types.tsp

@azure-tools/azure-http-specs@0.1.0-alpha.40

12 May 19:03
5f7f1ef

Choose a tag to compare

Features

  • #4323 Add @clientName csharp-scoped renames for the nested sub-clients of IndividuallyParentClient in the client-initialization/individually-parent spec. The original names (e.g. IndividuallyParentNestedWithParamAliasClient) combined with the deeply-nested test project path produced generated file paths exceeding the 260-character Windows path limit in downstream csharp emitters.
  • #4298 Add @clientName C#-scoped renames for Operations and SubNamespace in the multiple-services spec to avoid name collisions in C# codegen.
  • #4221 Add @clientName Java-scoped renames for Operations and SubNamespace in the multiple-services spec to avoid name collisions in Java codegen.
  • #4328 Add Python client namespace to response-as-bool spec
  • #4336 Add test for etags with Azure.Core.eTag definition and non-standard wire names
  • #4268 Add Spector specs for @responseAsBool and @clientDoc decorators

Bug Fixes

  • #4339 Fix client customization warning.
  • #4220 Remove "!javascript" scope from @@OverRide for GroupParameters.group
  • #4300 Fix client-default-value mock to always include client defaults in putModelProperty request body

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

29 Apr 04:10
c28b464

Choose a tag to compare

Bug Fixes

  • #4345 Fix wrong encode for bytes in HttpPart for multipart/form-data. The encode is now correctly bytes instead of base64.

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

23 Apr 03:22
3b35ef2

Choose a tag to compare

Bug Fixes

  • #4302 Fix wrong methodParameterSegments for op with @clientLocation and @override

@azure-tools/typespec-azure-core@0.67.1

22 Apr 04:07
9ea1a93

Choose a tag to compare

Bug Fixes

  • #4277 Allow @useFinalStateVia("original-uri") for long-running POST operations, even when there is no GET operation modeled at the POST url.