Skip to main content

Работа с 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 - словарь с параметрами команды

описание команд и их параметров