The data hierarchy for the Nexia (Trane) thermostats is interesting. At the top level, you have the login information for nexiahome.com. The username/password for that site, plus the "house ID" that shows up in the URL when you log in, is all that's needed for the library I'm using to access the data. It's not an official API - I'm working with a modified version of the code that's used in Home Assistant.
Using that "API", I can request the data for the thermostat(s) in the house. I only have one true thermostat (one compressor/air handler pair), so I get a single JSON dictionary back. Looking at the Home Assistant code, it implies that if there's more than one HVAC system, it'll return an array of thermostat dictionaries.
Here's where it gets tricky. I have a zoned system. That's two separate areas isolated by dampers on the ducts. Each with it's own (limited) controls. I can set individual schedules and set points for each zone. Each zone shares system mode, humidity readings and control, and fan control, which are all at the "thermostat" level.
So, do I do this with two types (levels) of devices or three? I've got a device for the Account, and that's where the authentication information goes. Do I have a thermostat device that represents one zone, which will conflate the data for both the thermostat and the zone into one device? Or have both a thermostat and zone device? Of which only the zone device would be an Indigo thermostat derived device.