Operations provided by the storage service API may have multiple versions. You may specify which version of an operation you want to use by setting the x-ms-version request header. If your service calls an older version of an operation, you can choose to continue calling the older version, or modify your code to call a newer version. Any differences in functionality between versions are outlined in the documentation.
The x-ms-version request header value must be specified in the format YYYY-MM-DD. For example:
Request Headers:
x-ms-version: 2011-08-18
Anonymous and authenticated requests may or may not have a version specified. The following list indicates how these requests are evaluated and how the request is processed if a condition is met.
-
If a request has a valid x-ms-version header, the storage service will use the specified version.
-
If a request does not have an x-ms-version header, but the owner has set a default version using the Set Service Properties API, then the owner-specified default version will be used.
-
If a request does not have an x-ms-version header and the owner has not set a default version, then the ACL for the Blob container is evaluated by the following conditions:
-
If the ACL was set using version 2009-09-19 or newer, the request will use the 2009-09-19 version.
-
If the ACL was set using any version before 2009-09-19, then the earliest version of the storage services is used.
Currently, the Windows Azure storage services do not require the x-ms-version header to be specified on the request. However, we recommend that you include this header on every request, especially authenticated requests. In addition, we recommend that you set a default version using the Set Storage Service Properties API.
The following table shows which versions of the storage services are currently available:
|
Version
|
Description
|
|
2011-08-18
|
The 2011-08-18 version is the latest version of the Windows Azure storage services. This version includes these changes:
-
Get Blob (REST API) returns an Accept-Ranges:bytes header in the response to indicate that the service supports range requests.
-
Get Blob (REST API) supports a new Range header format that reads from the specified offset to the end of the blob. For more information, see Specifying the Range Header for Blob Service Operations.
-
ETags returned by the Blob service are enclosed in quotes. In addition, the Blob service will accept quoted and unquoted ETags.
-
Set Blob Service Properties can specify a default version to use when an un-versioned request is received.
-
If-Match GET and PUT operations against the Blob service will now return HTTP 404 (“Not Found) and HTTP 412 (“Precondition Failed”) if the blob doesn’t exist. This change applies to 2009-09-19 and newer versions.
-
The Table service supports projections of selected properties by using the $select query option. For more information, see Query Entities and Writing LINQ Queries.
-
The Table service adds the Insert Or Replace Entity and Insert Or Merge Entity operations, which “upsert” an entity.
-
The Queue service adds the Update Message operation, which can extend the invisibility time of a message or update the contents of the message.
-
The Put Message operation adds the optional visibilitytimeout parameter which can extend the invisibility time of a new message.
-
The visibilitytimeout parameter can now be set to a maximum of 7 days, up from the previous maximum of 2 hours.
-
Queue messages can now be 64KB in size, up from the previous maximum size of 8KB.
|
|
2009-09-19
|
The 2009-09-19 version includes these changes:
-
Enhancements to Shared Key authentication. See Authentication Schemes for more information.
-
The introduction of a new type of blob, the page blob, which is optimized for random read/write operations and provides the ability to write to a range of bytes in a blob. See Understanding Block Blobs and Page Blobs for more information.
-
New naming rules for container, blob, and queue metadata. See Naming Containers, Blobs, and Metadata and Naming Queues and Metadata for more information.
-
Blob snapshots, which are read-only versions of a blob as it existed at the time the snapshot was taken. See HTTP Operations on Blob Service Resources and Snapshot Blob (REST API) for more information.
-
Blob leases, which ensure a one-minute exclusive write lock on a blob. See Lease Blob (REST API) for more information.
-
Enhanced control over publicly accessible container and blob resources. See Setting Access Control for Containers for more information.
-
Anonymous access to the root container. See Working with the Root Container for more information.
-
The x-ms-version response header, returned by all API operations. This header indicates which version of the API was used to make the request.
-
Additional options for enumerating containers, blobs, and queues. These options permit you to return metadata in the enumeration, and in the case of blobs, to return snapshots and uncommitted blobs in the list. See List Containers (REST API), List Blobs (REST API), and List Queues for more information.
-
Additional blob properties, which save values specified for standard HTTP headers. See Set Blob Properties (REST API) for more information.
-
A DequeueCount property for messages, which indicates how many times a message has been dequeued. See Get Messages and Peek Messages for more information.
-
A requirement that REST calls to the Table service include the DataServiceVersion and MaxDataServiceVersion headers on every request. See Setting Required ADO.NET Headers for more information.
-
New values are returned in the Server response header to identify the service that handled the request. These values are:
-
Windows-Azure-Blob/1.0
-
Windows-Azure-Queue/1.0
-
Windows-Azure-Table/1.0
|
|
2009-07-17
|
The 2009-07-17 version includes these changes:
|
|
2009-04-14
|
The 2009-04-14 version includes these changes:
-
The Copy Blob (REST API) operation was introduced with the 2009-04-14 version. To call Copy Blob, you must specify the x-ms-version header.
-
The Get Block List (REST API) operation offers new functionality with the 2009-04-14 version. You can now specify whether you wish to return the list of committed blocks, the list of uncommitted blocks, or both lists together. To use this new functionality, you must set the x-ms-version request header to 2009-04-14.
-
Entity group transactions permit atomic batch operations for multiple insert, update, and delete operations against the 2009-04-14 version of the Table service. For more information, see Performing Entity Group Transactions.
-
The Table service no longer supports property names, including the dash (-) character in the 2009-04-14 version.
-
Beginning with the 2009-04-14 version, the Table service now supports naming properties with C# Unicode characters. For more information about naming properties, see Understanding the Table Service Data Model.
|
Note |
|
Currently only the default versions of all storage services API operations are supported by the storage emulator. |
See Also