<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Designing a Generic Integration Layer for Multiple APIs using Thing Template – Best Practice? in ThingWorx Developers</title>
    <link>https://www.ptcusercommunity.com/t5/ThingWorx-Developers/Designing-a-Generic-Integration-Layer-for-Multiple-APIs-using/m-p/1058468#M71276</link>
    <description>&lt;P data-end="236" data-start="223"&gt;Hi Community,&lt;/P&gt;
&lt;P data-end="398" data-start="238"&gt;I am currently working on an integration scenario where I consume data from multiple external APIs (e.g., SAP, APLUs and 4 additional interfaces ).&lt;/P&gt;
&lt;P data-end="398" data-start="238"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="521" data-start="400"&gt;Each API delivers data in a slightly different structure, but the overall processing logic in ThingWorx is quite similar:&lt;/P&gt;
&lt;UL data-end="656" data-start="522"&gt;
&lt;LI data-end="543" data-start="522" data-section-id="gz53qn"&gt;
&lt;P data-end="543" data-start="524"&gt;Call external API&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="560" data-start="544" data-section-id="87p1mb"&gt;
&lt;P data-end="560" data-start="546"&gt;Receive data&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="600" data-start="561" data-section-id="avavv0"&gt;
&lt;P data-end="600" data-start="563"&gt;Perform transformation / validation&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="627" data-start="601" data-section-id="1r6bt3z"&gt;
&lt;P data-end="627" data-start="603"&gt;Execute business logic&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="656" data-start="628" data-section-id="10rxywc"&gt;
&lt;P data-end="656" data-start="630"&gt;Return structured output&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-end="756" data-start="658"&gt;To avoid duplication and improve maintainability, I am considering the following generic approach:&lt;/P&gt;
&lt;H3 data-end="779" data-start="758" data-section-id="mf3b3k"&gt;Proposed Approach&lt;/H3&gt;
&lt;UL data-end="1224" data-start="780"&gt;
&lt;LI data-end="1048" data-start="780" data-section-id="imm8lv"&gt;
&lt;P data-end="824" data-start="782"&gt;Create a &lt;STRONG data-end="809" data-start="791"&gt;Thing Template&lt;/STRONG&gt; that contains:&lt;/P&gt;
&lt;UL data-end="1048" data-start="827"&gt;
&lt;LI data-end="893" data-start="827" data-section-id="v03mdd"&gt;
&lt;P data-end="893" data-start="829"&gt;Generic input definitions (API endpoint, headers, payload, etc.)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="942" data-start="896" data-section-id="6at7jx"&gt;
&lt;P data-end="942" data-start="898"&gt;A standardized output structure (e.g., JSON)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1048" data-start="945" data-section-id="1cv5vzl"&gt;
&lt;P data-end="967" data-start="947"&gt;Shared services for:&lt;/P&gt;
&lt;UL data-end="1048" data-start="972"&gt;
&lt;LI data-end="987" data-start="972" data-section-id="6aluua"&gt;
&lt;P data-end="987" data-start="974"&gt;API execution&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1013" data-start="992" data-section-id="yamh55"&gt;
&lt;P data-end="1013" data-start="994"&gt;Data transformation&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1034" data-start="1018" data-section-id="1dje7jz"&gt;
&lt;P data-end="1034" data-start="1020"&gt;Error handling&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1048" data-start="1039" data-section-id="ymbeuj"&gt;
&lt;P data-end="1048" data-start="1041"&gt;Logging&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-end="1177" data-start="1049" data-section-id="2t2cbg"&gt;
&lt;P data-end="1177" data-start="1051"&gt;Then create individual Things inheriting from this Thing Template for each interface (SAP APLUs, Interface2, Interface3, etc.)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1224" data-start="1178" data-section-id="m086q4"&gt;
&lt;P data-end="1224" data-start="1180"&gt;Override only specific logic where necessary&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-end="1235" data-start="1226"&gt;This way:&lt;/P&gt;
&lt;UL data-end="1353" data-start="1236"&gt;
&lt;LI data-end="1263" data-start="1236" data-section-id="rzlyhi"&gt;
&lt;P data-end="1263" data-start="1238"&gt;Core logic is centralized&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1288" data-start="1264" data-section-id="gimbtg"&gt;
&lt;P data-end="1288" data-start="1266"&gt;Services are inherited&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1321" data-start="1289" data-section-id="19mxa1x"&gt;
&lt;P data-end="1321" data-start="1291"&gt;Interfaces remain configurable&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1353" data-start="1322" data-section-id="11sgmyv"&gt;
&lt;P data-end="1353" data-start="1324"&gt;Maintenance effort is reduced&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR data-end="1358" data-start="1355" /&gt;
&lt;H3 data-end="1376" data-start="1360" data-section-id="1jwy2bz"&gt;My Question&lt;/H3&gt;
&lt;OL data-end="1736" data-start="1377"&gt;
&lt;LI data-end="1490" data-start="1377" data-section-id="1mpc5tj"&gt;
&lt;P data-end="1490" data-start="1380"&gt;Is using a Thing Template as a generic integration base considered a good architectural approach in ThingWorx? Would you recommend a different pattern (e.g., separate Integration Things + shared Utility Thing, Resource-based approach, etc.)?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1736" data-start="1625" data-section-id="1nj16if"&gt;
&lt;P data-end="1736" data-start="1628"&gt;Is there a more professional or scalable way to implement a reusable integration framework inside ThingWorx?&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-end="1850" data-start="1738"&gt;My goal is to build a clean, reusable, and enterprise-ready structure instead of copying services across Things.&lt;/P&gt;
&lt;P data-end="1850" data-start="1738"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="1918" data-start="1852"&gt;Thank you very much in advance for your advice and best practices!&lt;/P&gt;</description>
    <pubDate>Fri, 13 Mar 2026 06:19:15 GMT</pubDate>
    <dc:creator>MA8731174</dc:creator>
    <dc:date>2026-03-13T06:19:15Z</dc:date>
    <item>
      <title>Designing a Generic Integration Layer for Multiple APIs using Thing Template – Best Practice?</title>
      <link>https://www.ptcusercommunity.com/t5/ThingWorx-Developers/Designing-a-Generic-Integration-Layer-for-Multiple-APIs-using/m-p/1058468#M71276</link>
      <description>&lt;P data-end="236" data-start="223"&gt;Hi Community,&lt;/P&gt;
&lt;P data-end="398" data-start="238"&gt;I am currently working on an integration scenario where I consume data from multiple external APIs (e.g., SAP, APLUs and 4 additional interfaces ).&lt;/P&gt;
&lt;P data-end="398" data-start="238"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="521" data-start="400"&gt;Each API delivers data in a slightly different structure, but the overall processing logic in ThingWorx is quite similar:&lt;/P&gt;
&lt;UL data-end="656" data-start="522"&gt;
&lt;LI data-end="543" data-start="522" data-section-id="gz53qn"&gt;
&lt;P data-end="543" data-start="524"&gt;Call external API&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="560" data-start="544" data-section-id="87p1mb"&gt;
&lt;P data-end="560" data-start="546"&gt;Receive data&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="600" data-start="561" data-section-id="avavv0"&gt;
&lt;P data-end="600" data-start="563"&gt;Perform transformation / validation&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="627" data-start="601" data-section-id="1r6bt3z"&gt;
&lt;P data-end="627" data-start="603"&gt;Execute business logic&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="656" data-start="628" data-section-id="10rxywc"&gt;
&lt;P data-end="656" data-start="630"&gt;Return structured output&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-end="756" data-start="658"&gt;To avoid duplication and improve maintainability, I am considering the following generic approach:&lt;/P&gt;
&lt;H3 data-end="779" data-start="758" data-section-id="mf3b3k"&gt;Proposed Approach&lt;/H3&gt;
&lt;UL data-end="1224" data-start="780"&gt;
&lt;LI data-end="1048" data-start="780" data-section-id="imm8lv"&gt;
&lt;P data-end="824" data-start="782"&gt;Create a &lt;STRONG data-end="809" data-start="791"&gt;Thing Template&lt;/STRONG&gt; that contains:&lt;/P&gt;
&lt;UL data-end="1048" data-start="827"&gt;
&lt;LI data-end="893" data-start="827" data-section-id="v03mdd"&gt;
&lt;P data-end="893" data-start="829"&gt;Generic input definitions (API endpoint, headers, payload, etc.)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="942" data-start="896" data-section-id="6at7jx"&gt;
&lt;P data-end="942" data-start="898"&gt;A standardized output structure (e.g., JSON)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1048" data-start="945" data-section-id="1cv5vzl"&gt;
&lt;P data-end="967" data-start="947"&gt;Shared services for:&lt;/P&gt;
&lt;UL data-end="1048" data-start="972"&gt;
&lt;LI data-end="987" data-start="972" data-section-id="6aluua"&gt;
&lt;P data-end="987" data-start="974"&gt;API execution&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1013" data-start="992" data-section-id="yamh55"&gt;
&lt;P data-end="1013" data-start="994"&gt;Data transformation&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1034" data-start="1018" data-section-id="1dje7jz"&gt;
&lt;P data-end="1034" data-start="1020"&gt;Error handling&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1048" data-start="1039" data-section-id="ymbeuj"&gt;
&lt;P data-end="1048" data-start="1041"&gt;Logging&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-end="1177" data-start="1049" data-section-id="2t2cbg"&gt;
&lt;P data-end="1177" data-start="1051"&gt;Then create individual Things inheriting from this Thing Template for each interface (SAP APLUs, Interface2, Interface3, etc.)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1224" data-start="1178" data-section-id="m086q4"&gt;
&lt;P data-end="1224" data-start="1180"&gt;Override only specific logic where necessary&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-end="1235" data-start="1226"&gt;This way:&lt;/P&gt;
&lt;UL data-end="1353" data-start="1236"&gt;
&lt;LI data-end="1263" data-start="1236" data-section-id="rzlyhi"&gt;
&lt;P data-end="1263" data-start="1238"&gt;Core logic is centralized&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1288" data-start="1264" data-section-id="gimbtg"&gt;
&lt;P data-end="1288" data-start="1266"&gt;Services are inherited&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1321" data-start="1289" data-section-id="19mxa1x"&gt;
&lt;P data-end="1321" data-start="1291"&gt;Interfaces remain configurable&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1353" data-start="1322" data-section-id="11sgmyv"&gt;
&lt;P data-end="1353" data-start="1324"&gt;Maintenance effort is reduced&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR data-end="1358" data-start="1355" /&gt;
&lt;H3 data-end="1376" data-start="1360" data-section-id="1jwy2bz"&gt;My Question&lt;/H3&gt;
&lt;OL data-end="1736" data-start="1377"&gt;
&lt;LI data-end="1490" data-start="1377" data-section-id="1mpc5tj"&gt;
&lt;P data-end="1490" data-start="1380"&gt;Is using a Thing Template as a generic integration base considered a good architectural approach in ThingWorx? Would you recommend a different pattern (e.g., separate Integration Things + shared Utility Thing, Resource-based approach, etc.)?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-end="1736" data-start="1625" data-section-id="1nj16if"&gt;
&lt;P data-end="1736" data-start="1628"&gt;Is there a more professional or scalable way to implement a reusable integration framework inside ThingWorx?&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-end="1850" data-start="1738"&gt;My goal is to build a clean, reusable, and enterprise-ready structure instead of copying services across Things.&lt;/P&gt;
&lt;P data-end="1850" data-start="1738"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-end="1918" data-start="1852"&gt;Thank you very much in advance for your advice and best practices!&lt;/P&gt;</description>
      <pubDate>Fri, 13 Mar 2026 06:19:15 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/ThingWorx-Developers/Designing-a-Generic-Integration-Layer-for-Multiple-APIs-using/m-p/1058468#M71276</guid>
      <dc:creator>MA8731174</dc:creator>
      <dc:date>2026-03-13T06:19:15Z</dc:date>
    </item>
    <item>
      <title>Re: Designing a Generic Integration Layer for Multiple APIs using Thing Template – Best Practice?</title>
      <link>https://www.ptcusercommunity.com/t5/ThingWorx-Developers/Designing-a-Generic-Integration-Layer-for-Multiple-APIs-using/m-p/1058838#M71278</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.ptcusercommunity.com/t5/user/viewprofilepage/user-id/709891"&gt;@MA8731174&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your approach sounds reasonable to me. In particular, for reusable logic or common properties, I would recommend leveraging Thing Shapes as much as possible—especially in more complex implementations:&lt;BR /&gt;&lt;A href="https://support.ptc.com/help/thingworx/platform/r10.0/en/#page/ThingWorx/Help/Best_Practices_for_Developing_Applications/ThingsThingTemplatesThingShapes.html" target="_blank"&gt;https://support.ptc.com/help/thingworx/platform/r10.0/en/#page/ThingWorx/Help/Best_Practices_for_Developing_Applications/ThingsThingTemplatesThingShapes.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;For building a more scalable and reusable integration structure, you may also want to reference the ‘Building Blocks’ concept. This provides best‑practice suggestions on creating modular, reusable components that can be applied across multiple interfaces:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://support.ptc.com/help/thingworx/platform/r10.0/en/#page/ThingWorx/Help/Best_Practices_for_Developing_Applications/reusable_component_overview.html#" target="_blank"&gt;https://support.ptc.com/help/thingworx/platform/r10.0/en/#page/ThingWorx/Help/Best_Practices_for_Developing_Applications/reusable_component_overview.html#&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 17 Mar 2026 03:19:55 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/ThingWorx-Developers/Designing-a-Generic-Integration-Layer-for-Multiple-APIs-using/m-p/1058838#M71278</guid>
      <dc:creator>CharlesJi</dc:creator>
      <dc:date>2026-03-17T03:19:55Z</dc:date>
    </item>
  </channel>
</rss>

