{"id":6008,"date":"2014-05-22T00:00:00","date_gmt":"2014-05-22T00:00:00","guid":{"rendered":"https:\/\/azure.microsoft.com\/blog\/azure-storage-client-library-retry-policy-recommendations"},"modified":"2025-09-12T10:13:26","modified_gmt":"2025-09-12T17:13:26","slug":"azure-storage-client-library-retry-policy-recommendations","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/","title":{"rendered":"Azure Storage Client Library Retry Policy Recommendations"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">For information about <strong><em>how<\/em><\/strong> to configure Azure Storage Library retry policies, <a href=\"https:\/\/gauravmantri.com\/2012\/12\/30\/storage-client-library-2-0-implementing-retry-policies\/\">SCL 2.0 \u2013 Implementing Retry Policies<\/a> by Gaurav Mantri is excellent. But if you want practical guidance on <strong><em>what<\/em><\/strong> retry policy settings to use, that\u2019s harder to find. This post offers some recommendations based on one Microsoft team\u2019s actual experience using the SCL in high-load scenarios (for low-traffic scenarios, the default retry policies are fine).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"exponentialretry-vs-linearretry\">ExponentialRetry vs. LinearRetry<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For a batch process where you\u2019re not concerned about keeping response times short, the ExponentialRetry class sounds like the easy call at first. You want to retry quickly to make sure that you clear a transient error as fast as possible but you don\u2019t want to hammer the server, thereby causing more trouble for an already sick service. And the Azure Storage team continues to tweak the policy to make it more intelligent and provide the best overall performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, consider the impact on your ability to track the quality of your connection to the Storage service. If you use ExponentialRetry with very long timeouts and many retries, you\u2019ll avoid having to handle exceptions for most transient errors, but you won\u2019t know if they\u2019re happening frequently. You could track response times, but you won\u2019t know if the cause is transient errors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One solution is to use OperationContext.RequestResults, which contains results for every operation that was executed by the client library under the covers. OperationContext also provides end-to-end tracing that can be useful for diagnosing issues in a distributed system. If you want to be notified about retries you can use a new event called OperationContext.Retrying. Unfortunately, there is no documentation that shows examples of how to use OperationContext.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another option if you want more diagnostic information is to use the&nbsp;LinearRetry class with a relatively short retry interval and just a few retries so that it will fail fairly fast. Then you can catch the exceptions and implement your own backoff while still reporting the failure. Note that the backoff is really important if you want most requests to eventually succeed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"maximumexecutiontime\">MaximumExecutionTime<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The IRequestOptions interface also includes a MaximumExecutionTime property. This value limits the total time that can be spent on all retries. Depending on the type of operation that you are performing this may need to be very large, as big operations can take a while to fail. In high load conditions with requests for big operations, we found that values below 10 seconds resulted in a lot of failures. Setting MaximumExecutionTime to 60 seconds avoided exceptions. This works well for a background process; for customer-facing scenarios you\u2019ll need to tune differently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We found the ServerTimeout and maximum number of retries values were less impactful. We set them to five seconds and ten retries and that worked fine. Again, this is for a background process in which we care more about eventual success than fast response times. Also, this would not work in all scenarios &#8212; if your application is downloading 1 TB blobs, for example, 5 seconds wouldn&#8217;t be long enough. Another option if you don&#8217;t want timeouts is to set ServerTimeout to null. Starting in StorageClient Library 4.0, null will be the default value.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"avoid-unnecessary-work\">Avoid Unnecessary Work<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For some operations the SCL API provides IfExists methods that you can use to avoid exceptions: Example:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nforeach (IListBlobItem blobItem in this.BlobList())\n{\n    CloudBlockBlob cloudBlob = (CloudBlockBlob)blobItem;\n    cloudBlob.DeleteIfExists(options: this.requestOptions);\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This looks like good defensive programming and it is, but it is also an additional chance to fail and added traffic.&nbsp; In our stress testing it failed often. And it\u2019s unnecessary if you know that the item exists. Changing the code to call <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.windowsazure.storage.blob.cloudblockblob.delete(v=azure.10).aspx\">Delete<\/a> instead of <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.windowsazure.storage.blob.cloudblockblob.deleteifexists(v=azure.10).aspx\">DeleteIfExists<\/a> made the operation perform much better and fail less often. So it\u2019s best to use known information to reduce traffic and provide fewer chances to fail.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"handle-exceptions\">Handle Exceptions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Even with a generous retry policy, sometimes errors will persist long enough for you to get an exception. The Azure Storage Client framework does a good job of making sure that these will be either StorageException or System.<a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/system.aggregateexception(v=vs.110).aspx\">AggregateException<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also, the retry policy classes do not retry on 4xx status codes. There are a few others as well (currently 306, 501 and 505). These codes represent situations that are not transient and that you need to deal with. Common examples are 404 (not found) and 409 (conflict). If you write a custom retry policy, make sure that you check for these situations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"wrapper-library-unnecessary\">Wrapper Library Unnecessary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We started our experience with the Azure Storage Client planning to design a wrapper library that did retries that way we wanted them done. In the end that turned out to be unnecessary. We are still looking at writing libraries for our business logic to centralize our retry tuning and error handling, but they will be based on the Azure Storage Client code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thanks to Allen Prescott for doing the testing and providing the content for this post.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guidance on choosing Azure Storage Client Library retry policy settings.<\/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":[1491],"tags":[],"audience":[],"content-type":[1511],"product":[1548],"tech-community":[],"topic":[],"coauthors":[1412],"class_list":["post-6008","post","type-post","status-publish","format-standard","hentry","category-storage","content-type-best-practices","product-azure-backup","review-flag-1-1680286581-825","review-flag-2-1680286581-601","review-flag-4-1680286581-250","review-flag-5-1680286581-950","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>Azure Storage Client Library Retry Policy Recommendations | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"Guidance on choosing Azure Storage Client Library retry policy settings.\" \/>\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\/azure-storage-client-library-retry-policy-recommendations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Storage Client Library Retry Policy Recommendations | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"Guidance on choosing Azure Storage Client Library retry policy settings.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/\" \/>\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=\"2014-05-22T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-12T17:13:26+00:00\" \/>\n<meta name=\"author\" content=\"Tom Dykstra\" \/>\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=\"Tom Dykstra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 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\/azure-storage-client-library-retry-policy-recommendations\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/tom-dykstra\/\",\"@type\":\"Person\",\"@name\":\"Tom Dykstra\"}],\"headline\":\"Azure Storage Client Library Retry Policy Recommendations\",\"datePublished\":\"2014-05-22T00:00:00+00:00\",\"dateModified\":\"2025-09-12T17:13:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/\"},\"wordCount\":816,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"articleSection\":[\"Storage\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/\",\"name\":\"Azure Storage Client Library Retry Policy Recommendations | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"datePublished\":\"2014-05-22T00:00:00+00:00\",\"dateModified\":\"2025-09-12T17:13:26+00:00\",\"description\":\"Guidance on choosing Azure Storage Client Library retry policy settings.\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Storage\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/storage\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Azure Storage Client Library Retry Policy Recommendations\"}]},{\"@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":"Azure Storage Client Library Retry Policy Recommendations | Microsoft Azure Blog","description":"Guidance on choosing Azure Storage Client Library retry policy settings.","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\/azure-storage-client-library-retry-policy-recommendations\/","og_locale":"en_US","og_type":"article","og_title":"Azure Storage Client Library Retry Policy Recommendations | Microsoft Azure Blog","og_description":"Guidance on choosing Azure Storage Client Library retry policy settings.","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2014-05-22T00:00:00+00:00","article_modified_time":"2025-09-12T17:13:26+00:00","author":"Tom Dykstra","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Tom Dykstra","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/tom-dykstra\/","@type":"Person","@name":"Tom Dykstra"}],"headline":"Azure Storage Client Library Retry Policy Recommendations","datePublished":"2014-05-22T00:00:00+00:00","dateModified":"2025-09-12T17:13:26+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/"},"wordCount":816,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"articleSection":["Storage"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/","name":"Azure Storage Client Library Retry Policy Recommendations | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"datePublished":"2014-05-22T00:00:00+00:00","dateModified":"2025-09-12T17:13:26+00:00","description":"Guidance on choosing Azure Storage Client Library retry policy settings.","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-client-library-retry-policy-recommendations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"Storage","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/storage\/"},{"@type":"ListItem","position":3,"name":"Azure Storage Client Library Retry Policy Recommendations"}]},{"@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\/6008","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=6008"}],"version-history":[{"count":1,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/6008\/revisions"}],"predecessor-version":[{"id":46159,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/6008\/revisions\/46159"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=6008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=6008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=6008"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=6008"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=6008"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=6008"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=6008"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=6008"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=6008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}