[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-azure-keyvault-keys-rust":3,"mdc--tvdxky-key":43,"related-org-microsoft-azure-keyvault-keys-rust":1792,"related-repo-microsoft-azure-keyvault-keys-rust":1980},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":38,"sourceUrl":41,"mdContent":42},"azure-keyvault-keys-rust","manage cryptographic keys with Rust","Azure Key Vault Keys library for Rust. Create, manage, and use cryptographic keys including RSA, EC, and HSM-protected keys.\nTriggers: \"keyvault keys rust\", \"KeyClient rust\", \"create key rust\", \"encrypt rust\", \"wrap key rust\", \"sign rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":17,"slug":18,"type":15},"Azure","azure",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Rust","rust",{"name":24,"slug":25,"type":15},"Access Control","access-control",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-31T05:54:28.050853","MIT",315,[32,33,18,34,35,36,37],"agent-skills","agents","foundry","mcp","sdk","skills",{"repoUrl":27,"stars":26,"forks":30,"topics":39,"description":40},[32,33,18,34,35,36,37],"Skills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Ftree\u002FHEAD\u002F.github\u002Fplugins\u002Fazure-sdk-rust\u002Fskills\u002Fazure-keyvault-keys-rust","---\nname: azure-keyvault-keys-rust\ndescription: |\n  Azure Key Vault Keys library for Rust. Create, manage, and use cryptographic keys including RSA, EC, and HSM-protected keys.\n  Triggers: \"keyvault keys rust\", \"KeyClient rust\", \"create key rust\", \"encrypt rust\", \"wrap key rust\", \"sign rust\".\nlicense: MIT\nmetadata:\n  author: Microsoft\n  package: azure_security_keyvault_keys\n---\n\n# Azure Key Vault Keys library for Rust\n\nSecure storage and management of cryptographic keys — RSA, EC, and HSM-protected.\n\nUse this skill when:\n\n- An app needs to create or manage cryptographic keys in Key Vault from Rust\n- You need to wrap\u002Funwrap data encryption keys (envelope encryption)\n- You need to sign or verify data with Key Vault keys\n- You need HSM-protected keys\n\n> **IMPORTANT:** Only use the official `azure_security_keyvault_keys` crate published by the [azure-sdk](https:\u002F\u002Fcrates.io\u002Fusers\u002Fazure-sdk) crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.\n\n## Installation\n\n```sh\ncargo add azure_security_keyvault_keys azure_identity tokio futures\n```\n\n> If your code uses `azure_core` types directly, add `azure_core` to `Cargo.toml`. If you only use `azure_security_keyvault_keys` re-exports, direct `azure_core` dependency is optional.\n\n## Environment Variables\n\n```bash\nAZURE_KEYVAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F # Required for all operations\n```\n\n## Authentication\n\nRust Azure SDK code must not use `DefaultAzureCredential`. The Rust identity crate does not provide that type.\n\n```rust\nuse azure_identity::DeveloperToolsCredential;\nuse azure_security_keyvault_keys::KeyClient;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    \u002F\u002F Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.\n    let credential = DeveloperToolsCredential::new(None)?;\n    let client = KeyClient::new(\n        \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n        credential.clone(),\n        None,\n    )?;\n\n    let key = client.get_key(\"key-name\", None).await?.into_model()?;\n    println!(\"Key: {:?}\", key.key);\n    Ok(())\n}\n```\n\nPrefer the crate README\u002Fexamples when checking public operation shapes such as key creation, wrapping, and version-aware unwrap flows.\n\n## Core Workflow\n\n### Create Key\n\n```rust\nuse azure_security_keyvault_keys::{\n    models::{CreateKeyParameters, CurveName, KeyType},\n    ResourceExt,\n};\n\n\u002F\u002F Create an EC key\nlet body = CreateKeyParameters {\n    kty: Some(KeyType::Ec),\n    curve: Some(CurveName::P256),\n    ..Default::default()\n};\n\nlet key = client\n    .create_key(\"key-name\", body.try_into()?, None)\n    .await?\n    .into_model()?;\n\nprintln!(\n    \"Name: {:?}, Type: {:?}, Version: {:?}\",\n    key.resource_id()?.name,\n    key.key.as_ref().map(|k| k.kty.as_ref()),\n    key.resource_id()?.version,\n);\n```\n\n### Update Key Properties\n\n```rust\nuse azure_security_keyvault_keys::models::UpdateKeyPropertiesParameters;\nuse std::collections::HashMap;\n\n#[allow(clippy::needless_update)]\nlet params = UpdateKeyPropertiesParameters {\n    tags: Some(HashMap::from_iter(vec![(\"env\".into(), \"prod\".into())])),\n    ..Default::default()\n};\n\nclient\n    .update_key_properties(\"key-name\", params.try_into()?, None)\n    .await?\n    .into_model()?;\n```\n\n### Delete Key\n\n```rust\nclient.delete_key(\"key-name\", None).await?;\n```\n\n### List Keys (Pagination)\n\n`list_key_properties` returns a `Pager\u003CT>` — iterate items directly:\n\n```rust\nuse azure_security_keyvault_keys::ResourceExt;\nuse futures::TryStreamExt as _;\n\nlet mut pager = client.list_key_properties(None)?;\nwhile let Some(key) = pager.try_next().await? {\n    println!(\"Found: {}\", key.resource_id()?.name);\n}\n```\n\n## Wrap \u002F Unwrap (Envelope Encryption)\n\nKey Vault performs crypto operations server-side — the private key never leaves the HSM:\n\n```rust\nuse azure_security_keyvault_keys::{\n    models::{\n        CreateKeyParameters, EncryptionAlgorithm, KeyOperationParameters, KeyType,\n    },\n    ResourceExt, ResourceId,\n};\nuse rand::random;\n\n\u002F\u002F Create a key encryption key (KEK)\nlet body = CreateKeyParameters {\n    kty: Some(KeyType::Rsa),\n    key_size: Some(2048),\n    ..Default::default()\n};\n\nlet key = client\n    .create_key(\"kek-name\", body.try_into()?, None)\n    .await?\n    .into_model()?;\n\n\u002F\u002F Generate a symmetric data encryption key (DEK)\nlet dek = random::\u003Cu32>().to_le_bytes().to_vec();\n\n\u002F\u002F Wrap the DEK with the KEK\nlet mut params = KeyOperationParameters {\n    algorithm: Some(EncryptionAlgorithm::RsaOaep256),\n    value: Some(dek.clone()),\n    ..Default::default()\n};\nlet wrapped = client\n    .wrap_key(\"kek-name\", params.clone().try_into()?, None)\n    .await?\n    .into_model()?;\n\n\u002F\u002F Retain the key version used to wrap so you can unwrap with the same version later\nlet ResourceId { version, .. } = wrapped.resource_id()?;\nlet key_version = version.as_deref().unwrap_or_default();\n\n\u002F\u002F Unwrap to recover the DEK\nparams.value = wrapped.result;\nlet unwrapped = client\n    .unwrap_key(\"kek-name\", key_version, params.try_into()?, None)\n    .await?\n    .into_model()?;\n\nassert!(matches!(unwrapped.result, Some(ref result) if result.eq(&dek)));\n```\n\n## Key Types\n\n| Type    | Use Case                      | Parameter         |\n| ------- | ----------------------------- | ----------------- |\n| EC      | Signing, key agreement        | `KeyType::Ec`     |\n| RSA     | Encryption, signing, wrapping | `KeyType::Rsa`    |\n| Oct     | Symmetric operations (HSM)    | `KeyType::Oct`    |\n| EC-HSM  | HSM-protected EC keys         | `KeyType::EcHsm`  |\n| RSA-HSM | HSM-protected RSA keys        | `KeyType::RsaHsm` |\n\n## RBAC Roles\n\nFor Entra ID auth, assign one of these roles:\n\n| Role                       | Access                  |\n| -------------------------- | ----------------------- |\n| `Key Vault Crypto User`    | Use keys for crypto ops |\n| `Key Vault Crypto Officer` | Full key management     |\n\n## Best Practices\n\n1. **Use `cargo add` to manage dependencies, never edit `Cargo.toml` directly.** Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.\n2. **Add `azure_core` only when importing `azure_core` types directly.** If your code imports `azure_core::http::Url`, `azure_core::http::RequestContent`, or `azure_core::error::ErrorKind`, include `azure_core`; otherwise a direct dependency is optional.\n3. **Use `DeveloperToolsCredential`** for local dev, **`ManagedIdentityCredential`** for production — Rust does not provide a single `DefaultAzureCredential` type\n4. **Never hardcode credentials** — use environment variables or managed identity\n5. **Use `..Default::default()`** with `#[allow(clippy::needless_update)]` for model struct updates\n6. **Use `ResourceExt`** to extract key name\u002Fversion from key IDs\n7. **Reuse clients** — `KeyClient` is thread-safe; create once, share across tasks\n8. **Run `cargo clippy -- -D warnings`** when the prompt, eval, or CI expects lint-clean output\n\n## Reference Links\n\n| Resource      | Link                                                                                            |\n| ------------- | ----------------------------------------------------------------------------------------------- |\n| API Reference | https:\u002F\u002Fdocs.rs\u002Fazure_security_keyvault_keys\u002Flatest\u002Fazure_security_keyvault_keys                |\n| crates.io     | https:\u002F\u002Fcrates.io\u002Fcrates\u002Fazure_security_keyvault_keys                                           |\n| Source Code   | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-rust\u002Ftree\u002Fmain\u002Fsdk\u002Fkeyvault\u002Fazure_security_keyvault_keys |\n",{"data":44,"body":47},{"name":4,"description":6,"license":29,"metadata":45},{"author":9,"package":46},"azure_security_keyvault_keys",{"type":48,"children":49},"root",[50,59,65,70,95,129,136,185,230,236,291,297,310,470,475,481,488,681,687,792,798,812,818,837,898,904,909,1286,1292,1435,1441,1446,1502,1508,1707,1713,1786],{"type":51,"tag":52,"props":53,"children":55},"element","h1",{"id":54},"azure-key-vault-keys-library-for-rust",[56],{"type":57,"value":58},"text","Azure Key Vault Keys library for Rust",{"type":51,"tag":60,"props":61,"children":62},"p",{},[63],{"type":57,"value":64},"Secure storage and management of cryptographic keys — RSA, EC, and HSM-protected.",{"type":51,"tag":60,"props":66,"children":67},{},[68],{"type":57,"value":69},"Use this skill when:",{"type":51,"tag":71,"props":72,"children":73},"ul",{},[74,80,85,90],{"type":51,"tag":75,"props":76,"children":77},"li",{},[78],{"type":57,"value":79},"An app needs to create or manage cryptographic keys in Key Vault from Rust",{"type":51,"tag":75,"props":81,"children":82},{},[83],{"type":57,"value":84},"You need to wrap\u002Funwrap data encryption keys (envelope encryption)",{"type":51,"tag":75,"props":86,"children":87},{},[88],{"type":57,"value":89},"You need to sign or verify data with Key Vault keys",{"type":51,"tag":75,"props":91,"children":92},{},[93],{"type":57,"value":94},"You need HSM-protected keys",{"type":51,"tag":96,"props":97,"children":98},"blockquote",{},[99],{"type":51,"tag":60,"props":100,"children":101},{},[102,108,110,116,118,127],{"type":51,"tag":103,"props":104,"children":105},"strong",{},[106],{"type":57,"value":107},"IMPORTANT:",{"type":57,"value":109}," Only use the official ",{"type":51,"tag":111,"props":112,"children":114},"code",{"className":113},[],[115],{"type":57,"value":46},{"type":57,"value":117}," crate published by the ",{"type":51,"tag":119,"props":120,"children":124},"a",{"href":121,"rel":122},"https:\u002F\u002Fcrates.io\u002Fusers\u002Fazure-sdk",[123],"nofollow",[125],{"type":57,"value":126},"azure-sdk",{"type":57,"value":128}," crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.",{"type":51,"tag":130,"props":131,"children":133},"h2",{"id":132},"installation",[134],{"type":57,"value":135},"Installation",{"type":51,"tag":137,"props":138,"children":143},"pre",{"className":139,"code":140,"language":141,"meta":142,"style":142},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cargo add azure_security_keyvault_keys azure_identity tokio futures\n","sh","",[144],{"type":51,"tag":111,"props":145,"children":146},{"__ignoreMap":142},[147],{"type":51,"tag":148,"props":149,"children":152},"span",{"class":150,"line":151},"line",1,[153,159,165,170,175,180],{"type":51,"tag":148,"props":154,"children":156},{"style":155},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[157],{"type":57,"value":158},"cargo",{"type":51,"tag":148,"props":160,"children":162},{"style":161},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[163],{"type":57,"value":164}," add",{"type":51,"tag":148,"props":166,"children":167},{"style":161},[168],{"type":57,"value":169}," azure_security_keyvault_keys",{"type":51,"tag":148,"props":171,"children":172},{"style":161},[173],{"type":57,"value":174}," azure_identity",{"type":51,"tag":148,"props":176,"children":177},{"style":161},[178],{"type":57,"value":179}," tokio",{"type":51,"tag":148,"props":181,"children":182},{"style":161},[183],{"type":57,"value":184}," futures\n",{"type":51,"tag":96,"props":186,"children":187},{},[188],{"type":51,"tag":60,"props":189,"children":190},{},[191,193,199,201,206,208,214,216,221,223,228],{"type":57,"value":192},"If your code uses ",{"type":51,"tag":111,"props":194,"children":196},{"className":195},[],[197],{"type":57,"value":198},"azure_core",{"type":57,"value":200}," types directly, add ",{"type":51,"tag":111,"props":202,"children":204},{"className":203},[],[205],{"type":57,"value":198},{"type":57,"value":207}," to ",{"type":51,"tag":111,"props":209,"children":211},{"className":210},[],[212],{"type":57,"value":213},"Cargo.toml",{"type":57,"value":215},". If you only use ",{"type":51,"tag":111,"props":217,"children":219},{"className":218},[],[220],{"type":57,"value":46},{"type":57,"value":222}," re-exports, direct ",{"type":51,"tag":111,"props":224,"children":226},{"className":225},[],[227],{"type":57,"value":198},{"type":57,"value":229}," dependency is optional.",{"type":51,"tag":130,"props":231,"children":233},{"id":232},"environment-variables",[234],{"type":57,"value":235},"Environment Variables",{"type":51,"tag":137,"props":237,"children":241},{"className":238,"code":239,"language":240,"meta":142,"style":142},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","AZURE_KEYVAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F # Required for all operations\n","bash",[242],{"type":51,"tag":111,"props":243,"children":244},{"__ignoreMap":142},[245],{"type":51,"tag":148,"props":246,"children":247},{"class":150,"line":151},[248,254,260,265,270,275,280,285],{"type":51,"tag":148,"props":249,"children":251},{"style":250},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[252],{"type":57,"value":253},"AZURE_KEYVAULT_URL",{"type":51,"tag":148,"props":255,"children":257},{"style":256},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[258],{"type":57,"value":259},"=",{"type":51,"tag":148,"props":261,"children":262},{"style":161},[263],{"type":57,"value":264},"https:\u002F\u002F",{"type":51,"tag":148,"props":266,"children":267},{"style":256},[268],{"type":57,"value":269},"\u003C",{"type":51,"tag":148,"props":271,"children":272},{"style":161},[273],{"type":57,"value":274},"vault-name",{"type":51,"tag":148,"props":276,"children":277},{"style":256},[278],{"type":57,"value":279},">",{"type":51,"tag":148,"props":281,"children":282},{"style":161},[283],{"type":57,"value":284},".vault.azure.net\u002F",{"type":51,"tag":148,"props":286,"children":288},{"style":287},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[289],{"type":57,"value":290}," # Required for all operations\n",{"type":51,"tag":130,"props":292,"children":294},{"id":293},"authentication",[295],{"type":57,"value":296},"Authentication",{"type":51,"tag":60,"props":298,"children":299},{},[300,302,308],{"type":57,"value":301},"Rust Azure SDK code must not use ",{"type":51,"tag":111,"props":303,"children":305},{"className":304},[],[306],{"type":57,"value":307},"DefaultAzureCredential",{"type":57,"value":309},". The Rust identity crate does not provide that type.",{"type":51,"tag":137,"props":311,"children":314},{"className":312,"code":313,"language":22,"meta":142,"style":142},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use azure_identity::DeveloperToolsCredential;\nuse azure_security_keyvault_keys::KeyClient;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    \u002F\u002F Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.\n    let credential = DeveloperToolsCredential::new(None)?;\n    let client = KeyClient::new(\n        \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n        credential.clone(),\n        None,\n    )?;\n\n    let key = client.get_key(\"key-name\", None).await?.into_model()?;\n    println!(\"Key: {:?}\", key.key);\n    Ok(())\n}\n",[315],{"type":51,"tag":111,"props":316,"children":317},{"__ignoreMap":142},[318,326,335,345,354,363,372,381,390,399,408,417,426,434,443,452,461],{"type":51,"tag":148,"props":319,"children":320},{"class":150,"line":151},[321],{"type":51,"tag":148,"props":322,"children":323},{},[324],{"type":57,"value":325},"use azure_identity::DeveloperToolsCredential;\n",{"type":51,"tag":148,"props":327,"children":329},{"class":150,"line":328},2,[330],{"type":51,"tag":148,"props":331,"children":332},{},[333],{"type":57,"value":334},"use azure_security_keyvault_keys::KeyClient;\n",{"type":51,"tag":148,"props":336,"children":338},{"class":150,"line":337},3,[339],{"type":51,"tag":148,"props":340,"children":342},{"emptyLinePlaceholder":341},true,[343],{"type":57,"value":344},"\n",{"type":51,"tag":148,"props":346,"children":348},{"class":150,"line":347},4,[349],{"type":51,"tag":148,"props":350,"children":351},{},[352],{"type":57,"value":353},"#[tokio::main]\n",{"type":51,"tag":148,"props":355,"children":357},{"class":150,"line":356},5,[358],{"type":51,"tag":148,"props":359,"children":360},{},[361],{"type":57,"value":362},"async fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n",{"type":51,"tag":148,"props":364,"children":366},{"class":150,"line":365},6,[367],{"type":51,"tag":148,"props":368,"children":369},{},[370],{"type":57,"value":371},"    \u002F\u002F Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.\n",{"type":51,"tag":148,"props":373,"children":375},{"class":150,"line":374},7,[376],{"type":51,"tag":148,"props":377,"children":378},{},[379],{"type":57,"value":380},"    let credential = DeveloperToolsCredential::new(None)?;\n",{"type":51,"tag":148,"props":382,"children":384},{"class":150,"line":383},8,[385],{"type":51,"tag":148,"props":386,"children":387},{},[388],{"type":57,"value":389},"    let client = KeyClient::new(\n",{"type":51,"tag":148,"props":391,"children":393},{"class":150,"line":392},9,[394],{"type":51,"tag":148,"props":395,"children":396},{},[397],{"type":57,"value":398},"        \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n",{"type":51,"tag":148,"props":400,"children":402},{"class":150,"line":401},10,[403],{"type":51,"tag":148,"props":404,"children":405},{},[406],{"type":57,"value":407},"        credential.clone(),\n",{"type":51,"tag":148,"props":409,"children":411},{"class":150,"line":410},11,[412],{"type":51,"tag":148,"props":413,"children":414},{},[415],{"type":57,"value":416},"        None,\n",{"type":51,"tag":148,"props":418,"children":420},{"class":150,"line":419},12,[421],{"type":51,"tag":148,"props":422,"children":423},{},[424],{"type":57,"value":425},"    )?;\n",{"type":51,"tag":148,"props":427,"children":429},{"class":150,"line":428},13,[430],{"type":51,"tag":148,"props":431,"children":432},{"emptyLinePlaceholder":341},[433],{"type":57,"value":344},{"type":51,"tag":148,"props":435,"children":437},{"class":150,"line":436},14,[438],{"type":51,"tag":148,"props":439,"children":440},{},[441],{"type":57,"value":442},"    let key = client.get_key(\"key-name\", None).await?.into_model()?;\n",{"type":51,"tag":148,"props":444,"children":446},{"class":150,"line":445},15,[447],{"type":51,"tag":148,"props":448,"children":449},{},[450],{"type":57,"value":451},"    println!(\"Key: {:?}\", key.key);\n",{"type":51,"tag":148,"props":453,"children":455},{"class":150,"line":454},16,[456],{"type":51,"tag":148,"props":457,"children":458},{},[459],{"type":57,"value":460},"    Ok(())\n",{"type":51,"tag":148,"props":462,"children":464},{"class":150,"line":463},17,[465],{"type":51,"tag":148,"props":466,"children":467},{},[468],{"type":57,"value":469},"}\n",{"type":51,"tag":60,"props":471,"children":472},{},[473],{"type":57,"value":474},"Prefer the crate README\u002Fexamples when checking public operation shapes such as key creation, wrapping, and version-aware unwrap flows.",{"type":51,"tag":130,"props":476,"children":478},{"id":477},"core-workflow",[479],{"type":57,"value":480},"Core Workflow",{"type":51,"tag":482,"props":483,"children":485},"h3",{"id":484},"create-key",[486],{"type":57,"value":487},"Create Key",{"type":51,"tag":137,"props":489,"children":491},{"className":312,"code":490,"language":22,"meta":142,"style":142},"use azure_security_keyvault_keys::{\n    models::{CreateKeyParameters, CurveName, KeyType},\n    ResourceExt,\n};\n\n\u002F\u002F Create an EC key\nlet body = CreateKeyParameters {\n    kty: Some(KeyType::Ec),\n    curve: Some(CurveName::P256),\n    ..Default::default()\n};\n\nlet key = client\n    .create_key(\"key-name\", body.try_into()?, None)\n    .await?\n    .into_model()?;\n\nprintln!(\n    \"Name: {:?}, Type: {:?}, Version: {:?}\",\n    key.resource_id()?.name,\n    key.key.as_ref().map(|k| k.kty.as_ref()),\n    key.resource_id()?.version,\n);\n",[492],{"type":51,"tag":111,"props":493,"children":494},{"__ignoreMap":142},[495,503,511,519,527,534,542,550,558,566,574,581,588,596,604,612,620,627,636,645,654,663,672],{"type":51,"tag":148,"props":496,"children":497},{"class":150,"line":151},[498],{"type":51,"tag":148,"props":499,"children":500},{},[501],{"type":57,"value":502},"use azure_security_keyvault_keys::{\n",{"type":51,"tag":148,"props":504,"children":505},{"class":150,"line":328},[506],{"type":51,"tag":148,"props":507,"children":508},{},[509],{"type":57,"value":510},"    models::{CreateKeyParameters, CurveName, KeyType},\n",{"type":51,"tag":148,"props":512,"children":513},{"class":150,"line":337},[514],{"type":51,"tag":148,"props":515,"children":516},{},[517],{"type":57,"value":518},"    ResourceExt,\n",{"type":51,"tag":148,"props":520,"children":521},{"class":150,"line":347},[522],{"type":51,"tag":148,"props":523,"children":524},{},[525],{"type":57,"value":526},"};\n",{"type":51,"tag":148,"props":528,"children":529},{"class":150,"line":356},[530],{"type":51,"tag":148,"props":531,"children":532},{"emptyLinePlaceholder":341},[533],{"type":57,"value":344},{"type":51,"tag":148,"props":535,"children":536},{"class":150,"line":365},[537],{"type":51,"tag":148,"props":538,"children":539},{},[540],{"type":57,"value":541},"\u002F\u002F Create an EC key\n",{"type":51,"tag":148,"props":543,"children":544},{"class":150,"line":374},[545],{"type":51,"tag":148,"props":546,"children":547},{},[548],{"type":57,"value":549},"let body = CreateKeyParameters {\n",{"type":51,"tag":148,"props":551,"children":552},{"class":150,"line":383},[553],{"type":51,"tag":148,"props":554,"children":555},{},[556],{"type":57,"value":557},"    kty: Some(KeyType::Ec),\n",{"type":51,"tag":148,"props":559,"children":560},{"class":150,"line":392},[561],{"type":51,"tag":148,"props":562,"children":563},{},[564],{"type":57,"value":565},"    curve: Some(CurveName::P256),\n",{"type":51,"tag":148,"props":567,"children":568},{"class":150,"line":401},[569],{"type":51,"tag":148,"props":570,"children":571},{},[572],{"type":57,"value":573},"    ..Default::default()\n",{"type":51,"tag":148,"props":575,"children":576},{"class":150,"line":410},[577],{"type":51,"tag":148,"props":578,"children":579},{},[580],{"type":57,"value":526},{"type":51,"tag":148,"props":582,"children":583},{"class":150,"line":419},[584],{"type":51,"tag":148,"props":585,"children":586},{"emptyLinePlaceholder":341},[587],{"type":57,"value":344},{"type":51,"tag":148,"props":589,"children":590},{"class":150,"line":428},[591],{"type":51,"tag":148,"props":592,"children":593},{},[594],{"type":57,"value":595},"let key = client\n",{"type":51,"tag":148,"props":597,"children":598},{"class":150,"line":436},[599],{"type":51,"tag":148,"props":600,"children":601},{},[602],{"type":57,"value":603},"    .create_key(\"key-name\", body.try_into()?, None)\n",{"type":51,"tag":148,"props":605,"children":606},{"class":150,"line":445},[607],{"type":51,"tag":148,"props":608,"children":609},{},[610],{"type":57,"value":611},"    .await?\n",{"type":51,"tag":148,"props":613,"children":614},{"class":150,"line":454},[615],{"type":51,"tag":148,"props":616,"children":617},{},[618],{"type":57,"value":619},"    .into_model()?;\n",{"type":51,"tag":148,"props":621,"children":622},{"class":150,"line":463},[623],{"type":51,"tag":148,"props":624,"children":625},{"emptyLinePlaceholder":341},[626],{"type":57,"value":344},{"type":51,"tag":148,"props":628,"children":630},{"class":150,"line":629},18,[631],{"type":51,"tag":148,"props":632,"children":633},{},[634],{"type":57,"value":635},"println!(\n",{"type":51,"tag":148,"props":637,"children":639},{"class":150,"line":638},19,[640],{"type":51,"tag":148,"props":641,"children":642},{},[643],{"type":57,"value":644},"    \"Name: {:?}, Type: {:?}, Version: {:?}\",\n",{"type":51,"tag":148,"props":646,"children":648},{"class":150,"line":647},20,[649],{"type":51,"tag":148,"props":650,"children":651},{},[652],{"type":57,"value":653},"    key.resource_id()?.name,\n",{"type":51,"tag":148,"props":655,"children":657},{"class":150,"line":656},21,[658],{"type":51,"tag":148,"props":659,"children":660},{},[661],{"type":57,"value":662},"    key.key.as_ref().map(|k| k.kty.as_ref()),\n",{"type":51,"tag":148,"props":664,"children":666},{"class":150,"line":665},22,[667],{"type":51,"tag":148,"props":668,"children":669},{},[670],{"type":57,"value":671},"    key.resource_id()?.version,\n",{"type":51,"tag":148,"props":673,"children":675},{"class":150,"line":674},23,[676],{"type":51,"tag":148,"props":677,"children":678},{},[679],{"type":57,"value":680},");\n",{"type":51,"tag":482,"props":682,"children":684},{"id":683},"update-key-properties",[685],{"type":57,"value":686},"Update Key Properties",{"type":51,"tag":137,"props":688,"children":690},{"className":312,"code":689,"language":22,"meta":142,"style":142},"use azure_security_keyvault_keys::models::UpdateKeyPropertiesParameters;\nuse std::collections::HashMap;\n\n#[allow(clippy::needless_update)]\nlet params = UpdateKeyPropertiesParameters {\n    tags: Some(HashMap::from_iter(vec![(\"env\".into(), \"prod\".into())])),\n    ..Default::default()\n};\n\nclient\n    .update_key_properties(\"key-name\", params.try_into()?, None)\n    .await?\n    .into_model()?;\n",[691],{"type":51,"tag":111,"props":692,"children":693},{"__ignoreMap":142},[694,702,710,717,725,733,741,748,755,762,770,778,785],{"type":51,"tag":148,"props":695,"children":696},{"class":150,"line":151},[697],{"type":51,"tag":148,"props":698,"children":699},{},[700],{"type":57,"value":701},"use azure_security_keyvault_keys::models::UpdateKeyPropertiesParameters;\n",{"type":51,"tag":148,"props":703,"children":704},{"class":150,"line":328},[705],{"type":51,"tag":148,"props":706,"children":707},{},[708],{"type":57,"value":709},"use std::collections::HashMap;\n",{"type":51,"tag":148,"props":711,"children":712},{"class":150,"line":337},[713],{"type":51,"tag":148,"props":714,"children":715},{"emptyLinePlaceholder":341},[716],{"type":57,"value":344},{"type":51,"tag":148,"props":718,"children":719},{"class":150,"line":347},[720],{"type":51,"tag":148,"props":721,"children":722},{},[723],{"type":57,"value":724},"#[allow(clippy::needless_update)]\n",{"type":51,"tag":148,"props":726,"children":727},{"class":150,"line":356},[728],{"type":51,"tag":148,"props":729,"children":730},{},[731],{"type":57,"value":732},"let params = UpdateKeyPropertiesParameters {\n",{"type":51,"tag":148,"props":734,"children":735},{"class":150,"line":365},[736],{"type":51,"tag":148,"props":737,"children":738},{},[739],{"type":57,"value":740},"    tags: Some(HashMap::from_iter(vec![(\"env\".into(), \"prod\".into())])),\n",{"type":51,"tag":148,"props":742,"children":743},{"class":150,"line":374},[744],{"type":51,"tag":148,"props":745,"children":746},{},[747],{"type":57,"value":573},{"type":51,"tag":148,"props":749,"children":750},{"class":150,"line":383},[751],{"type":51,"tag":148,"props":752,"children":753},{},[754],{"type":57,"value":526},{"type":51,"tag":148,"props":756,"children":757},{"class":150,"line":392},[758],{"type":51,"tag":148,"props":759,"children":760},{"emptyLinePlaceholder":341},[761],{"type":57,"value":344},{"type":51,"tag":148,"props":763,"children":764},{"class":150,"line":401},[765],{"type":51,"tag":148,"props":766,"children":767},{},[768],{"type":57,"value":769},"client\n",{"type":51,"tag":148,"props":771,"children":772},{"class":150,"line":410},[773],{"type":51,"tag":148,"props":774,"children":775},{},[776],{"type":57,"value":777},"    .update_key_properties(\"key-name\", params.try_into()?, None)\n",{"type":51,"tag":148,"props":779,"children":780},{"class":150,"line":419},[781],{"type":51,"tag":148,"props":782,"children":783},{},[784],{"type":57,"value":611},{"type":51,"tag":148,"props":786,"children":787},{"class":150,"line":428},[788],{"type":51,"tag":148,"props":789,"children":790},{},[791],{"type":57,"value":619},{"type":51,"tag":482,"props":793,"children":795},{"id":794},"delete-key",[796],{"type":57,"value":797},"Delete Key",{"type":51,"tag":137,"props":799,"children":801},{"className":312,"code":800,"language":22,"meta":142,"style":142},"client.delete_key(\"key-name\", None).await?;\n",[802],{"type":51,"tag":111,"props":803,"children":804},{"__ignoreMap":142},[805],{"type":51,"tag":148,"props":806,"children":807},{"class":150,"line":151},[808],{"type":51,"tag":148,"props":809,"children":810},{},[811],{"type":57,"value":800},{"type":51,"tag":482,"props":813,"children":815},{"id":814},"list-keys-pagination",[816],{"type":57,"value":817},"List Keys (Pagination)",{"type":51,"tag":60,"props":819,"children":820},{},[821,827,829,835],{"type":51,"tag":111,"props":822,"children":824},{"className":823},[],[825],{"type":57,"value":826},"list_key_properties",{"type":57,"value":828}," returns a ",{"type":51,"tag":111,"props":830,"children":832},{"className":831},[],[833],{"type":57,"value":834},"Pager\u003CT>",{"type":57,"value":836}," — iterate items directly:",{"type":51,"tag":137,"props":838,"children":840},{"className":312,"code":839,"language":22,"meta":142,"style":142},"use azure_security_keyvault_keys::ResourceExt;\nuse futures::TryStreamExt as _;\n\nlet mut pager = client.list_key_properties(None)?;\nwhile let Some(key) = pager.try_next().await? {\n    println!(\"Found: {}\", key.resource_id()?.name);\n}\n",[841],{"type":51,"tag":111,"props":842,"children":843},{"__ignoreMap":142},[844,852,860,867,875,883,891],{"type":51,"tag":148,"props":845,"children":846},{"class":150,"line":151},[847],{"type":51,"tag":148,"props":848,"children":849},{},[850],{"type":57,"value":851},"use azure_security_keyvault_keys::ResourceExt;\n",{"type":51,"tag":148,"props":853,"children":854},{"class":150,"line":328},[855],{"type":51,"tag":148,"props":856,"children":857},{},[858],{"type":57,"value":859},"use futures::TryStreamExt as _;\n",{"type":51,"tag":148,"props":861,"children":862},{"class":150,"line":337},[863],{"type":51,"tag":148,"props":864,"children":865},{"emptyLinePlaceholder":341},[866],{"type":57,"value":344},{"type":51,"tag":148,"props":868,"children":869},{"class":150,"line":347},[870],{"type":51,"tag":148,"props":871,"children":872},{},[873],{"type":57,"value":874},"let mut pager = client.list_key_properties(None)?;\n",{"type":51,"tag":148,"props":876,"children":877},{"class":150,"line":356},[878],{"type":51,"tag":148,"props":879,"children":880},{},[881],{"type":57,"value":882},"while let Some(key) = pager.try_next().await? {\n",{"type":51,"tag":148,"props":884,"children":885},{"class":150,"line":365},[886],{"type":51,"tag":148,"props":887,"children":888},{},[889],{"type":57,"value":890},"    println!(\"Found: {}\", key.resource_id()?.name);\n",{"type":51,"tag":148,"props":892,"children":893},{"class":150,"line":374},[894],{"type":51,"tag":148,"props":895,"children":896},{},[897],{"type":57,"value":469},{"type":51,"tag":130,"props":899,"children":901},{"id":900},"wrap-unwrap-envelope-encryption",[902],{"type":57,"value":903},"Wrap \u002F Unwrap (Envelope Encryption)",{"type":51,"tag":60,"props":905,"children":906},{},[907],{"type":57,"value":908},"Key Vault performs crypto operations server-side — the private key never leaves the HSM:",{"type":51,"tag":137,"props":910,"children":912},{"className":312,"code":911,"language":22,"meta":142,"style":142},"use azure_security_keyvault_keys::{\n    models::{\n        CreateKeyParameters, EncryptionAlgorithm, KeyOperationParameters, KeyType,\n    },\n    ResourceExt, ResourceId,\n};\nuse rand::random;\n\n\u002F\u002F Create a key encryption key (KEK)\nlet body = CreateKeyParameters {\n    kty: Some(KeyType::Rsa),\n    key_size: Some(2048),\n    ..Default::default()\n};\n\nlet key = client\n    .create_key(\"kek-name\", body.try_into()?, None)\n    .await?\n    .into_model()?;\n\n\u002F\u002F Generate a symmetric data encryption key (DEK)\nlet dek = random::\u003Cu32>().to_le_bytes().to_vec();\n\n\u002F\u002F Wrap the DEK with the KEK\nlet mut params = KeyOperationParameters {\n    algorithm: Some(EncryptionAlgorithm::RsaOaep256),\n    value: Some(dek.clone()),\n    ..Default::default()\n};\nlet wrapped = client\n    .wrap_key(\"kek-name\", params.clone().try_into()?, None)\n    .await?\n    .into_model()?;\n\n\u002F\u002F Retain the key version used to wrap so you can unwrap with the same version later\nlet ResourceId { version, .. } = wrapped.resource_id()?;\nlet key_version = version.as_deref().unwrap_or_default();\n\n\u002F\u002F Unwrap to recover the DEK\nparams.value = wrapped.result;\nlet unwrapped = client\n    .unwrap_key(\"kek-name\", key_version, params.try_into()?, None)\n    .await?\n    .into_model()?;\n\nassert!(matches!(unwrapped.result, Some(ref result) if result.eq(&dek)));\n",[913],{"type":51,"tag":111,"props":914,"children":915},{"__ignoreMap":142},[916,923,931,939,947,955,962,970,977,985,992,1000,1008,1015,1022,1029,1036,1044,1051,1058,1065,1073,1081,1088,1097,1106,1115,1124,1132,1140,1149,1158,1166,1174,1182,1191,1200,1209,1217,1226,1235,1244,1253,1261,1269,1277],{"type":51,"tag":148,"props":917,"children":918},{"class":150,"line":151},[919],{"type":51,"tag":148,"props":920,"children":921},{},[922],{"type":57,"value":502},{"type":51,"tag":148,"props":924,"children":925},{"class":150,"line":328},[926],{"type":51,"tag":148,"props":927,"children":928},{},[929],{"type":57,"value":930},"    models::{\n",{"type":51,"tag":148,"props":932,"children":933},{"class":150,"line":337},[934],{"type":51,"tag":148,"props":935,"children":936},{},[937],{"type":57,"value":938},"        CreateKeyParameters, EncryptionAlgorithm, KeyOperationParameters, KeyType,\n",{"type":51,"tag":148,"props":940,"children":941},{"class":150,"line":347},[942],{"type":51,"tag":148,"props":943,"children":944},{},[945],{"type":57,"value":946},"    },\n",{"type":51,"tag":148,"props":948,"children":949},{"class":150,"line":356},[950],{"type":51,"tag":148,"props":951,"children":952},{},[953],{"type":57,"value":954},"    ResourceExt, ResourceId,\n",{"type":51,"tag":148,"props":956,"children":957},{"class":150,"line":365},[958],{"type":51,"tag":148,"props":959,"children":960},{},[961],{"type":57,"value":526},{"type":51,"tag":148,"props":963,"children":964},{"class":150,"line":374},[965],{"type":51,"tag":148,"props":966,"children":967},{},[968],{"type":57,"value":969},"use rand::random;\n",{"type":51,"tag":148,"props":971,"children":972},{"class":150,"line":383},[973],{"type":51,"tag":148,"props":974,"children":975},{"emptyLinePlaceholder":341},[976],{"type":57,"value":344},{"type":51,"tag":148,"props":978,"children":979},{"class":150,"line":392},[980],{"type":51,"tag":148,"props":981,"children":982},{},[983],{"type":57,"value":984},"\u002F\u002F Create a key encryption key (KEK)\n",{"type":51,"tag":148,"props":986,"children":987},{"class":150,"line":401},[988],{"type":51,"tag":148,"props":989,"children":990},{},[991],{"type":57,"value":549},{"type":51,"tag":148,"props":993,"children":994},{"class":150,"line":410},[995],{"type":51,"tag":148,"props":996,"children":997},{},[998],{"type":57,"value":999},"    kty: Some(KeyType::Rsa),\n",{"type":51,"tag":148,"props":1001,"children":1002},{"class":150,"line":419},[1003],{"type":51,"tag":148,"props":1004,"children":1005},{},[1006],{"type":57,"value":1007},"    key_size: Some(2048),\n",{"type":51,"tag":148,"props":1009,"children":1010},{"class":150,"line":428},[1011],{"type":51,"tag":148,"props":1012,"children":1013},{},[1014],{"type":57,"value":573},{"type":51,"tag":148,"props":1016,"children":1017},{"class":150,"line":436},[1018],{"type":51,"tag":148,"props":1019,"children":1020},{},[1021],{"type":57,"value":526},{"type":51,"tag":148,"props":1023,"children":1024},{"class":150,"line":445},[1025],{"type":51,"tag":148,"props":1026,"children":1027},{"emptyLinePlaceholder":341},[1028],{"type":57,"value":344},{"type":51,"tag":148,"props":1030,"children":1031},{"class":150,"line":454},[1032],{"type":51,"tag":148,"props":1033,"children":1034},{},[1035],{"type":57,"value":595},{"type":51,"tag":148,"props":1037,"children":1038},{"class":150,"line":463},[1039],{"type":51,"tag":148,"props":1040,"children":1041},{},[1042],{"type":57,"value":1043},"    .create_key(\"kek-name\", body.try_into()?, None)\n",{"type":51,"tag":148,"props":1045,"children":1046},{"class":150,"line":629},[1047],{"type":51,"tag":148,"props":1048,"children":1049},{},[1050],{"type":57,"value":611},{"type":51,"tag":148,"props":1052,"children":1053},{"class":150,"line":638},[1054],{"type":51,"tag":148,"props":1055,"children":1056},{},[1057],{"type":57,"value":619},{"type":51,"tag":148,"props":1059,"children":1060},{"class":150,"line":647},[1061],{"type":51,"tag":148,"props":1062,"children":1063},{"emptyLinePlaceholder":341},[1064],{"type":57,"value":344},{"type":51,"tag":148,"props":1066,"children":1067},{"class":150,"line":656},[1068],{"type":51,"tag":148,"props":1069,"children":1070},{},[1071],{"type":57,"value":1072},"\u002F\u002F Generate a symmetric data encryption key (DEK)\n",{"type":51,"tag":148,"props":1074,"children":1075},{"class":150,"line":665},[1076],{"type":51,"tag":148,"props":1077,"children":1078},{},[1079],{"type":57,"value":1080},"let dek = random::\u003Cu32>().to_le_bytes().to_vec();\n",{"type":51,"tag":148,"props":1082,"children":1083},{"class":150,"line":674},[1084],{"type":51,"tag":148,"props":1085,"children":1086},{"emptyLinePlaceholder":341},[1087],{"type":57,"value":344},{"type":51,"tag":148,"props":1089,"children":1091},{"class":150,"line":1090},24,[1092],{"type":51,"tag":148,"props":1093,"children":1094},{},[1095],{"type":57,"value":1096},"\u002F\u002F Wrap the DEK with the KEK\n",{"type":51,"tag":148,"props":1098,"children":1100},{"class":150,"line":1099},25,[1101],{"type":51,"tag":148,"props":1102,"children":1103},{},[1104],{"type":57,"value":1105},"let mut params = KeyOperationParameters {\n",{"type":51,"tag":148,"props":1107,"children":1109},{"class":150,"line":1108},26,[1110],{"type":51,"tag":148,"props":1111,"children":1112},{},[1113],{"type":57,"value":1114},"    algorithm: Some(EncryptionAlgorithm::RsaOaep256),\n",{"type":51,"tag":148,"props":1116,"children":1118},{"class":150,"line":1117},27,[1119],{"type":51,"tag":148,"props":1120,"children":1121},{},[1122],{"type":57,"value":1123},"    value: Some(dek.clone()),\n",{"type":51,"tag":148,"props":1125,"children":1127},{"class":150,"line":1126},28,[1128],{"type":51,"tag":148,"props":1129,"children":1130},{},[1131],{"type":57,"value":573},{"type":51,"tag":148,"props":1133,"children":1135},{"class":150,"line":1134},29,[1136],{"type":51,"tag":148,"props":1137,"children":1138},{},[1139],{"type":57,"value":526},{"type":51,"tag":148,"props":1141,"children":1143},{"class":150,"line":1142},30,[1144],{"type":51,"tag":148,"props":1145,"children":1146},{},[1147],{"type":57,"value":1148},"let wrapped = client\n",{"type":51,"tag":148,"props":1150,"children":1152},{"class":150,"line":1151},31,[1153],{"type":51,"tag":148,"props":1154,"children":1155},{},[1156],{"type":57,"value":1157},"    .wrap_key(\"kek-name\", params.clone().try_into()?, None)\n",{"type":51,"tag":148,"props":1159,"children":1161},{"class":150,"line":1160},32,[1162],{"type":51,"tag":148,"props":1163,"children":1164},{},[1165],{"type":57,"value":611},{"type":51,"tag":148,"props":1167,"children":1169},{"class":150,"line":1168},33,[1170],{"type":51,"tag":148,"props":1171,"children":1172},{},[1173],{"type":57,"value":619},{"type":51,"tag":148,"props":1175,"children":1177},{"class":150,"line":1176},34,[1178],{"type":51,"tag":148,"props":1179,"children":1180},{"emptyLinePlaceholder":341},[1181],{"type":57,"value":344},{"type":51,"tag":148,"props":1183,"children":1185},{"class":150,"line":1184},35,[1186],{"type":51,"tag":148,"props":1187,"children":1188},{},[1189],{"type":57,"value":1190},"\u002F\u002F Retain the key version used to wrap so you can unwrap with the same version later\n",{"type":51,"tag":148,"props":1192,"children":1194},{"class":150,"line":1193},36,[1195],{"type":51,"tag":148,"props":1196,"children":1197},{},[1198],{"type":57,"value":1199},"let ResourceId { version, .. } = wrapped.resource_id()?;\n",{"type":51,"tag":148,"props":1201,"children":1203},{"class":150,"line":1202},37,[1204],{"type":51,"tag":148,"props":1205,"children":1206},{},[1207],{"type":57,"value":1208},"let key_version = version.as_deref().unwrap_or_default();\n",{"type":51,"tag":148,"props":1210,"children":1212},{"class":150,"line":1211},38,[1213],{"type":51,"tag":148,"props":1214,"children":1215},{"emptyLinePlaceholder":341},[1216],{"type":57,"value":344},{"type":51,"tag":148,"props":1218,"children":1220},{"class":150,"line":1219},39,[1221],{"type":51,"tag":148,"props":1222,"children":1223},{},[1224],{"type":57,"value":1225},"\u002F\u002F Unwrap to recover the DEK\n",{"type":51,"tag":148,"props":1227,"children":1229},{"class":150,"line":1228},40,[1230],{"type":51,"tag":148,"props":1231,"children":1232},{},[1233],{"type":57,"value":1234},"params.value = wrapped.result;\n",{"type":51,"tag":148,"props":1236,"children":1238},{"class":150,"line":1237},41,[1239],{"type":51,"tag":148,"props":1240,"children":1241},{},[1242],{"type":57,"value":1243},"let unwrapped = client\n",{"type":51,"tag":148,"props":1245,"children":1247},{"class":150,"line":1246},42,[1248],{"type":51,"tag":148,"props":1249,"children":1250},{},[1251],{"type":57,"value":1252},"    .unwrap_key(\"kek-name\", key_version, params.try_into()?, None)\n",{"type":51,"tag":148,"props":1254,"children":1256},{"class":150,"line":1255},43,[1257],{"type":51,"tag":148,"props":1258,"children":1259},{},[1260],{"type":57,"value":611},{"type":51,"tag":148,"props":1262,"children":1264},{"class":150,"line":1263},44,[1265],{"type":51,"tag":148,"props":1266,"children":1267},{},[1268],{"type":57,"value":619},{"type":51,"tag":148,"props":1270,"children":1272},{"class":150,"line":1271},45,[1273],{"type":51,"tag":148,"props":1274,"children":1275},{"emptyLinePlaceholder":341},[1276],{"type":57,"value":344},{"type":51,"tag":148,"props":1278,"children":1280},{"class":150,"line":1279},46,[1281],{"type":51,"tag":148,"props":1282,"children":1283},{},[1284],{"type":57,"value":1285},"assert!(matches!(unwrapped.result, Some(ref result) if result.eq(&dek)));\n",{"type":51,"tag":130,"props":1287,"children":1289},{"id":1288},"key-types",[1290],{"type":57,"value":1291},"Key Types",{"type":51,"tag":1293,"props":1294,"children":1295},"table",{},[1296,1320],{"type":51,"tag":1297,"props":1298,"children":1299},"thead",{},[1300],{"type":51,"tag":1301,"props":1302,"children":1303},"tr",{},[1304,1310,1315],{"type":51,"tag":1305,"props":1306,"children":1307},"th",{},[1308],{"type":57,"value":1309},"Type",{"type":51,"tag":1305,"props":1311,"children":1312},{},[1313],{"type":57,"value":1314},"Use Case",{"type":51,"tag":1305,"props":1316,"children":1317},{},[1318],{"type":57,"value":1319},"Parameter",{"type":51,"tag":1321,"props":1322,"children":1323},"tbody",{},[1324,1347,1369,1391,1413],{"type":51,"tag":1301,"props":1325,"children":1326},{},[1327,1333,1338],{"type":51,"tag":1328,"props":1329,"children":1330},"td",{},[1331],{"type":57,"value":1332},"EC",{"type":51,"tag":1328,"props":1334,"children":1335},{},[1336],{"type":57,"value":1337},"Signing, key agreement",{"type":51,"tag":1328,"props":1339,"children":1340},{},[1341],{"type":51,"tag":111,"props":1342,"children":1344},{"className":1343},[],[1345],{"type":57,"value":1346},"KeyType::Ec",{"type":51,"tag":1301,"props":1348,"children":1349},{},[1350,1355,1360],{"type":51,"tag":1328,"props":1351,"children":1352},{},[1353],{"type":57,"value":1354},"RSA",{"type":51,"tag":1328,"props":1356,"children":1357},{},[1358],{"type":57,"value":1359},"Encryption, signing, wrapping",{"type":51,"tag":1328,"props":1361,"children":1362},{},[1363],{"type":51,"tag":111,"props":1364,"children":1366},{"className":1365},[],[1367],{"type":57,"value":1368},"KeyType::Rsa",{"type":51,"tag":1301,"props":1370,"children":1371},{},[1372,1377,1382],{"type":51,"tag":1328,"props":1373,"children":1374},{},[1375],{"type":57,"value":1376},"Oct",{"type":51,"tag":1328,"props":1378,"children":1379},{},[1380],{"type":57,"value":1381},"Symmetric operations (HSM)",{"type":51,"tag":1328,"props":1383,"children":1384},{},[1385],{"type":51,"tag":111,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":57,"value":1390},"KeyType::Oct",{"type":51,"tag":1301,"props":1392,"children":1393},{},[1394,1399,1404],{"type":51,"tag":1328,"props":1395,"children":1396},{},[1397],{"type":57,"value":1398},"EC-HSM",{"type":51,"tag":1328,"props":1400,"children":1401},{},[1402],{"type":57,"value":1403},"HSM-protected EC keys",{"type":51,"tag":1328,"props":1405,"children":1406},{},[1407],{"type":51,"tag":111,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":57,"value":1412},"KeyType::EcHsm",{"type":51,"tag":1301,"props":1414,"children":1415},{},[1416,1421,1426],{"type":51,"tag":1328,"props":1417,"children":1418},{},[1419],{"type":57,"value":1420},"RSA-HSM",{"type":51,"tag":1328,"props":1422,"children":1423},{},[1424],{"type":57,"value":1425},"HSM-protected RSA keys",{"type":51,"tag":1328,"props":1427,"children":1428},{},[1429],{"type":51,"tag":111,"props":1430,"children":1432},{"className":1431},[],[1433],{"type":57,"value":1434},"KeyType::RsaHsm",{"type":51,"tag":130,"props":1436,"children":1438},{"id":1437},"rbac-roles",[1439],{"type":57,"value":1440},"RBAC Roles",{"type":51,"tag":60,"props":1442,"children":1443},{},[1444],{"type":57,"value":1445},"For Entra ID auth, assign one of these roles:",{"type":51,"tag":1293,"props":1447,"children":1448},{},[1449,1465],{"type":51,"tag":1297,"props":1450,"children":1451},{},[1452],{"type":51,"tag":1301,"props":1453,"children":1454},{},[1455,1460],{"type":51,"tag":1305,"props":1456,"children":1457},{},[1458],{"type":57,"value":1459},"Role",{"type":51,"tag":1305,"props":1461,"children":1462},{},[1463],{"type":57,"value":1464},"Access",{"type":51,"tag":1321,"props":1466,"children":1467},{},[1468,1485],{"type":51,"tag":1301,"props":1469,"children":1470},{},[1471,1480],{"type":51,"tag":1328,"props":1472,"children":1473},{},[1474],{"type":51,"tag":111,"props":1475,"children":1477},{"className":1476},[],[1478],{"type":57,"value":1479},"Key Vault Crypto User",{"type":51,"tag":1328,"props":1481,"children":1482},{},[1483],{"type":57,"value":1484},"Use keys for crypto ops",{"type":51,"tag":1301,"props":1486,"children":1487},{},[1488,1497],{"type":51,"tag":1328,"props":1489,"children":1490},{},[1491],{"type":51,"tag":111,"props":1492,"children":1494},{"className":1493},[],[1495],{"type":57,"value":1496},"Key Vault Crypto Officer",{"type":51,"tag":1328,"props":1498,"children":1499},{},[1500],{"type":57,"value":1501},"Full key management",{"type":51,"tag":130,"props":1503,"children":1505},{"id":1504},"best-practices",[1506],{"type":57,"value":1507},"Best Practices",{"type":51,"tag":1509,"props":1510,"children":1511},"ol",{},[1512,1537,1592,1625,1635,1658,1673,1691],{"type":51,"tag":75,"props":1513,"children":1514},{},[1515,1535],{"type":51,"tag":103,"props":1516,"children":1517},{},[1518,1520,1526,1528,1533],{"type":57,"value":1519},"Use ",{"type":51,"tag":111,"props":1521,"children":1523},{"className":1522},[],[1524],{"type":57,"value":1525},"cargo add",{"type":57,"value":1527}," to manage dependencies, never edit ",{"type":51,"tag":111,"props":1529,"children":1531},{"className":1530},[],[1532],{"type":57,"value":213},{"type":57,"value":1534}," directly.",{"type":57,"value":1536}," Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.",{"type":51,"tag":75,"props":1538,"children":1539},{},[1540,1559,1561,1567,1569,1575,1577,1583,1585,1590],{"type":51,"tag":103,"props":1541,"children":1542},{},[1543,1545,1550,1552,1557],{"type":57,"value":1544},"Add ",{"type":51,"tag":111,"props":1546,"children":1548},{"className":1547},[],[1549],{"type":57,"value":198},{"type":57,"value":1551}," only when importing ",{"type":51,"tag":111,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":57,"value":198},{"type":57,"value":1558}," types directly.",{"type":57,"value":1560}," If your code imports ",{"type":51,"tag":111,"props":1562,"children":1564},{"className":1563},[],[1565],{"type":57,"value":1566},"azure_core::http::Url",{"type":57,"value":1568},", ",{"type":51,"tag":111,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":57,"value":1574},"azure_core::http::RequestContent",{"type":57,"value":1576},", or ",{"type":51,"tag":111,"props":1578,"children":1580},{"className":1579},[],[1581],{"type":57,"value":1582},"azure_core::error::ErrorKind",{"type":57,"value":1584},", include ",{"type":51,"tag":111,"props":1586,"children":1588},{"className":1587},[],[1589],{"type":57,"value":198},{"type":57,"value":1591},"; otherwise a direct dependency is optional.",{"type":51,"tag":75,"props":1593,"children":1594},{},[1595,1605,1607,1616,1618,1623],{"type":51,"tag":103,"props":1596,"children":1597},{},[1598,1599],{"type":57,"value":1519},{"type":51,"tag":111,"props":1600,"children":1602},{"className":1601},[],[1603],{"type":57,"value":1604},"DeveloperToolsCredential",{"type":57,"value":1606}," for local dev, ",{"type":51,"tag":103,"props":1608,"children":1609},{},[1610],{"type":51,"tag":111,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":57,"value":1615},"ManagedIdentityCredential",{"type":57,"value":1617}," for production — Rust does not provide a single ",{"type":51,"tag":111,"props":1619,"children":1621},{"className":1620},[],[1622],{"type":57,"value":307},{"type":57,"value":1624}," type",{"type":51,"tag":75,"props":1626,"children":1627},{},[1628,1633],{"type":51,"tag":103,"props":1629,"children":1630},{},[1631],{"type":57,"value":1632},"Never hardcode credentials",{"type":57,"value":1634}," — use environment variables or managed identity",{"type":51,"tag":75,"props":1636,"children":1637},{},[1638,1648,1650,1656],{"type":51,"tag":103,"props":1639,"children":1640},{},[1641,1642],{"type":57,"value":1519},{"type":51,"tag":111,"props":1643,"children":1645},{"className":1644},[],[1646],{"type":57,"value":1647},"..Default::default()",{"type":57,"value":1649}," with ",{"type":51,"tag":111,"props":1651,"children":1653},{"className":1652},[],[1654],{"type":57,"value":1655},"#[allow(clippy::needless_update)]",{"type":57,"value":1657}," for model struct updates",{"type":51,"tag":75,"props":1659,"children":1660},{},[1661,1671],{"type":51,"tag":103,"props":1662,"children":1663},{},[1664,1665],{"type":57,"value":1519},{"type":51,"tag":111,"props":1666,"children":1668},{"className":1667},[],[1669],{"type":57,"value":1670},"ResourceExt",{"type":57,"value":1672}," to extract key name\u002Fversion from key IDs",{"type":51,"tag":75,"props":1674,"children":1675},{},[1676,1681,1683,1689],{"type":51,"tag":103,"props":1677,"children":1678},{},[1679],{"type":57,"value":1680},"Reuse clients",{"type":57,"value":1682}," — ",{"type":51,"tag":111,"props":1684,"children":1686},{"className":1685},[],[1687],{"type":57,"value":1688},"KeyClient",{"type":57,"value":1690}," is thread-safe; create once, share across tasks",{"type":51,"tag":75,"props":1692,"children":1693},{},[1694,1705],{"type":51,"tag":103,"props":1695,"children":1696},{},[1697,1699],{"type":57,"value":1698},"Run ",{"type":51,"tag":111,"props":1700,"children":1702},{"className":1701},[],[1703],{"type":57,"value":1704},"cargo clippy -- -D warnings",{"type":57,"value":1706}," when the prompt, eval, or CI expects lint-clean output",{"type":51,"tag":130,"props":1708,"children":1710},{"id":1709},"reference-links",[1711],{"type":57,"value":1712},"Reference Links",{"type":51,"tag":1293,"props":1714,"children":1715},{},[1716,1732],{"type":51,"tag":1297,"props":1717,"children":1718},{},[1719],{"type":51,"tag":1301,"props":1720,"children":1721},{},[1722,1727],{"type":51,"tag":1305,"props":1723,"children":1724},{},[1725],{"type":57,"value":1726},"Resource",{"type":51,"tag":1305,"props":1728,"children":1729},{},[1730],{"type":57,"value":1731},"Link",{"type":51,"tag":1321,"props":1733,"children":1734},{},[1735,1752,1769],{"type":51,"tag":1301,"props":1736,"children":1737},{},[1738,1743],{"type":51,"tag":1328,"props":1739,"children":1740},{},[1741],{"type":57,"value":1742},"API Reference",{"type":51,"tag":1328,"props":1744,"children":1745},{},[1746],{"type":51,"tag":119,"props":1747,"children":1750},{"href":1748,"rel":1749},"https:\u002F\u002Fdocs.rs\u002Fazure_security_keyvault_keys\u002Flatest\u002Fazure_security_keyvault_keys",[123],[1751],{"type":57,"value":1748},{"type":51,"tag":1301,"props":1753,"children":1754},{},[1755,1760],{"type":51,"tag":1328,"props":1756,"children":1757},{},[1758],{"type":57,"value":1759},"crates.io",{"type":51,"tag":1328,"props":1761,"children":1762},{},[1763],{"type":51,"tag":119,"props":1764,"children":1767},{"href":1765,"rel":1766},"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fazure_security_keyvault_keys",[123],[1768],{"type":57,"value":1765},{"type":51,"tag":1301,"props":1770,"children":1771},{},[1772,1777],{"type":51,"tag":1328,"props":1773,"children":1774},{},[1775],{"type":57,"value":1776},"Source Code",{"type":51,"tag":1328,"props":1778,"children":1779},{},[1780],{"type":51,"tag":119,"props":1781,"children":1784},{"href":1782,"rel":1783},"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-rust\u002Ftree\u002Fmain\u002Fsdk\u002Fkeyvault\u002Fazure_security_keyvault_keys",[123],[1785],{"type":57,"value":1782},{"type":51,"tag":1787,"props":1788,"children":1789},"style",{},[1790],{"type":57,"value":1791},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1793,"total":1979},[1794,1816,1832,1853,1866,1883,1894,1907,1922,1937,1954,1967],{"slug":1795,"name":1795,"fn":1796,"description":1797,"org":1798,"tags":1799,"stars":1813,"repoUrl":1814,"updatedAt":1815},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1800,1803,1806,1807,1810],{"name":1801,"slug":1802,"type":15},"Engineering","engineering",{"name":1804,"slug":1805,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":1808,"slug":1809,"type":15},"Project Management","project-management",{"name":1811,"slug":1812,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":1817,"name":1817,"fn":1818,"description":1819,"org":1820,"tags":1821,"stars":26,"repoUrl":27,"updatedAt":1831},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1822,1825,1827,1828],{"name":1823,"slug":1824,"type":15},".NET","net",{"name":1826,"slug":33,"type":15},"Agents",{"name":17,"slug":18,"type":15},{"name":1829,"slug":1830,"type":15},"LLM","llm","2026-07-03T16:32:10.297433",{"slug":1833,"name":1833,"fn":1834,"description":1835,"org":1836,"tags":1837,"stars":26,"repoUrl":27,"updatedAt":1852},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1838,1841,1842,1845,1848,1849],{"name":1839,"slug":1840,"type":15},"Analytics","analytics",{"name":17,"slug":18,"type":15},{"name":1843,"slug":1844,"type":15},"Data Analysis","data-analysis",{"name":1846,"slug":1847,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":1850,"slug":1851,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":1854,"name":1854,"fn":1855,"description":1856,"org":1857,"tags":1858,"stars":26,"repoUrl":27,"updatedAt":1865},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1859,1862,1863,1864],{"name":1860,"slug":1861,"type":15},"AI Infrastructure","ai-infrastructure",{"name":17,"slug":18,"type":15},{"name":1846,"slug":1847,"type":15},{"name":13,"slug":14,"type":15},"2026-07-07T06:53:31.293235",{"slug":1867,"name":1867,"fn":1868,"description":1869,"org":1870,"tags":1871,"stars":26,"repoUrl":27,"updatedAt":1882},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1872,1873,1876,1877,1878,1881],{"name":17,"slug":18,"type":15},{"name":1874,"slug":1875,"type":15},"Compliance","compliance",{"name":1829,"slug":1830,"type":15},{"name":9,"slug":8,"type":15},{"name":1879,"slug":1880,"type":15},"Python","python",{"name":13,"slug":14,"type":15},"2026-07-18T05:14:23.017504",{"slug":1884,"name":1884,"fn":1885,"description":1886,"org":1887,"tags":1888,"stars":26,"repoUrl":27,"updatedAt":1893},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1889,1890,1891,1892],{"name":1839,"slug":1840,"type":15},{"name":17,"slug":18,"type":15},{"name":1829,"slug":1830,"type":15},{"name":1879,"slug":1880,"type":15},"2026-07-31T05:54:29.068751",{"slug":1895,"name":1895,"fn":1896,"description":1897,"org":1898,"tags":1899,"stars":26,"repoUrl":27,"updatedAt":1906},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1900,1903,1904,1905],{"name":1901,"slug":1902,"type":15},"API Development","api-development",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":1879,"slug":1880,"type":15},"2026-07-18T05:14:16.988376",{"slug":1908,"name":1908,"fn":1909,"description":1910,"org":1911,"tags":1912,"stars":26,"repoUrl":27,"updatedAt":1921},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1913,1914,1917,1920],{"name":17,"slug":18,"type":15},{"name":1915,"slug":1916,"type":15},"Computer Vision","computer-vision",{"name":1918,"slug":1919,"type":15},"Images","images",{"name":1879,"slug":1880,"type":15},"2026-07-18T05:14:18.007737",{"slug":1923,"name":1923,"fn":1924,"description":1925,"org":1926,"tags":1927,"stars":26,"repoUrl":27,"updatedAt":1936},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1928,1929,1932,1935],{"name":17,"slug":18,"type":15},{"name":1930,"slug":1931,"type":15},"Configuration","configuration",{"name":1933,"slug":1934,"type":15},"Feature Flags","feature-flags",{"name":1846,"slug":1847,"type":15},"2026-07-03T16:32:01.278468",{"slug":1938,"name":1938,"fn":1939,"description":1940,"org":1941,"tags":1942,"stars":26,"repoUrl":27,"updatedAt":1953},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1943,1946,1949,1952],{"name":1944,"slug":1945,"type":15},"Cosmos DB","cosmos-db",{"name":1947,"slug":1948,"type":15},"Database","database",{"name":1950,"slug":1951,"type":15},"NoSQL","nosql",{"name":21,"slug":22,"type":15},"2026-07-31T05:54:27.021432",{"slug":1955,"name":1955,"fn":1939,"description":1956,"org":1957,"tags":1958,"stars":26,"repoUrl":27,"updatedAt":1966},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1959,1960,1961,1962,1963],{"name":1944,"slug":1945,"type":15},{"name":1947,"slug":1948,"type":15},{"name":9,"slug":8,"type":15},{"name":1950,"slug":1951,"type":15},{"name":1964,"slug":1965,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":1968,"name":1968,"fn":1969,"description":1970,"org":1971,"tags":1972,"stars":26,"repoUrl":27,"updatedAt":1978},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1973,1974,1975,1976,1977],{"name":17,"slug":18,"type":15},{"name":1944,"slug":1945,"type":15},{"name":1947,"slug":1948,"type":15},{"name":1846,"slug":1847,"type":15},{"name":1950,"slug":1951,"type":15},"2026-05-13T06:14:17.582229",267,{"items":1981,"total":1211},[1982,1989,1998,2005,2014,2021,2028],{"slug":1817,"name":1817,"fn":1818,"description":1819,"org":1983,"tags":1984,"stars":26,"repoUrl":27,"updatedAt":1831},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1985,1986,1987,1988],{"name":1823,"slug":1824,"type":15},{"name":1826,"slug":33,"type":15},{"name":17,"slug":18,"type":15},{"name":1829,"slug":1830,"type":15},{"slug":1833,"name":1833,"fn":1834,"description":1835,"org":1990,"tags":1991,"stars":26,"repoUrl":27,"updatedAt":1852},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1992,1993,1994,1995,1996,1997],{"name":1839,"slug":1840,"type":15},{"name":17,"slug":18,"type":15},{"name":1843,"slug":1844,"type":15},{"name":1846,"slug":1847,"type":15},{"name":9,"slug":8,"type":15},{"name":1850,"slug":1851,"type":15},{"slug":1854,"name":1854,"fn":1855,"description":1856,"org":1999,"tags":2000,"stars":26,"repoUrl":27,"updatedAt":1865},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2001,2002,2003,2004],{"name":1860,"slug":1861,"type":15},{"name":17,"slug":18,"type":15},{"name":1846,"slug":1847,"type":15},{"name":13,"slug":14,"type":15},{"slug":1867,"name":1867,"fn":1868,"description":1869,"org":2006,"tags":2007,"stars":26,"repoUrl":27,"updatedAt":1882},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2008,2009,2010,2011,2012,2013],{"name":17,"slug":18,"type":15},{"name":1874,"slug":1875,"type":15},{"name":1829,"slug":1830,"type":15},{"name":9,"slug":8,"type":15},{"name":1879,"slug":1880,"type":15},{"name":13,"slug":14,"type":15},{"slug":1884,"name":1884,"fn":1885,"description":1886,"org":2015,"tags":2016,"stars":26,"repoUrl":27,"updatedAt":1893},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2017,2018,2019,2020],{"name":1839,"slug":1840,"type":15},{"name":17,"slug":18,"type":15},{"name":1829,"slug":1830,"type":15},{"name":1879,"slug":1880,"type":15},{"slug":1895,"name":1895,"fn":1896,"description":1897,"org":2022,"tags":2023,"stars":26,"repoUrl":27,"updatedAt":1906},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2024,2025,2026,2027],{"name":1901,"slug":1902,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":1879,"slug":1880,"type":15},{"slug":1908,"name":1908,"fn":1909,"description":1910,"org":2029,"tags":2030,"stars":26,"repoUrl":27,"updatedAt":1921},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2031,2032,2033,2034],{"name":17,"slug":18,"type":15},{"name":1915,"slug":1916,"type":15},{"name":1918,"slug":1919,"type":15},{"name":1879,"slug":1880,"type":15}]