Работа с API сервиса/1с
GET
agent/device?{page}=1&{per_page}=20
Получает актуальный список устройств
{
"new_devices": NEW_DEVICES,
"devices":[
...
{
"id": DEVICE_ID,
"is_new": DEVICE_IS_NEW,
"serial": DEVICE_SERIAL,
"mac" : DEVICE_MAC,
"host" : DEVICE_HOST,
"adapter_id" : DEVICE_ADAPTER,
"login": DEVICE_LOGIN,
"password": DEVICE_PASSWORD,
"timezone": DEVICE_TIMEZONE,
"sensors": [
...
{
"sensor_id": SENSOR_ID,
"line_id": SENSOR_LINE_ID
},
...
]
},
...
],
"pagination":{
"page": 1,
"per_page": 20,
"pages": 2,
"total": 40
}
}
- NEW_DEVICES - список устройств с флагом is_new. агентом не используется
- DEVICE_ID - uuid устройства. строка
- DEVICE_IS_NEW - флаг нового устройства. булево
- DEVICE_SERIAL - строка с серийником
- DEVICE_MAC - строка c mac адресом
- DEVICE_ADAPTER - строка с кодом типа устройства
- SENSOR_ID - uuid сенсора (линии подсчета)
- SENSOR_LINE_ID - id линии/счетчика от самого устройства
- DEVICE_HOST - ip устройства
- DEVICE_LOGIN - логин для доступа на устройство
- DEVICE_PASSWORD - пароль для доступа на устройство
- DEVICE_TIMEZONE - строка с таймзоной
При получении списка устройств агент проводит сверку полученного списка (блок devices) со своей локальной базой:
- Если устройство есть на агенте, но нет в списке от сервиса, флаг is_new не установлен на агенте, то такое устройство удаляется с агента
- Если устройство есть на агенте, флаг is_new установлен, в списке от сервиса оно есть без установленного флага, то ID устройства на агенте заменяется тем что прислал сервис, ID серсоров так же заменяется (с привязкой к line_id). Флаг is_new на агенте снимается. При этом в хранимых метриках по такому устройству так же заменяются ID устройства, ID серсора (и затем отправляются в сервис стандартным способом).
- Если устройство есть на агенте, флаг is_new установлен, и его нет в списке от сервиса. То с таким устройством ничего не делать и хранить метрики только на агенте.
POST
agent/device
регистрация нового устройства в сервисе
тело запроса - строка json:
{
"id": DEVICE_ID,
"is_new": DEVICE_IS_NEW,
"serial": SERIAL,
"mac": MAC,
"adapter_id": ADAPTER_ID,
"sensors": [
...
{
"sensor_id": SENSOR_ID,
"line_id": SENSOR_LINE_ID
},
...
],
"host": HOST,
"login": LOGIN,
"password": PASSWORD,
"time_zone": TIMEZONE
}
- DEVICE_ID - uuid устройства. строка
- DEVICE_IS_NEW - флаг нового устройства. булево
- SERIAL - строка с серийником
- MAC - строка c mac адресом
- ADAPTER_ID - строка с кодом типа устройства
- SENSOR_ID - uuid сенсора (линии подсчета)
- SENSOR_LINE_ID - id линии/счетчика от самого устройства
- HOST - ip устройства
- LOGIN - логин для доступа на устройство
- PASSWORD - пароль для доступа на устройство
- TIMEZONE - строка с таймзоной
POST
agent/check
Запрос
отчет о состоянии агента, отчет о выполненных командах
Тело запроса - строка json:
{
'health': {
"last_report_at": 0.0,
"status": STATUS,
"activity": "working",
"up_time": UPTIME
},
'executed_commands': EXECUTED_COMMANDS
}
- STATUS - статус агента
- ok - количество неактивных устройств равно нулю
- warning - количество неактивных устройств менее установленного в конфиге
- error - количество неактивных устройств более установленного в конфиге
- UPTIME - количество секунд с момента запуска агента
- EXECUTED_COMMANDS - список результатов отработанных команд
EXECUTED_COMMANDS:
{
"command_id": COMMAND_ID
"device_id": DEVICES
"command": COMMAND
"result": COMMAND_RESULT
}
- COMMAND_ID - uuid команды
- DEVICES - список с uuid устройств
- COMMAND - строка с названием команды
- COMMAND_RESULT - результат выполнения команды
COMMAND_RESULT:
{
"error_flag": ERROR_FLAG,
"message": MESSAGE,
"payload": [
...
{
"error_flag": PAYLOAD_ERROR_FLAG,
"message": PAYLOAD_MESSAGE,
"payload": PAYLOAD_PAYLOAD,
"device_id": PAYLOAD_DEVICE_ID
}
...
]
}
- ERROR_FLAG - флаг ошибки всей команды. значения 0 и 1
- MESSAGE - сообщения о результатах выполнения всей команды. строка или список строк
- PAYLOAD_ERROR_FLAG - флаг ошибки выполнения команды на конкретном устройстве. значения 0 и 1
- PAYLOAD_MESSAGE - сообщения о результатах выполнения всей команды на конкретном устройстве. строка или список строк
- PAYLOAD_PAYLOAD - результат выполнения команды на конкретном устройстве. список или словарь
- PAYLOAD_DEVICE_ID - id устройства
Ответ
{
...
"payload": {
"commands": [
...
{
"command_id": COMMAND_ID,
"device_id": DEVICES,
"command": COMMAND,
"params": COMMAND_PARAMS
}
...
]
}
...
}
- COMMAND_ID - uuid команды
- DEVICES - список устройств (uuid)
- COMMAND - строка команды
- COMMAND_PARAMS - словарь с параметрами команды
описание команд и их параметров
No Comments