Object Model

Common fields

Each object in the API may be given an identifier, indicated via its id field, and will typically be addressable via a URI. Many objects will also have created_at and updated_at fields indicating the object's creation and update timestamps, respectively.

Dates and timestamps fields are always returned in ISO 8601 format, in UTC. For example, 2020-05-03 and 2020-05-03T13:06:30Z.

Optional fields

Unpopulated optional data is returned as follows:

  • Number, String and Boolean types may be returned as having null values.
  • Arrays and Objects may be returned as empty ([] or {})

Identifiers

All objects in the API have an id field indicating their logical identifier. These fields must always be treated as opaque strings, i.e., no guarantees are made about the internal structure of the id fields for an object.

The id field is always defined by the API and is guaranteed to be unique relative to resource type.

Nested object relationships

Inter-object references are always serialized with a nested object, rather than using a <object_type>_id to represent a foreign key, e.g.:

{
"id": "1",
"title": "Task #1",
"encounter": {
"id": "1"
}
}

Custom values

Task objects can be extended with custom values. Values are JSON objects, which are validated against pre-defined custom types.

caution

Custom types & values are in Beta release.