{"id":2302,"date":"2021-03-05T06:22:15","date_gmt":"2021-03-05T12:22:15","guid":{"rendered":"https:\/\/www.teamdesk.net\/blog\/?p=2302"},"modified":"2021-09-28T04:17:15","modified_gmt":"2021-09-28T09:17:15","slug":"passthrough-blocks-in-call-url-and-navigate-actions","status":"publish","type":"post","link":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/","title":{"rendered":"Passthrough blocks in Call URL and Navigate actions"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.teamdesk.net\">TeamDesk<\/a> now providers a way to suppress automatic data encoding in Call URL and Navigate actions using <code><strong>&lt;%*<\/strong> <em>expression<\/em> <strong>%&gt;<\/strong><\/code> passthrough blocks.<\/p>\n\n\n\n<p>Text-based formats, like URLs, <a href=\"https:\/\/en.wikipedia.org\/wiki\/XML\" target=\"_blank\" rel=\"noreferrer noopener\">XML <\/a>or <a href=\"https:\/\/en.wikipedia.org\/wiki\/JSON\" target=\"_blank\" rel=\"noreferrer noopener\">JSON<\/a> add special meaning to some characters. For example, URLs reserve &#8216;\/&#8217; as a path separator, &#8216;?&#8217; to denote the end of the path and start of the query string and &#8216;&amp;&#8217; to delimit query parameters. XML uses &#8216;&lt;&#8216; and &#8216;&gt;&#8217; to denote tags. JSON surrounds string values with quotes. Does it mean you can not put question marks in a value of query parameter of URLs or angle brackets in the text inside XML document? No way. But you should <em>escape<\/em> them; in other words, decorate them somehow.<\/p>\n\n\n\n<p>URLs use <em>percent encoding<\/em> to specify character via its ASCII code; XML uses <em>entity references<\/em> to escape special characters, JSON uses backslash prefix to suppress any special meaning of the character that follows.<\/p>\n\n\n\n<p>When using text formulas in TeamDesk you could call <code>URLEncode(text)<\/code>, <code>XMLEncode(text)<\/code> or<code> JSONEncode(text)<\/code> functions to perform format specific escapes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The problem<\/h2>\n\n\n\n<p>Call URL action&#8217;s URL and Body parts usually built using a lot of columns&#8217; data and wrapping every column with encode function is a bit tedious job; so we introduced special <code>&lt;% <em>expression<\/em> %&gt;<\/code> syntax where expression gets encoded automatically. Always.<\/p>\n\n\n\n<p>But sometimes automatic encoding poses the problem. Suppose your Call URL action calls the service with an URL that comes from the database. An attempt to use a sort of  <code>&lt;%[Base URL]%&gt;\/path\/to\/api <\/code>will lead to error any slashes in [Base URLs] value will be encoded. So, oh, we should not encode URLs. Well, we detect URL columns and formulas, URL(), URLRoot() and BackURL() functions and do not run automatic encoding. But what if you need to calculate the value derived from those functions? For example, easiest way to generate API URL of the database is to use<\/p>\n\n\n\n<p><code>Replace(URLRoot(), \"\/db\/\", \"\/api\/v2\/\")<\/code><\/p>\n\n\n\n<p>But once Replace() or other function kicks in we can no longer suppose the result is the URL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Another example<\/h2>\n\n\n\n<p>There is another, fairly common use case, when Call URLs action body is built with master record&#8217;s data with an addition of set detail records.<\/p>\n\n\n\n<p>Suppose you are sending invoice to third-party system. Invoice contains header fields, such as Contact, Company, Billing and Shipping Addresses and related items. For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{\n    \"contact\": &lt;%=[Contact]%&gt;,\n    \"billingAddress\": &lt;%=[Billing Address]%&gt;\n    ...\n    \"items\": [ \/* something there for items *\/ ],\n    \"total\": &lt;%=[Total%&gt;\n}<\/pre>\n\n\n\n<p>At first glance it seems simple enough. TeamDesk lacks looping capabilities but you can build, say, JSON representation of the item using regular text formula, for example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"{\" &amp; List(\",\", \n'\"product\":' &amp; JSONFormat([Product]), \n'\"quantity\":' &amp; JSONFormat([Quantity]), \n'\"price\":' &amp; JSONFormat([Price]), \n'\"total\":' &amp; JSONFormat([Total])\n) &amp; \"}\"<\/pre>\n\n\n\n<p>then concatenate individual items&#8217; JSON via summary column, but what&#8217;s then? Using summary directly in JSON body won&#8217;t work &#8212; its content will be escaped.<\/p>\n\n\n\n<p>The only way to deal with this is to avoid escaping at all, and escape manually when needed. To do it you can set Body type to Text and wrap every invoice header field with JSONEncode() or JSONFormat().<\/p>\n\n\n\n<pre id=\"block-9fb78e24-f394-44f0-9b62-d17b2c90579e\" class=\"wp-block-preformatted\">{\n    \"contact\": &lt;%JSONFormat([Contact])%&gt;,\n    \"billingAddress\": &lt;%JSONFormat([Billing Address])%&gt;\n    ...\n    \"items\": [ &lt;%[Items]%&gt; ],\n    \"total\": &lt;%JSONFormat([Total])%&gt;\n}\n<\/pre>\n\n\n\n<p>But the more fields master record has, the more complicated it gets. Also, Text body type serves as &#8220;do whatever you want&#8221;, while Form\/XML\/JSON types control overall validity of the text according to a format. Missing brackets in JSON, unclosed tags in XML won&#8217;t be detected with Text body type turning action&#8217;s setup to a set of trial and error attempts. Edit, save, test, edit, save, test&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">And the solution is&#8230; Passthrough blocks<\/h2>\n\n\n\n<p>Just to help dealing with scenarios we described, we are introducing passthrough blocks: &lt;%<strong>*<\/strong> &#8230; %&gt;. Their only purpose is to suppress automatic escaping where it is really needed without resorting to hacks. Need an API URL? Write:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;%* Replace(URLRoot(),\"\/db\/\",\"\/api\/v2\/\") %&gt;<\/pre>\n\n\n\n<p>And here is invoice body:<\/p>\n\n\n\n<pre id=\"block-9fb78e24-f394-44f0-9b62-d17b2c90579e\" class=\"wp-block-preformatted\">{\n    \"contact\": &lt;%=[Contact]%&gt;,\n    \"billingAddress\": &lt;%=[Billing Address]%&gt;\n    ...\n    \"items\": [ &lt;%*[Items]%&gt; ],\n    \"total\": &lt;%=[Total%&gt;\n}<\/pre>\n\n\n\n<p>We hope this little change will make your actions&#8217; setup much easier.<\/p>\n\n\n\n<p>Enjoy!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TeamDesk now providers a way to suppress automatic data encoding in Call URL and Navigate actions using passthrough blocks.<\/p>\n","protected":false},"author":4,"featured_media":2486,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[223,227,229,228],"class_list":["post-2302","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-whats-new","tag-call-url","tag-encoding","tag-navigate","tag-navigate-action"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Passthrough blocks in Call URL and Navigate actions - TeamDesk Blog<\/title>\n<meta name=\"description\" content=\"TeamDesk now providers a way to suppress automatic data encoding in Call URL and Navigate actions using passthrough blocks.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Passthrough blocks in Call URL and Navigate actions - TeamDesk Blog\" \/>\n<meta property=\"og:description\" content=\"TeamDesk now providers a way to suppress automatic data encoding in Call URL and Navigate actions using passthrough blocks.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/\" \/>\n<meta property=\"og:site_name\" content=\"TeamDesk Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-05T12:22:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-09-28T09:17:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/03\/Passthrough-blocks-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"785\" \/>\n\t<meta property=\"og:image:height\" content=\"423\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kirill Bondar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirill Bondar\" \/>\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:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/\"},\"author\":{\"name\":\"Kirill Bondar\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#\\\/schema\\\/person\\\/22c4c05bd657513c8b00122fa364c8d2\"},\"headline\":\"Passthrough blocks in Call URL and Navigate actions\",\"datePublished\":\"2021-03-05T12:22:15+00:00\",\"dateModified\":\"2021-09-28T09:17:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/\"},\"wordCount\":604,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/Passthrough-blocks-3.png\",\"keywords\":[\"call url\",\"encoding\",\"navigate\",\"navigate action\"],\"articleSection\":[\"What's New\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/\",\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/\",\"name\":\"Passthrough blocks in Call URL and Navigate actions - TeamDesk Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/Passthrough-blocks-3.png\",\"datePublished\":\"2021-03-05T12:22:15+00:00\",\"dateModified\":\"2021-09-28T09:17:15+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#\\\/schema\\\/person\\\/22c4c05bd657513c8b00122fa364c8d2\"},\"description\":\"TeamDesk now providers a way to suppress automatic data encoding in Call URL and Navigate actions using passthrough blocks.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/Passthrough-blocks-3.png\",\"contentUrl\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/Passthrough-blocks-3.png\",\"width\":785,\"height\":423,\"caption\":\"Passthrough blocks\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/whats-new\\\/passthrough-blocks-in-call-url-and-navigate-actions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Passthrough blocks in Call URL and Navigate actions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/\",\"name\":\"TeamDesk Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/#\\\/schema\\\/person\\\/22c4c05bd657513c8b00122fa364c8d2\",\"name\":\"Kirill Bondar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g\",\"caption\":\"Kirill Bondar\"},\"url\":\"https:\\\/\\\/www.teamdesk.net\\\/blog\\\/author\\\/kirill-bondar\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Passthrough blocks in Call URL and Navigate actions - TeamDesk Blog","description":"TeamDesk now providers a way to suppress automatic data encoding in Call URL and Navigate actions using passthrough blocks.","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:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/","og_locale":"en_US","og_type":"article","og_title":"Passthrough blocks in Call URL and Navigate actions - TeamDesk Blog","og_description":"TeamDesk now providers a way to suppress automatic data encoding in Call URL and Navigate actions using passthrough blocks.","og_url":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/","og_site_name":"TeamDesk Blog","article_published_time":"2021-03-05T12:22:15+00:00","article_modified_time":"2021-09-28T09:17:15+00:00","og_image":[{"width":785,"height":423,"url":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/03\/Passthrough-blocks-3.png","type":"image\/png"}],"author":"Kirill Bondar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirill Bondar","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#article","isPartOf":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/"},"author":{"name":"Kirill Bondar","@id":"https:\/\/www.teamdesk.net\/blog\/#\/schema\/person\/22c4c05bd657513c8b00122fa364c8d2"},"headline":"Passthrough blocks in Call URL and Navigate actions","datePublished":"2021-03-05T12:22:15+00:00","dateModified":"2021-09-28T09:17:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/"},"wordCount":604,"commentCount":0,"image":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/03\/Passthrough-blocks-3.png","keywords":["call url","encoding","navigate","navigate action"],"articleSection":["What's New"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/","url":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/","name":"Passthrough blocks in Call URL and Navigate actions - TeamDesk Blog","isPartOf":{"@id":"https:\/\/www.teamdesk.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#primaryimage"},"image":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/03\/Passthrough-blocks-3.png","datePublished":"2021-03-05T12:22:15+00:00","dateModified":"2021-09-28T09:17:15+00:00","author":{"@id":"https:\/\/www.teamdesk.net\/blog\/#\/schema\/person\/22c4c05bd657513c8b00122fa364c8d2"},"description":"TeamDesk now providers a way to suppress automatic data encoding in Call URL and Navigate actions using passthrough blocks.","breadcrumb":{"@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#primaryimage","url":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/03\/Passthrough-blocks-3.png","contentUrl":"https:\/\/www.teamdesk.net\/blog\/wp-content\/uploads\/2021\/03\/Passthrough-blocks-3.png","width":785,"height":423,"caption":"Passthrough blocks"},{"@type":"BreadcrumbList","@id":"https:\/\/www.teamdesk.net\/blog\/whats-new\/passthrough-blocks-in-call-url-and-navigate-actions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.teamdesk.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Passthrough blocks in Call URL and Navigate actions"}]},{"@type":"WebSite","@id":"https:\/\/www.teamdesk.net\/blog\/#website","url":"https:\/\/www.teamdesk.net\/blog\/","name":"TeamDesk Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.teamdesk.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.teamdesk.net\/blog\/#\/schema\/person\/22c4c05bd657513c8b00122fa364c8d2","name":"Kirill Bondar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc5bc844095b5753ccc73c589c028bf16615674f289668146bbd59205a08a52d?s=96&d=mm&r=g","caption":"Kirill Bondar"},"url":"https:\/\/www.teamdesk.net\/blog\/author\/kirill-bondar\/"}]}},"_links":{"self":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts\/2302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/comments?post=2302"}],"version-history":[{"count":7,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts\/2302\/revisions"}],"predecessor-version":[{"id":2482,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/posts\/2302\/revisions\/2482"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/media\/2486"}],"wp:attachment":[{"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/media?parent=2302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/categories?post=2302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.teamdesk.net\/blog\/wp-json\/wp\/v2\/tags?post=2302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}