Команда subscribe

Команда subscribe предназначена для подписки на индикаторы определенного типа, в соответствии со справочником индикаторов.

После подписки, сервер начнет отдавать пакеты со значениями соответствующего индикатора по открытому каналу Websockets.

Для подписки на несколько индикаторов, нужно последовательно отправить команду подписки отдельно для каждого индикатора.

В ответе на команду приходит параметр SubscriptionId, он используется для отписки от данного индикатора.

Схема запроса

Поля запроса команды subscribe

ПолеТип поляНазначение
CommandJSONКорневой элемент, содержащий собственно текст запроса
CommandTypestringТип команды. В случае команды subscribe, нужно указать значение subscribe
CommandIdstringИдентификатор команды, для удобства отладки. Используется на усмотрение разработчика программы-агента. Можно указать любой текст, например UUID. Это опциональное поле
ArgsJSONАргументы команды
EventFilterJSONПараметры подписки
TenantIdintegerИдентификатор приложения или внешнего каталога пользователей. Используется в том случае, если у стороннего разработчика собственные идентификаторы пользователей. По умолчанию, используются пользователи Платформы, зарегистрированные на Паспорте, в этом случае TenantId = 0. Для создания нового каталога пользователей, обратитесь в техническую поддержку Платформы.
UserIdsintegerИдентификатор пользователя в данном каталоге (Tenant). По умолчанию (если TenantId = 0), идентификатор пользователя в Паспорте Платформы.

Если у пользователя, чей access_token используется для установления соединения, нет прав доступа к данным пользователя, указанного в UserIds, то пакеты данных по нему приходить не будут.
GroupstringГруппа показателей, первая составляющая часть типа данных (например, «bio»)
ClassstringКласс показателя, вторая составляющая часть типа данных (например, «mental»)
KindstringВид показателя, третья составляющая часть типа данных (например, «Stress_10_avg»)

Пример запроса команды subscribe

Пример запроса, содержащий команду subscribe:

{
  "Command": {
    "CommandType": "subscribe",
    "Args": {
      "EventFilter": {
        "TenantId": 0,
        "UserIds": 12,
        "Group": "bio",
        "Class": "mental",
        "Kind": "Stress_10_avg" 
      }
    }
  }
}

Схема ответа

Поля ответа команды subscribe

ПолеТип поляНазначение
ResponseJSONКорневой элемент для ответа
CommandJSONПолное повторение команды, пришедшей от клиента, со всеми дочерними полями
StatusintegerСтатус выполнения команды (0 — успешное выполнение, 1 — ошибка)
ErrorCodestringСимволический код ошибки, в соответствии со справочником кодов ошибок Websockets API
BodyJSONДополнительная информация о результатах выполнения команды
SubscriptionIdstringУникальный идентификатор подписки. Используется для отмены подписки

Пример ответа команды subscribe

Пример ответа, возвращающегося в результате выполнения команды subscribe:

{
  "Response": {
    "Command": {
      "CommandType": "subscribe",
      "CommandId": "",
      "Args": {
        "EventFilter": {
          "TenantId": 0,
          "UserIds": 12,
          "Group": "bio",
          "Class": "mental",
          "Kind": "Stress_10_avg"
        }
      }
    },
    "Status": 0,
    "ErrorCode": "NPE001",
    "Body": {
      "SubscriptionId": "afc18bdd-cecd-401b-880b-e1f9ca3bcce7"
    }
  }
}

После первого ответа, сервер начнёт передавать пакеты данных. Пакеты будут иметь следующий вид:

{
  "Data": {
    "TenantId": 0,
    "UserId": 12,
    "Group": "bio",
    "Class": "mental",
    "Kind": "Stress_10_avg",
    "GlobalEvent": true,
    "Source": "Стресс_10_усреднение",
    "Data": "{\"t\":\"2023-03-24T12:06:08.9714933+00:00\",\"s\":[{\"t\":0,\"v\":4.414609222753941,\"s\":638152563689714933,\"d\":0}]}"
  }
}

Более подробно формат приходящего пакета данных описан в разделе Пакеты данных в Websockets API.