Модуль подписок

В этой статье:

Создание подписки

Endpoint: POST v1/subscriptions/create

Предназначен для создания подписок и поддерживает множественный выбор объектов подписки и триггеров.

Пример запроса:

{
"subscription": {
    "id": null,                                         // ID подписки (при создании автоматически заполняется с BE)
    "name": "testMulti",                                // Название подписки
    "description": null,                                // Описание подписки (на данный момент такое поле отсутствует на UI)
    "type": "asset",                                    // Тип подписки (asset/assetType)
    "triggers": [                                       // Список триггеров
    "triggerScoresAndComments",
    "updateAsset"
    ],
    "subjects": [                                       // Объекты подписки (в случае подписки на тип актива поле subjectId будет null)
    {
        "namespace": "asset",
        "typeName": "asset1",
        "subjectId": "472915d1-4fe3-11ef-b96a-051ca4594fa5"
    },
    {
        "namespace": "asset",
        "typeName": "sub1",
        "subjectId": "4d3a6e17-4fe3-11ef-b96a-051ca4594fa5"
    }
    ],
    "channels": [                                       // Каналы поставки уведомлений
    "panel"
    ],
    "active": true,                                     // Статус подписки
    "content": [],                                      // Контент, который включает в себя дополнительные условия подписки (при множественном выборе объектов/триггеров будет отсутствовать)
    "username": "admin",                                // Логин пользователя, которому принадлежит подписка
    "createDate": "2024-08-01T14:27:06.372Z",           // Дата создания
    "updateDate": "2024-08-01T14:27:06.372Z"            // дата обновления
}
}

Пример ответа:

{
"success": true
}

Получение подписок

Endpoint: GET v1/subscriptions/list

Предназначен для получения подписок без учета фильтрации и сортировки. Принимает в качестве параметров limit и offset.

Endpoint: POST v1/subscriptions/list

Предназначен для получения подписок с учетом фильтрации и сортировки.

Пример запроса:

{
"name": "testMulti",              // Имя подписки
"username": "admin",              // Имя пользователя
"type": "asset",                  // Тип подписки
"trigger": "updateAsset",         // Триггер подписки
"subject": {                      // Объект подписки
    "namespace": "asset",
    "typeName": "asset1",
    "subjectId": "472915d1-4fe3-11ef-b96a-051ca4594fa5"
},
"includeInactive": true,          // Флаг на включение в результат поиска неактивных подписок
"limit": 10,                      // Параметры для пагинации
"offset": 0,                      // Параметры для пагинации
"countOnly": true,                // Флаг на возвращение только числа подписок
"sortFields": [                   // Поля сортировки
    {
    "name": "name",
    "order": "DESC"
    }
]
}

Оба поинта имеют одинаковый формат ответа.

Пример ответа:

{
"totalCount": 1,
"subscriptions": [
    {
    "id": 9,
    "name": "testMulti",
    "description": null,
    "type": "asset",
    "triggers": [
        "triggerScoresAndComments",
        "updateAsset"
    ],
    "subjects": [
        {
        "namespace": "asset",
        "typeName": "asset1",
        "subjectId": "472915d1-4fe3-11ef-b96a-051ca4594fa5"
        },
        {
        "namespace": "asset",
        "typeName": "sub1",
        "subjectId": "4d3a6e17-4fe3-11ef-b96a-051ca4594fa5"
        }
    ],
    "channels": [
        "panel"
    ],
    "content": [],
    "username": null,
    "active": true,
    "createDate": "2024-08-02T09:50:34.020630Z",
    "updateDate": "2024-08-02T09:50:34.020630Z"
    }
]
}

Обновление подписки

Endpoint: PUT v1/subscriptions/update/{id}

Предназначен для обновления подписки.

Пример запроса:

{
"subscription": {
    "id": 9,
    "name": "changedName",                                      // Имя подписки (редактируемый параметр)
    "description": null,
    "type": "asset",
    "triggers": [
    "triggerScoresAndComments",
    "updateAsset"
    ],
    "subjects": [
    {
        "namespace": "asset",
        "typeName": "asset1",
        "subjectId": "472915d1-4fe3-11ef-b96a-051ca4594fa5"
    },
    {
        "namespace": "asset",
        "typeName": "sub1",
        "subjectId": "4d3a6e17-4fe3-11ef-b96a-051ca4594fa5"
    }
    ],
    "channels": [                                               // Каналы поставки (редактируемый параметр)
    "email"
    ],
    "content": [],                                              // Конфигурация триггеров (редактируемый параметр)
    "username": "admin",
    "active": true,                                             // Активная подписка или нет (редактируемый параметр)
    "createDate": "2024-08-02T09:51:19.862Z",
    "updateDate": "2024-08-02T09:51:19.862Z"
}
}

Пример ответа:

{
"success": true
}

В случае возникновения ошибки ответ от любого из приведенных поинтов будет одинаковый.

Ответ (в случае возникновения ошибки):

{
"details": {
    "info": [
    {
        "domain": "string",
        "source": "string",
        "content": "string"
    }
    ],
    "warning": [
    {
        "domain": "string",
        "source": "string",
        "content": "string"
    }
    ],
    "error": [
    {
        "domain": "string",
        "source": "string",
        "code": "string",
        "severity": "string",
        "externalMessage": "string",
        "internalMessage": "string",
        "details": "string",
        "params": [
        {
            "message": "string",
            "internalMessage": "string",
            "nested": [
            "string"
            ]
        }
        ]
    }
    ]
},
"errorMessage": "string"
}