{"_id":"@azure/containerapps-sandbox","name":"@azure/containerapps-sandbox","dist-tags":{"latest":"1.0.0-beta.1"},"versions":{"1.0.0-beta.1":{"name":"@azure/containerapps-sandbox","version":"1.0.0-beta.1","description":"A generated SDK for ContainerAppsSandboxClient.","engines":{"node":">=20.0.0"},"sideEffects":false,"autoPublish":false,"type":"module","keywords":["node","azure","cloud","typescript","browser","isomorphic"],"author":{"name":"Microsoft Corporation"},"license":"MIT","sdk-type":"mgmt","repository":{"type":"git","url":"git+https://github.com/microsoft/azure-container-apps.git","directory":"sdks/typescript/azure-containerapps-sandbox"},"bugs":{"url":"https://github.com/microsoft/azure-container-apps/issues"},"homepage":"https://github.com/microsoft/azure-container-apps/tree/main/sdks/typescript/azure-containerapps-sandbox/README.md","dependencies":{"@azure-rest/core-client":"^2.3.1","@azure/abort-controller":"^2.1.2","@azure/core-auth":"^1.9.0","@azure/core-lro":"^3.1.0","@azure/core-rest-pipeline":"^1.20.0","@azure/core-util":"^1.12.0","@azure/logger":"^1.2.0","tslib":"^2.8.1"},"devDependencies":{"@azure/identity":"^4.5.0","@microsoft/api-extractor":"^7.47.0","@types/node":"^20.12.0","tshy":"^3.0.2","typescript":"^5.6.0","vitest":"^4.1.9"},"scripts":{"clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true});require('fs').rmSync('dist-test',{recursive:true,force:true})\"","build":"tshy","lint":"echo skipped","lint:fix":"echo skipped","check:types":"tsc --noEmit -p tsconfig.json","check-format":"echo skipped","format":"echo skipped","extract-api":"tshy && api-extractor run --local","test:node":"vitest run","test":"vitest run"},"tshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./api":"./src/api/index.ts","./api/sandboxGroups":"./src/api/sandboxGroups/index.ts","./api/sandboxes":"./src/api/sandboxes/index.ts","./api/diskImages":"./src/api/diskImages/index.ts","./api/snapshots":"./src/api/snapshots/index.ts","./api/volumes":"./src/api/volumes/index.ts","./api/secrets":"./src/api/secrets/index.ts","./api/ports":"./src/api/ports/index.ts","./api/egress":"./src/api/egress/index.ts","./api/files":"./src/api/files/index.ts","./models":"./src/models/index.ts"},"dialects":["esm","commonjs"],"selfLink":false},"//sampleConfiguration":{"productName":"@azure/containerapps-sandbox","productSlugs":["azure"],"disableDocsMs":true},"exports":{"./package.json":"./package.json",".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/commonjs/index.d.ts","default":"./dist/commonjs/index.js"}},"./api":{"import":{"types":"./dist/esm/api/index.d.ts","default":"./dist/esm/api/index.js"},"require":{"types":"./dist/commonjs/api/index.d.ts","default":"./dist/commonjs/api/index.js"}},"./api/sandboxGroups":{"import":{"types":"./dist/esm/api/sandboxGroups/index.d.ts","default":"./dist/esm/api/sandboxGroups/index.js"},"require":{"types":"./dist/commonjs/api/sandboxGroups/index.d.ts","default":"./dist/commonjs/api/sandboxGroups/index.js"}},"./api/sandboxes":{"import":{"types":"./dist/esm/api/sandboxes/index.d.ts","default":"./dist/esm/api/sandboxes/index.js"},"require":{"types":"./dist/commonjs/api/sandboxes/index.d.ts","default":"./dist/commonjs/api/sandboxes/index.js"}},"./api/diskImages":{"import":{"types":"./dist/esm/api/diskImages/index.d.ts","default":"./dist/esm/api/diskImages/index.js"},"require":{"types":"./dist/commonjs/api/diskImages/index.d.ts","default":"./dist/commonjs/api/diskImages/index.js"}},"./api/snapshots":{"import":{"types":"./dist/esm/api/snapshots/index.d.ts","default":"./dist/esm/api/snapshots/index.js"},"require":{"types":"./dist/commonjs/api/snapshots/index.d.ts","default":"./dist/commonjs/api/snapshots/index.js"}},"./api/volumes":{"import":{"types":"./dist/esm/api/volumes/index.d.ts","default":"./dist/esm/api/volumes/index.js"},"require":{"types":"./dist/commonjs/api/volumes/index.d.ts","default":"./dist/commonjs/api/volumes/index.js"}},"./api/secrets":{"import":{"types":"./dist/esm/api/secrets/index.d.ts","default":"./dist/esm/api/secrets/index.js"},"require":{"types":"./dist/commonjs/api/secrets/index.d.ts","default":"./dist/commonjs/api/secrets/index.js"}},"./api/ports":{"import":{"types":"./dist/esm/api/ports/index.d.ts","default":"./dist/esm/api/ports/index.js"},"require":{"types":"./dist/commonjs/api/ports/index.d.ts","default":"./dist/commonjs/api/ports/index.js"}},"./api/egress":{"import":{"types":"./dist/esm/api/egress/index.d.ts","default":"./dist/esm/api/egress/index.js"},"require":{"types":"./dist/commonjs/api/egress/index.d.ts","default":"./dist/commonjs/api/egress/index.js"}},"./api/files":{"import":{"types":"./dist/esm/api/files/index.d.ts","default":"./dist/esm/api/files/index.js"},"require":{"types":"./dist/commonjs/api/files/index.d.ts","default":"./dist/commonjs/api/files/index.js"}},"./models":{"import":{"types":"./dist/esm/models/index.d.ts","default":"./dist/esm/models/index.js"},"require":{"types":"./dist/commonjs/models/index.d.ts","default":"./dist/commonjs/models/index.js"}}},"main":"./dist/commonjs/index.js","types":"./dist/commonjs/index.d.ts","module":"./dist/esm/index.js","_id":"@azure/containerapps-sandbox@1.0.0-beta.1","_integrity":"sha512-pDQcCIaNVkOYBZ4ieaOo6/2V3Bq+3lpy6Q0QkeVJH3yVkM8RO68yCPMKME8eqkIEWLqVY9r8CKFAXoG6A0qe3w==","_resolved":"M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\01330026-85c9-47ad-82c4-571e0ee1f2ad\\azure-containerapps-sandbox-1.0.0-beta.1.tgz","_from":"file:M:\\SvcFab\\_App\\MS.Ess.PackageManager.Publisher_App1\\temp\\01330026-85c9-47ad-82c4-571e0ee1f2ad\\azure-containerapps-sandbox-1.0.0-beta.1.tgz","_nodeVersion":"18.5.0","dist":{"integrity":"sha512-pDQcCIaNVkOYBZ4ieaOo6/2V3Bq+3lpy6Q0QkeVJH3yVkM8RO68yCPMKME8eqkIEWLqVY9r8CKFAXoG6A0qe3w==","shasum":"6749532cd7bf7b4c1f97d6c02b937ac717a024e4","tarball":"https://registry.npmjs.org/@azure/containerapps-sandbox/-/containerapps-sandbox-1.0.0-beta.1.tgz","fileCount":305,"unpackedSize":662018,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG1mmNh+AZU2BWGgCvjz07quGKvv2DSTIcBX2yb/F5pkAiEAp+QEBQaGFVQiFi38vCyum56y5oCpznHuZ4cVnEiUToo="}]},"_npmUser":{"name":"microsoft1es","email":"npmjs@microsoft.com"},"directories":{},"maintainers":[{"name":"azure-sdk","email":"azure-sdk-npmjs@microsoft.com"},{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/containerapps-sandbox_1.0.0-beta.1_1783731004392_0.20297333765843262"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-11T00:50:04.294Z","1.0.0-beta.1":"2026-07-11T00:50:04.563Z","modified":"2026-07-11T00:50:04.771Z"},"maintainers":[{"name":"azure-sdk","email":"azure-sdk-npmjs@microsoft.com"},{"name":"microsoft1es","email":"npmjs@microsoft.com"},{"name":"microsoft-oss-releases","email":"microsoft-oss-publishing@microsoft.com"}],"description":"A generated SDK for ContainerAppsSandboxClient.","homepage":"https://github.com/microsoft/azure-container-apps/tree/main/sdks/typescript/azure-containerapps-sandbox/README.md","keywords":["node","azure","cloud","typescript","browser","isomorphic"],"repository":{"type":"git","url":"git+https://github.com/microsoft/azure-container-apps.git","directory":"sdks/typescript/azure-containerapps-sandbox"},"author":{"name":"Microsoft Corporation"},"bugs":{"url":"https://github.com/microsoft/azure-container-apps/issues"},"license":"MIT","readme":"# Azure Container Apps Sandbox client library for JavaScript\n\nThis package contains an isomorphic SDK for the Azure Container Apps Sandbox API\n(data plane + control plane).\n\nAzure Container Apps Sandboxes are secure, hardware-isolated microVMs with\nsub-second startup, snapshot-based suspend/resume, and per-sandbox network egress\npolicy — ideal for running untrusted code, AI agent workspaces, dev environments,\nand CI runners.\n\n> **Preview** — This package is in preview. The API surface may change without\n> notice. See the [CHANGELOG](./CHANGELOG.md) for migration notes when upgrading.\n\n## Getting started\n\n### Currently supported environments\n\n- [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule)\n\n### Prerequisites\n\n- An [Azure subscription](https://azure.microsoft.com/free/).\n\n### Install the `@azure/containerapps-sandbox` package\n\nInstall the client library with [npm](https://www.npmjs.com/):\n\n```bash\nnpm install @azure/containerapps-sandbox\n```\n\n### Create and authenticate a client\n\nTo create a client, you need a `TokenCredential` from\n[`@azure/identity`](https://www.npmjs.com/package/@azure/identity):\n\n```bash\nnpm install @azure/identity\n```\n\nThere are two clients:\n\n- `ContainerAppsSandboxManagementClient` — the ARM **control plane** for creating\n  and deleting sandbox groups.\n- `SandboxGroupClient` — the **data plane** for a single sandbox group (sandboxes,\n  disk images, snapshots, volumes, secrets, ports, egress, files).\n\n```ts\nimport { DefaultAzureCredential } from \"@azure/identity\";\nimport {\n  ContainerAppsSandboxManagementClient,\n  SandboxGroupClient,\n  endpointForRegion,\n} from \"@azure/containerapps-sandbox\";\n\nconst credential = new DefaultAzureCredential();\nconst subscriptionId = \"<your-subscription-id>\";\nconst resourceGroupName = \"my-rg\";\nconst sandboxGroupName = \"my-sandbox-group\";\nconst region = \"eastus2\";\n\n// 1. Create the sandbox group (ARM control plane).\nconst mgmt = new ContainerAppsSandboxManagementClient(credential, subscriptionId);\nawait mgmt.sandboxGroups\n  .beginCreateOrUpdate(resourceGroupName, sandboxGroupName, { location: region })\n  .then((p) => p.pollUntilDone());\n\n// (Grant yourself the \"Container Apps SandboxGroup Data Owner\" role on the\n//  resource group so the data-plane calls below are authorized.)\n\n// 2. Connect to the data plane and create a sandbox.\nconst group = new SandboxGroupClient(\n  credential,\n  endpointForRegion(region),\n  subscriptionId,\n  resourceGroupName,\n  sandboxGroupName,\n);\nconst sandbox = await group.sandboxes.beginCreate({ disk: undefined }).then((p) => p.pollUntilDone());\n\n// 3. Run a command.\nconst result = await group.sandboxes.exec(sandbox.id, { command: \"echo hello && uname -a\" });\nconsole.log(result.stdout);\n\n// 4. Clean up.\nawait group.sandboxes.delete(sandbox.id);\nawait mgmt.sandboxGroups.beginDelete(resourceGroupName, sandboxGroupName).then((p) => p.pollUntilDone());\n```\n\n## Key concepts\n\n### Operation groups\n\nLike the generated Azure management SDKs, operations are grouped on the client by\nresource type, e.g. `group.sandboxes.get(...)`, `group.diskImages.list()`,\n`mgmt.sandboxGroups.beginCreateOrUpdate(...)`.\n\n### Long-running operations (LRO)\n\nOperations that take more than a few seconds expose a `begin*` method that returns\na `PollerLike<OperationState<T>, T>` from `@azure/core-lro`:\n\n```ts\nconst poller = group.sandboxes.beginCreate({ sourcesRef: { diskImage: { name: \"ubuntu\", isPublic: true } } });\nconst sandbox = await poller.pollUntilDone();\n```\n\n### Paged results\n\nList operations return a `PagedAsyncIterableIterator`:\n\n```ts\nfor await (const sbx of group.sandboxes.list()) {\n  console.log(sbx.id, sbx.state);\n}\n```\n\n### Port IP access control\n\n`PortIpAccessControl` is validated client-side before it is sent (the service's\nbulk `ports.update` path is not re-validated server-side). CIDRs must be\nnetwork-aligned, at most 10 rules with 1–10 CIDRs each, unique names and\npriorities, and priorities in the range 0–1000.\n\n```ts\nimport type { PortIpAccessControl } from \"@azure/containerapps-sandbox\";\n\nconst acl: PortIpAccessControl = {\n  defaultAction: \"Deny\",\n  rules: [{ name: \"office\", action: \"Allow\", priority: 10, sourceCidrs: [\"10.0.0.0/8\"] }],\n};\nawait group.ports.add(sandbox.id, 8443, { ipAccessControl: acl });\n```\n\n## Troubleshooting\n\n### Logging\n\nEnabling logging may help uncover useful information about failures. To see a log\nof HTTP requests and responses, set the `AZURE_LOG_LEVEL` environment variable to\n`info`. Alternatively, logging can be enabled at runtime by calling\n`setLogLevel` in the `@azure/logger`:\n\n```ts\nimport { setLogLevel } from \"@azure/logger\";\nsetLogLevel(\"info\");\n```\n\n## Next steps\n\nSee the [live integration tests](../azure-containerapps-sandbox-live-tests/) for a\nworked end-to-end example that exercises every operation group.\n\n## Contributing\n\nThis SDK mirrors the [Python](../../python/azure-containerapps-sandbox/) and\n[Rust](../../rust/azure-containerapps-sandbox/) SDKs in this repository.\n","readmeFilename":"README.md","_rev":"1-0bff33ec46cb42bc774f9b616cd768a2"}