How the platform fits together
Every domain on the platform, in the areas this site and the API reference share. The name is the one the API uses; the sentence is the one its section in the reference opens with. A name links to its page here where it has more to say than the reference does.
The shape of it
tenant ─── cohorts, configurations, roles
│
content │ a participant
─────── │ ─────────────
atoms ──┐ │ user ─── tags, groups, extras, relationships
▼ │ │
sequences ───────┼────────► user sequences ──► responses (scores, bands)
▲ │ ▲
journeys ────────┼────────► user journeys (the server runs them)
│ │ │
surfaces ◄───────┼──── where a user sequence shows on the home screen
│ │
│ biomarkers, chats, tasks (staff work)
Content is authored once per tenant: atoms are put on the pages of sequences, and journeys decide who is given which sequence and when. Giving a sequence to one participant makes a user sequence, placed on a surface of their home screen; what they submit against it is a response. Enrolling a participant in a journey makes a user journey, which the server runs on every input that concerns them (an answer, a change to their tags, groups, cohort or extras, a reading, a wait coming due) and which the apps predict offline. Journeys read a participant's attributes and responses through conditions, and act on them: assigning sequences, setting attributes, raising tasks for staff, sending messages.
Everything lives inside one tenant. A person is one identity across every tenant they belong to, and a user in each, with a role that decides what their session may do.
Content
| Domain | What it is |
|---|---|
atoms | The smallest piece of content: one question, one page of text, one picture or one exercise. Its type decides what a participant sees and what is stored when they respond. |
sequences | An ordered set of pages of atoms that a participant works through in one sitting, with optional scores that turn the responses into numbers and bands. |
journeys | A graph of nodes and transitions that decides what a participant is given next from what they did. The server runs every journey; the apps predict it. |
surfaces | A named, styled part of the participant's home screen. It decides where and how the user sequences placed on it appear, never what they are. |
assets | A file (image, video, audio or document) that content, tenants and users reference by id. The bytes go straight to object storage; the API holds the record. |
explore | The Explore tab: the content a participant can browse and start themselves, in the tabs the tenant has laid out. |
references | What a condition or a {{ }} text can name in each place content is written: a participant's answers, scores, extras, signals and standing, with codes. |
export | A portable file of chosen content and everything it depends on, with every reference written as a code rather than an id. |
import | Reviews an exported content file against the active tenant, then applies it. |
Participants
| Domain | What it is |
|---|---|
users | A person in a tenant, with a role: a participant using the app, a member of staff, or an API key's service account. |
userSequences | A sequence assigned to one participant, with its schedule, surface and behaviour, and the responses submitted against it. |
userJourneys | A participant's enrolment in a journey: where they are in it, and the log of what it did. |
userAtoms | A single atom given to a participant on its own, outside a sequence, and the responses to it. |
userBiomarkers | Readings from the participant's phone health store, such as steps, heart rate and sleep, uploaded by sync. |
chats | Conversations between participants and staff. |
devices | A participant's phone, registered so the platform can send it push notifications. |
userCoaches | The staff who have assigned something to a participant. |
userSmsMessages | The text messages sent to a participant, and the participant's replies. |
userEmailMessages | The emails a journey sent a participant, or about them to staff. |
userPushNotifications | The push notifications a journey sent a participant. |
userDataExport | Everything the platform holds about one person, as one download. |
Attributes
| Domain | What it is |
|---|---|
tags | Labels a tenant defines and puts on people. Journeys branch on them and add or remove them. |
userTags | The tags assigned to a person, assigned and unassigned one at a time. An outside system may assign them by its own id for each tag. |
groups | Sets of people a tenant defines. Journeys branch on membership, and some settings show an item only to members. |
userGroups | The groups assigned to a person, assigned and unassigned one at a time. |
extras | Custom fields a tenant defines, each with a type, holding one value per person. |
userExtras | One person's values for the tenant's extras. |
relationships | Kinds of relationship between a participant and the staff who look after them, each with default assignees. Journeys message and assign tasks by kind. |
userRelationships | A participant's assignee for a kind of relationship. |
Staff work
| Domain | What it is |
|---|---|
tasks | Work items for staff about one or more participants, with a status and an activity feed. Never seen by the participant. |
userTasks | The tasks about one participant. |
taskTypes | A tenant's kinds of task, whose defaults fill a new task's empty fields. |
Tenancy and configuration
| Domain | What it is |
|---|---|
tenants | One organisation's own space on the platform: its people, content and settings, isolated from every other tenant's. |
tenantTiers | The levels of the product a tenant can be on. |
cohorts | A named group of participants inside a tenant, with its own sign-up code. Journeys can branch on it. |
invitations | An offer to join a tenant with a role, sent to an address, which becomes a membership at the first sign-in. |
configurations | Per-tenant settings, each a dotted code holding a JSON value, that switch features on and off or shape them. |
Security and access
| Domain | What it is |
|---|---|
auth | Signing in through the identity provider, sessions, joining a tenant, and the second factors and sign-in methods a person holds. |
identities | One person across every tenant they belong to. Their credentials live with the identity provider, never here. |
roles | Named sets of permissions, the same in every tenant. Each is a participant, staff or service role, and some require a second factor. |
permissions | Every permission code. A session's permissions are worked out from its role on every request. |
apiKeys | A credential for an outside system, which signs in as its own service account in the tenant. |
userSessions | A person's sessions, for staff to see and end. |
userSignIn | How a person signs in, for staff to send them a way in or release a locked sign-in. |
Integrate
| Domain | What it is |
|---|---|
webhooks | Signed HTTPS requests the platform sends to an endpoint of yours when something you subscribed to happens. |
booking | Hands a participant to an outside booking service with a one-time token, which the service redeems. No clinical data is shared. |
reports | Reports embedded in the portal, one site per tenant and role, opened with a short-lived token. |
userPracticeRecords | A participant's link to their record in their practice's management system. |
userPracticeUploads | A participant's responses, filed to their practice's system as documents. |
legal | The platform's privacy policy and terms of use. |
system | Whether the API is up and can reach its database. |