{"id":959,"date":"2026-01-30T09:55:26","date_gmt":"2026-01-30T09:55:26","guid":{"rendered":"https:\/\/productive.io\/engineering\/?p=959"},"modified":"2026-01-30T09:55:26","modified_gmt":"2026-01-30T09:55:26","slug":"integrations-series-data-mapping","status":"publish","type":"post","link":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/","title":{"rendered":"Integrations Series &#8211; Data Mapping"},"content":{"rendered":"<p   > <a href='https:\/\/productive.io\/engineering\/category\/engineering\/'>Engineering<\/a><\/p> &#8211; <p   > {{minutes}} min read<\/p> <h1   > Integrations Series &#8211; Data Mapping <\/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\/03\/dev-copy@2x.png\"  alt=\"\" loading=lazy \/> <p   > Welcome back to our <strong>integrations blog series!<\/strong><br><br>In the last post, we tackled authentication and all the other steps needed to set up a connection between Productive and Xero.<\/p> <p   > Now, let&#8217;s talk about data mapping &#8211; why do we need it?<br><br>As you already know, every system stores data differently, and without proper mapping, it&#8217;s like trying to fit together puzzle pieces from different sets.<br><br>Come along as we dig into the significance of data mapping in ensuring a seamless integration!<\/p> <h2   > <strong>What about data consistency?<\/strong><\/h2> <p   > All data from Productive must be correctly mapped in Xero when copying invoices. We utilize explicit data mapping to ensure this.<br><br>The integrations model is used to implement all the integrations available in Productive, and each of these integrations is specific, requiring the mapping of different data uniquely. For this reason, the integration model defines an <code>options<\/code> attribute in JSON format, intended to store all data specific to a particular type of integration.<br><br>After successful authorization, the user explicitly selects integration settings (such as exporting invoice numbers or payment sync) and maps data (account code mappings) between systems.<\/p> <pre  aria-label=\"This is json code\" > <code  aria-hidden=\"true\" >def assign model.options[:export_number] = export_number model.options[:export_attachment] = export_attachment model.options[:payments_import] = payments_import model.options[:xero_invoice_status_id] = form_xero_invoice_status_id model.options[:account_code_mapping] = account_code_mapping_form model.options[:xero_reference] = xero_reference model.options[:xero_internal_note_cf_id] = xero_internal_note_cf_id &#8230; end 1 2 3 4 5 6 7 8 9 10 11 12 <\/code> <\/pre> <p   > Data such as taxes and currencies are retrieved from Xero and automatically stored in the integration options field. This information will be essential for the user in subsequent integration tasks, such as exporting invoices:<\/p> <pre  aria-label=\"This is json code\" > <code  aria-hidden=\"true\" >def assign &#8230; model.options[:xero_organizations] = organizations model.options[:xero_org] = org model.options[:organization_name] = organization_name model.options[:xero_account_codes] = account_codes model.options[:xero_tax_rates] = tax_rates model.options[:default_currency] = default_currency end 1 2 3 4 5 6 7 8 9 <\/code> <\/pre> <h2   > <strong>User interface &#8211; Integration settings<\/strong><\/h2> <p   > <em><strong>General settings<\/strong><\/em><strong>:<\/strong><br><br>When the customer is successfully connected, a modal with settings opens. Here, the customer decides how to export invoices to Xero from Productive and whether they want data synchronization between Xero and Productive. When creating a new invoice, invoice numbers are generated for the customer, e.g., <em>Invoice &#8211; 1<\/em>, which can be done through Productive or Xero. Similarly, a decision is made for the system that will generate the invoice PDF in its specific way, including the invoice number. Also, an initial status is set before creating any invoice related to one particular branch, which is sent as a reference field and internal note.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/attachments_files_003_513_335_original_image.png\"  alt=\"\" loading=lazy \/> <p   > <br><\/p> <p   > <em><strong>Map settings<\/strong><\/em><strong>:<\/strong><br><br>When setting up a Xero account, there is an option to map each service type. In other words, a specific Xero account is set for each type. The Xero account is equivalent to the Productive service type. Each line item on the invoice belongs to a specific service type. When copying an invoice to Xero, we want to know to which values we will map our values. This is the next step after configuring the general settings.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/attachments_files_003_513_347_original_image.png\"  alt=\"\" loading=lazy \/> <p   > In this example, we can see what the object looks like for mapping options for the entire integration:<\/p> <pre  aria-label=\"This is json code\" > <code  aria-hidden=\"true\" >get xeroAccountCodes() { return this.xeroOrganizationAccountCodes?.map(({code}) =&gt; code); } @cached get xeroAccountCodeOptionLabelMap() { return this.xeroOrganizationAccountCodes?.reduce((map, accountCode) =&gt; { map[accountCode.code] = `${accountCode.code} &#8211; ${accountCode.name}`; return map; }, {}); } 1 2 3 4 5 6 7 8 9 10 11 12 13 <\/code> <\/pre> <p   > Let&#8217;s focus on the <code>fieldOptions<\/code> and <code>fieldOptionLabelMap<\/code>. With these properties, we define how we want to map service types and how we want to display them to the customer for selection. We obtain the list of Xero accounts from the integration model on the backend, and on the frontend, we map them using these getters:<\/p> <pre  aria-label=\"This is json code\" > <code  aria-hidden=\"true\" >{ mappingText: &#8216;Xero account&#8217;, defaultFieldLabel: &#8216;Select default Xero account&#8217;, defaultFieldPropertyName: &#8216;accountCode&#8217;, fieldOptions: this.xeroAccountCodes, fieldOptionLabelMap: this.xeroAccountCodeOptionLabelMap, optionName: &#8216;Account&#8217;, mappingPlaceholder: &#8216;Select account&#8217;, mappingPropertyMap: this.args.integrationOptionsForm.accountCodeMapping, }; 1 2 3 4 5 6 7 8 9 10 <\/code> <\/pre> <p   > To ensure the validity of the integration update form, a default Xero account MUST be selected. This is allowed if customers have multiple service types and want to map only some of them to specific Xero accounts. This also means the default selected Xero account will be used for other service types.<\/p> <img  src=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/attachments_files_003_513_337_original_image.png\"  alt=\"\" loading=lazy \/> <h2   > <strong>Conclusion<\/strong><\/h2> <p   > In conclusion, integrations are crucial in enhancing productivity and efficiency in tools like Productive. The post series highlights the significance of integrating with platforms like Xero, showcasing the OAuth 2.0 protocol for secure authentication and the meticulous data mapping process. This seamless integration not only simplifies tasks such as invoicing and payment synchronization but also ensures consistency and customization in transferring data between systems with distinct business logic.<\/p> <p   > In conclusion, integrations are crucial in enhancing productivity and efficiency in tools like Productive. The post series highlights the significance of integrating with platforms like Xero, showcasing the OAuth 2.0 protocol for secure authentication and the meticulous data mapping process. This seamless integration not only simplifies tasks such as invoicing and payment synchronization but also ensures consistency and customization in transferring data between systems with distinct business logic.<\/p> <a aria-hidden=\"false\"   href=https:\/\/www.facebook.com\/sharer.php?u=https:\/\/productive.io\/engineering\/integrations-series-data-mapping target=_blank rel=\"noopener noreferrer\" > <\/a><a aria-hidden=\"false\"   href=https:\/\/twitter.com\/intent\/tweet?text=Integrations%20Series%20%26%238211%3B%20Data%20Mapping&amp;url=https:\/\/productive.io\/engineering\/integrations-series-data-mapping 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-data-mapping 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":"","protected":false},"author":46,"featured_media":962,"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-959","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 - Data Mapping - Building Productive<\/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:\/\/productive.io\/engineering\/integrations-series-data-mapping\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integrations Series - Data Mapping\" \/>\n<meta property=\"og:url\" content=\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Productive\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T09:55:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1901\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\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=\"5 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-data-mapping\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/\"},\"author\":{\"name\":\"Antonio Bajivi\u0107\",\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15\"},\"headline\":\"Integrations Series &#8211; Data Mapping\",\"datePublished\":\"2026-01-30T09:55:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/\"},\"wordCount\":5,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png\",\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/\",\"url\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/\",\"name\":\"Integrations Series - Data Mapping - Building Productive\",\"isPartOf\":{\"@id\":\"https:\/\/productive.io\/engineering\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png\",\"datePublished\":\"2026-01-30T09:55:26+00:00\",\"author\":{\"@id\":\"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15\"},\"breadcrumb\":{\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage\",\"url\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png\",\"contentUrl\":\"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png\",\"width\":1901,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/productive.io\/engineering\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrations Series &#8211; Data Mapping\"}]},{\"@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 - Data Mapping - Building 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-data-mapping\/","og_locale":"en_US","og_type":"article","og_title":"Integrations Series - Data Mapping","og_url":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/","og_site_name":"Building Productive","article_published_time":"2026-01-30T09:55:26+00:00","og_image":[{"width":1901,"height":800,"url":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png","type":"image\/png"}],"author":"Antonio Bajivi\u0107","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Antonio Bajivi\u0107","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#article","isPartOf":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/"},"author":{"name":"Antonio Bajivi\u0107","@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15"},"headline":"Integrations Series &#8211; Data Mapping","datePublished":"2026-01-30T09:55:26+00:00","mainEntityOfPage":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/"},"wordCount":5,"commentCount":0,"image":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage"},"thumbnailUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png","articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/","url":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/","name":"Integrations Series - Data Mapping - Building Productive","isPartOf":{"@id":"https:\/\/productive.io\/engineering\/#website"},"primaryImageOfPage":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage"},"image":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage"},"thumbnailUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png","datePublished":"2026-01-30T09:55:26+00:00","author":{"@id":"https:\/\/productive.io\/engineering\/#\/schema\/person\/e284c887d48ef8811062b28036d13d15"},"breadcrumb":{"@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#primaryimage","url":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png","contentUrl":"https:\/\/website-assets.productive.io\/uploads\/sites\/2\/2024\/03\/dev-copy@2x.png","width":1901,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/productive.io\/engineering\/integrations-series-data-mapping\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/productive.io\/engineering\/"},{"@type":"ListItem","position":2,"name":"Integrations Series &#8211; Data Mapping"}]},{"@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\/03\/dev-copy@2x.png","category":"Engineering","_links":{"self":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/959","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=959"}],"version-history":[{"count":5,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/959\/revisions"}],"predecessor-version":[{"id":970,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/posts\/959\/revisions\/970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/media\/962"}],"wp:attachment":[{"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/media?parent=959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/categories?post=959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/productive.io\/engineering\/wp-json\/wp\/v2\/tags?post=959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}