API уведомлений PILOT

Это API предназначено для взаимодействия с временными динамическими нотификациями.
Структура данных и настроек по этим нотификациям идентична работе с модулем уведомлений в интерфейсе системы ПИЛОТ.
 
https://doc.pilot-gps.ru/modul_uvedomlenij_.html?ms=EwADAAAAAAAAAAAgAgJAAQ%3D%3D&st=MA%3D%3D&sct=OTE3&mw=Mjgw
 
Для доступа используется HTTP Basic аутентификация.
Логин и пароль для доступа к API указывается в формате: логин_из_пилота:пароль_из_пилота.
Пример URL запроса по использованию API: https://demo:demo@pilot-gps.com/api/ptm/notification.php
Для серверов с архитектурой лезвий обязательно нужно указать GET параметр node, к примеру: 
 
 
Ответ на запрос имеет два кода состояния: 200 при успехе и 500 при серверной ошибке.
Формат ответа имеет следующую структуру:
{
     “success”: false или true,
     “msg”: сообщение об ошибке, если такая имеется,
     “method”: метод запроса: GET, POST, PUT, DELETE,
     “notification”: данные нотификации,
     “ids”: список идентификаторов нотификаций (только для метода DELETE)
}
 
1. Получить существующую конфигурацию нотификации, метод GET
 
Параметры запроса
Название
Параметр
Значение и описание
Идентификатор нотификации
id*
Число
 
 
2. Создать новую конфигурацию нотификации, метод POST
 
Параметры запроса
Название
Параметр
Значение и описание
Идентификатор агента
agent_id*
Число
Идентификаторы ТС
vehs
Массив чисел. Сюда попадает значение с поля agent_id
Тип нотификации
type*
Строка. Одно из следующих значений: speed, ignition, ignitionwork, sensor, sensorwork, temperature, fuel, connection, odometer, moving, parking, geozones.
Может принимать массив строк для комплексных нотификаций.
Геозоны
geozones
Массив. Каждый элемент массива имеет описание геозоны с ключами:
- name – строка, название геозоны / адрес;
- zonetype – число, тип геозоны: 1 – полигон, 2 – круг;
- points – массив, характеристики геозоны. Для полигона [[lat,lon],[lat,lon]..].
Для круга [lat,lon,radius_in_m].
Название нотификации
name*
Строка
Включение рассылки на  email
email
Строка.
Если нужно включить рассылку, то нужно указать значение on, иначе пустая строка
Список  email для рассылки
emails_list
Массив строк
Включение рассылки по sms
sms
Строка.
Если нужно включить рассылку, то нужно указать значение on, иначе пустая строка
Список номеров телефонов для расслыки
phones_list
Массив строк
Текст нотификации
message_text
Строка
Включение отправки данных по webhook
webhook
Строка.
Если нужно включить отправку данных, то нужно указать значение on, иначе пустая строка
URL для отправки webhook
webhook_url
Строка
Параметры для webhook
webhook_params
Строка
Заголовки для webhook
webhook_headers
Строка
Начальное время действия нотификации
ts
Число, Unix timestamp
Конечное время действия нотификации
te
Число, Unix timestamp
Название часового пояса
timezone
Строка, к примеру Europe/Vienna
Правило обработки геозон
zone_rule
Строка. Доступные значения: in, out
Правило обработки скорости
speed_rule
Строка. Доступные значения: >, <, =.
Обязательно для типа speed.
Значение скорости
speed_value
Число. Обязательно для типа speed 
Длительность условия для срабатывания
speed_time
Число. Обязательно для типа speed 
Единицы измерения для скорости
speed_time_units
Строка. Доступные значения: ss, mm, hh, km. Обязательно для типов speed, temperature
Правило обработки зажигания
ignition_rule
Строка. Доступные значения: on, off, onoff, move. Обязательно для типов ignition, sensor
Правило обработки геозон
geozones_rule
Строка. Доступные значения: in, out, inout
Продолжительность перерыва
break_duration
Число. Обязательно для типов moving, ignitionwork, sensorwork
Единицы измерения для перерыва
break_time_units
Строка. Доступные значения: ss, mm, hh, km. Обязательно для типов moving, ignitionwork, sensorwork
Название тега
tag_name
Строка. Обязательно для типов sensorwork, sensor
Правило обработки температуры
temperature_rule
Строка. Доступные значения: >, <, =, d.
Обязательно для типа temperature  
Значение температуры
temperature_value
Число . Обязательно для типа temperature
Длительность условия для срабатывания
temperature_time
Число . Обязательно для типа temperature
Длительность условия для срабатывания потери связи
disconnect_time
Число. Обязательно для типа connection
Единицы измерения
disconnect_time_units
Строка. Доступные значения: ss, mm, hh, km. Обязательно для типа connection
Правило обработки одометра
odometer_rule
Строка. Доступные значения: >, <.
Обязательно для типа odometer.
Значение одометра
odometer_value
Число. Обязательно для типа odometer
Длительность условия для срабатывания
odometer_period
Строка. Доступные значения: abs, month, day. Обязательно для типа odometer
Включение генерации нотификации для модуля ГАРМ
garm_event
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка
Идентификатор типа приоритета события
group
Число. Обязательно для модуля ГАРМ
Время обработки в секундах
timer
Число
Данные алгоритма
algorithm_data
Строка
Оповещение в телеграм бот
telegram
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка
Оповещение на мобильное устройство
push
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка
Оповещение в виде всплывающего окна в  интерфейсе
alert
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка
Оповещение для всех пользователей системы
forall
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка
Служебный подтип нотификации
subtype
Строка.
Идентификатор тэга сенсора
sensor_tag
Число
Код языка
language
Строка
Длительность для срабатывания нотификации в секундах
duration
Число
Единицы измерения
time_units
Строка. Доступные значения: ss, mm, hh, km.
Правило обработки комплексных нотификаций
rule
Массив строк. Значение элемента массива может принимать значения: or, and
Описание комплексных нотификаций
rules
Массив с описанием нотификации. Каждый элемент массива принимает свой набор ключей, зависящих от типов нотификаций.
Время постоянного не изменяющегося значения
no_changes
Число
Единицы измерения
no_changes_time_units
Строка. Доступные значения: ss, mm, hh, km.
 
 
3. Отредактировать существующую конфигурацию нотификации, метод PUT
 
Параметры запроса
Название
Параметр
Значение и описание
Идентификатор нотификации
id*
Число. Передается как GET параметр.
Идентификатор агента
agent_id*
Число
Идентификаторы ТС
vehs
Массив чисел. Сюда попадает значение с поля agent_id
Тип нотификации
type*
Строка. Одно из следующих значений: speed, ignition, ignitionwork, sensor, sensorwork, temperature, fuel, connection, odometer, moving, parking, geozones.
Может принимать массив строк для комплексных нотификаций.
Геозоны
geozones
Массив. Каждый элемент массива имеет описание геозоны с ключами:
- name – строка, название геозоны / адрес;
- zonetype – число, тип геозоны: 1 – полигон, 2 – круг;
- points – массив, характеристики геозоны.
Для полигона [[lat,lon],[lat,lon]..]. Для круга [lat,lon,radius_in_m].
Название нотификации
name*
Строка
Включение рассылки на  email
email
Строка. Если нужно включить рассылку, то нужно указать значение on, иначе пустая строка.
Список  email для рассылки
emails_list
Массив строк
Включение рассылки по sms
sms
Строка. Если нужно включить рассылку, то нужно указать значение on, иначе пустая строка
Список номеров телефонов для расслыки
phones_list
Массив строк
Текст нотификации
message_text
Строка
Включение отправки данных по webhook
webhook
Строка. Если нужно включить отправку данных, то нужно указать значение on, иначе пустая строка
URL для отправки webhook
webhook_url
Строка
Параметры для webhook
webhook_params
Строка
Заголовки для webhook
webhook_headers
Строка
Начальное время действия нотификации
ts
Число, Unix timestamp
Конечное время действия нотификации
te
Число, Unix timestamp
Название часового пояса
timezone
Строка, к примеру Europe/Vienna
Правило обработки геозон
zone_rule
Строка. Доступные значения: in, out
Правило обработки скорости
speed_rule
Строка. Доступные значения: >, <, =.
Обязательно для типа speed.
Значение скорости
speed_value
Число. Обязательно для типа speed 
Длительность условия для срабатывания
speed_time
Число. Обязательно для типа speed 
Единицы измерения для скорости
speed_time_units
Строка. Доступные значения: ss, mm, hh, km. Обязательно для типов speed, temperature
Правило обработки зажигания
ignition_rule
Строка. Доступные значения: on, off, onoff, move. Обязательно для типов ignition, sensor
Правило обработки геозон
geozones_rule
Строка. Доступные значения: in, out, inout
Продолжительность перерыва
break_duration
Число. Обязательно для типов moving, ignitionwork, sensorwork
Единицы измерения для перерыва
break_time_units
Строка. Доступные значения: ss, mm, hh, km. Обязательно для типов moving, ignitionwork, sensorwork
Название тега
tag_name
Строка. Обязательно для типов sensorwork, sensor
Правило обработки температуры
temperature_rule
Строка. Доступные значения: >, <, =, d .
Обязательно для типа temperature.
Значение температуры
temperature_value
Число . Обязательно для типа temperature
Длительность условия для срабатывания
temperature_time
Число . Обязательно для типа temperature
Длительность условия для срабатывания потери связи
disconnect_time
Число. Обязательно для типа connection
Единицы измерения
disconnect_time_units
Строка. Доступные значения: ss, mm, hh, km. Обязательно для типа connection
Правило обработки одометра
odometer_rule
Строка. Доступные значения: >, <.
Обязательно для типа odometer.
Значение одометра
odometer_value
Число. Обязательно для типа odometer
Длительность условия для срабатывания
odometer_period
Строка. Доступные значения: abs, month, day. Обязательно для типа odometer
Включение генерации нотификации для модуля ГАРМ
garm_event
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка
Идентификатор типа приоритета события
group
Число. Обязательно для модуля ГАРМ
Время обработки в секундах
timer
Число
Данные алгоритма
algorithm_data
Строка
Оповещение в телеграм бот
telegram
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка
Оповещение на мобильное устройство
push
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка.
Оповещение в виде всплывающего окна в  интерфейсе
alert
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка.
Оповещение для всех пользователей системы
forall
Строка. Если нужно включить, то нужно указать значение on, иначе пустая строка.
Служебный подтип нотификации
subtype
Строка.
Идентификатор тэга сенсора
sensor_tag
Число
Код языка
language
Строка
Длительность для срабатывания нотификации в секундах
duration
Число
Единицы измерения
time_units
Строка. Доступные значения: ss, mm, hh, km.
Правило обработки комплексных нотификаций
rule
Массив строк. Значение элемента массива может принимать значения: or, and
Описание комплексных нотификаций
rules
Массив с описанием нотификации.
Каждый элемент массива принимает свой набор ключей, зависящих от типов нотификаций.
Время постоянного не изменяющегося значения
no_changes
Число
Единицы измерения
no_changes_time_units
Строка. Доступные значения: ss, mm, hh, km.
 
 
4. Удалить существующую конфигурацию нотификации, метод DELETE
 
Принимает один из обязательных параметров. Если указан agent_id, то будут удалены все конфигурации для этого агента. Если указан id, то будет удалена конфигурация нотификация по этому идентификатору.
 
Параметры запроса
Название
Параметр
Значение и описание
Идентификатор нотификации
id
Число. Передается как GET параметр.
Идентификатор агента
agent_id
Число. Передается как GET параметр.
 
 
Пример данных запроса для создания комплексной нотификации по температуре:
{
  "te": 1680202800,
  "ts": 1680164770,
  "name": "Temperature deviation",
  "node": null,
  "push": "",
  "rule": [
    "or",
    "and"
  ],
  "type": "complex",
  "vehs": [
    161115
  ],
  "email": "on",
  "group": 7,
  "rules": [
    {
      "rule": "or",
      "type": "temperature",
      "time_units": "ss",
      "speed_time_units": "ss",
      "temperature_rule": ">",
      "temperature_time": 20,
      "temperature_value": 8
    },
    {
      "rule": "and",
      "type": "temperature",
      "time_units": "ss",
      "speed_time_units": "ss",
      "temperature_rule": "<",
      "temperature_time": 20,
      "temperature_value": 2
    }
  ],
  "timer": 0,
  "forall": "on",
  "subtype": "magnit_temperature_deviation_outside_geofences",
  "task_id": 186361,
  "agent_id": 161115,
  "geozones": {
    "г Краснодар, ул Алма-Атинская, д 148": {
      "id": null,
      "name": "г Краснодар, ул Алма-Атинская, д 148",
      "points": [
        "45.04138000",
        "38.93461000",
        200
      ],
      "zonetype": 2
    }
  },
  "language": "en",
  "telegram": "",
  "timezone": "Europe/Moscow",
  "zone_rule": "out",
  "delay_time": 0,
  "garm_event": "on",
  "task_cp_id": 59626,
  "time_units": [
    "ss",
    "ss"
  ],
  "emails_list": [
    ""
  ],
  "message_text": "Temperature deviation (+2..+8) outside geofences",
  "algorithm_data": "",
  "wait_time_send": 0,
  "temperature_rule": [
    ">",
    "<"
  ],
  "temperature_time": [
    20,
    20
  ],
  "temperature_value": [
    8,
    2
  ],
  "algorithm_settings": ""