Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ interface Connectors {
/**
* Update a Storage Connector.
*/
update is ArmResourcePatchAsync<Connector, StorageConnectorProperties>;
update is ArmCustomPatchAsync<Connector, PatchModel = ConnectorUpdate>;

/**
* Delete a Storage Connector.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ interface DataShares {
/**
* Update a Storage DataShare.
*/
update is ArmResourcePatchAsync<DataShare, StorageDataShareProperties>;
update is ArmCustomPatchAsync<DataShare, PatchModel = DataShareUpdate>;

/**
* Delete a Storage DataShare.
Expand Down
41 changes: 31 additions & 10 deletions specification/storage/Storage.Management/back-compatible.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,11 @@ using Microsoft.Storage;
);
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(BlobServiceProperties.properties);
@@clientName(BlobServiceProperties.properties, "BlobServiceProperties");
@@clientName(
BlobServiceProperties.properties,
"BlobServiceProperties",
"!javascript"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion [TSP — Consider adding a block comment explaining the !javascript scope pattern]

This PR adds "!javascript" to 9 @@clientName calls in this file (lines 199, 209, 224, 232, 243, 250, 275, 313, 325, 332) for the same reason: the JavaScript SDK already shipped these property names and renaming them would break existing callers. Adding a single block comment before the first such occurrence would document the convention once, instead of requiring readers to infer the pattern from 9 nearly-identical changes.

Classification: [NEW] — these scope qualifiers were added in this PR.

Fix (optional): Add a comment above this line:

+// The JS SDK (@azure/arm-storage) already shipped the property renames below under the original names.
+// The "!javascript" scope ensures the renames apply to all other languages but leave the JS names unchanged.
 @@clientName(
   BlobServiceProperties.properties,
   "BlobServiceProperties",
   "!javascript"
 );```<!-- posted-by: arm-api-reviewer-agent -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion — Add a block comment explaining the "!javascript" scope pattern

This PR introduces nine @@clientName(..., "!javascript") overrides, but there is no comment explaining what the scope filter does or why it is applied here. Readers unfamiliar with the @azure-tools/typespec-client-generator-core scoping feature will not understand the intent.

Suggested comment to add above the first occurrence (or near the top of the file):

ypespec // The "!javascript" scope excludes the JavaScript/TypeScript emitter from the // @@clientName rename below, preserving the original auto-generated name for // the JS SDK to maintain back-compatibility with existing callers.

);

@@clientName(BlobContainers.create::parameters.resource, "blobContainer");
@@clientName(BlobContainers.update::parameters.properties, "blobContainer");
Expand All @@ -202,7 +206,7 @@ using Microsoft.Storage;

#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(BlobContainer.properties);
@@clientName(BlobContainer.properties, "ContainerProperties");
@@clientName(BlobContainer.properties, "ContainerProperties", "!javascript");

@@clientName(ContainerProperties.immutabilityPolicy, "ImmutabilityPolicy");
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
Expand All @@ -214,28 +218,36 @@ using Microsoft.Storage;
);
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(FileServiceProperties.properties);
@@clientName(FileServiceProperties.properties, "FileServiceProperties");
@@clientName(
FileServiceProperties.properties,
"FileServiceProperties",
"!javascript"
);

@@clientName(FileShares.create::parameters.resource, "fileShare");
@@clientName(FileShares.update::parameters.properties, "fileShare");
@@clientName(FileShares.restore::parameters.body, "deletedShare");
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(FileShare.properties);
@@clientName(FileShare.properties, "FileShareProperties");
@@clientName(FileShare.properties, "FileShareProperties", "!javascript");

@@clientName(
QueueServices.setServiceProperties::parameters.resource,
"parameters"
);
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(QueueServiceProperties.properties);
@@clientName(QueueServiceProperties.properties, "QueueServiceProperties");
@@clientName(
QueueServiceProperties.properties,
"QueueServiceProperties",
"!javascript"
);

@@clientName(StorageQueues.create::parameters.resource, "queue");
@@clientName(StorageQueues.update::parameters.properties, "queue");
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(StorageQueue.properties);
@@clientName(StorageQueue.properties, "QueueProperties");
@@clientName(StorageQueue.properties, "QueueProperties", "!javascript");

@@clientName(StorageAccounts.create::parameters.resource, "parameters");
@@clientName(StorageAccounts.update::parameters.properties, "parameters");
Expand All @@ -259,7 +271,8 @@ using Microsoft.Storage;
@@flattenProperty(StorageAccountMigration.properties);
@@clientName(
StorageAccountMigration.properties,
"StorageAccountMigrationDetails"
"StorageAccountMigrationDetails",
"!javascript"
);

@@clientName(
Expand Down Expand Up @@ -294,21 +307,29 @@ using Microsoft.Storage;
@@clientName(EncryptionScopes.patch::parameters.properties, "encryptionScope");
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(EncryptionScope.properties);
@@clientName(EncryptionScope.properties, "EncryptionScopeProperties");
@@clientName(
EncryptionScope.properties,
"EncryptionScopeProperties",
"!javascript"
);

@@clientName(
TableServices.setServiceProperties::parameters.resource,
"parameters"
);
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(TableServiceProperties.properties);
@@clientName(TableServiceProperties.properties, "TableServiceProperties");
@@clientName(
TableServiceProperties.properties,
"TableServiceProperties",
"!javascript"
);

@@clientName(Tables.create::parameters.resource, "parameters");
@@clientName(Tables.update::parameters.properties, "parameters");
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(Table.properties);
@@clientName(Table.properties, "TableProperties");
@@clientName(Table.properties, "TableProperties", "!javascript");
#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(NetworkSecurityPerimeterConfiguration.properties);

Expand Down
136 changes: 133 additions & 3 deletions specification/storage/Storage.Management/models.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -6345,6 +6345,66 @@ alias ETagHeader = {
eTag: string;
};

/**
* A Connector is a tracked ARM resource modeled as a sub-resource of a Storage Account.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 🟡 Warning [TSP — Misleading docstring on PATCH request body model]

The docstring says:```typespec
/**

  • A Connector is a tracked ARM resource modeled as a sub-resource of a Storage Account.
    */
    model ConnectorUpdate extends TrackedResourceUpdate { ... }```But ConnectorUpdate is the PATCH request body — not a tracked ARM resource. This wording was copy-pasted from the `Connector` tracked resource model. The incorrect description leaks into the generated SDK XML/JSDoc/PyDoc as misleading API documentation.

Classification: [NEW]ConnectorUpdate was added in this PR.

Fix:```diff
-/**

    • A Connector is a tracked ARM resource modeled as a sub-resource of a Storage Account.
  • /
    +/
    *
    • The updatable properties of a Storage Connector. Used as the body of the Update (PATCH) operation.
  • */```

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 🟡 Warning — Misleading doc-comment on ConnectorUpdate

The doc-comment says "The resource model definition for an Azure Resource Manager tracked top level resource…" — that is the boilerplate for a tracked ARM resource, but ConnectorUpdate is the PATCH request body (it only carries tags and properties). A reader scanning the generated SDK docs will think this is a full resource type.

Suggested fix: Replace the auto-generated tracked-resource blurb with something accurate, e.g.:

ypespec /** Request body for a PATCH update to a StorageConnector resource. */

*/
#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "To match existing API shape"
@added(Versions.v2025_08_01)
model ConnectorUpdate extends TrackedResourceUpdate {
/**
* The properties of the Storage Connector.
*/
properties?: StorageConnectorPropertiesUpdate;
}

/**
* The storage connector properties
*/
@added(Versions.v2025_08_01)
model StorageConnectorPropertiesUpdate {
/**
* State - Active or Inactive. Whether or not the Storage Connector should start as active (default: Active)
* (While set to false on the Storage Connector, all data plane requests using this Storage Connector fail, and this Storage Connector is not billed if it would be otherwise.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion [TSP — Unbalanced parenthesis in property description]

The description opens a parenthesis but never closes it:

/**
 * State - Active or Inactive. Whether or not the Storage Connector should start as active (default: Active)
 * (While set to false on the Storage Connector, all data plane requests using this Storage Connector fail, and this Storage Connector is not billed if it would be otherwise.
 */```The same issue exists in the corresponding `StorageConnectorProperties.state` (pre-existing); this PR carried it forward into the new `StorageConnectorPropertiesUpdate`.

**Classification:** `[NEW]` for `StorageConnectorPropertiesUpdate` — this model was added in this PR. The same issue is `[EXISTING]` in `StorageConnectorProperties` (pre-existing).

**Fix (optional):**```diff
-   * (While set to false on the Storage Connector, all data plane requests using this Storage Connector fail, and this Storage Connector is not billed if it would be otherwise.
+   * (While set to false on the Storage Connector, all data plane requests using this Storage Connector fail, and this Storage Connector is not billed if it would be otherwise.)
```<!-- posted-by: arm-api-reviewer-agent -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion — Unbalanced parenthesis in state description (pre-existing, carried into new model)

The description for state reads: "The state of the storage connector (either Active or Inactive" — the closing parenthesis ) is missing.

Suggested fix:
ypespec /** The state of the storage connector (either Active or Inactive). */

This is a pre-existing issue in StorageConnectorProperties that has been copied into the new StorageConnectorPropertiesUpdate model; worth fixing in both places.

*/
state?: StorageConnectorState = StorageConnectorState.Active;

/**
* Arbitrary description of this Storage Connector. Max 250 characters.
*/
@maxLength(250)
description?: string;

/**
* Test connection to backing data source before creating the storage connector.
*/
@visibility(Lifecycle.Create, Lifecycle.Update)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion [TSP — Unreachable Lifecycle.Create visibility on PATCH-only model]

@visibility(Lifecycle.Create, Lifecycle.Update)
testConnection?: boolean = false;```This decorator is on a property of `StorageConnectorPropertiesUpdate`, which is **only used as the `PatchModel` of `ArmCustomPatchAsync`**. That means this model never appears in a Create body`Lifecycle.Create` is unreachable here. This appears to be a copy-paste from the corresponding property in `StorageConnectorProperties` (where Create + Update visibility is appropriate).

**Classification:** `[NEW]``StorageConnectorPropertiesUpdate` was added in this PR.

**Fix (optional):** Drop the decorator entirely (the property is visible in all contexts by default, which is fine for a PATCH-only model) or narrow to `@visibility(Lifecycle.Update)` for documentation clarity:
```diff
-  @visibility(Lifecycle.Create, Lifecycle.Update)
-  testConnection?: boolean = false;
+  testConnection?: boolean = false;```<!-- posted-by: arm-api-reviewer-agent -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion — Dead Lifecycle.Create visibility on testConnection

testConnection is defined inside StorageConnectorPropertiesUpdate, which is the PATCH-only request body. The visibility is set to @visibility(Lifecycle.Create, Lifecycle.Update), but Lifecycle.Create is unreachable here — a PATCH body is never used in a PUT/create operation.

Consider using @visibility(Lifecycle.Update) only, or simply omitting the decorator (the default for a PATCH-body property already scopes to update).

testConnection?: boolean = false;

/**
* Information about how to communicate with and authenticate to the backing data store.
*/
source?: StorageConnectorSourceUpdate;
}

/** The storage connector backing data source information */
@added(Versions.v2025_08_01)
@discriminator("type")
model StorageConnectorSourceUpdate {
/** Type of the Storage Connector. Not mutable once the Storage Connector is created." */
type: StorageConnectorSourceType;
}

/** The managed identity auth properties for dataShare connection. */
@added(Versions.v2025_08_01)
model ManagedIdentityAuthPropertiesUpdate
extends StorageConnectorAuthPropertiesUpdate {
/** Discriminator value for ManagedIdentity */
type: StorageConnectorAuthType.ManagedIdentity;

/** ARM ResourceId of the managed identity that should be used to authenticate to the backing data source. */
identityResourceId?: string;
}

/**
* The storage connector properties
*/
Expand Down Expand Up @@ -6419,7 +6479,6 @@ model DataShareSource extends StorageConnectorSource {
/**
* The type for data share source
*/
@visibility(Lifecycle.Read)
type: StorageConnectorSourceType.DataShare;

/**
Expand All @@ -6434,6 +6493,24 @@ model DataShareSource extends StorageConnectorSource {
authProperties: StorageConnectorAuthProperties;
}

/** The properties of data share source */
@added(Versions.v2025_08_01)
model DataShareSourceUpdate extends StorageConnectorSourceUpdate {
/** Discriminator value for DataShare */
type: StorageConnectorSourceType.DataShare;

/** Details for how to authenticate to the backing data store. */
authProperties?: StorageConnectorAuthPropertiesUpdate;
}

/** The authentication properties of the backing data source */
@added(Versions.v2025_08_01)
@discriminator("type")
model StorageConnectorAuthPropertiesUpdate {
/** Type of the authentication properties. Controls the type of the authProperties object */
type: StorageConnectorAuthType;
}

/**
* The connection properties of the backing data source
*/
Expand All @@ -6454,7 +6531,6 @@ model DataShareConnection extends StorageConnectorConnection {
/**
* The type for data share connection
*/
@visibility(Lifecycle.Read)
type: StorageConnectorConnectionType.DataShare;

/**
Expand Down Expand Up @@ -6484,7 +6560,6 @@ model ManagedIdentityAuthProperties extends StorageConnectorAuthProperties {
/**
* The type of managed identity auth
*/
@visibility(Lifecycle.Read)
type: StorageConnectorAuthType.ManagedIdentity;

/**
Expand Down Expand Up @@ -6581,6 +6656,61 @@ model StorageDataShareProperties {
provisioningState?: NativeDataSharingProvisioningState;
}

/**
* A DataShare is a tracked ARM resource modeled as a sub-resource of a Storage Account.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 🟡 Warning [TSP — Misleading docstring on PATCH request body model]

Same issue as ConnectorUpdate: this docstring says:```typespec
/**

  • A DataShare is a tracked ARM resource modeled as a sub-resource of a Storage Account.
    */
    model DataShareUpdate extends TrackedResourceUpdate { ... }```But DataShareUpdate is the PATCH request body, not a tracked ARM resource. Copy-pasted from the `DataShare` tracked resource.

Classification: [NEW]DataShareUpdate was added in this PR.

Fix:```diff
-/**

    • A DataShare is a tracked ARM resource modeled as a sub-resource of a Storage Account.
  • /
    +/
    *
    • The updatable properties of a Storage DataShare. Used as the body of the Update (PATCH) operation.
  • */```

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 🟡 Warning — Misleading doc-comment on DataShareUpdate

Same issue as ConnectorUpdate above: the boilerplate says "tracked top level resource" but this model is the PATCH body for a DataShare resource. Please replace with an accurate description, e.g.:

ypespec /** Request body for a PATCH update to a StorageDataShare resource. */

*/
#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "To match existing API shape"
@added(Versions.v2025_08_01)
model DataShareUpdate extends TrackedResourceUpdate {
/**
* The properties of the Storage DataShare.
*/
properties?: StorageDataSharePropertiesUpdate;
}

/**
* The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 🟡 Warning [TSP — Local model shadows Azure.ResourceManager.CommonTypes.TrackedResourceUpdate + misleading description]

Two issues with this model:

1. Naming collision / shadowing. The local model is named TrackedResourceUpdate, which is the same simple name as the built-in Azure.ResourceManager.CommonTypes.TrackedResourceUpdate. Inside this TypeSpec project any future reference to the unqualified name TrackedResourceUpdate will silently resolve to this local definition instead of the common-type. This is a footgun for future maintainers who may expect to reference the standard library model.

2. Misleading description. The docstring says "has 'tags' and a 'location'" but this model only adds tags. location is not settable via PATCH — it comes from the parent Azure.ResourceManager.CommonTypes.Resource and should be treated as read-only in update payloads.

Classification: [NEW]TrackedResourceUpdate was added in this PR.

Fix:

  1. Rename the model to avoid the shadowing (e.g., StorageTrackedResourcePatch or StorageTrackedResourceUpdate), update the two callers (ConnectorUpdate extends ... and DataShareUpdate extends ...), and coordinate Go/JS/Python SDK breaking-change approvals for the definition rename.
    If renaming is not desired due to additional SDK churn, add an inline comment explicitly noting the intentional shadowing so future maintainers don't accidentally unqualify a reference expecting the CommonTypes version.

  2. Fix the description:

-/**
- * The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'
- */
+/**
+ * The patchable subset of a tracked ARM resource (— only resource tags). Used as a base for resource Update (PATCH) payloads.
+ */```<!-- posted-by: arm-api-reviewer-agent -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 🟡 Warning — Misleading doc-comment and potential naming collision on TrackedResourceUpdate

Two issues:

  1. Inaccurate description. The comment says "has a 'tags' and a 'location' property", but the model only has tags — there is no location property in a PATCH body (changing location on a tracked resource is not supported by ARM).

  2. Naming collision risk. Azure.ResourceManager.CommonTypes already exports a type named TrackedResourceUpdate. Although the two definitions are currently shape-identical (tags: Record<string> + allOf to the base Resource), having a local type with the same name as an ARM common type can cause confusion for future maintainers and may silently shadow the common type if import order changes.

Suggested fixes:

  • Correct the description to mention only tags.
  • Consider a more specific name (e.g., StorageTrackedResourceUpdate) to avoid the naming overlap, or explicitly alias the common type instead.

*/
#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "To match existing API shape"
@added(Versions.v2025_08_01)
model TrackedResourceUpdate extends Azure.ResourceManager.CommonTypes.Resource {
/**
* Resource tags.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "To match existing API shape."
tags?: Record<string>;
}

/**
* The storage datashare properties
*/
@added(Versions.v2025_08_01)
model StorageDataSharePropertiesUpdate {
/**
* Arbitrary description of this Data Share. Max 250 characters.
*/
@maxLength(250)
description?: string;

/**
* List of access policies that specify the permission allowed to a managed identity.
* For Create - This property is required and cannot be null. If no access policies are provided at creation time, specify an empty array.
* For Update - This property is optional. If set to null or not passed, the existing access policies are left unchanged.
* If provided with a non-null value, the existing access policies are replaced with the specified list.
*/
@identifiers(#[])
accessPolicies?: StorageDataShareAccessPolicy[];

/**
* List of assets that specify the properties of the shared resources.
* For Create - This property is required and cannot be null. If no assets are provided at creation time, specify an empty array.
* For Update - This property is optional. If set to null or not passed, the existing assets are left unchanged.
* If provided with a non-null value, the existing assets are replaced with the specified list.
*/
@identifiers(#[])
assets?: StorageDataShareAsset[];
}

/**
* Policy that specify the permission allowed to a managed identity
*/
Expand Down
2 changes: 2 additions & 0 deletions specification/storage/Storage.Management/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ options:
emitter-output-dir: "{output-dir}/{service-dir}/arm-storage"
service-dir: sdk/storage
flavor: "azure"
compatibility-lro: true

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion [tspconfig — Consider documenting why compatibility-lro: true is set]

compatibility-lro: true```This setting preserves the pre-existing LRO method shape in the JavaScript SDK (`@azure/arm-storage`) that was already in GA before the TypeSpec migration. Without it, the `ArmCustomPatchAsync` template would change the emitted JavaScript LRO wrapper method names, causing a breaking change for existing callers.

**Classification:** `[NEW]` — added in this PR.

**Fix (optional):** Add a comment so future maintainers understand why this flag is set and can evaluate whether to keep it when bumping to a new API version:
```diff
+    # Preserve pre-existing LRO method signatures in @azure/arm-storage (GA SDK back-compat).     compatibility-lro: true```<!-- posted-by: arm-api-reviewer-agent -->

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NEW] 💡 Suggestion — Add a rationale comment for compatibility-lro: true

compatibility-lro: true is a non-obvious emitter knob. Future maintainers (and SDK reviewers) will not know why it was enabled without context. Please add a brief inline comment, for example:

yaml # Required for JavaScript SDK back-compat: preserves the pre-LRO polling behavior # that existing callers depend on. Remove only after coordinating a major-version bump. compatibility-lro: true

experimental-extensible-enums: true
package-details:
name: "@azure/arm-storage"
Expand All @@ -59,6 +60,7 @@ options:
namespace: "Azure.ResourceManager.Storage"
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
enable-wire-path-attribute: true
api-version: "2025-08-01"
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
Original file line number Diff line number Diff line change
Expand Up @@ -8078,25 +8078,6 @@
]
}
},
"Azure.ResourceManager.CommonTypes.TrackedResourceUpdate": {
"type": "object",
"title": "Tracked Resource",
"description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'",
"properties": {
"tags": {
"type": "object",
"description": "Resource tags.",
"additionalProperties": {
"type": "string"
}
}
},
"allOf": [
{
"$ref": "../../../../../common-types/resource-management/v5/types.json#/definitions/Resource"
}
]
},
"AzureEntityResource": {
"type": "object",
"title": "Entity Resource",
Expand Down Expand Up @@ -8674,7 +8655,7 @@
},
"allOf": [
{
"$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate"
"$ref": "#/definitions/TrackedResourceUpdate"
}
]
},
Expand Down Expand Up @@ -8970,7 +8951,7 @@
},
"allOf": [
{
"$ref": "#/definitions/Azure.ResourceManager.CommonTypes.TrackedResourceUpdate"
"$ref": "#/definitions/TrackedResourceUpdate"
}
]
},
Expand Down Expand Up @@ -15765,6 +15746,24 @@
"uniqueId"
]
},
"TrackedResourceUpdate": {
"type": "object",
"description": "The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'",
"properties": {
"tags": {
"type": "object",
"description": "Resource tags.",
"additionalProperties": {
"type": "string"
}
}
},
"allOf": [
{
"$ref": "../../../../../common-types/resource-management/v5/types.json#/definitions/Resource"
}
]
},
"TriggerParameters": {
"type": "object",
"description": "The trigger parameters update for the storage task assignment execution",
Expand Down
Loading