{"id":9477,"date":"2020-08-06T14:07:31","date_gmt":"2020-08-06T12:07:31","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=9477"},"modified":"2023-10-20T16:01:17","modified_gmt":"2023-10-20T14:01:17","slug":"creation-of-custom-connector-for-power-automate-bugherd-api-connector","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/en\/creation-of-custom-connector-for-power-automate-bugherd-api-connector\/","title":{"rendered":"Creation of Custom Connector for Power Automate \u2013 BugHerd API connector"},"content":{"rendered":"\n<p>During one of the recent projects, we were asked to do an integration with <a href=\"https:\/\/www.bugherd.com\" rel=\"nofollow\" >BugHerd<\/a> using Power Automate. <\/p>\n\n\n\n<p>BugHerd is a simple website that allows collecting feedback and track bug. We essentially needed to synchronize tasks between BugHerd and another bug tracking system &#8211; <a href=\"http:\/\/www.trello.com\" rel=\"nofollow\" >Trello<\/a>.<\/p>\n\n\n\n<p>The requirements were the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Whenever there\u2019s a change to a task in BugHerd, reflect those changes in a corresponding task in Trello<\/li>\n\n\n\n<li>Perform some periodic cleanup tasks on BugHerd tasks and comments<\/li>\n<\/ul>\n\n\n\n<p>So, translating to Power Automate, we needed a trigger and some actions for both BugHerd and Trello. With Trello, there is no problem, there is an official connector in Power Automate which does everything we needed. However, BugHerd does not have an official Power Automate connector. Luckily, BugHerd has its own API and support for webhooks, so they could be used to communicate with BugHerd. And since Power Automate lets you create your own custom connectors, we decided to create one, so we could utilize it in the future (instead of having to use HTTP action).<\/p>\n\n\n\n<p>Microsoft provides multiple ways of creating custom connectors for Power Automate (<a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/register-custom-api\" rel=\"nofollow\" >https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/register-custom-api<\/a>):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create from an OpenAPI definition<\/li>\n\n\n\n<li>Create from a Postman<\/li>\n\n\n\n<li>Create from scratch<\/li>\n<\/ul>\n\n\n\n<p>Unfortunately, since all common BugHerd openapi auto discovery throws 401 Unauthorized exception we had to start the creation from scratch. BugHerd\u2019s API is well documented <a href=\"https:\/\/www.bugherd.com\/api_v2\" rel=\"nofollow\" >here<\/a>. Using curl we were able to create a collection of endpoints and their responses and put them into swagger definition file using <a href=\"http:\/\/editor.swagger.io\/\" rel=\"nofollow\" >Swagger Editor site<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9616\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-1.png\"><img decoding=\"async\" width=\"1898\" height=\"938\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-1.png\" alt=\"BugHerd API in Swagger Editor\" class=\"wp-image-9616\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-1.png 1898w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-1-300x148.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-1-1024x506.png 1024w\" sizes=\"(max-width: 1898px) 100vw, 1898px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 1 BugHerd API in Swagger Editor<\/figcaption><\/figure>\n\n\n\n<p>Having an OpenAPI\/Swagger definition, we could start registration of a new custom connector in Power Automate. We started by, going to <a href=\"https:\/\/flow.microsoft.com\" rel=\"nofollow\" >https:\/\/flow.microsoft.com<\/a> and once logged in, went to Data -&gt; Custom Connectors using the left navigation.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full wp-image-9617\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-2.png\"><img decoding=\"async\" width=\"199\" height=\"372\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-2.png\" alt=\"Navigation to Custom Connectors on Power Automate site\" class=\"wp-image-9617\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-2.png 199w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-2-160x300.png 160w\" sizes=\"(max-width: 199px) 100vw, 199px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 2 Navigation to Custom Connectors on Power Automate site<\/figcaption><\/figure>\n\n\n\n<p>Once there, click on Custom Connectors page, clicked New custom connector and selected Import from OpenApi file.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-3.png\"><img decoding=\"async\" width=\"267\" height=\"228\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-3.png\" alt=\"\" class=\"wp-image-9618\"\/><\/a><\/figure>\n\n\n\n<p>This started a wizard that guided us through the whole registration process.<\/p>\n\n\n\n<p>First, we needed to apply some general information about the connector:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9619\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-4.png\"><img decoding=\"async\" width=\"1102\" height=\"875\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-4.png\" alt=\"Custom connector wizard in Power Automate - General\" class=\"wp-image-9619\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-4.png 1102w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-4-300x238.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-4-1024x813.png 1024w\" sizes=\"(max-width: 1102px) 100vw, 1102px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 3 Custom connector wizard in Power Automate &#8211; General<\/figcaption><\/figure>\n\n\n\n<p>In the Security tab, we specified authentication. BugHerd API uses basic authentication with a username and a password. Since those are the default settings in the wizard for basic authentication, we left those settings intact.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9620\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-5.png\"><img decoding=\"async\" width=\"1092\" height=\"583\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-5.png\" alt=\"Custom connector wizard in Power Automate - Security\" class=\"wp-image-9620\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-5.png 1092w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-5-300x160.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-5-1024x547.png 1024w\" sizes=\"(max-width: 1092px) 100vw, 1092px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 4 Custom connector wizard in Power Automate &#8211; Security<\/figcaption><\/figure>\n\n\n\n<p>Definition tab is where all the fun happens. Here you may specify Actions and Triggers that will later be available for the custom connector. If you import your own OpenAPI file, most of the Actions, Triggers and References are already specified. Depending on how much effort you put into creating an OpenAPI file, you either do not need to do anything or introduce just minor adjustments. I encourage you to define action requests and responses in detail \u2013 this way Power Automate will be able to suggest particular fields during flow creation.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-6.png\"><img decoding=\"async\" width=\"1096\" height=\"863\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-6.png\" alt=\"\" class=\"wp-image-9621\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-6.png 1096w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-6-300x236.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-6-1024x806.png 1024w\" sizes=\"(max-width: 1096px) 100vw, 1096px\" \/><\/a><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9622\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-7.png\"><img decoding=\"async\" width=\"1095\" height=\"861\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-7.png\" alt=\"Custom connector wizard in Power Automate - Definition\" class=\"wp-image-9622\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-7.png 1095w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-7-300x236.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-7-1024x805.png 1024w\" sizes=\"(max-width: 1095px) 100vw, 1095px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 5 Custom connector wizard in Power Automate &#8211; Definition<\/figcaption><\/figure>\n\n\n\n<p>It is also possible to add new Actions or Triggers within the wizard, so you may start with a simple OpenAPI file and complete all actions during registration.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full wp-image-9623\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-8.png\"><img decoding=\"async\" width=\"289\" height=\"397\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-8.png\" alt=\"Custom connector wizard - Adding a new Action or Trigger\" class=\"wp-image-9623\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-8.png 289w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-8-218x300.png 218w\" sizes=\"(max-width: 289px) 100vw, 289px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 6 Custom connector wizard &#8211; Adding a new Action or Trigger<\/figcaption><\/figure>\n\n\n\n<p>If you feel better dealing with the code than clicking (I certainly do!), wizard provides a built-in Swagger Editor, where you may specify all aspects of action and trigger details.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9624\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-9.png\"><img decoding=\"async\" width=\"1676\" height=\"878\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-9.png\" alt=\"Custom connector wizard in Power Automate - Swagger Editor\" class=\"wp-image-9624\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-9.png 1676w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-9-300x157.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-9-1024x536.png 1024w\" sizes=\"(max-width: 1676px) 100vw, 1676px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 7 Custom connector wizard in Power Automate &#8211; Swagger Editor<\/figcaption><\/figure>\n\n\n\n<p>If you create a connector from scratch using UI, it is also useful to do a little cleanup and extract commonly used parameter types and move them to \u2018definitions\u2019 section of a swagger definition file. This makes the definition file more concise and easier to maintain (if BugHerd decides to change a schema of one of the types, change will be needed, but in one place only).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9625\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-10.png\"><img decoding=\"async\" width=\"771\" height=\"693\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-10.png\" alt=\"Swagger definition of custom connector - definitions section\" class=\"wp-image-9625\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-10.png 771w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-10-300x270.png 300w\" sizes=\"(max-width: 771px) 100vw, 771px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 8 Swagger definition of custom connector &#8211; definitions section<\/figcaption><\/figure>\n\n\n\n<p>When all actions and triggers for the connector are defined, the last tab Test allows for a quick verification if everything works as expected. This is also a moment to save your connector.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9626\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-11.png\"><img decoding=\"async\" width=\"1101\" height=\"677\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-11.png\" alt=\"Custom connector wizard in Power Automate - Test\" class=\"wp-image-9626\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-11.png 1101w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-11-300x184.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-11-1024x630.png 1024w\" sizes=\"(max-width: 1101px) 100vw, 1101px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 9 Custom connector wizard in Power Automate &#8211; Test<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Custom Connector usage<\/h2>\n\n\n\n<p>All right! So we have a connector defined. How can we use it then? Very simple. Once we registered the connector, trigger became available for usage within a flow designer.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9627\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-12.png\"><img decoding=\"async\" width=\"639\" height=\"527\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-12.png\" alt=\"BugHerd trigger in a flow designer\" class=\"wp-image-9627\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-12.png 639w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-12-300x247.png 300w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 10 BugHerd trigger in a flow designer<\/figcaption><\/figure>\n\n\n\n<p>As did actions:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9628\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-13.png\"><img decoding=\"async\" width=\"625\" height=\"796\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-13.png\" alt=\"BugHerd actions in flow designer\" class=\"wp-image-9628\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-13.png 625w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-13-236x300.png 236w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 11 BugHerd actions in flow designer<\/figcaption><\/figure>\n\n\n\n<p>After the first adding of BugHerd action or trigger, we were asked to create a BugHerd connection. As mentioned earlier, BugHerd uses basic authentication, so we needed to get a user and a password. According to BugHerd API documentation, an API key should be used as a username key, and \u2018x\u2019 as a password. We got API Key from BugHerd site in Settings -&gt; General Settings section:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full wp-image-9629\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-14.png\"><img decoding=\"async\" width=\"555\" height=\"231\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-14.png\" alt=\"API Key in BugHerd general settings\" class=\"wp-image-9629\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-14.png 555w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-14-300x125.png 300w\" sizes=\"(max-width: 555px) 100vw, 555px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 12 API Key in BugHerd general settings<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full wp-image-9630\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-15.png\"><img decoding=\"async\" width=\"586\" height=\"424\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-15.png\" alt=\"Configuration of BugHerd connection\" class=\"wp-image-9630\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-15.png 586w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-15-300x217.png 300w\" sizes=\"(max-width: 586px) 100vw, 586px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 13 Configuration of BugHerd connection<\/figcaption><\/figure>\n\n\n\n<p>Unfortunately, not everything went as planned. After creating the first flow that was used by BugHerd trigger, Power Automate wrote that there is an issue with the trigger.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full wp-image-9631\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-16.png\"><img decoding=\"async\" width=\"423\" height=\"78\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-16.png\" alt=\"Issue with BugHerd trigger\" class=\"wp-image-9631\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-16.png 423w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-16-300x55.png 300w\" sizes=\"(max-width: 423px) 100vw, 423px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 14 Issue with BugHerd trigger<\/figcaption><\/figure>\n\n\n\n<p>A quick inspection of BugHerd webhook creation endpoint and Microsoft documentation showed that the creation of a trigger for Power Automate will not be possible. This is due to the fact, that response to a POST call to \/api_v2\/webhooks.json endpoint does not return a \u2018Location\u2019 header needed by Power Automate to unregister webhook upon flow deletion or deactivation. Until BugHerd adds this header piece, we are forced to use a built-in HTTP Webhook trigger instead.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter wp-image-9632\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-17.png\"><img decoding=\"async\" width=\"560\" height=\"703\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-17.png\" alt=\"Response missing 'Location' header\" class=\"wp-image-9632\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-17.png 560w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/o365-17-239x300.png 239w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 15 Response missing &#8216;Location&#8217; header<\/figcaption><\/figure>\n\n\n\n<p>Actions, however, worked like a charm ?<\/p>\n\n\n\n<p>For everyone interested, we have set up a <a href=\"https:\/\/github.com\/sii-o365\/bugherd-powerautomate-customconnector\" rel=\"nofollow\" >github repo<\/a>, where you may find an OpenAPI definition (may be used to create a custom connector in your environment) and an example flow (that tests most of the actions from custom connector). Feel free to use it until BugHerd decides to publish an official connector.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;9477&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( vote: 1)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Creation of Custom Connector for Power Automate \u2013 BugHerd API connector&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( vote: 1)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>During one of the recent projects, we were asked to do an integration with BugHerd using Power Automate. BugHerd is &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/en\/creation-of-custom-connector-for-power-automate-bugherd-api-connector\/\">Continued<\/a><\/p>\n","protected":false},"author":139,"featured_media":9634,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1320],"tags":[],"class_list":["post-9477","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hard-development"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2020\/07\/blogersii-o365-bug-herd-api.jpg","category_names":["Hard development"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/9477"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/users\/139"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/comments?post=9477"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/9477\/revisions"}],"predecessor-version":[{"id":25112,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/9477\/revisions\/25112"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media\/9634"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media?parent=9477"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/categories?post=9477"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/tags?post=9477"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}