# Best Practices for Structuring Supplier To Manufacturer JSON Exchanges

**URL:** <https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587>\
**Category:** General Discussion\
**Created:** [September 5, 2024, 1:05pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587 "2024-09-05T13:05:59Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zach\_Larson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zach_larson/32/54388_2.png) [@Zach\_Larson](https://forum.inductiveautomation.com/u/Zach_Larson)\
**Post date:** [September 5, 2024, 1:05pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/1 "2024-09-05T13:05:59Z")

</div>

I'm working on setting up some JSON exchanges between supplier and manufacturer.

Where do you usually transition from a flatter JSON format to a more nested typically?

Are there aspects of ISA-95 or another standard that was built for XML that is common to consider?

Do you normally spend around 10 minutes picking the JSON format or is it something worth taking extra time to give attention to?

I used to both provide J1939 message sequencing and also follow some J1939 message sequencing. The protocol lent itself to a flat design. So I think my tendency is to desire a flat JSON design. So I think it will help me if I can learn the decision process for when designers like to nest data in JSON.

* * *

Beyond the payload itself, what is the best way to receive the JSON exchange?  
Is an email to copy the payload from and a perspective page to paste into a silly technique since it is still manual?  
I want to save time for supplier and manufacturer if I can.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 5, 2024, 1:44pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/2 "2024-09-05T13:44:11Z")

</div>

> [@Zach\_Larson](#):
>
> receive the JSON exchange?

That is the primary purpose of the WebDev module, for transfers initiated outside Ignition. When initiating on the Ignition side, no module is required. Just use `system.net.httpClient()`.

---

<div class="post-metadata">

**Author:** ![Zach\_Larson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zach_larson/32/54388_2.png) [@Zach\_Larson](https://forum.inductiveautomation.com/u/Zach_Larson)\
**Post date:** [September 5, 2024, 1:51pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/3 "2024-09-05T13:51:18Z")

</div>

I went to find some WebDev Inductive University videos and some pages in the manual. I didn't find them.

Is the WebDev module not from IA?

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [September 5, 2024, 1:54pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/4 "2024-09-05T13:54:35Z")

</div>

I swore I watched a IU video on it, but not seeing one now. Here's the manual pages:

> **[Web Dev | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.1/ignition-modules/web-dev)**
>
> The Web Dev module enables you to directly program against the web server inside the Ignition Gateway. Webpages can be built by hand using a combination of Python programming and static web resources such as images, CSS files, JavaScript files, and...

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 5, 2024, 1:55pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/5 "2024-09-05T13:55:17Z")

</div>

It is, but using it presumes general knowledge of web technologies.

Beyond the user manual Michael linked, this forum's discussions are the best resource.

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [September 5, 2024, 2:01pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/6 "2024-09-05T14:01:44Z")

</div>

In my experience the flatter the better.

Too deep/nested gets annoying to select from.

ofc it highly depends on structure

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [September 5, 2024, 2:02pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/7 "2024-09-05T14:02:53Z")

</div>

I bet I was thinking of the Sepasoft Web Services module which is an added cost, but would definitely make life easier for anyone not well versed in web technologies since it uses a more GUI approach to setting something like this up.

---

<div class="post-metadata">

**Author:** ![Zach\_Larson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zach_larson/32/54388_2.png) [@Zach\_Larson](https://forum.inductiveautomation.com/u/Zach_Larson)\
**Post date:** [September 5, 2024, 7:23pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/8 "2024-09-05T19:23:25Z")

</div>

What is the common way to isolate the gateway WebDev produced API calls?

When setting up the WebDev REST API Endpoints, that is usually done on a gateway that faces externally?  
Moves data to a database, then data is moved from that database to another for the production gateways to use?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 5, 2024, 7:49pm UTC](https://forum.inductiveautomation.com/t/best-practices-for-structuring-supplier-to-manufacturer-json-exchanges/95587/9 "2024-09-05T19:49:12Z")

</div>

> [@Zach\_Larson](#):
>
> common way

You'd commonly use a proxy with SSL that is exposed to the public internet, configured to forward the `/system/webdev` URLs to the real gateway with WebDev. Basically the same kind of configuration where perspective is exposed, but the rest of the gateway admin pages are not.
