Pryv.io system streams

Summary

This document explains how to setup system streams.

System streams

System streams are a predefined set of streams. They are loaded in memory by Pryv.io and not stored in the database. The base system streams contain the structure to store user account data, which can be extended in the platform configuration to include additional unique or indexed fields (more on that later in this document).

System streams can be recognized by their id prefixed by a dot.

The base system streams are the following:

|_.account
  |_.username
  |_.language
  |_.storageUsed
    |_.dbDocuments
    |_.attachedFiles
|_.helpers
  |_.active

Please note that we have removed email from the default account, as some Pryv.io platforms don't include email for account anonymity. It can be added through custom streams in the platform configuration and is present in the template configuration we provide.

Here are the settings that you can configure for these system streams outside of their structure:

Unicity

You can define fields additional to username whose unicity constraint will be ensured platform-wide. These are often used for properties such as email or insurance number.

Indexed

Some account properties can be marked as indexed, meaning they will be available through the system API to fetch accross all accounts: GET /users.

Editability

Values of the system streams are stored in the Events data structure, you can define whether this event is editable or read-only after account registration.

Mandatory or optional

Some values can be optional during the registration process.

Format

You can an enforce a property format for these values using a regular expression.

Event type

You can define the type of the events that will be used to store the values.

Visibility

You can make some values stored at registration and indexed, but not to appear Pryv.io API outside of the administration API.

Configuration

By default, you platform configuration will contain the single email account stream which will appear as following:

{
  "account": [
    {
      "id": "email",
      "name": "Email",
      "type": "email/string",
      "isUnique": true,
      "isIndexed": true,
      "isEditable": true,
      "isRequiredInValidation": true,
      "isShown": true
    }
  ]
}

Unicity and index properties won't work properly if added after the launch of the platform. As the values recorded previously will not be synchronized in the register database.

Here is the detailed list of parameters: