Методы REST API SCADA
1. Начало работы
ПЕРЕД ТЕМ, КАК ВЫПОЛНЯТЬ ЗАПРОСЫ, НЕОБХОДИМА АВТОРИЗАЦИЯ.
Чтобы авторизоваться в Postman, необходимо выполнить следующий запрос:
Выбрать тип «POST»
Далее необходимо ввести адрес запроса. Вначале всегда идет «https://localhost:9002», после этого необходимо вставить маршрут.
1.1 Маршрут: /login
В итоге получится следующий запрос:
POST https://localhost:9002/login
Также для этого запроса требуется тело с запросом. Его необходимо вставлять во вкладку Body
Тело запроса:
{
email: {String},
password: {String}
}
После запроса получим следующий ответ:
Тело ответа:
data: {
id: {Id},
token: {String},
user_id: {Id},
browser_info: {String},
expiration: {Timestamp}
}
Копируем значение «Token», во вкладке «Authorization» выбираем тип авторизации «API Key», в поле «Key» вводим «token», в поле «Value» вставляем скопированный токен. После этого можно выполнять другие запросы.
2. API Журнала аварий
2.1 Глоссарий:
- Id - {Number} ненулевое, положительное целое число
- AlarmState - {Number} варианты значений
Normal = 0,
Accident = 1,
Warning = 2, - ConfirmationType - {Number} варианты значений
NoComment = 0,
CommentNotRequired = 1,
CommentRequired = 2 - ClearMode - {Number} варианты значений
ByNormalize = 0,
ByConfirm = 1
2.2 Получить список аварий
Тип: POST
Маршрут: /v1/alarms_journal/protected/get_alarms
Тело запроса:
{
start: {Timestamp},
end: {Timestamp},
limit: {Number},
offset: {Number}
}
Тело ответа:
Записи отдаются отсортированными в порядке убывания от end (самые свежие сверху).
data: [
{
id: {Id},
action_group_id: {Id},
alarm_group_id: {Id},
alarm_id: {Id},
alarm_image_path: {String},
alarm_priority: {Number},
alarm_state: {AlarmState},
bound_index: {Id},
bound_name: {String},
confirm_message: {String},
confirmation_type: {ConfirmationType},
confirmation_user_id: {Id},
date_confirm: {Timestamp},
date_created: {Timestamp},
is_confirmation_required: {Boolean},
message: {String}
}
]
где: 1. alarm_image_path - имя файла картинки c расширением. Получить полный путь до картинки можно по адресу 'https://' + location.hostname + ':8085/photos/' + image
2.3 Сбросить все аварии
Тип: POST
Маршрут: /v1/alarms_journal/protected/clear_alarms
Тело запроса: не требуется (данные о пользователи берутся из headers и токена)
Тело ответа:
success: {Boolean}
2.4 Получить параметры журнала
Тип: GET
Маршрут: /v1/alarms_journal/protected/get_params
Тело запроса: не требуется
Тело ответа:
Data: {
clear_alarms_priority: {Number},
clear_mode: {ClearMode},
login_priority: {Number},
logout_priority: {Number},
project_started_priority: {Number},
tag_access_forbidden_priority: {Number},
tag_changes_priority: {Number}
}
2.5 Установить параметры журнала
Тип: POST
Маршрут: /v1/alarms_journal/protected/set_params
Тело запроса:
Data: {
clear_alarms_priority: {Number},
clear_mode: {ClearMode},
login_priority: {Number},
logout_priority: {Number},
project_started_priority: {Number},
tag_access_forbidden_priority: {Number},
tag_changes_priority: {Number}
}
Тело ответа:
data: {
clear_alarms_priority: {Number},
clear_mode: {ClearMode},
login_priority: {Number},
logout_priority: {Number},
project_started_priority: {Number},
tag_access_forbidden_priority: {Number},
tag_changes_priority: {Number}
}
2.6 Получить количество аварий
Тип: POST
Маршрут: /v1/alarms_journal/protected/get_count
Тело запроса:
{
start: {Timestamp},
end: {Timestamp}
}
Тело ответа:
count: {Number}
2.7 Подтвердить аварию (квитировать)
Тип: POST
Маршрут: /v1/alarms_journal/protected/confirm
Тело запроса: (данные о пользователи берутся из headers и токена)
{
row_id: {Number}
}
Тело ответа: отсутствует
3. API Журнала событий
3.1 Глоссарий:
- ScadaHistoryEventType - {Number} варианты значений
All = 0,
UserLogin = 1,
UserLogout = 2,
ProjectStarted = 3,
CustomEvent = 4,
Alarm = 5,
AlarmConfirmed = 6,
AlarmsCleared = 7,
TagAccessed = 8,
TagChanged = 9,
AlarmViewAllConfirmed = 10,
AlarmViewInactiveCleared = 11,
AlarmConfirmedByZones 12 - AlarmState - {Number} варианты значений
Normal = 0,
Accident = 1,
Warning = 2
3.2 Получить список событий
Тип: POST
Маршрут: /v1/events_history/protected/get
Тело запроса:
{
start: {Timestamp},
end: {Timestamp},
limit: {Number},
offset: {Number},
type: {ScadaHistoryEventType}
}
Если передать type = 0 (All), то будут выданы все события без учета типа
Тело ответа:
Записи отдаются отсортированными в порядке убывания от end (самые свежиме сверху)
data: [
{
id: {Id},
type: {ScadaHistoryEventType},
message: {String},
date_created: {Timestamp},
event_priority: {Number},
alarm_id: {Id},
alarm_group_id: {Id},
user_id: {Id},
ip_address_: {String},
action_group_id: {Id},
alarm_image_path: {String},
alarm_state: {AlarmState},
cur_tag_value: {Number},
old_tag_value: {Number},
tag_id: {Id},
bound_index: {Id},
bound_name: {String}
}
]
где:
alarm_image_path - имя файла картинки c расширением. Получить полный путь до картинки можно по адресу 'https://' + location.hostname + ':8085/photos/' + alarm_image_path
3.3 Получить кол-во определенных событий
Тип: POST
Маршрут: /v1/events_history/protected/get_count
Тело запроса:
{
start: {Timestamp},
end: {Timestamp},
type: {ScadaHistoryEventType}
}
Если передать type = 0 (All), то будут выданы все события без учета типа
Тело ответа:
count: {Number}
3.4 Отправить custom событие
Тип: POST
Маршрут: /v1/events_history/protected/send_custom_event
Тело запроса:
{
caption: {String},
event_priority: {Number}
}
Если передать type = 0 (All), то будут выданы все события без учета типа
Тело ответа:
data: "ok"
4. API Пользователей
Для всех запросов требуется авторизация
4.1 Получить список пользователей {#получить-список-пользователей}
Тип: POST
Маршрут: /v1/users/protected/get
Тело запроса:
{
offset: 0,
limit: -1,
}
Тело ответа: {array}
data: [{
name: {String}
surname: {String}
email: {String}
id: {Id},
role: {Id}
}]
4.2 Получить кол-во пользователей
Тип: GET
Маршрут: /v1/users/protected/get_count
Тело запроса: не требуется
Тело ответа: {object}
count: {Number}
4.3 Добавить пользователя
Тип: POST
Маршрут: /v1/users/protected/add
Тело запроса:
{
name: {String}
surname: {String}
email: {String}
password: {String},
role_id: {Id}
}
Тело ответа: {object}
data: {
name: {String}
surname: {String}
email: {String}
id: {Id},
role: {Id}
}
4.4 Удалить пользователя
Тип: POST
Маршрут: /v1/users/protected/del
Тело запроса:
{
id: {Id}
}
Тело ответа: {Object}
{
deleted_id: {Id}
}
4.5 Отредактировать пользователя
Тип: POST
Маршрут: /v1/users/protected/edit
Тело запроса:
{
id: {Id}
name: {String}
surname: {String}
email: {String},
role: {Id}
new_password: {String}
old_password: {String}
}
Тело ответа: {Object}
data: {
name: {String}
surname: {String}
email: {String},
role{Id},
id: {Id}
}
4.6 Получить информацию о текущем пользователе
Тип: GET
Маршрут: /v1/users/protected/get_current
Тело запроса: не требуется
Тело ответа: {Object}
data: {
name: {String}
surname: {String}
email: {String},
role: {Id},
id: {Id}
}
Для запроса требуется в Cookie поле token
4.7 Авторизоваться
Тип: POST
Маршрут: /login
Тело запроса:
{
email: {String},
password: {String}
}
Тело ответа:
data {
id: {Id},
token: {String},
user_id: {Id},
browser_info: {String},
expiration: {Timestamp}
}
Cookie
token: {String}
4.8 Выйти из системы
Тип: POST
Маршрут: /auth/protected/logout
Тело запроса: не требуется
Тело ответа:
{
user_id: {Id}
}
Для запроса требуется в Cookie поле token
5. API Тегов
Для всех запросов требуется авторизация
5.1 Получить тег по ID
Тип: POST
Маршрут: /v1/tags/protected/get_tag
Тело запроса:
{
tag_id: {Id}
}
Тело ответа:
data: [
{
db_strategy: {String},
description: {String},
enable: {Boolean},
id: {Id},
max: {String},
min: {String},
name: {String},
params: {ArrayOfParams},
strategy_value: {Number},
unit: {String},
vtype: {DataType}
}
]
Exception: тег не найден
{
error: "not found"
}
5.2 Получить историю значений тега
Тип: POST
Маршрут: /v1/tags/protected/get_history
Тело запроса:
{
tag_id: {Id},
start: {Timestamp},
end: {Timestamp},
duty_cycle: {String},
limit: {Number},
offset: {Number}
}
Тело ответа:
data: [
{
time: {Timestamp},
value: {Number}
}
]