Перейти к содержанию

Методы 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 Глоссарий:

  1. Id - {Number} ненулевое, положительное целое число
  2. AlarmState - {Number} варианты значений
    Normal = 0,
    Accident = 1,
    Warning = 2,
  3. ConfirmationType - {Number} варианты значений
    NoComment = 0,
    CommentNotRequired = 1,
    CommentRequired = 2
  4. 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 Глоссарий:

  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
  2. 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}   
}
]