How Syscat implements its design (Wikipages)

How does Syscat implement its design principles?

The naming/addressing scheme

URIs are dynamically validated against the schema, with an indefinitely-repeatable pattern of Resourcetype/uid/RELATIONSHIP.

For example, if I wanted all the addresses on network interface eth0 on router`, I'd make this query:

curl http://192.0.2.1/raw/v1/Devices/router1/INTERFACES/NetworkInterfaces/eth0/ADDRESSES

That would return a JSON list of Ipv4Addresses and Ipv6Addresses objects (assuming the interface itself is configured for dual-stack operation).

If I just wanted the IPv6 addresses from that interface, I'd extend that URI to include the resourcetype at the end of that relationship:

curl http://192.0.2.1/raw/v1/Devices/router1/INTERFACES/NetworkInterfaces/eth0/ADDRESSES/Ipv6Addresses

Yes, those URIs are verbose. But after you're done screaming in horror, remember that this API is not designed for human interaction. It's designed for people to build automation tools against, and to build GUIs on; for those purposes it's more valuable to be consistent than it is to be concise.