{"id":893,"date":"2026-01-30T09:55:27","date_gmt":"2026-01-30T09:55:27","guid":{"rendered":"https:\/\/productive.io\/engineering\/?p=893"},"modified":"2026-01-30T09:55:27","modified_gmt":"2026-01-30T09:55:27","slug":"integrations-series-authentication-and-connection","status":"publish","type":"post","link":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/","title":{"rendered":"Integrations Series: Authentication And Connection"},"content":{"rendered":"<p   > <a href='https:\/\/productive.io\/engineering\/category\/engineering\/'>Engineering<\/a><\/p> &#8211; <p   > {{minutes}} min read<\/p> <h1   > Integrations Series: Authentication And Connection<\/h1> <a href=\"https:\/\/productive.io\/engineering\/author\/antoniobajivic1\/\"> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/2024\/02\/1672844976889.jpeg\"  alt=\"\" loading=lazy \/> <\/a> <a href=\"https:\/\/productive.io\/engineering\/author\/antoniobajivic1\/\"> <p   > Antonio Bajivi\u0107<\/p><\/a> Working in web development and having fun with electronics brings me joy. In my free time, I mix working out, socializing, and reading.<p   > January 30, 2026<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png\"  alt=\"\" loading=lazy \/> <p   > Integrations are a big part of any software, but <strong>they\u2019re crucial to the functionality of a tool like Productive.<\/strong><\/p> <p   > That\u2019s why we decided to dedicate a post series to discussing the importance of integrations in Productive. From enhancing functionality by connecting different tools to streamlining processes and improving user experience, integrations make life easier. We\u2019ll showcase one of our most-used integrations, the one between Productive and Xero, which allows users to seamlessly transfer invoices and synchronize payments between the two tools.<br><br>Your agency uses Productive for managing client projects and project financials. At month&#8217;s end, you face the daunting task of issuing and sending invoices upon invoices, then replicating the process in Xero. Afterward, you also have to individually mark each payment as received.<br><br>And this is where the power of integrations kicks in. With one simple integration, invoices are synced between Xero and Productive, and any payment received in Xero is automatically recorded in Productive.<br><br>The integration between Productive and Xero looks interesting, right?<br><br>But before actually using the integration, we need to set it up first, and that&#8217;s the main focus of this blog post! We&#8217;re exploring the implementation of the OAuth 2.0 protocol.<br><br>Let&#8217;s dive right in!<\/p> <h2   > <strong>First, How Do You Connect Xero and Productive?<\/strong><\/h2> <p   > OAuth 2.0 (Open Authorization 2.0) is an authentication protocol that is considered an industry standard.<br><br>Utilizing the OAuth protocol, Productive is granted access to the Xero account without accessing the user&#8217;s credentials.<br><br>Key features of the OAuth 2.0 protocol:<\/p> <ul   > <li>Granular access control<\/li><li>Authentication without sharing credentials<\/li><li>Token-based authentication (access_token &amp; refresh_token)<\/li><\/ul> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/integrations-pt1.-png.png\"  alt=\"\" loading=lazy \/> <p   > <br>OAuth2 flow<\/p> <p   > In the following steps, the authentication process is explained:<\/p> <p   > 1. The user authorizes Productive, granting access to their own data on the Xero platform:<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Snap7.png\"  alt=\"\" loading=lazy \/> <p   > <br><\/p> <p   > 2. After successful authentication, the user is redirected back to the <code>redirect_uri<\/code> defined in the previous step with two values added as query params:<\/p> <ul   > <li><code>code<\/code> \u2192 short-lived token that needs to be exchanged for <code>access_token<\/code><\/li><li><code>state<\/code> \u2192 serves as protection against Cross-Site Request Forgery (CSRF) attacks: if the received state attribute value does not match the value submitted in the previous step, the authentication process is terminated<\/li><\/ul> <p   > Ensuring the redirection of users back to the Productive app is a crucial aspect of the OAuth flow due to the sensitivity of the information contained in the <code>redirect_uri<\/code>.<br>To ensure the user&#8217;s redirection to the correct location, we have securely stored the redirect URI within the Xero app.<\/p> <p   > 3. Exchanging the verification code (<code>code<\/code>) for an access token (<code>access_token<\/code>):<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Snap6.png\"  alt=\"\" loading=lazy \/> <p   > 4. Retrieving the generated tokens:<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Snap5.png\"  alt=\"\" loading=lazy \/> <p   > <code>access_token<\/code> is used to call the Xero API, while the <code>refresh_token<\/code> is used to refresh the access token once it has expired.<\/p> <p   > 5. Retrieving and selecting the tenant whose resources are being accessed:<\/p> <p   > Each user can have multiple Xero organizations (referred to as tenants).<br>Xero requires that the <code>xero_tenant_id<\/code> field is sent as a header param in every HTTP request.<br><br>The following code snippet shows the retrieval of all available tenants, from which the user later selects a tenant for current integration in the Marketplace settings:<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Snap4.png\"  alt=\"\" loading=lazy \/> <h2   > <strong>Now, Let\u2019s Create an Integration<\/strong><\/h2> <p   > In Productive, as well as in many other applications, there is a list of applications called the <em>marketplace<\/em>. In the marketplace, customers choose the integration they want to use. When the integration is selected, the connection process begins by clicking the &#8220;Connect app&#8221; button. The connection flow will be demonstrated using the example of Xero.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/integrations-part1.-png.png\"  alt=\"\" loading=lazy \/> <h3   > <strong>1. Creating and Connecting An Integration<\/strong><\/h3> <p   > When establishing an integration, it\u2019s generated in the system. However, to ensure its successful creation, it must align with the authentication requirements on the backend. All integrations require a redirect URI. This URI is used to redirect to Productive after connecting the integration to adjust the settings of each integration. After generating the URI, the integration creation process begins.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Snap3.png\"  alt=\"\" loading=lazy \/> <p   > If the organization has branches or subsidiaries, you&#8217;ll first need to select the subsidiary (branch) for which you want to use Xero.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/attachments_files_003_513_372_original_image.png\"  alt=\"\" loading=lazy \/> <p   > When creating an integration on the backend, authentication verification is performed, and if all requirements are met, the integration process begins.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Snap2.png\"  alt=\"\" loading=lazy \/> <p   > During the integration connection, the customer is directed to the interface of the system they want to integrate with, where they also need to provide information to verify if the user is existing and valid. Once completed, the process returns to the marketplace via the redirect URI, initiating the setup of the integration.<\/p> <h2   > <strong>2. Redirect<\/strong><\/h2> <p   > After the customer is redirected to Productive, the data obtained from the external tool is set on the integration model. For example, Xero requires that there is always a code and org representing the code and organization to which the integration connects and exports data in Xero.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Snap1.png\"  alt=\"\" loading=lazy \/> <p   > Once the integration model has been updated, a call to the backend occurs again to update the integration with new data.<br><br>After updating the model, if there are no errors, we set the parameters of the model to transition to the integration setup route, i.e., editing the integration settings.<\/p> <h2   > <strong>Conclusion<\/strong><\/h2> <p   > With successful authentication and integration connection, we\u2019re finishing the first part of the integration posts series. As described in this blog post, understanding OAuth 2.0 becomes not just a necessity but a powerful tool to enhance user experience, safeguard sensitive information, and foster a more trustworthy digital ecosystem. After successful authentication, due to settings related to the external system redirect, in this case, Xero, it brings us back to Productive to continue with further integration setup.<br><br>In our next post, we&#8217;ll break down data mapping and show you why it&#8217;s a must-know for smooth integrations. Don&#8217;t miss out!<\/p> <a aria-hidden=\"false\"   href=https:\/\/www.facebook.com\/sharer.php?u=https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection target=_blank rel=\"noopener noreferrer\" > <\/a><a aria-hidden=\"false\"   href=https:\/\/twitter.com\/intent\/tweet?text=Integrations%20Series%3A%20Authentication%20And%20Connection&amp;url=https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection target=_blank rel=\"noopener noreferrer\" > <\/a><a aria-hidden=\"false\"   href=https:\/\/www.linkedin.com\/shareArticle?mini=true&amp;url=https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection target=_blank rel=\"noopener noreferrer\" > <\/a> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/2024\/02\/1672844976889.jpeg\"  alt=\"\" loading=lazy \/> <p   > Antonio Bajivi\u0107<\/p> Working in web development and having fun with electronics brings me joy. In my free time, I mix working out, socializing, and reading.<a   href=\"https:\/\/productive.io\/engineering\/author\/antoniobajivic1\/\" > More From This Author <\/a> <h2   > Related articles<\/h2> <a href=\"https:\/\/productive.io\/engineering\/how-react-ruined-web-development\/\"   > <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_react-1-768x322.png\"  alt=\"\" loading=lazy \/> <p   > Engineering \u2022 Frontend<\/p> <h2   > How React Ruined Web Development<\/h2> <\/a><a href=\"https:\/\/productive.io\/engineering\/pull-requests-the-good-the-bad-and-really-not-that-ugly\/\"   > <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2022\/11\/BP_pull_requests-768x322.png\"  alt=\"\" loading=lazy \/> <p   > Engineering \u2022 Workflow<\/p> <h2   > Pull Requests\u2014The Good, the Bad and Really, Not That Ugly<\/h2> <\/a> <h2   > Related jobs<\/h2> <a href=\"https:\/\/productive.io\/careers\/open-job-application\/\"  > <p  > Open Job Application<\/p><p  > <\/p> <\/a>","protected":false},"excerpt":{"rendered":"Integrations are a big part of any software, but they\u2019re crucial to the functionality of a tool like Productive.","protected":false},"author":46,"featured_media":913,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"es_utils_meta_schema":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-893","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Integrations Series: Authentication And Connection - Building Productive<\/title>\n<meta name=\"description\" content=\"Integrations are a big part of any software, but they\u2019re crucial to the functionality of a tool like Productive.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integrations Series: Authentication And Connection\" \/>\n<meta property=\"og:description\" content=\"Integrations are a big part of any software, but they\u2019re crucial to the functionality of a tool like Productive.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Productive\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T09:55:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2850\" \/>\n\t<meta property=\"og:image:height\" content=\"1195\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antonio Bajivi\u0107\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonio Bajivi\u0107\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/\"},\"author\":{\"name\":\"Antonio Bajivi\u0107\",\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15\"},\"headline\":\"Integrations Series: Authentication And Connection\",\"datePublished\":\"2026-01-30T09:55:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/\"},\"wordCount\":5,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png\",\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/\",\"url\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/\",\"name\":\"Integrations Series: Authentication And Connection - Building Productive\",\"isPartOf\":{\"@id\":\"https:\/\/productive.io\/engineering\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png\",\"datePublished\":\"2026-01-30T09:55:27+00:00\",\"author\":{\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15\"},\"description\":\"Integrations are a big part of any software, but they\u2019re crucial to the functionality of a tool like Productive.\",\"breadcrumb\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage\",\"url\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png\",\"contentUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png\",\"width\":2850,\"height\":1195},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/productive.io\/engineering\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrations Series: Authentication And Connection\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/productive.io\/engineering\/#website\",\"url\":\"https:\/\/productive.io\/engineering\/\",\"name\":\"Building Productive\",\"description\":\"Just another Productive Sites site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/productive.io\/engineering\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15\",\"name\":\"Antonio Bajivi\u0107\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/10026e31a1961cf3c469227176aa35586ec43954a84b346cab75b09c8cce8c26?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/10026e31a1961cf3c469227176aa35586ec43954a84b346cab75b09c8cce8c26?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/10026e31a1961cf3c469227176aa35586ec43954a84b346cab75b09c8cce8c26?s=96&d=mm&r=g\",\"caption\":\"Antonio Bajivi\u0107\"},\"description\":\"Working in web development and having fun with electronics brings me joy. In my free time, I mix working out, socializing, and reading.\",\"honorificPrefix\":\"Mr\",\"honorificSuffix\":\"MD\",\"birthDate\":\"1997-07-11\",\"gender\":\"male\",\"jobTitle\":\"Frontend Engineer\",\"url\":\"https:\/\/productive.io\/engineering\/author\/antoniobajivic1\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Integrations Series: Authentication And Connection - Building Productive","description":"Integrations are a big part of any software, but they\u2019re crucial to the functionality of a tool like Productive.","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:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/","og_locale":"en_US","og_type":"article","og_title":"Integrations Series: Authentication And Connection","og_description":"Integrations are a big part of any software, but they\u2019re crucial to the functionality of a tool like Productive.","og_url":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/","og_site_name":"Building Productive","article_published_time":"2026-01-30T09:55:27+00:00","og_image":[{"width":2850,"height":1195,"url":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png","type":"image\/png"}],"author":"Antonio Bajivi\u0107","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Antonio Bajivi\u0107","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#article","isPartOf":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/"},"author":{"name":"Antonio Bajivi\u0107","@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15"},"headline":"Integrations Series: Authentication And Connection","datePublished":"2026-01-30T09:55:27+00:00","mainEntityOfPage":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/"},"wordCount":5,"commentCount":0,"image":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage"},"thumbnailUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png","articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/","url":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/","name":"Integrations Series: Authentication And Connection - Building Productive","isPartOf":{"@id":"https:\/\/productive.io\/engineering\/#website"},"primaryImageOfPage":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage"},"image":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage"},"thumbnailUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png","datePublished":"2026-01-30T09:55:27+00:00","author":{"@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15"},"description":"Integrations are a big part of any software, but they\u2019re crucial to the functionality of a tool like Productive.","breadcrumb":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#primaryimage","url":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png","contentUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png","width":2850,"height":1195},{"@type":"BreadcrumbList","@id":"https:\/\/productive.io\/engineering\/integrations-series-authentication-and-connection\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/productive.io\/engineering\/"},{"@type":"ListItem","position":2,"name":"Integrations Series: Authentication And Connection"}]},{"@type":"WebSite","@id":"https:\/\/productive.io\/engineering\/#website","url":"https:\/\/productive.io\/engineering\/","name":"Building Productive","description":"Just another Productive Sites site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/productive.io\/engineering\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15","name":"Antonio Bajivi\u0107","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/10026e31a1961cf3c469227176aa35586ec43954a84b346cab75b09c8cce8c26?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/10026e31a1961cf3c469227176aa35586ec43954a84b346cab75b09c8cce8c26?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/10026e31a1961cf3c469227176aa35586ec43954a84b346cab75b09c8cce8c26?s=96&d=mm&r=g","caption":"Antonio Bajivi\u0107"},"description":"Working in web development and having fun with electronics brings me joy. In my free time, I mix working out, socializing, and reading.","honorificPrefix":"Mr","honorificSuffix":"MD","birthDate":"1997-07-11","gender":"male","jobTitle":"Frontend Engineer","url":"https:\/\/productive.io\/engineering\/author\/antoniobajivic1\/"}]}},"featured_image":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/01\/Blog@3x.png","category":"Engineering","_links":{"self":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/comments?post=893"}],"version-history":[{"count":11,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/893\/revisions"}],"predecessor-version":[{"id":958,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/893\/revisions\/958"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/media\/913"}],"wp:attachment":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/media?parent=893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/categories?post=893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/tags?post=893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}