Skip to content

Concepts ​

The basic concept of the Cumulus API translates well to tables in a conventional database. Every group of endpoints gives access to the equivalent of a table, which can be read, queried, inserted into and deleted from. These tables are called objects in Cumulus. Most operations can be executed on all objects, with only a few exceptions.

Objects are grouped by object type. Some types are native to Cumulus and have additional functionality, such as assets and geofences; others can be created and used freely as additional object types.

Multi-tenancy ​

To separate customers and their data, every customer has its own set of endpoints, identified by the customer's tenant name. An endpoint path therefore always starts with the tenant:

text
GET /v1/{tenant}/{objectTypePlural}

For example, the assets of the tenant customerx are listed with GET /v1/customerx/assets.

Object types and their plural form ​

Endpoints that act on a whole object type take the plural form of the type name, endpoints that act on one object take the singular form. Each endpoint states which it takes.

Object typePlural form
assetassets
geogeos
permissionpermissions

Objects ​

All objects share the same basic structure, the base object:

Base object ​

Basic Cumulus object definition

FieldTypeRequiredDescription
idstringyesThe unique id of the object, server generated
namestringyesThe unique name of the object
mutableobjectyesAn object containing data that can be mutated from the public API
mutable.customPropertiesobjectAn object containing data that is application specific
mutable.typeasset | gateway | anchorThe type of the object
metadataobjectyesThe metadata object contains information about when the object was created and changed
metadata.createdBystringyesThe user that created the object
metadata.updatedBystringyesThe user that last updated the object
metadata.createdTimestring (date-time)yesISO time of when the object was created
metadata.updatedTimestring (date-time)yesISO time of when the object was last updated
metadata.tenantstringThe tenant this object belongs to

Only the mutable part can be changed through the API. customProperties is free for the application to use, within the schema the tenant has configured for the object type; the rest of mutable may be prescribed for the type's own functionality.

All objects have the generic endpoints in common.