{"id":5221,"date":"2015-09-23T00:00:00","date_gmt":"2015-09-23T00:00:00","guid":{"rendered":"https:\/\/azure.microsoft.com\/blog\/introducing-azure-storage-data-movement-library-preview-2"},"modified":"2025-09-17T09:32:16","modified_gmt":"2025-09-17T16:32:16","slug":"introducing-azure-storage-data-movement-library-preview-2","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/","title":{"rendered":"Introducing Azure Storage Data Movement Library Preview"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Since <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/storage-use-azcopy\/\">AzCopy<\/a> was first released, a large number of customers have requested programmatic access to AzCopy. We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short). This library is based on the core data movement framework that powers AzCopy. The library is designed for high-performance, reliable and easy Azure Storage data transfer operations enabling scenarios such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Uploading, downloading and copying data between Microsoft Azure Blob and File Storage<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Migrating data from other cloud providers such as AWS S3 to Azure Blob Storage<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Backing up Azure Storage data<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Here is a sample demonstrating how to upload a blob, (find more samples at <a href=\"https:\/\/github.com\/Azure\/azure-storage-net-data-movement\">GitHub<\/a>).<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nusing System;\nusing System.Threading;\nusing Microsoft.WindowsAzure.Storage;\nusing Microsoft.WindowsAzure.Storage.Blob;\n\/\/ Include the New Azure Storage Data Movement Library\nusing Microsoft.WindowsAzure.Storage.DataMovement;\n\n\/\/ Setup the storage context and prepare the object you need to upload\nstring storageConnectionString = \"myStorageConnectionString\";\nCloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);\nCloudBlobClient blobClient = account.CreateCloudBlobClient();\nCloudBlobContainer blobContainer = blobClient.GetContainerReference(\"mycontainer\");\nblobContainer.CreateIfNotExists();\nstring sourcePath = \"pathtotest.txt\";\nCloudBlockBlob destBlob = blobContainer.GetBlockBlobReference(\"myblob\");\n\n\n\/\/ Use the interfaces from the new Azure Storage Data Movement Library to upload the blob\n\/\/ Setup the number of the concurrent operations\nTransferManager.Configurations.ParallelOperations = 64;\n\n\/\/ Setup the transfer context and track the upoload progress\nTransferContext context = new TransferContext();\ncontext.ProgressHandler = new Progress((progress) =>\n{\n    Console.WriteLine(\"Bytes uploaded: {0}\", progress.BytesTransferred);\n});\n\n\/\/ Upload a local blob\nvar task = TransferManager.UploadAsync(\n    sourcePath, destBlob, null, context, CancellationToken.None);\ntask.Wait();\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Azure Storage Data Movement Library has the same performance and exposes the core functionalities of AzCopy. You can install the first preview of the library from <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.Azure.Storage.DataMovement\">Nuget<\/a> or download the source code from <a href=\"https:\/\/github.com\/Azure\/azure-storage-net-data-movement\">GitHub<\/a>. In the initial version (0.1.0) of this library, you can find the following abilities:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Support data transfer for Azure Storage abstraction: Blob<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Support data transfer for Azure Storage abstraction: File<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Download, upload, copy single object<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Control the number of concurrent operations<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Synchronous and asynchronous copying<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Define the number of concurrent operations<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Define the suffix of the user agent<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Set the content type<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Set the Access Condition to conditionally copy objects, for example: copy objects changed since certain date<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Validate content MD5<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Download specific blob snapshot<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Track transfer progress: bytes transferred, number of success, fail, skip files<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Recover (Set\/Get transfer checkpoint)<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Transfer Error handling (transfer exception and error code)<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Client-side logging<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">DML is an <strong>open source <\/strong>project. We welcome contributions from the community. In particular we are interested in extensions to our samples to help make them more robust. Together with the release of version 0.1.0, we have created the following samples, for more details, please visit <a href=\"https:\/\/github.com\/Azure\/azure-storage-net-data-movement\/blob\/master\/README.md\">GitHub Readme.md<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/github.com\/Azure\/azure-storage-net-data-movement\/tree\/master\/samples\/DataMovementSamples\">Upload, download, copy an Azure Storage Blob<\/a><\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/github.com\/Azure\/azure-storage-net-data-movement\/tree\/master\/samples\/S3ToAzureSample\">Migrate data from AWS S3 to Azure Blob Storage<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Next steps<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We will continue the investment for both AzCopy and Data Movement Library, and in the next releases of Data Movement Library, we will add the support for more advanced features, which shall include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Download, upload, copy directory (local file directory, blob virtual directory, file share directory)<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Transfer directory in recursive mode or flat mode<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Specify the file pattern when copying files and directories<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Download Snapshots under directories<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">As always, we look forward to your feedback.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","footnotes":"","msx_community_cta_settings":[]},"categories":[1474,1491],"tags":[],"audience":[3054,3057,3053,3056],"content-type":[],"product":[1610],"tech-community":[],"topic":[],"coauthors":[97],"class_list":["post-5221","post","type-post","status-publish","format-standard","hentry","category-analytics","category-storage","audience-business-decision-makers","audience-data-professionals","audience-it-decision-makers","audience-it-implementors","product-azure-data-lake-storage","review-flag-1680286580-543","review-flag-1680286581-295","review-flag-1-1680286581-825","review-flag-alway-1680286580-106","review-flag-new-1680286579-546"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introducing Azure Storage Data Movement Library Preview | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short).\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing Azure Storage Data Movement Library Preview | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Azure Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/microsoftazure\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-23T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-17T16:32:16+00:00\" \/>\n<meta name=\"author\" content=\"Microsoft Azure\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@azure\" \/>\n<meta name=\"twitter:site\" content=\"@azure\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Azure\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/microsoft-azure\/\",\"@type\":\"Person\",\"@name\":\"Microsoft Azure\"}],\"headline\":\"Introducing Azure Storage Data Movement Library Preview\",\"datePublished\":\"2015-09-23T00:00:00+00:00\",\"dateModified\":\"2025-09-17T16:32:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/\"},\"wordCount\":403,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"articleSection\":[\"Analytics\",\"Storage\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/\",\"name\":\"Introducing Azure Storage Data Movement Library Preview | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"datePublished\":\"2015-09-23T00:00:00+00:00\",\"dateModified\":\"2025-09-17T16:32:16+00:00\",\"description\":\"We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short).\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Analytics\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/analytics\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Introducing Azure Storage Data Movement Library Preview\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"name\":\"Microsoft Azure Blog\",\"description\":\"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.\",\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\",\"name\":\"Microsoft Azure Blog\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"width\":512,\"height\":512,\"caption\":\"Microsoft Azure Blog\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/microsoftazure\",\"https:\/\/x.com\/azure\",\"https:\/\/www.instagram.com\/microsoftdeveloper\/\",\"https:\/\/www.linkedin.com\/company\/16188386\",\"https:\/\/www.youtube.com\/user\/windowsazure\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117\",\"name\":\"shakir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"caption\":\"shakir\"},\"sameAs\":[\"https:\/\/azure.microsoft.com\"],\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introducing Azure Storage Data Movement Library Preview | Microsoft Azure Blog","description":"We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short).","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/","og_locale":"en_US","og_type":"article","og_title":"Introducing Azure Storage Data Movement Library Preview | Microsoft Azure Blog","og_description":"We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short).","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2015-09-23T00:00:00+00:00","article_modified_time":"2025-09-17T16:32:16+00:00","author":"Microsoft Azure","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Microsoft Azure","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/microsoft-azure\/","@type":"Person","@name":"Microsoft Azure"}],"headline":"Introducing Azure Storage Data Movement Library Preview","datePublished":"2015-09-23T00:00:00+00:00","dateModified":"2025-09-17T16:32:16+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/"},"wordCount":403,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"articleSection":["Analytics","Storage"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/","name":"Introducing Azure Storage Data Movement Library Preview | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"datePublished":"2015-09-23T00:00:00+00:00","dateModified":"2025-09-17T16:32:16+00:00","description":"We are pleased to announce a new open-sourced Azure Storage data movement library for .NET (DML for short).","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/introducing-azure-storage-data-movement-library-preview-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"Analytics","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/analytics\/"},{"@type":"ListItem","position":3,"name":"Introducing Azure Storage Data Movement Library Preview"}]},{"@type":"WebSite","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","name":"Microsoft Azure Blog","description":"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.","publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization","name":"Microsoft Azure Blog","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","width":512,"height":512,"caption":"Microsoft Azure Blog"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/microsoftazure","https:\/\/x.com\/azure","https:\/\/www.instagram.com\/microsoftdeveloper\/","https:\/\/www.linkedin.com\/company\/16188386","https:\/\/www.youtube.com\/user\/windowsazure"]},{"@type":"Person","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117","name":"shakir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4","url":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","caption":"shakir"},"sameAs":["https:\/\/azure.microsoft.com"],"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/"}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Azure Blog","distributor_original_site_url":"https:\/\/azure.microsoft.com\/en-us\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/5221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/comments?post=5221"}],"version-history":[{"count":1,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/5221\/revisions"}],"predecessor-version":[{"id":46483,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/5221\/revisions\/46483"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=5221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=5221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=5221"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=5221"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=5221"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=5221"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=5221"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=5221"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=5221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}