<br />
<b>Deprecated</b>:  YoastSEO_Vendor\Symfony\Component\DependencyInjection\Container::__construct(): Implicitly marking parameter $parameterBag as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/symfony/dependency-injection/Container.php</b> on line <b>60</b><br />
<br />
<b>Deprecated</b>:  YoastSEO_Vendor\League\OAuth2\Client\Provider\AbstractProvider::authorize(): Implicitly marking parameter $redirectHandler as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/league/oauth2-client/src/Provider/AbstractProvider.php</b> on line <b>416</b><br />
<br />
<b>Deprecated</b>:  YoastSEO_Vendor\GuzzleHttp\Client::getConfig(): Implicitly marking parameter $option as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/guzzle/src/Client.php</b> on line <b>181</b><br />
<br />
<b>Deprecated</b>:  YoastSEO_Vendor\GuzzleHttp\ClientInterface::getConfig(): Implicitly marking parameter $option as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/guzzle/src/ClientInterface.php</b> on line <b>77</b><br />
{"id":3660,"date":"2018-12-01T00:00:00","date_gmt":"2018-12-01T00:00:00","guid":{"rendered":"https:\/\/blog.sharedove.com\/adisjugo\/?p=3660"},"modified":"2019-03-02T12:58:57","modified_gmt":"2019-03-02T12:58:57","slug":"extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps","status":"publish","type":"post","link":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/","title":{"rendered":"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps"},"content":{"rendered":"<p>In the first article in this series, <a href=\"\/adisjugo\/index.php\/2016\/11\/29\/extending-powerapps-and-flow-part-1-adding-custom-data-sources-through-azure-api-apps\/\">I wrote about building PowerApps from the custom data sources using Azure API Apps<\/a>. But, since the built-in expression language in PowerApps is not particularly powerful (number of events and methods available is pretty limited), and since there is no possibility of building any kind of code behind, or JavaScript field behaviors within PowerApps (which I see as huge drawback potentially), the only way to extend its functionality is building custom APIs.<\/p>\n<p>Two recommended &#8211; and supported \u2013 ways, of how to do that, are Azure API Apps, and Azure Functions. While Azure Functions are lighter, easier and faster to develop and deploy, it often makes sense to use API Apps for that purpose, especially if there is already an API App in place, which provides a custom data source (as shown <a href=\"\/adisjugo\/index.php\/2016\/11\/29\/extending-powerapps-and-flow-part-1-adding-custom-data-sources-through-azure-api-apps\/\">in the previous article<\/a>). In that case, it is very easy to add an additional controller to that API App, and to use that for extending the expression language.<\/p>\n<p>This is exactly what we are going to do in this article. We want to create a method, which accepts one string argument (name of the beer), and returns the string value, which determines if the beer is good or not.<\/p>\n<p>Let\u2019s open the BeerAPI API App, which we have created in the previous article, and add an empty controller to it:<\/p>\n<p><a href=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/016.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"016\" src=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/016_thumb.png\" alt=\"016\" width=\"941\" height=\"653\" border=\"0\"><\/a><\/p>\n<p>We will call out controller \u201cBeerQualityController\u201d<\/p>\n<p><a href=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/017.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"017\" src=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/017_thumb.png\" alt=\"017\" width=\"586\" height=\"120\" border=\"0\"><\/a><\/p>\n<p>And we will add one GET method, with one string argument in that method. In our simplified code here, we will declare all beers as good, except of course Heineken, which anyway can\u2019t be considered as a real beer:<\/p>\n<p><a href=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/018.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"018\" src=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/018_thumb.png\" alt=\"018\" width=\"530\" height=\"478\" border=\"0\"><\/a><\/p>\n<p>Let\u2019s save it, build it, and try it with swagger UI:<\/p>\n<p><a href=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/020.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"020\" src=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/020_thumb.png\" alt=\"020\" width=\"783\" height=\"539\" border=\"0\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Great, it works as expected. Once we are done with that, we will need to republish the API App to Azure, and to recreate the custom API Definition in PowerApps. No, updating swagger definition is not supported in PowerApps, so, yes, you will have to delete the whole API, and to recreate it again.<\/p>\n<p>Once you have done that, you can start using this controller in PowerApps.<\/p>\n<p>For test, let\u2019s create an empty screen with two text boxes \u2013 \u201ctxtBeerName\u201d and \u201ctxtBeerQuality\u201d, and a button. We will set the \u201ctxtBeerQuality\u201d source to the variable \u201cBeerQuality\u201d, and on the button click we will do the following:<\/p>\n<p><span style=\"font-family: 'Courier New';\">UpdateContext({BeerQuality:BeerApi.BeerQualityGet(txtBeerName.Text)})<\/span><\/p>\n<p>This command sets the value of the \u201cBeerQuality\u201d variable, to the value that out controller returns for the name of the beer, set in the \u201ctxtBeerName\u201d text box.<\/p>\n<p>Type \u201cheineken\u201d in \u201ctxtBeerName\u201d, click on the button, and you will see that \u201ctxtBeerQuality\u201d value has been set to the appropriate text we\u2019ve got for \u201cheineken\u201d.<\/p>\n<p><a href=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/032.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"032\" src=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/11\/032_thumb.png\" alt=\"032\" width=\"811\" height=\"512\" border=\"0\"><\/a><\/p>\n<h3>Summary<\/h3>\n<p>Since there are no possibilities to extend the business logic beyond built in expression language in PowerApps, this is the way how to simulate that \u201ccode behind\u201d behavior. You need to delegate your code &#8211; your business logic &#8211; to some type of the API. In order to do that, you will either have to make custom controllers in API Apps (as explained here), or use Azure Functions, what we are going to cover in the next article in this blog post series.<\/p>\n<div class=\"fb-background-color\">\n\t\t\t  <div \n\t\t\t  \tclass = \"fb-comments\" \n\t\t\t  \tdata-href = \"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/\"\n\t\t\t  \tdata-numposts = \"59\"\n\t\t\t  \tdata-lazy = \"true\"\n\t\t\t\tdata-colorscheme = \"light\"\n\t\t\t\tdata-order-by = \"time\"\n\t\t\t\tdata-mobile=true>\n\t\t\t  <\/div><\/div>\n\t\t  <style>\n\t\t    .fb-background-color {\n\t\t\t\tbackground:  !important;\n\t\t\t}\n\t\t\t.fb_iframe_widget_fluid_desktop iframe {\n\t\t\t    width: 100% !important;\n\t\t\t}\n\t\t  <\/style>\n\t\t  ","protected":false},"excerpt":{"rendered":"<p>In the first article in this series, I wrote about building PowerApps from the custom data sources using Azure API Apps. But, since the built-in expression language in PowerApps is not particularly powerful (number of events and methods available is pretty limited), and since there is no possibility of building any kind of code behind, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3662,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[11],"tags":[21,126,55],"class_list":["post-3660","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","tag-azure","tag-powerapps","tag-sharepoint"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps - Adis Jugo blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps - Adis Jugo blog\" \/>\n<meta property=\"og:description\" content=\"In the first article in this series, I wrote about building PowerApps from the custom data sources using Azure API Apps. But, since the built-in expression language in PowerApps is not particularly powerful (number of events and methods available is pretty limited), and since there is no possibility of building any kind of code behind, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Adis Jugo blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-01T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-03-02T12:58:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1131\" \/>\n\t<meta property=\"og:image:height\" content=\"707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"adis.jugo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"adis.jugo\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/\",\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/\",\"name\":\"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps - Adis Jugo blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg\",\"datePublished\":\"2018-12-01T00:00:00+00:00\",\"dateModified\":\"2019-03-02T12:58:57+00:00\",\"author\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#primaryimage\",\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg\",\"contentUrl\":\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg\",\"width\":1131,\"height\":707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.sharedove.com\/adisjugo\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#website\",\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/\",\"name\":\"Adis Jugo blog\",\"description\":\"The Southern Side\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.sharedove.com\/adisjugo\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c\",\"name\":\"adis.jugo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g\",\"caption\":\"adis.jugo\"},\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/author\/adisjugo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps - Adis Jugo blog","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:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/","og_locale":"en_US","og_type":"article","og_title":"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps - Adis Jugo blog","og_description":"In the first article in this series, I wrote about building PowerApps from the custom data sources using Azure API Apps. But, since the built-in expression language in PowerApps is not particularly powerful (number of events and methods available is pretty limited), and since there is no possibility of building any kind of code behind, [&hellip;]","og_url":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/","og_site_name":"Adis Jugo blog","article_published_time":"2018-12-01T00:00:00+00:00","article_modified_time":"2019-03-02T12:58:57+00:00","og_image":[{"width":1131,"height":707,"url":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg","type":"image\/jpeg"}],"author":"adis.jugo","twitter_card":"summary_large_image","twitter_misc":{"Written by":"adis.jugo","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/","url":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/","name":"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps - Adis Jugo blog","isPartOf":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#primaryimage"},"image":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg","datePublished":"2018-12-01T00:00:00+00:00","dateModified":"2019-03-02T12:58:57+00:00","author":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c"},"breadcrumb":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#primaryimage","url":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg","contentUrl":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2016\/12\/modesty_blaise_hero_wallpaper_by_johnnyslowhand-d35gkoj.jpg","width":1131,"height":707},{"@type":"BreadcrumbList","@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2018\/12\/01\/extending-powerapps-and-flow-part-2-extending-powerapps-expression-language-with-azure-api-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.sharedove.com\/adisjugo\/"},{"@type":"ListItem","position":2,"name":"Extending PowerApps and Flow, part 2: Extending PowerApps language with Azure API Apps"}]},{"@type":"WebSite","@id":"https:\/\/blog.sharedove.com\/adisjugo\/#website","url":"https:\/\/blog.sharedove.com\/adisjugo\/","name":"Adis Jugo blog","description":"The Southern Side","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.sharedove.com\/adisjugo\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c","name":"adis.jugo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g","caption":"adis.jugo"},"url":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/author\/adisjugo\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/posts\/3660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/comments?post=3660"}],"version-history":[{"count":6,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/posts\/3660\/revisions"}],"predecessor-version":[{"id":3958,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/posts\/3660\/revisions\/3958"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/media\/3662"}],"wp:attachment":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/media?parent=3660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/categories?post=3660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/tags?post=3660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}