Skip to content

Hide CustomerManagedKeyEncryption as internal; add V4 Foundations replacement types#4627

Open
markcowl wants to merge 2 commits into
release/june-2026from
fix/hide-cmk-internal
Open

Hide CustomerManagedKeyEncryption as internal; add V4 Foundations replacement types#4627
markcowl wants to merge 2 commits into
release/june-2026from
fix/hide-cmk-internal

Conversation

@markcowl

Copy link
Copy Markdown
Member

Summary

Hides the \CustomerManagedKeyEncryption, \KeyEncryptionKeyIdentity, and \KeyEncryptionKeyIdentityType\ common types by marking them \internal\ in the TypeSpec language, preventing direct use in service specifications outside the \Azure.ResourceManager\ namespace.

Adds public replacement types in \Azure.ResourceManager.Foundations:

  • \CustomerManagedKeyEncryptionV4\
  • \KeyEncryptionKeyIdentityV4\
  • \KeyEncryptionKeyIdentityTypeV4\

The \Encryption\ wrapper type remains public and continues to work as before.

Usage

\\ sp
@armProviderNamespace
@service
namespace Microsoft.Contoso;

model EncryptionConfig {
customerManagedKey?: Azure.ResourceManager.Foundations.CustomerManagedKeyEncryptionV4;
}
\\

Testing

  • 5 new tests verifying the V4 types work and the internal types are inaccessible from outside
  • All 329 existing ARM package tests pass
  • Docs regenerated (internal types no longer appear in reference docs)

Related to #4532 (alternative approach using \internal\ keyword instead of decorator + linter rule)

…ns replacements

Mark CustomerManagedKeyEncryption, KeyEncryptionKeyIdentity, and
KeyEncryptionKeyIdentityType as internal in the CommonTypes namespace,
preventing direct use in service specifications.

Add CustomerManagedKeyEncryptionV4, KeyEncryptionKeyIdentityV4, and
KeyEncryptionKeyIdentityTypeV4 in Azure.ResourceManager.Foundations as
public replacement types.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@microsoft-github-policy-service microsoft-github-policy-service Bot added lib:azure-resource-manager Issues for @azure-tools/typespec-azure-core library meta:website TypeSpec.io updates labels Jun 13, 2026
@azure-sdk

azure-sdk commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

All changed packages have been documented.

  • @azure-tools/typespec-azure-resource-manager
Show changes

@azure-tools/typespec-azure-resource-manager - feature ✏️

Hide CustomerManagedKeyEncryption, KeyEncryptionKeyIdentity, and KeyEncryptionKeyIdentityType common types by marking them internal. Add public replacement types CustomerManagedKeyEncryptionV4, KeyEncryptionKeyIdentityV4, and KeyEncryptionKeyIdentityTypeV4 in the Azure.ResourceManager.Foundations namespace.,> ,> tsp,> // Use the new Foundations types instead of the internal CommonTypes types:,> model EncryptionConfig {,> customerManagedKey?: Azure.ResourceManager.Foundations.CustomerManagedKeyEncryptionV4;,> },>

@pkg-pr-new

pkg-pr-new Bot commented Jun 13, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@azure-tools/typespec-azure-resource-manager@4627

commit: 8ba77fc

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

⚡ Benchmark Results

⚠️ 7 metric(s) regressed above the +5% threshold:

Metric Baseline Current Change
linter 🟢 190.1ms 🟡 241.1ms +26.8% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 7.7ms 🟢 10.0ms +29.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🔴 29.4ms 🔴 33.6ms +14.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 37.0ms 🔴 44.5ms +20.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 7.0ms 🟢 9.0ms +28.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 32.5ms 🔴 38.7ms +19.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 7.9ms 🟡 12.6ms +59.7% 🔴
Full details – comparing bfb62da vs baseline 12633f6
Metric Baseline Current Change
total 🔴 756.7ms 🔴 788.6ms +4.2%
loader 🟡 249.7ms 🟡 243.6ms -2.4%
resolver 🟢 19.0ms 🟢 17.5ms -8.3% 🟢
checker 🟡 209.0ms 🟡 202.3ms -3.2%
validation 🟢 42.8ms 🟢 41.6ms -2.8%
 ↳ validation/@azure-tools/typespec-azure-core 🟢 7.2ms 🟢 6.9ms -4.8%
 ↳ validation/@typespec/http 🟢 6.1ms 🟢 5.9ms -3.6%
 ↳ validation/@typespec/rest 🟢 0.6ms 🟢 0.5ms -15.2%
 ↳ validation/@typespec/versioning 🔴 27.0ms 🔴 26.6ms -1.4%
 ↳ validation/compiler 🟢 1.4ms 🟢 1.3ms -10.5%
linter 🟢 190.1ms 🟡 241.1ms +26.8% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.0ms 🟢 0.0ms -2.2%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.2ms 🟢 0.4ms +92.2%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 7.7ms 🟢 10.0ms +29.3% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 0.7ms 🟢 0.8ms +17.8%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.1ms 🟢 0.1ms -5.2%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 0.9ms 🟢 1.0ms +11.0%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 0.6ms 🟢 0.9ms +44.0%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.2ms 🟢 0.2ms -4.0%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.3ms 🟢 0.3ms -3.4%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.3ms 🟢 0.3ms -3.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.3ms 🟢 0.3ms +2.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 0.3ms 🟢 0.3ms -6.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.0ms 🟢 0.0ms +3.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.1ms 🟢 0.1ms +1.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.1ms 🟢 0.1ms +1.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 1.0ms 🟢 0.5ms -46.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.4ms 🟢 0.4ms -11.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🔴 29.4ms 🔴 33.6ms +14.4% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 1.1ms 🟢 1.7ms +47.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.1ms 🟢 0.1ms -7.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.3ms 🟢 0.4ms +45.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 1.4ms 🟢 1.5ms +9.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 2.3ms 🟢 2.3ms -0.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 1.9ms 🟢 2.3ms +18.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🔴 35.3ms 🔴 34.5ms -2.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 37.0ms 🔴 44.5ms +20.5% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.0ms 🟢 0.0ms -9.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 7.0ms 🟢 9.0ms +28.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.2ms 🟢 0.2ms -3.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.0ms 🟢 0.0ms -0.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.2ms 🟢 0.2ms -3.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.4ms 🟢 0.5ms +32.4%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.2ms 🟢 0.2ms -9.7%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.3ms 🟢 0.3ms -8.7%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.0ms 🟢 0.0ms -14.6%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 32.5ms 🔴 38.7ms +19.2% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.3ms 🟢 0.9ms +149.2%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.3ms 🟢 0.3ms -7.0%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 7.9ms 🟡 12.6ms +59.7% 🔴
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.1ms 🟢 0.1ms +2.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟢 4.3ms 🟢 4.1ms -6.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.1ms 🟢 0.1ms -7.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.1ms 🟢 0.1ms -1.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 5.5ms 🟢 5.5ms +0.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟢 4.6ms 🟢 4.4ms -4.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.4ms 🟢 0.4ms -5.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 0.5ms 🟢 0.5ms +4.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.0ms 🟢 0.0ms -9.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.3ms 🟢 0.2ms -8.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.1ms 🟢 0.1ms -8.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.0ms 🟢 0.0ms -25.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.1ms 🟢 0.1ms -11.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.1ms 🟢 0.1ms +1.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.0ms 🟢 0.0ms +0.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.3ms 🟢 0.2ms -5.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.0ms 🟢 0.0ms -13.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.2ms 🟢 0.2ms -2.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 4.8ms 🟢 4.8ms +0.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.3ms 🟢 0.3ms -8.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.2ms 🟢 0.2ms -4.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.1ms 🟢 0.1ms -3.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.1ms 🟢 0.1ms -6.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.2ms 🟢 0.2ms -4.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.0ms 🟢 0.0ms -4.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 14.9ms 🟡 15.5ms +4.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.0ms 🟢 0.0ms +3.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 0.3ms 🟢 0.3ms -13.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.1ms 🟢 0.1ms -19.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-override-props 🟢 0.1ms 🟢 0.1ms +5.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.2ms 🟢 0.2ms -3.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 22.9ms 🔴 22.4ms -2.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.1ms 🟢 0.2ms +3.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.2ms 🟢 0.1ms -9.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 2.4ms 🟢 2.0ms -19.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.4ms 🟢 0.4ms -0.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.0ms 🟢 0.0ms -4.9%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 1.2ms 🟢 1.1ms -4.5%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 0.2ms 🟢 0.2ms -10.6%
emit 🔴 6.14s 🔴 5.90s -3.9%
 ↳ emit/@azure-tools/typespec-autorest 🟡 219.6ms 🟢 169.4ms -22.8% 🟢
 ↳ emit/@azure-tools/typespec-python 🔴 4.53s 🔴 4.45s -1.9%
 ↳ emit/@typespec/http-client-js 🔴 1.18s 🔴 1.13s -4.5%
 ↳ emit/@typespec/openapi3 🟢 158.7ms 🟢 150.4ms -5.2% 🟢
 ↳ emit/@typespec/openapi3/compute 🟢 140.3ms 🟢 133.2ms -5.1% 🟢
 ↳ emit/@typespec/openapi3/write 🟢 18.6ms 🟢 17.3ms -7.1% 🟢

Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)

@azure-sdk

azure-sdk commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

You can try these changes here

🛝 Playground 🌐 Website

@markcowl markcowl added the int:azure-specs Run integration tests against azure-rest-api-specs label Jun 13, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

eng int:azure-specs Run integration tests against azure-rest-api-specs lib:azure-resource-manager Issues for @azure-tools/typespec-azure-core library meta:website TypeSpec.io updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants