{"id":5485,"date":"2015-04-27T00:00:00","date_gmt":"2015-04-27T00:00:00","guid":{"rendered":"https:\/\/azure.microsoft.com\/blog\/policy-expressions-in-azure-api-management"},"modified":"2025-09-17T08:24:06","modified_gmt":"2025-09-17T15:24:06","slug":"policy-expressions-in-azure-api-management","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/","title":{"rendered":"Policy Expressions in Azure API Management"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/api-management\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure API Management<\/a> offers the ability to control and modify the behavior of published APIs using out-of-the-box policies that can be configured from the Publisher portal. These <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/api-management-policy-reference\/\" target=\"_blank\" rel=\"noreferrer noopener\">policies<\/a> are applied to the inbound request or the outbound response in the API Management proxy that sits between the API consumer and the API backend. <a href=\"https:\/\/msdn.microsoft.com\/library\/azure\/dn910913.aspx\" target=\"_blank\" rel=\"noreferrer noopener\">Policy expressions<\/a> augment the ability of API Management policies, providing a sophisticated means to control traffic and modify API behavior without requiring you to write any code or modifying any backend services. You can use policy expressions as attribute values or text values in most API Management policies.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"syntax\">Syntax<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Policy expressions use the C# 6.0 syntax and have access to a subset of the .NET Framework types. They also have access to an implicit <a href=\"https:\/\/msdn.microsoft.com\/library\/azure\/dn910913.aspx#ContextVariables\" target=\"_blank\" rel=\"noreferrer noopener\">context variable<\/a> whose members have information about the request and\/or the response.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For instance,\u00a0 in the <a href=\"https:\/\/msdn.microsoft.com\/library\/azure\/dn894085.aspx#set_variable\" target=\"_blank\" rel=\"noreferrer noopener\">Set Variable<\/a> policy, you can use\u00a0 a policy expression to set the value as:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The policy expression in the above statement is encapsulated as &#8220;@(expression)&#8221;, where expression is a well-formed C# statement. This expression will evaluate as true if the request originates from an iPad or an iPhone client. Here, the context variable provides access to the Request object, whose member Headers provides access to the headers included in the request by the application invoking the API. Note you can\u2019t have a mix of normal text and expressions as a parameter value in a policy. Multi-statement expressions have to be encapsulated in curly-braces as&#8221;@{expression 1; expression 2}&#8221;.\u00a0 All paths in a multi-statement expression must return a value that can be used by the policy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"orchestration-and-api-redirection\">Orchestration and API Redirection<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Policy expressions when used in conjunction with <a href=\"https:\/\/msdn.microsoft.com\/library\/azure\/dn894085.aspx\" target=\"_blank\" rel=\"noreferrer noopener\">API Management advanced policies<\/a> to orchestrate sophisticated API re-direction and behavior updates. You can use this to project a modern, updated fa\u00e7ade for your published API without rewriting the backend services. Here\u2019s another example of a policy expression, that when used in the inbound path can be used to redirect an incoming request based on version information included as a query parameter in a published API:<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"context-in-policy-expressions\">Context in policy expressions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The implicitly-available context variable provides access to the request and\/or response parameter of the API call. In addition to the request and response, context also provides access to information about your API Management service instance, such as the published APIs, operations, products, users, subscriptions and variables. Note that the contents of the context variable can change in each stage of the pipeline. For instance, context.Request.Url will contain the transformed URL after the <a href=\"https:\/\/msdn.microsoft.com\/library\/azure\/7406a8ce-5f9c-4fae-9b0f-e574befb2ee9#RewriteURL\" target=\"_blank\" rel=\"noreferrer noopener\">Rewrite URL<\/a> policy has been executed. You can use the Set Variable policy in conjunction with policy expressions to preserve the current contents of an object in the context variable for later use, as below:<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n  n    \";\n      str += context.Request.Method;\n      str += \" \"\";\n      str += context.Variables.GetValueOrDefault(\"requestPath\");\n      str += \"\"\";\n      return str;\n    }\" \/>\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The above policy snippet inserts the method &amp; URL path that was used to invoke the original request into the &#8220;&#8221; section of the response body as the &#8220;&#8221; element. Since the policy definition uses XML, the characters &#8216;&lt;&#8216; and &#8216;&gt;&#8217; are escaped in the from parameter, but not in the multi-statement policy expression in the to parameter. In this example, we use set-variable to save the request URL path from the context and then use this in the find-and-replace policy. \u00a0 For a short tutorial on this, see the screencast on <a href=\"https:\/\/channel9.msdn.com\/Blogs\/AzureApiMgmt\/Policy-Expressions-in-Azure-API-Management\" target=\"_blank\" rel=\"noreferrer noopener\">Policy Expressions<\/a> on Channel 9. To learn more, visit <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/api-management-howto-policies\/\" target=\"_blank\" rel=\"noreferrer noopener\">Policies in Azure API Management<\/a>.<\/p>\n\n\n<p>\u00a0<\/p>\n<pre class=\"prettyprint\">\n  \n    <!-- Save the URL in invoked request from the context before its rewritten. -->\n    \n    \n    \n  \n  \n  \n    <!-- Insert the saved request method+URL in the result section. -->\n    <!-- Note request method wasn&#039;t rewritten, so we can access that from context. -->\n    n    \";\n      str += context.Request.Method;\n      str += \" \"\";\n      str += context.Variables.GetValueOrDefault(\"requestPath\");\n      str += \"\"\";\n      return str;\n    }\" \/&gt;\n  \n<\/pre>\n<p>The above policy snippet inserts the method &amp; URL path that was used to invoke the original request into the &#8220;&#8221; section of the response body as the &#8220;&#8221; element. Since the policy definition uses XML, the characters &#8216;&lt;&#8216; and &#8216;&gt;&#8217; are escaped in the from parameter, but not in the multi-statement policy expression in the to parameter. In this example, we use set-variable to save the request URL path from the context and then use this in the find-and-replace policy. \u00a0 For a short tutorial on this, see the screencast on <a href=\"https:\/\/channel9.msdn.com\/Blogs\/AzureApiMgmt\/Policy-Expressions-in-Azure-API-Management\" target=\"_blank\" rel=\"noopener\">Policy Expressions<\/a> on Channel 9. To learn more, visit <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/api-management-howto-policies\/\" target=\"_blank\" rel=\"noopener\">Policies in Azure API Management<\/a>.<\/p>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we&#8217;ll discuss the Policy Expressions feature of Azure API Management.<\/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":[1498,1485,1556,1461],"tags":[],"audience":[3054,3055,3056],"content-type":[],"product":[1499],"tech-community":[],"topic":[],"coauthors":[1349],"class_list":["post-5485","post","type-post","status-publish","format-standard","hentry","category-integration","category-internet-of-things","category-mobile","category-web","audience-business-decision-makers","audience-developers","audience-it-implementors","product-api-management","review-flag-1680286580-543","review-flag-1680286581-295","review-flag-1680286581-56","review-flag-1680286581-364","review-flag-1-1680286581-825","review-flag-2-1680286581-601","review-flag-6-1680286581-909","review-flag-9-1680286581-259","review-flag-and-o-1680286581-349"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Policy Expressions in Azure API Management | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"In this post, we&#039;ll discuss the Policy Expressions feature of Azure API Management.\" \/>\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\/policy-expressions-in-azure-api-management\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Policy Expressions in Azure API Management | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"In this post, we&#039;ll discuss the Policy Expressions feature of Azure API Management.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/\" \/>\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-04-27T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-17T15:24:06+00:00\" \/>\n<meta name=\"author\" content=\"Santosh Chandwani\" \/>\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=\"Santosh Chandwani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\/policy-expressions-in-azure-api-management\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/santosh-chandwani\/\",\"@type\":\"Person\",\"@name\":\"Santosh Chandwani\"}],\"headline\":\"Policy Expressions in Azure API Management\",\"datePublished\":\"2015-04-27T00:00:00+00:00\",\"dateModified\":\"2025-09-17T15:24:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/\"},\"wordCount\":670,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"articleSection\":[\"Integration\",\"Internet of things\",\"Mobile\",\"Web\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/\",\"name\":\"Policy Expressions in Azure API Management | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"datePublished\":\"2015-04-27T00:00:00+00:00\",\"dateModified\":\"2025-09-17T15:24:06+00:00\",\"description\":\"In this post, we'll discuss the Policy Expressions feature of Azure API Management.\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integration\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/integration\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Policy Expressions in Azure API Management\"}]},{\"@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":"Policy Expressions in Azure API Management | Microsoft Azure Blog","description":"In this post, we'll discuss the Policy Expressions feature of Azure API Management.","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\/policy-expressions-in-azure-api-management\/","og_locale":"en_US","og_type":"article","og_title":"Policy Expressions in Azure API Management | Microsoft Azure Blog","og_description":"In this post, we'll discuss the Policy Expressions feature of Azure API Management.","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2015-04-27T00:00:00+00:00","article_modified_time":"2025-09-17T15:24:06+00:00","author":"Santosh Chandwani","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Santosh Chandwani","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/santosh-chandwani\/","@type":"Person","@name":"Santosh Chandwani"}],"headline":"Policy Expressions in Azure API Management","datePublished":"2015-04-27T00:00:00+00:00","dateModified":"2025-09-17T15:24:06+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/"},"wordCount":670,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"articleSection":["Integration","Internet of things","Mobile","Web"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/","name":"Policy Expressions in Azure API Management | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"datePublished":"2015-04-27T00:00:00+00:00","dateModified":"2025-09-17T15:24:06+00:00","description":"In this post, we'll discuss the Policy Expressions feature of Azure API Management.","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/policy-expressions-in-azure-api-management\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"Integration","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/integration\/"},{"@type":"ListItem","position":3,"name":"Policy Expressions in Azure API Management"}]},{"@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\/5485","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=5485"}],"version-history":[{"count":1,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/5485\/revisions"}],"predecessor-version":[{"id":46421,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/5485\/revisions\/46421"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=5485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=5485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=5485"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=5485"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=5485"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=5485"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=5485"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=5485"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=5485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}