canonical: https://jentic.com/apis/azure.com/storageimportexport

# Microsoft Azure StorageImportExport

Jentic publishes the only available OpenAPI specification for StorageImportExport, keeping it validated and agent-ready. The Azure Import/Export Resource Provider API drives bulk transfer of data into and out of Azure Blob and File storage by physically shipping disks to and from Azure datacentres. It manages import or export jobs, lists the locations that accept shipments, and returns the BitLocker keys needed to encrypt and decrypt the disks on transit. Use it for terabyte-scale data migrations where network transfer is impractical.

## For AI agents

Create and track Azure Import/Export jobs that move terabytes of data between physical disks and Azure Storage.

## Scope

Does not perform online data transfer, manage storage accounts, or arrange physical shipping - use for Azure Import/Export job lifecycle and BitLocker key retrieval only.

## Capabilities

- Create an import job that loads data from shipped disks into Azure Storage
- Create an export job that writes blobs onto disks for return shipping
- List every import/export job under a subscription or resource group
- Retrieve the BitLocker keys needed to encrypt or decrypt a job's disks
- Discover the Azure datacentre locations that accept Import/Export shipments
- Update job status when the disks are received or returned
- List the management operations supported by the Microsoft.ImportExport provider

## Use cases

### Bulk Cloud Migration of Cold Archives

Organisations moving multi-terabyte archives - backup tapes, video libraries, scientific datasets - into Azure cannot rely on internet transfer that would take weeks. StorageImportExport lets a customer create an import job, ship encrypted disks to a designated Azure datacentre, and have the data ingested directly into a target storage account. The API exposes job creation, status polling, and BitLocker key retrieval so an operator can track shipments programmatically end to end.

Example prompt: Create an Azure Import job named 'archive-2026-q1' in resource group 'migration-rg' targeting storage account 'archivecold001' and return the shipping address and BitLocker keys.

### Bulk Data Egress for Compliance

Compliance and forensic workflows sometimes require exporting full storage account contents onto physical media for offline review. StorageImportExport supports export jobs that copy specified blob prefixes onto disks shipped back to the customer. Each disk is encrypted with BitLocker; the keys are retrievable through /listBitLockerKeys once the job completes.

Example prompt: Create an export job 'legal-export-2026' in resource group 'compliance-rg' that targets blob prefix 'cases/2025/' and returns BitLocker keys after job completion.

### Operations Dashboard for Migration Programmes

Migration teams running parallel Import/Export shipments across many subscriptions need a single dashboard view of in-flight jobs. The list endpoints scoped at subscription and resource group level return every job's state, progress percentage, and target storage account. A nightly aggregator pulls those listings and surfaces blocked or stalled shipments.

Example prompt: List every import/export job in subscription 'migration-platform' and group results by status (Creating, Shipping, Transferring, Completed).

### Agent-Initiated Cold Data Transfer via Jentic

An AI agent embedded in a data engineering workflow can spin up Import jobs without learning the ARM JSON contract. Through Jentic, the agent searches for the right StorageImportExport operation, loads its input schema, and submits the create request with disk metadata. Tokens stay in your Jentic One instance.

Example prompt: Use Jentic to load the StorageImportExport create-job operation, then create an import job for 12 disks targeting storage account 'genomicsbulk'.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /providers/Microsoft.ImportExport/locations | List Azure datacentre locations that accept shipments |
| GET | /providers/Microsoft.ImportExport/locations/{locationName} | Get a specific Import/Export location |
| GET | /providers/Microsoft.ImportExport/operations | List operations exposed by the resource provider |
| GET | /subscriptions/{subscriptionId}/providers/Microsoft.ImportExport/jobs | List jobs in a subscription |
| GET | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs | List jobs in a resource group |
| PUT | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName} | Create or update an Import/Export job |
| POST | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}/listBitLockerKeys | Retrieve BitLocker keys for the job's disks |

## Key resources

- **Jobs** — Create, update, list, and retrieve Import or Export jobs
- **BitLocker Keys** — Fetch the BitLocker keys associated with a job's disks for encryption and decryption
- **Locations** — List Azure datacentre locations that accept Import/Export shipments
- **Operations** — Discover the management operations exposed by Microsoft.ImportExport

## Why Jentic

- **Setup:** Wiring the Microsoft.ImportExport provider by hand means registering an Azure AD app, running the OAuth2 token exchange, and modeling the drive-metadata structures and eventually-consistent job state transitions the API expects. Through Jentic you install once, import Storage Import/Export from the API Directory, store the Azure AD service principal credential once, and your agent calls it.
- **Permission scoping:** This API puts the subscription, resource group, and job name in the URL path (/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}/...), so a rule can pin your agent to one job and its status. You choose the operations it may call, so retrieving BitLocker keys with listBitLockerKeys is not included unless you add it.
- **Credential handling:** Your Azure AD service principal credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context, and neither do the BitLocker keys returned by listBitLockerKeys.
- **Discovery method:** Agents search Jentic by intent such as 'create an Azure Import/Export job' or 'list import export jobs in a subscription', and Jentic returns the matching Microsoft.ImportExport operation with its input schema so the agent calls the right endpoint without reading the ARM reference.

## Related APIs

- **StorageManagementClient** — Manages the storage accounts that Import/Export jobs target
- **StorSimpleManagementClient** — Hybrid cloud storage with on-prem appliance instead of disk shipping
- **SubscriptionClient** — Lists subscriptions and offers, useful when scripting cross-subscription migrations

## FAQ

### Why is there no official OpenAPI spec for StorageImportExport?

Microsoft Azure publishes Swagger fragments for the Microsoft.ImportExport resource provider but does not publish a consolidated, validated OpenAPI 3 spec. Jentic generates and maintains this spec so that AI agents and developers can call StorageImportExport via structured tooling. It is validated against the live Azure Resource Manager API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the StorageImportExport API use?

All endpoints require Azure Active Directory OAuth 2.0, declared as the azure_auth security scheme with the user_impersonation scope against https://login.microsoftonline.com. Through Jentic, Azure tokens are held in the vault and injected at call time so the agent never sees the raw bearer token.

### Can I retrieve the BitLocker keys for shipped disks via this API?

Yes. POST /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ImportExport/jobs/{jobName}/listBitLockerKeys returns the BitLocker keys for the disks attached to the named job, scoped to your subscription and resource group.

### What are the rate limits for the StorageImportExport API?

Calls go through Azure Resource Manager, which throttles writes per subscription (typically 1,200 writes per hour) and reads more generously. Job state transitions are eventually consistent - poll the job GET endpoint rather than retrying create requests.

### How do I create an Azure import job through Jentic?

Run pip install jentic, search Jentic for 'create an azure import export job', load the StorageImportExport create-or-update job operation, and execute it with subscriptionId, resourceGroupName, jobName, and the body containing the storage account id, list of drive metadata, and return shipping address. Jentic handles the Azure AD token exchange.

### Does this API ship the disks for me?

No. The API only manages the Azure-side job metadata, drive registration, and BitLocker keys. Physical shipping is arranged by you against the Azure datacentre address returned by the location endpoints.

### Can I limit what my agent is allowed to do with the Azure Storage Import/Export API?

Yes. Because you host Jentic One yourself, your own rules decide which Microsoft.ImportExport operations the agent may call and which Azure credentials it may use. This API puts the subscription, resource group, and job name in the URL path, so you can pin the agent to a single job and its status while excluding write operations like create-or-update job. You can also withhold listBitLockerKeys so the agent never retrieves the BitLocker keys for a job's disks unless you explicitly allow it.
