SKIF.PRO (1.0.0)

Download OpenAPI specification:Download

Авторизация

/registrate

Используется для регистрации нового пользователя в системе.


Регистрирует пользователя с указанным email (параметр user_provider_id) и создает новую компанию, в которой пользователь становится администратором (роль Admin).

На указанный email отправляется ссылка для подтвержения аккаунта.

Пользователь сразу логинится в системе (создается сессия) и может выполнять любые запросы, требующие авторизации.


Параметры:

userProviderId - email пользователя (обязательный) 
type - тип регистрации, всегда "EMAIL" (обязательный)
password - пароль (обязательный)
name - имя нового пользователя (необязательный, по умолчанию копируется email)
phone - телефон нового пользователя
company_name - название компании (необязательный, по умолчанию будет имя из email до символа @
timezone - (обязательный) значение часового пояса из справочника dictionary (см. type = 'timezone')
language - (обязательный) значение из справочника dictionary (см type = 'lang')
captcha - код с картинки получаемой методом GET /captcha
invite_id - ID приглашения, получается из link в письме на почту, параметр invite_id
{
  "userProviderId": "mihsh1111@tut.by",
  "type": "EMAIL",
  "company_name": "BigBin",
  "password": "11111", 
  "name": "Имя пользователя",
  "timezone": {
    "key": "UTC+3"
  },
  "language": {
    "key": "ru"
  }
}

Параметры ответа:

Код 200 и пустой body в случае успеха.

Если уже есть аккаунт (см. /approve) с таким email, то возращается Код 422 и body c ошибкой session.errors.emailAlreadyRegistered

В случае частого вызова метода (чаще чем раз в 30 секунд), то возращается Код 400 и body validation.errors.often

Request Body schema: application/json
invite_id
string
object
name
string
password
string
object
type
string
userProviderId
string

Responses

Request samples

Content type
application/json
{
  • "invite_id": "c5b2edce-5a1e-47c9-a433-422e83c95dc9",
  • "language": {
    },
  • "name": "Миша",
  • "password": "12345N",
  • "timezone": {
    },
  • "type": "EMAIL",
  • "userProviderId": "test1@ya.ru"
}

/login

Авторизация пользователя с помощью email


Проверяет корректность связки email и пароля для авторизации пользователя. Если авторизация проходит успешно, то в cookies помещается id сессии пользователя, которая используется для авторизации дальнейших вызовов функции API под авторизованным пользователем. В случае если пользователь заходит по временному паролю (присланному при восстановлении пароля или вторичной регистрации по уже зарегистрированному телефону), то временный пароль становится постоянным.


Параметры:

"userProviderId" - email (обязательный) или логин
"provider_key" - костанта "TEXT" (обязательный)
"password" - пароль (обязательный)

"is_admin_panel" - true отправляется при входе в админ-панель

В поле password необходимо указать пароль, полученный при регистрации по смс (или email при тестовом режиме)

{
  "userProviderId": "test1@ya.ru",  (обязательный)
  "provider_key": "EMAIL",  (обязательный)
  "password": "33100078"        (обязательный)
}

Параметры ответа:

В случае успешной авторизации возвращается пустой body с кодом 200.

В случае не успешной авторизации возвращается status: 422 и json-body с ошибкой.

Request Body schema: application/json
password
string
provider_key
string
userProviderId
string

Responses

Request samples

Content type
application/json
{
  • "password": "12345N",
  • "provider_key": "TEXT",
  • "userProviderId": "test1@ya.ru"
}

/recovery

Восстановление пароля


Метод создает временный пароль для существующего пользователя. Новый пароль отправляется на указанный email. В тестовой среде отправляет письмо на отладочные почтовые ящики.


Параметры:

user_provider_id - телефон пользователя (обязательный)
type - константа, всегда "EMAIL" (обязательный)
{
  "user_provider_id": "test1@ya.ru", 
  "type": "EMAIL" 
}

Параметры ответа:

Код 200. Даже если пользователь с указанным паролем не существует.

{
  "pssword": ""
}

Ошибка валидации - код 422, с перечнем ошибок в полях

{
    "errors": [
        {
            "code": 4221,
            "field": "password",
            "message": "Отсутствует параметр"
        }
    ],
    "code": 4220,  //общий код ошибки 
    "message": "Отсутствует параметр" // частный 
}
Request Body schema: application/json
type
string
user_provider_id
string

Responses

Request samples

Content type
application/json
{
  • "type": "EMAIL",
  • "user_provider_id": "test1@ya.ru"
}

/recovery/qr/:user_id

Вход через qr


Метод создает временный пароль для существующего пользователя. По ссылке auth.recovery_url можно получить сессию и сменить пароль. Так же, если для пользователя настроен vpn, его парамеры будут возвращены в теге vpn

Параметры:

user_id - id пользователя (обязательный)


Роль: Супервизор и выше.


Параметры ответа:

Код 200. Даже если пользователь с указанным паролем не существует. Ответ всегда такого вида

{
    "vpn": {
        "privateKey": "ULVS+24iL5KGaQuDOWwx97MrMdWiyb8OPbic5uaz6kk=",
        "address": "10.8.0.4/23",
        "dns": "8.8.8.8",
        "publicKey": "kD4mmtvAAcSQo1A4jFGVrXfSS6ANk9dqpcs3NJ5c904=",
        "allowedIPs": "0.0.0.0/0",
        "endpoint": "37.151.94.172:51820",
        "persistentKeepalive": "20"
    },
    "auth": {
        "recovery_url": "https://dev5.skif.pro/recovery/75c93998-f410-4e4a-a470-722940f10946"
    }
}

Ошибка валидации - код 422, с перечнем ошибок в полях

{
    "errors": [
        {
            "code": 4221,
            "field": "",
            "message": "Отсутствует параметр"
        }
    ],
    "code": 4220,  //общий код ошибки 
    "message": "Отсутствует параметр" // частный 
}
path Parameters
user_id
required
string
Example:

ID пользователя

Responses

/logout

Выход из учетной записи


Удаляет все сессии пользователя на сервере.


Параметры: пусто


Ответ: 200

Responses

/reset_password/:user_id

Сбросить пароль пользователя администратором (только администратор)


Установить новый временный пароль для пользователя. После чего пользователь должен изменить пароль после входа.


Параметры:

user_id - ID пользователя
newPassword - новый пароль


Роль: Администратор и выше.


Ответ: Пустой 200. Новый пароль установлен или ошибка


Пример запроса:

{
    "newPassword": "12345678"
}
path Parameters
user_id
required
string
Example:

ID пользователя

Request Body schema: application/json
newPassword
string

Responses

Request samples

Content type
application/json
{
  • "newPassword": "Aa@1234567891011121314"
}

/change_my_password

Изменить свой пароль пользователем


Установить новый пароль пользователя для себя.


Параметры:

password - текущий пароль
newPassword - новый пароль


Ответ: Пустой 200 новый пароль установлен или ошибка


Пример запроса:

{
    "password": "123456",
    "newPassword": "12345678"
}

Responses

/approve/:id

Подтверждение email. Используется для подтверждения email по ссылке полученной на почту.


Делает email подтвержденным, после чего зарегистироваться с таким email уже не возможно.
Пользователь сразу авторизуется в системе без ввода email и пароля.

Создается временный id помещенный в redis со временем жизни 30 мин


Параметры:

id - временный id связанный с email


Ответ:

Возвращает код 200 с пустым body

Возвращает код 422 в случае если id не валидно

{
    "code": 4022,
    "field": "id",
    "message": "Ссылка устарела, повторите операцию"
}
path Parameters
id
required
string
Example:

Responses

/company/invite/:id

Авторизация по приглашению. Используется для получения доступа к компании по ссылке, полученной на почте.


Создает пользователя, если он не был ранее зарегистрирован и дает доступ к компании из которой Администратор вызвал метод POST /invite
Пользователь сразу авторизуется в системе без ввода email и пароля под приглашенной Компанией.


Пример запроса:

Создается временный id помещенный в redis со временем жизни 30 мин.

id связан с email и компанией, в которую приглашают пользователя (оба значения можно помещать в качестве значения в redis)

Параметры:

id - временный id связанный с email и Компанией в которую приглашают пользователя


Ответ:

Возвращает код 200 с пустым body

Возвращает код 422 в случае если id не валидно

{
    "code": 4022,
    "field": "id",
    "message": "Ссылка устарела, повторите операцию"
}
path Parameters
id
required
string
Example:

Responses

/recovery/:id

Авторизация по ссылке восстановления, полученной по почте. Используется для авторизации пользователя в системе для последующей смены пароля.


Пользователь сразу авторизуется в системе без ввода email и пароля. При этом если у пользователя доступ к нескольким компаниям, то предлагается выбор Компании, в которую пользователь хочет войти через метод GET switchcompany/:id


Пример запроса:

Создается временный id, помещенный в redis со временем жизни 30 мин. id связан с email

Параметры:

id - временный id связанный с email


Ответ:

Возвращает код 200 с пустым body

Возвращает код 422 в случае, если id не валидно

{
    "code": 4022,
    "field": "id",
    "message": "Ссылка устарела, повторите операцию"
}
path Parameters
id
required
string
Example:
Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

/captcha

Для регистрации необходимо передать код с картинки, получаемый из этого метода в поле captcha

Responses

/ask_approve_code

Запрос получения кода


Параметры:
provider_key: text, для подтверждения номером телефона (пока только так) provider_key = PHONE
userProviderId - text, номер телефона если provider_key = PHONE

Пример запроса:

{
    "userProviderId": "+7XXXXXXXXXX",
    "provider_key": "PHONE"
}

В ответ приходит 200, если запрос правильный, иначе ошибка

Request Body schema: application/json
provider_key
string
userProviderId
string

Responses

Request samples

Content type
application/json
{
  • "provider_key": "PHONE",
  • "userProviderId": "+71111111111"
}

/ask_approve_code_voice

Запрос получения кода через звонок


Параметры:
provider_key: text, для подтверждения номером телефона, provider_key = PHONE
userProviderId - text, номер телефона, если provider_key = PHONE

Пример запроса:

{
    "userProviderId": "+7XXXXXXXXXX",
    "provider_key": "PHONE"
}

В ответ приходит 200, если запрос правильный, иначе ошибка

Request Body schema: application/json
provider_key
string
userProviderId
string

Responses

Request samples

Content type
application/json
{
  • "provider_key": "PHONE",
  • "userProviderId": "+71111111111"
}

/approve_code

Подтверждение аккаунта с помощью кода


Параметры:
provider_key: text, ддля подтверждения номером телефона(пока только так) provider_key = PHONE
userProviderId - text, номер телефона если provider_key = PHONE
code: text, полученный код

Пример запроса:

{
    "userProviderId": "7XXXXXXXXXX",
    "provider_key": "PHONE",
    "code": "27280"
}
Request Body schema: application/json
code
string
provider_key
string
userProviderId
string

Responses

Request samples

Content type
application/json
{
  • "code": "52798",
  • "provider_key": "PHONE",
  • "userProviderId": "+71111111111"
}

Пользователь

/me

Получить информацию о текущем пользователе


Метод выдает информацию по текущему пользователю


Роль: Наблюдатель и выше.


Ответ:

{
  "id": "75bd17cc-642f-4c7c-982e-e0e991907733",    //  id пользователя
  "created": "2017-03-10 16:56:41",          //  дата создания
  "role": {"key": "Editor", "value": "Редактор"}, //роль пользователя. В системе есть роли NoAccess - пользователь без доступа, Editor - обычный пользователь,  Reader - читатель, Admin - администратор (может изменять роли других пользователей, блокировать)
  },
 "actions": [ // список действий пользователя, весь список: GET /actions
      {
          "id": "5858822c-1f21-431b-9cde-a672d2803b2b",
          "key": "generate_report",
      },
      {
        "id": "6ff2a8bd-48d6-4347-b42e-c01d73434fb5",
        "key": "units/update"
      }
  ], 
  "name": "Миша",                  //  имя
  "email": "test@gmail.com",
  "is_approved": true, //подтвержден ли аккаунт
  "is_driver": true, //является ли пользователь водителем
  "need_change_password": true, // Если у пользователя установлен временный пароль, то пользователь должен изменить свой пароль 
  "telegram_chat_id": 12345678910, //id-рассылки для Telegram
  "photos": [{
        "id": "b549d113-88e7-4002-b792-8f76d6694aa3",
        "url": "/photos/b549d113-88e7-4002-b792-8f76d6694aa3_original.png", //путь к оригинальной картинке
        "width": 850,
        "height": 670,
        "param_type": "users" //тип картинки, для пользователей - users
    }, {
        "id": "a8a0d710-01f4-4952-8a0f-35e345f2ad98",
        "url": "/photos/b549d113-88e7-4002-b792-8f76d6694aa3_110.png", //путь к картинке с максимальной стороной в 110px
        "width": 110,
        "height": 86,
        "param_type": "users" //тип картинки, для пользователей - users
    }],
  "code": "092384",                //  id пользователя (rfid)
  "language" : {"key":"en", "value":"English", "type":"languages"},                  //язык пользователя
  "phone" : "+78902334234",
  "details": "Просто текстовое поле",
  "companies": [{"id":"75bd17cc-642f-4c7c-982e-e0e991907733", "name":"Моя первая Компания", "timezone": "UTC+3"}] //доступные пользователю компании
  "active_company": {"id":"75bd17cc-642f-4c7c-982e-e0e991907733", "name":"Моя первая Компания", "timezone": "UTC+3"}
  "settings_web": {}, // настройки в виде json, специфические для web-клиента
  "settings_ios": {},// настройки в виде json, специфические для iOS-клиента
  "settings_android": {},// настройки в виде json, специфические для android-клиента
  "actions_templates": {},// настройки в виде json 
   "actions": [// список действий пользователя, 
      {
          "id": "5858822c-1f21-431b-9cde-a672d2803b2b",
          "key": "generate_report",
      },
    {
        "id": "6ff2a8bd-48d6-4347-b42e-c01d73434fb5",
        "key": "units/update"
    }
  ],
  "units_access": [//Доступ к объектам
      {
            "unit": {
                "id": "0c4095e1-8cf4-4be2-b8b8-5aacf528a6dd"
            },
            "actions": [] // cписок действий, можно выбирать те actions для которых  is_unit_action = true
        },
        {
            "unit": {
                "id": "d0dd6178-fd10-4f49-8627-a386ac35b8c3"
            },
            "actions": [{
                    "id": "051d5caf-b40a-4474-9c25-fb0d83ea4891",
                    "key": "delete_units"
                },
                {
                    "id": "bc7f985c-9641-4d0a-9f6f-8d5214d98105",
                    "key": "update_units"
                }
            ]
        }
    ],
    "units_groups_access": [{ //Доступ к группам
            "units_group": {
                "id": "d7bad56b-bb05-4c9c-830b-ed192a3fa4de"
            },
            "actions": []//список действий, можно выбирать те actions для которых  is_unit_action = true
указанные actions применяются для всех объектов группы
        },
        {
            "units_group": {
                "id": "1769a313-0c20-4ebf-b7f6-7fce00f4f301"
            },
            "actions": [{
                    "id": "051d5caf-b40a-4474-9c25-fb0d83ea4891",
                    "key": "delete_units"
                },
                {
                    "id": "bc7f985c-9641-4d0a-9f6f-8d5214d98105",
                    "key": "update_units"
                }
            ]
        }
    ],
}

Responses

/me

Обновить данные текущего пользователя


Обновляет те поля, которые содержатся в запросе. Поля отсутствующие в запросе, не обновляются.


Роль: Редактор и выше.


Пример запроса:

{
  "name": "Миша",          //  имя
}

Параметры:

{
  "role": {"key": "Editor", "value": "Редактор"}, // не доступно для изменения самому пользователю
  "password": "newpw" //новый пароль
  "name": "Миша",     //имя    
  "is_driver": true // делает пользователя водителем       
  "email": "test@gmail.com", //email
  "code": "092384",                //  id пользователя (rfid), доступно для пользователя с ролью Editor
  "language" : {"key":"en"}                  //язык пользователя
  "phone" : "+78902334234" //телефон пользователя
  "details": "Просто текстовое поле"
  "telegram_chat_id": 12345678910,
  "settings_web": {}, // настройки в виде json специфические для web-клиента
  "settings_ios": {},// настройки в виде json специфические для iOS-клиента
  "settings_android": {},// настройки в виде json специфические для android-клиента
}

Ответ:

Возвращает обновленную запись пользователя см. GET /me

Request Body schema: application/json
age
string
name
string
object

Responses

Request samples

Content type
application/json
{
  • "age": "38",
  • "name": "Миша",
  • "town": {
    }
}

/users?ids=:ids

Получить информацию о текущем пользователе по его id


Возвращает данные по пользователям переданных id. Возвращаются только те пользователи, у которых есть доступ к текущей компании пользователя, который делает запрос.


Параметры:

ids - может содержать как один id пользователя, так и несколько, разделенных через запятую.


Роль: Читатель и выше.


Ответ:

Массив объектов пользователей, каждый объект которого аналогичен возвращаемому через метод GET /me

query Parameters
ids
string
Example: ids=

Responses

/users?ids=:ids

Планирование удаления пользователей по их ID


Логика использования, как в DELETE /company/users?ids=:ids
Пользователь с ролью SUPERVISOR может удалять других пользователей.


Роль: Администратор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
name
string
object

Responses

Request samples

Content type
application/json
{
  • "name": "Вася",
  • "transport": {
    }
}

/users/:id

Обновить информацию о текущем пользователе по его id.


Обновление пользователя по его id. Пользователь с ролями User, Provider, Executor может менять только себя.


Роль: Администратор и выше.


Параметры и ответ аналогичны методу POST /users

path Parameters
user_id
required
string
Example:

ID пользователя

Request Body schema: application/json
name
string
object

Responses

Request samples

Content type
application/json
{
  • "name": "Вася",
  • "transport": {
    }
}

/users/:id/check_use_name_as_login

Обновить информацию о текущем пользователе по его id.


Роут для проверки уникальности строки Имя пользователя для использования в качестве логина


Роль: Администратор и выше.


Пример запроса:

{"name": "Иванов Иван Иванович"}
path Parameters
user_id
required
string
Example:

ID пользователя

Request Body schema: application/json
name
string
object

Responses

Request samples

Content type
application/json
{
  • "name": "Вася",
  • "transport": {
    }
}

/users/:id

Удаление пользователя по его id


Роль: Администратор и выше.

path Parameters
user_id
required
string
Example:

ID пользователя

Request Body schema: application/json
name
string
object

Responses

Request samples

Content type
application/json
{
  • "name": "Вася",
  • "transport": {
    }
}

/users

Создание пользователей, минуя приглашение.


Добавление пользователя с ролью Редактор


Роль: Администратор и выше.


Параметры:

{
  "role": {"key": "EDITOR", "value": "Редактор", "id": "5ac818aa-f66e-4ecd-8981-5bcbafe03255"}, // Роль выбирается из списка ролей; достаточно указать только идентификатор. Получить все роли GET /roles
  "name": "Миша",     //имя 
  "password": "password for user",    
  "is_driver": false // является ли пользователь водителем      
  "email": "test@gmail.com", //email
  "code": "092384",                //  id пользователя (rfid), доступно для пользоваетля с ролью Editor
  "language" : {"key":"en"}               //язык пользователя
  "phone" : "+78902334234" //телефон пользователя
  "details": "Просто текстовое поле"
  "telegram_chat_id": 12345678910, //id-рассылки для Telegram, получается из бота
    "units_groups_access": [{ //Доступ к группам
            "units_group": {
                "id": "d7bad56b-bb05-4c9c-830b-ed192a3fa4de"
            },
            "actions": []//список действий, можно выбирать те actions для которых  is_unit_action = true
указанные actions применяются для всех объектов группы
        },
        {
            "units_group": {
                "id": "1769a313-0c20-4ebf-b7f6-7fce00f4f301"
            },
            "actions": [{
                    "id": "051d5caf-b40a-4474-9c25-fb0d83ea4891",
                    "key": "delete_unit"
                },
                {
                    "id": "bc7f985c-9641-4d0a-9f6f-8d5214d98105",
                    "key": "update_unit"
                }
            ]
        }
    ]
}

Ответ аналогичен PUT /me

Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

/users/query

Получить пользователей по фильтру


На основании переданных параметров формирует запрос к списку пользователей.


Параметры:

"from": с какой строки возвращать список, 0 - первая. Тип: Integer

"limit": сколько строк возвращать, если 0 - возвращается количество найденных строк. Тип: Integer

"fields":["id", "name"] - поля, которые необходимо включить в результат

"sortField": поле, по которoму нужно делать сортировку (используются следующие поля - name, code, details, role.key, email, phone)

"sortDesc": тип сортировки поля

"value": подстрока для поиска, для User используются следующие поля - name, code, details, role.key, email, phone


Роль: Читатель и выше.


Пример запроса:

Получить пользователей, у которых в полях есть подстрока 'ася', сортировка по полю name в desc режиме (по убыванию)

{
  "sortField": "name",
  "sortDesc": "true",
  "value": "ася",
  "from": 0,
  "limit": 100
}

Ответ:

Возвращает количество найденых записей, если параметр count=0. Возвращает найденные строки, начиная с указанной в from (отсчет с 0) в количестве, указанном в параметре count или менее, если таких не нашлось.

Возвращаемые объекты идентичны получаемым через запрос GET /me

Если ничего не нашлось, возвращается пустой массив.

Request Body schema: application/json
from
number
limit
number
sort
string
sortDesc
boolean

Responses

Request samples

Content type
application/json
{
  • "from": 0,
  • "limit": 100,
  • "sort": "name",
  • "sortDesc": true
}

/users/photos

Добавление аватарки пользователю


Сохраняет фотографии на диске.

Первый - оригинальный с url "/imgs/" + photo.id + "_original.png"

Второй - миниатюра - с наибольшей стороной не больее 110 px, url - "/imgs/" + photo.id + "_110.png"

Оба файла можно использовать для сохранения в поле photos в сущности users

Параметр - id пользователя, которому устанавливаем аватарку.

Ограничение - размер любой стороны передаваемой картинки не может быть больше 3000px


Роль: Читатель и выше.


Ответ:

Возможные ошибки:

422, No File

422, No Image

422, Image size exceeded 3000x3000

Возвращается модель вложения

[
    {
        "id": "af571635-340e-4c4e-a4c0-4eab34a97e8c",
        "url": "/imgs/af571635-340e-4c4e-a4c0-4eab34a97e8c_original.png",
        "width": 858,
        "height": 536,
        "param_type": "users"
    },
    {
        "id": "561518f7-6f1a-4f3c-8b9f-234a91d8ef16",
        "url": "/imgs/af571635-340e-4c4e-a4c0-4eab34a97e8c_70.png",
        "width": 110,
        "height": 43,
        "param_type": "users"
    }
]
Request Body schema: multipart/form-data
file
string <binary>
id
string

Responses

/ask_approve/:userId

Запросить подтверждение пользователя.


Параметры:
userId - ID пользователя

Тела запроса JSON:

Для подтверждение email: { "type": "EMAIL" }

Для подтверждение номер телефона: { "type": "PHONE" }

Можно отправить запрос, если пользователь не подтвержден. Это определяется полем is_approved пользователя для email и is_approved_phone для номера телефона.

В случае успеха, в результате отправляется ответ 200 и отправляется письмо на почту или на телефон, указанную в настройке пользователя.

Иначе возвращается ошибка с кодом 422.

path Parameters
userId
required
string
Example:

ID пользователя

Request Body schema: application/json
type
string

Responses

Request samples

Content type
application/json
{
  • "type": "PHONE"
}

/users/:id/companies

Удаление пользователя из выбранных компаний.


Параметры:

id - ID пользователя

В теле запроса указать список компаний (достаточно указать ID компании)

path Parameters
id
required
string
Example:

ID пользователя

Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ]
}

/users/:id/change_role

Изменение роли пользователя в компаниях.


Параметры:

id - ID пользователя

В теле запроса указать:

  • Список компаний (достаточно указать ID компании).

  • Новую роль в поле role.


Роль: Администратор и выше.

path Parameters
id
required
string
Example:

ID пользователя

Request Body schema: application/json
Array of objects
object

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ],
  • "role": {
    }
}

/users/:id/change_role_all

Изменение роли пользователя во всех его компаниях, доступных авторизованному пользователю.


Параметры:

id - ID пользователя

В теле запроса указать новую роль в поле role


Пример запроса:

PUT /api_v1/users/a8fa266e-3c70-44c8-933e-adb3fe17063d/change_role_all

{
    "role": {
        "key": "EDITOR",
        "name": "Редактор"
    }
}
path Parameters
id
required
string
Example:

ID пользователя

Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "role": {
    }
}

/users/:id/addable_companies?search=search

Получение списка компаний, доступных для добавления пользователя


Параметры:

id - ID пользователя


Роль: Администратор и выше.


Пример запроса:

GET /api_v1/users/679bb60d-3563-4bdd-b7c5-bb72bcef69eb/addable_companies?search=Оду

Пример ответа:

[
    {
        "id": "06fe9426-9e0d-455b-9718-8c4f3400370b",
        "name": "Одуванцик"
    },
    {
        "id": "fb17d37d-e567-421c-805b-4e2e812c1cf7",
        "name": "Одуванцик"
    },
    {
        "id": "fe7b2772-ab94-4248-b32a-ed2da932730d",
        "name": "Одуванцик"
    },
    {
        "id": "3dd6b287-e47b-4cb2-9677-57ae4029d8e7",
        "name": "Одуванцик"
    },
    {
        "id": "fea12912-a5e4-4a65-bff1-43533daefe68",
        "name": "Одуванцик 10.0"
    },
    {
        "id": "2044d5e5-7206-4813-9533-ac89f20409b3",
        "name": "Одуванцикsdfbdfgnnrtfh"
    }
]
path Parameters
id
required
string
Example:

ID пользователя

query Parameters
search
string
Example: search=
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "role": {
    }
}

/users/schedule_delete

Запланированное удаление пользователя из системы.


Роль: Читатель и выше.


Метод запланирует удаление на 24 часа, а в ответ на метод выдается сообщение

200:

{
  "msg": "Мы запланировали удаление вашего аккаунта. У вас есть 24 часа чтобы отменить удаление по ссылке, которую мы вам отправили на почту."
}
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/users/:id/create_token

Создание пользовательского API_KEY для конкретной компании


Вы можете предоставить доступ только тем пользователям, у которых есть только одна компания и роль ниже администратора.

Параметры запроса:

id - Id пользователя

В теле запроса:

valid_to - срок действия ключа (ссылки).


Роль: Администратор и выше.


Пример запроса:

POST /users/8462404e-99a9-4226-ae14-2f59e0400768/create_token

{
    "valid_to": "2024-06-21 15:00:00"
}

Поле user_company_api_key возвращает ключ, который можно отправлять в запросах в заголовке user_company_api_key.

Поле url возвращает ссылку для авторизации пользователя в компании.

Пример ответа:

{    
  "user_company_api_key": "{{vault:json-web-token}}",  
  "url": "https://dev5.skif.pro/api_v1/login?user_company_api_key={{vault:json-web-token}}"
}
path Parameters
id
required
string
Example:

ID пользователя

Request Body schema: application/json
valid_to
string

Responses

Request samples

Content type
application/json
{
  • "valid_to": "2024-06-21 15:00:00"
}

/me/settings?company_id=<company_id>

Получение пользовательских настроек для текущего пользователя

Параметр запроса company_id - ID компании, необязательное поле. Если указано, настройки возвращаются только для этой компании.


Описание поля в JSON:

key - ключ настройки, строка

value - значение настройки, строка

version - версия настройки, целое число

Пример:

[
    {
        "id": "d6e6d77d-46f3-4603-b3b8-abe85cb302b8",
        "user_id": "a4b5fde8-9b70-4425-bd75-bde7f12c9f87",
        "key": "show_item_in_moon",
        "value": "0",
        "version": 1
    },
    {
        "id": "5b04c69c-1fe7-4815-8c3a-d1056a8b5b65",
        "user_id": "a4b5fde8-9b70-4425-bd75-bde7f12c9f87",
        "key": "show_geozones_in_road_xyz",
        "value": "1",
        "version": 0
    }
]
header Parameters
cookie
string
Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX1837SQcSoYSWGg1LPwUmHtV7ONZrz1BFryeqgVO6dXAKzEpKdMN3+1F"; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
key
string
value
string
version
number

Responses

Request samples

Content type
application/json
{
  • "key": "show_geozones_in_road_xyz",
  • "value": "1",
  • "version": 0
}

/me/settings

Сохранение пользовательских настроек для текущего пользователя


Описание поля в JSON:

key - ключ настройки, строка. Для уникальных настроек, которые используются только в одном стенде, рекомендуется использовать префикс или суффикс. Например, show_geozones_on_map_web

value - значение настройки, строка.

version - версия настройки, целое число.

company_id - ID компании, в который сохраняется настройка пользователя.

Пример запроса:

{
    "key": "show_item_in_moon",
    "value": "1"
}

Ответ возвращает массив JSON: все настройки пользователя:

Пример:

[
    {
        "id": "d6e6d77d-46f3-4603-b3b8-abe85cb302b8",
        "user_id": "a4b5fde8-9b70-4425-bd75-bde7f12c9f87",
        "key": "show_item_in_moon",
        "value": "0",
        "version": 1
    },
    {
        "id": "5b04c69c-1fe7-4815-8c3a-d1056a8b5b65",
        "user_id": "a4b5fde8-9b70-4425-bd75-bde7f12c9f87",
        "key": "show_geozones_in_road_xyz",
        "value": "1",
        "version": 0
    }
]

Сохранение настройки пользователя в компании:

{
    "key": "show_geozones_in_road_3",
    "value": "1",
    "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c"
}

Ответ:

[
    {
        "id": "48379173-7c56-457c-be29-f329fbd284c5",
        "user_id": "a4b5fde8-9b70-4425-bd75-bde7f12c9f87",
        "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
        "key": "show_geozones_in_road_xyz_ssssssssss",
        "value": "1",
        "version": 0
    },
    {
        "id": "0ba785ce-5fcb-4b88-b8bc-88e0749de321",
        "user_id": "a4b5fde8-9b70-4425-bd75-bde7f12c9f87",
        "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
        "key": "show_geozones_in_road_3",
        "value": "1",
        "version": 0
    }
]
Request Body schema: application/json
key
string
value
string
version
number

Responses

Request samples

Content type
application/json
{
  • "key": "show_geozones_in_road_xyz",
  • "value": "1",
  • "version": 0
}

/change/user/:user_id/company/:company_id

Возможность переключение под пользователем без запроса пароля


Параметры запроса:

user_id - ID пользователя для переключения.

company_id - ID компании для переключения.


Роль: Администратор и выше.


Пример запроса:

https://admin-dev.skif.pro/api_v1/change/user/2f583b2b-a7d6-4d93-94b3-da6eedab69f0/company/459b2824-0035-499d-8062-baccb2ae5581

В результате пользователь перенаправляется на страницу в которой пользователь авторизуется под выбранным пользователем.

Для авторизованного пользователя таким способом возвращается в GET /me поле another_user: true

path Parameters
user_id
required
string
Example:

ID пользователя

company_id
required
string
Example:

ID компании

Request Body schema: application/json
key
string
value
string
version
number

Responses

Request samples

Content type
application/json
{
  • "key": "show_geozones_in_road_xyz",
  • "value": "1",
  • "version": 0
}

Общее

/dictionaries/:dicType

Получить все записи справочника Dictionary с указанным типом.


Описание параметров:

dicType - тип записей, которые необходимо получить.

Может принимать следующие значения:

admin_modules
color_code
customfield_groups
formula
geo_icon
geozone_type
notification_type
periodic_type
report_template_table_grouping
report_template_table_type
sensor_type
terminal_type
trip_activation_type
trip_passage_order_type
unit_icon
unit_type
weekdays_type


Пример запроса:

GET /dictionaries/unit_type

возвращает все часовые пояса в формате (пример для английской локали):

[{
    "type": "unit_type",
    "key": "farm_equipment",
    "value": "Farm equipment"
}, {
    "type": "unit_type",
    "key": "house",
    "value": "House"
    }
}]

Описание параметров ответа:
type - тип справочника,
key - ключ справочника,
value - перевод справочника на язык пользователя

В случае отсутствия записей переданного типа возвращает пустой массив []

path Parameters
dicType
required
string
Example:

Responses

/dictionaries

Получить все записи справочника Dictionary


Пример запроса:

GET /dictionaries

возвращает все справочники (пример для английской локали) сортируя по type:

[{
    "key": "admin_geozones",
    "type": "admin_modules",
    "value": "Geozones"
},
...
 {
    "type": "unit_type",
    "key": "house",
    "value": "House"
    }
},
...
{
    "key": "monday",
    "type": "weekdays_type",
    "value": "Понедельник"
}
]

Описание параметров ответа:
type - тип справочника, все возможные знечения:
admin_modules
color_code
customfield_groups
formula
geo_icon
geozone_type
notification_type
periodic_type
report_template_table_grouping
report_template_table_type
sensor_type
terminal_type
trip_activation_type
trip_passage_order_type
unit_icon
unit_type
weekdays_type
key - ключ справочника,
value - перевод справочника на язык пользователя

Responses

/properties/:propertiesType

Получить все записи справочника Properties с указанным типом.

Справочник 'Properties' предназначен ТОЛЬКО для микросервиса auth и включает в себя только информацию о юзере.


Описание параметров:

propertiesType - тип записей, которые необходимо получить.

Может принмать следующие значения:

languages (языки),

timezones (часовые пояса)

roles (роли)

dateformats (форматы даты)

timeformats (форматы времени)

Пример запроса:

GET /properties/timezones

Возвращает все часовые пояса в формате (пример для английской локали):

[{
    "type": "timezones",
    "key": "UTC+4:30",
    "value": "Kabul, Afghanistan (+4:30)"
}, {
    "type": "timezones",
    "key": "UTC+6:30",
    "value": "Yangon, Myanmar (+6:30)"
    }
}]

Описание параметров ответа:
type - тип справочника,
key - ключ справочника,
value - перевод справочника на язык пользователя

В случае отсутствия записей переданного типа возвращает пустой массив []

path Parameters
propertiesType
required
string
Example:

Responses

/properties

Получить все записи справочника Properties

Справочник 'Properties' предназначен ТОЛЬКО для микросервиса auth и включает в себя только информацию о пользователе.


Пример запроса:

GET /properties

Возвращает все записи (пример для английской локали):

[{
    "key": "yyyy-MM-dd",
    "type": "dateformats",
    "value": "yyyy-MM-dd(2014-01-25, 1987-12-02)"
}, 
...
{
    "key": "NO_ACCESS",
    "type": "roles",
    "value": "NoAccess"
}
...
{
    "key": "UTC+5",
    "type": "timezones",
    "value": "(GMT + 05: 00) Yekaterinburg, Islamabad, Karachi, Tashkent"
}
}]

Описание параметров ответа:
type - тип справочника, все возможные значения:

languages - языки
timezones - часовые пояса
roles - роли
dateformats - форматы даты
timeformats - форматы времени
key - ключ справочника
value - перевод справочника на язык пользователя

Responses

/access

Получить доступ текущего пользователя к сущностям системы


Формат возвращаемых данных:

{
    "edit_classes_fields": [{  //доступ на редактирование к полям сущностей в целом
        "type": "users",
        "fields": ["name", "photo", "email", "phone", "code"]
    }],
    "edit_objects_fields": [{ //доступ на редактирование к полям конкретной сущности
        "type": "users",
        "id": "23498320-32492-3294-23989487",
        "fields": ["name", "photo", "email", "phone", "code"]
    }],
    "actions": ["btmCreateUser", "btmDeleteUser", "btmSendCommand"]  //доступ к действиям
}

Описание параметров ответа:

edit_classes_fields - ключ тега, содержащий массив ограничений на редактирование к сущности

type - ключ сущности, возможные значения users, units, geozones, routes, report_templates, notifications_templates

fields - массив полей доступных пользователю на редактирование

edit_objects_fields - ключ тега, содержащий массив ограничений, на редактирование конкретных сущностей

id - идентификатор сущности, к которой применяется ограничение

actions - ключ тега, содержащий массив ключей действий, к которым имеет доступ пользователь


Доступ определяется на основании роли пользователя к текущей компании и сущностям, к которым он имеет эксклюзивный доступ (например, собственная карточка пользователя)

Responses

/custom_fields

Запрос на получение обязательных custom_fields


Custom_fields юнита делятся на 2 типа - обязательные и необязательные (кастомные).

Обязательные custom_fields это поля, которые должны присутствовать у каждого юнита. При создании/изменении юнита лучше всего передавать эти обязательные поля со значениями, установленными юзером. Если бэкенд не обнаружит в юните какого-то обязательного поля, то оно будет создано в нём автоматически, значение будет взято из default_value.
Бэкенд проверяет значения через паттерн. В случае не соответствия паттерну, будет выброшена ошибка.

Необязательные поля - произвольные поля, созданные юзером дополнительно. Никак не проверяются на стороне бэкенда. По состоянию на май 2020г. используются как поля для дополнительной информации (пояснительные) и не участвуют в каких-либо расчетах.

Custom_field юнита имеет следующие параметры
name - имя поля, которое отображается в интерфейсе. У обязательных полей - не изменяемо (поэтому пытаться изменить его название в юните не имеет смысла). У НЕобяз. - изменяемое, произвольное.
key - ключ custom_fields. Все поля определяются и распознаются бэкендом именно по ключу. У обяз.полей - ключ константный, у необяз. полей - ключ произвольный, договорились использовать key такой же как и name.
value - значение, которое пользователь присвоил этому кастом филду.


Пример ответа:

[
    {
        "name": "Мин. объем заправки",
        "key": "fuel_fillings_minfilling",
        "default_value": "10",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 1,
        "show_in_monitoring": false
    },
    {
        "name": "Расход летом (л/100км.)",
        "key": "fuel_consumption_summerconsump",
        "default_value": "0",
        "pattern": "^[0-9]*\\.?[0-9]+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 1,
        "show_in_monitoring": false
    },
    {
        "name": "Мин. время стоянки (сек)",
        "key": "tripdetector_minparktime",
        "default_value": "300",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_trips",
        "values": [],
        "sort": 1,
        "show_in_monitoring": false
    },
    {
        "name": "Аналитик",
        "key": "analyst",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 1,
        "show_in_monitoring": false
    },
    {
        "name": "Игнор-ть сообщ-я после начала движения",
        "key": "fuel_fillings_msgignorestart",
        "default_value": "60",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 2,
        "show_in_monitoring": false
    },
    {
        "name": "Расход зимой (л/100км.)",
        "key": "fuel_consumption_winterconsump",
        "default_value": "0",
        "pattern": "^[0-9]*\\.?[0-9]+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 2,
        "show_in_monitoring": false
    },
    {
        "name": "Коэф. пробега",
        "key": "advanced_mileagecoeff",
        "default_value": "1",
        "pattern": "^\\d{1,8}((,|.)\\d{1,8})?$",
        "type": "text",
        "group": "cf_trips",
        "values": [],
        "sort": 2,
        "show_in_monitoring": false
    },
    {
        "name": "Установщик",
        "key": "installer",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 2,
        "show_in_monitoring": false
    },
    {
        "name": "Мин. время остановки для опр-ия слива",
        "key": "fuel_fillings_minstaytheft",
        "default_value": "60",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 3,
        "show_in_monitoring": false
    },
    {
        "name": "На холостом ходу летом (л./час.)",
        "key": "fuel_math_idlingsummer",
        "default_value": "0",
        "pattern": "^[0-9]*\\.?[0-9]+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 3,
        "show_in_monitoring": false
    },
    {
        "name": "Мин. скорость движ-я (км/ч)",
        "key": "tripdetector_minmovespeed",
        "default_value": "3",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_trips",
        "values": [],
        "sort": 3,
        "show_in_monitoring": false
    },
    {
        "name": "Мин. объем слива",
        "key": "fuel_fillings_minitheft",
        "default_value": "10",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 4,
        "show_in_monitoring": false
    },
    {
        "name": "На холостом ходу зимой (л./час.)",
        "key": "fuel_math_idlingwinter",
        "default_value": "0",
        "pattern": "^[0-9]*\\.?[0-9]+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 4,
        "show_in_monitoring": false
    },
    {
        "name": "Мин. расст-ие поездки (м)",
        "key": "tripdetector_mintripdist",
        "default_value": "100",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_trips",
        "values": [],
        "sort": 4,
        "show_in_monitoring": false
    },
    {
        "name": "Дата установки(формат год-месяц-день, например 2019-03-07)",
        "key": "install_date",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 4,
        "show_in_monitoring": false
    },
    {
        "name": "Коэф. при движении под нагрузкой",
        "key": "fuel_math_coeffunderload",
        "default_value": "0",
        "pattern": "^[0-9]*\\.?[0-9]+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 5,
        "show_in_monitoring": false
    },
    {
        "name": "Макс. интервал между сообщ-ми (сек)",
        "key": "advanced_maxintervalmsg",
        "default_value": "3600",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_trips",
        "values": [],
        "sort": 5,
        "show_in_monitoring": false
    },
    {
        "name": "Место установки в ТС",
        "key": "install_place",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 5,
        "show_in_monitoring": false
    },
    {
        "name": "Первый месяц зимы (январь-1)",
        "key": "fuel_consumption_winterfrom",
        "default_value": "11",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 6,
        "show_in_monitoring": false
    },
    {
        "name": "Макс. расст-ие между сообщ-ми (м)",
        "key": "tripdetector_maxdistancemsg",
        "default_value": "1000",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_trips",
        "values": [],
        "sort": 6,
        "show_in_monitoring": false
    },
    {
        "name": "Серийный номер терминала",
        "key": "serial_number",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 6,
        "show_in_monitoring": false
    },
    {
        "name": "Последний месяц зимы (январь-1)",
        "key": "fuel_consumption_winterto",
        "default_value": "3",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 7,
        "show_in_monitoring": false
    },
    {
        "name": "Мин. время поездки (сек)",
        "key": "tripdetector_mintriptime",
        "default_value": "60",
        "pattern": "^\\d+$",
        "type": "text",
        "group": "cf_trips",
        "values": [],
        "sort": 7,
        "show_in_monitoring": false
    },
    {
        "name": "Серийный номер ДУТ",
        "key": "serial_number_dut",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 7,
        "show_in_monitoring": false
    },
    {
        "name": "Стоимость (1 л.)",
        "key": "fuel_price",
        "default_value": "0",
        "pattern": "^[0-9]*\\.?[0-9]+$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 8,
        "show_in_monitoring": false
    },
    {
        "name": "Опр-ие движ-я",
        "key": "key_tripdetector_movedetect",
        "default_value": "speedkph",
        "pattern": "^[a-zA-Zа-яА-Я\\.\\_]*$",
        "type": "list",
        "group": "cf_trips",
        "values": [
            {
                "key": "speedkph",
                "value": "Скорость"
            },
            {
                "key": "ignition",
                "value": "Зажигание"
            }
        ],
        "sort": 8,
        "show_in_monitoring": false
    },
    {
        "name": "Серийный номер пломбы ДУТ",
        "key": "dut_seal_serial_number",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 8,
        "show_in_monitoring": false
    },
    {
        "name": "Определение пробега",
        "key": "tripdetector_mileagedetect",
        "default_value": "mileage_GPS",
        "pattern": "^[a-zA-Zа-яА-Я\\.\\_]*$",
        "type": "list",
        "group": "cf_trips",
        "values": [
            {
                "key": "mileage_GPS",
                "value": "GPS"
            },
            {
                "key": "mileage_mileage_sensor",
                "value": "Cенсор"
            },
            {
                "key": "mileage_relative_mileage",
                "value": "Относительный пробег"
            },
            {
                "key": "mileage_GPS_ignition",
                "value": "GPS зажигание"
            }
        ],
        "sort": 9,
        "show_in_monitoring": false
    },
    {
        "name": "Гос номер",
        "key": "license_plate_number",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 9,
        "show_in_monitoring": false
    },
    {
        "name": "Определение моточасов",
        "key": "key_motohourdetector",
        "default_value": "ignition",
        "pattern": "^[a-zA-Zа-яА-Я\\.\\_]*$",
        "type": "list",
        "group": "cf_motohours",
        "values": [
            {
                "key": "ignition",
                "value": "Зажигание"
            },
            {
                "key": "abs_motohours",
                "value": "Абсолютные моточасы"
            },
            {
                "key": "relative_motohours",
                "value": "Относительные моточасы"
            }
        ],
        "sort": 10,
        "show_in_monitoring": false
    },
    {
        "name": "Норма часов в день",
        "key": "hours_rate",
        "default_value": "8",
        "pattern": "^((2[0-4]|1[0-9]|[0-9])|((2[0-3]|1[0-9]|[0-9])\\.[0-9]+))$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 10,
        "show_in_monitoring": false
    },
    {
        "name": "Дата блокировки(формат год-месяц-день, например 2019-03-07)",
        "key": "block_date",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 11,
        "show_in_monitoring": false
    },
    {
        "name": "КП",
        "key": "kp",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 12,
        "show_in_monitoring": false
    },
    {
        "name": "ДУТ",
        "key": "dut",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 13,
        "show_in_monitoring": false
    },
    {
        "name": "Вторая sim",
        "key": "second_sim",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 14,
        "show_in_monitoring": false
    },
    {
        "name": "Серийный номер ДУТ 1",
        "key": "serial_number_dut_1",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 15,
        "show_in_monitoring": false
    },
    {
        "name": "Серийный номер ДУТ 2",
        "key": "serial_number_dut_2",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 16,
        "show_in_monitoring": false
    },
    {
        "name": "Марка машины",
        "key": "brand_name",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 17,
        "show_in_monitoring": false
    },
    {
        "name": "Вид топлива (бенз., д/т)",
        "key": "fuel_type",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 18,
        "show_in_monitoring": false
    },
    {
        "name": "Марка горючего",
        "key": "fuel_mark",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_fuel",
        "values": [],
        "sort": 19,
        "show_in_monitoring": false
    },
    {
        "name": "Код марки",
        "key": "brand_code",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 20,
        "show_in_monitoring": false
    },
    {
        "name": "Видео устройство",
        "key": "video_device_name",
        "default_value": "",
        "pattern": "^(?:|CARVIS)$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 21,
        "show_in_monitoring": false
    },
    {
        "name": "ID-видео устройства",
        "key": "video_device_id",
        "default_value": "",
        "pattern": "^.*$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 22,
        "show_in_monitoring": false
    },
    {
        "name": "Камеры",
        "key": "video_cameras",
        "default_value": "",
        "pattern": "^(|\\d+(?:[\\t]*,[\\t]*\\d+)*+)$",
        "type": "text",
        "group": "cf_etc",
        "values": [],
        "sort": 23,
        "show_in_monitoring": false,
        "hint": "Несколько числовых значений разделенных запятой, например 0,1,3,7"
    }
]
Request Body schema: multipart/form-data
object

Responses

/locator_msg?id=:id

Получение изменений по ID локатора; см. Locators


После подключения через сокет, поступает информация о местоположении связанного с локатором объекта.

Структура как в /messages, но приходят только поля unit_name, datepoint, _datepoint, address, _marker_latlon

query Parameters
id
string
Example: id=

Responses

/geocode/:address

Получение координат по адресу

path Parameters
address
required
string
Example:

Responses

/routing/:points

Построение маршрута, проходящего через указанные точки


Структура запроса:
points - Список точек в формате : latitude1,longitude1;latitude2,longitude2;...;latitudeN,longitudeN
Можно указать до 10 точек.

Структура ответа, как в ответе на запрос /fastracks

Пример запроса:
GET /routing/76.928054,43.226996;76.913200,43.237085;76.887795,43.217677

Пример ответа:

{
    "columns": [
        {
            "key": "longitude",
            "value": "Долгота"
        },
        {
            "key": "latitude",
            "value": "Широта"
        }
    ],
    "values": [
        {
            "style": "style_0",
            "points": [
                [
                    43.22688,
                    76.928102
                ],
                [
                    43.22682,
                    76.92688
                ],
                [
                    43.226827,
                    76.924814
                ],
                [
                    43.22683,
                    76.923471
                ],
                [
                    43.22688,
                    76.928102
                ],
                [
                    43.22655,
                    76.915747
                ],
                [
                    43.228767,
                    76.91545
                ],
                [
                    43.231589,
                    76.915042
                ],
                [
                    43.235994,
                    76.913977
                ],
                [
                    43.22655,
                    76.915747
                ],
                [
                    43.236787,
                    76.91353
                ],
                [
                    43.236787,
                    76.91353
                ],
                [
                    43.236508,
                    76.91167
                ],
                [
                    43.236508,
                    76.91167
                ],
                [
                    43.237132,
                    76.913191
                ],
                [
                    43.237132,
                    76.913191
                ],
                [
                    43.237132,
                    76.913191
                ],
                [
                    43.236318,
                    76.916238
                ],
                [
                    43.236532,
                    76.918205
                ],
                [
                    43.237132,
                    76.913191
                ],
                [
                    43.236552,
                    76.918459
                ],
                [
                    43.236552,
                    76.918459
                ],
                [
                    43.237071,
                    76.918404
                ],
                [
                    43.237071,
                    76.918404
                ],
                [
                    43.237018,
                    76.917373
                ],
                [
                    43.237018,
                    76.917373
                ],
                [
                    43.236609,
                    76.916195
                ],
                [
                    43.236609,
                    76.916195
                ],
                [
                    43.236423,
                    76.916222
                ],
                [
                    43.236342,
                    76.911073
                ],
                [
                    43.236423,
                    76.916222
                ],
                [
                    43.235898,
                    76.909104
                ],
                [
                    43.235898,
                    76.909104
                ],
                [
                    43.235355,
                    76.909171
                ],
                [
                    43.233921,
                    76.904739
                ],
                [
                    43.23341,
                    76.903425
                ],
                [
                    43.232191,
                    76.900306
                ],
                [
                    43.231343,
                    76.898147
                ],
                [
                    43.231138,
                    76.897599
                ],
                [
                    43.230524,
                    76.896052
                ],
                [
                    43.230227,
                    76.895309
                ],
                [
                    43.229308,
                    76.893823
                ],
                [
                    43.228953,
                    76.893265
                ],
                [
                    43.228357,
                    76.892376
                ],
                [
                    43.228289,
                    76.892268
                ],
                [
                    43.227905,
                    76.89167
                ],
                [
                    43.235355,
                    76.909171
                ],
                [
                    43.227609,
                    76.891202
                ],
                [
                    43.224853,
                    76.891568
                ],
                [
                    43.224363,
                    76.891627
                ],
                [
                    43.223981,
                    76.891668
                ],
                [
                    43.222661,
                    76.891839
                ],
                [
                    43.221646,
                    76.892001
                ],
                [
                    43.221156,
                    76.89205
                ],
                [
                    43.227609,
                    76.891202
                ],
                [
                    43.218662,
                    76.892376
                ],
                [
                    43.218381,
                    76.8895
                ],
                [
                    43.218332,
                    76.888697
                ],
                [
                    43.218662,
                    76.892376
                ],
                [
                    43.217725,
                    76.887653
                ],
                [
                    43.217725,
                    76.887653
                ]
            ]
        }
    ]
}
path Parameters
points
required
string
Example:

Responses

/geocode_search

Поиск места по адресу


Запрос:

{
    "part": "Москва"
}

part - часть текста

Структура ответа:
JSON массив, где каждый элемент имеет следующие поля:
- name : Название места
- decription : Описание места
- pos : Координаты места в формате: [широта, долгота]

Пример запроса:

{
    "part": "Алма"
}

Пример ответа:

[
    {
        "name": "Алматы",
        "description": "Казахстан",
        "pos": [
            76.945627,
            43.237163
        ]
    },
    {
        "name": "река Алма",
        "description": "Амурская область, Россия",
        "pos": [
            124.708934,
            53.214184
        ]
    },
    {
        "name": "Алма",
        "description": "провинция Онтарио, Канада",
        "pos": [
            -80.502192,
            43.727401
        ]
    }
]
Request Body schema: application/json
part
string

Responses

Request samples

Content type
application/json
{
  • "part": "Алматы"
}

/servers?body=:body

Получение серверов по email пользователя


Параметр body содержит следущие поля:

email (обязательный) - email пользователя

get (необязательный) - возможные значения: "ktzh" - для получения серверов приложения КТЖ, "all" - для получения всех доступных серверов

query Parameters
body
string
Example: body=

Responses

/copy

Копирует сущности из одной компании в другую (пока реализовано для units, geozones и reports_templates)


Роль: Супервизор и выше.


Примеры запросов:

Копирование в 1 компанию:

{
    "type": "units",
    "ids": ["b92f5e06-ee48-4a08-8647-d805465e7be8", "b5298b57-df70-405e-b2b6-071ed230d36c"], 
    "to_company_id": "0aa10a42-fc54-497c-a54b-3295e4633348"
}

Можно копировать в несколько компаний:

{
    "type": "units",
    "ids": ["b92f5e06-ee48-4a08-8647-d805465e7be8", "b5298b57-df70-405e-b2b6-071ed230d36c"], 
    "to_company_id": ["0aa10a42-fc54-497c-a54b-3295e4633348", "qffa142-fc54-497c-a54b-3295e4633348" ]
}

А чтобы копировать все сущности c другой компании:

{
    "type": "units",
    "from_company_id": "b92f5e06-ee48-4a08-8647-d805465e7be8", 
    "to_company_id": "0aa10a42-fc54-497c-a54b-3295e4633348"
}

Также можно скопировать в несколько компаний:

{
    "type": "units",
    "from_company_id": "b92f5e06-ee48-4a08-8647-d805465e7be8", 
    "to_company_id": ["0aa10a42-fc54-497c-a54b-3295e4633348", "qffa142-fc54-497c-a54b-3295e4633348"]
}

Возможные значения type - "units", "geozones" или "report_templates" ( в будущем будут: "unitsgroup", "units", "geozones", "notifications", "routes", "trailers", "mailings")

ids - id сущностей, которые нужно скопировать в другую компанию.

from_company_id - id компании, c которой нужно скопировать все сущности.

to_company_id - id компании, в которую нужно скопировать сущности.

В случае успеха возвращается код 200, иначе текст ошибки.

Request Body schema: application/json
ids
Array of strings
to_company_id
string
type
string

Responses

Request samples

Content type
application/json
Example
{
  • "ids": [
    ],
  • "to_company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "type": "units"
}

/restore

Восстанавливает сущности (пока реализовано для units)


Роль: Супервизор и выше.


Пример запроса:

{
    "type": "units",
    "ids": ["b92f5e06-ee48-4a08-8647-d805465e7be8", "b5298b57-df70-405e-b2b6-071ed230d36c"]
}

Возможные значения type - "units" ( в будущем будут: "unitsgroup", "units", "geozones", "report_templates", "notifications", "routes", "trailers", "mailings")

ids - id сущностей, которые нужно востановить.

В случае успеха возвращается код 200, иначе текст ошибки.

Request Body schema: application/json
ids
Array of strings
type
string

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ],
  • "type": "units"
}

/auth_admin_query

Получения сущностей по всем компаниям для users и companies


Роль: Администратор и выше.


Примеры запросов:

{
    "model": "units",
    "value": "тест", /для поиска
    "from": 0,
    "count": 100
}

Возможные значения model - "users", "companies"

Чтобы фильтровать по интегратору надо отправить в запросе поле dealer. Достаточно указать id.

"dealer": {"id": "8a7d85f9-156e-41ab-9534-da71d1847cba"}

Пример ответа:

 {
{
    "max": 531,
    "list": [
        {
            "id": "2a004e29-0ca2-4f28-8a23-2ffb5392fd43",
            "name": "Company",
            "timezone_key": "UTC+3"
        },
        {
            "id": "06187e4b-3059-4da1-aa2f-89da732d2b2f",
            "name": "Company",
            "timezone_key": "UTC+3"
        },
...
Request Body schema: application/json
count
number
from
number
model
string

Responses

Request samples

Content type
application/json
{
  • "count": 100,
  • "from": 0,
  • "model": "companies"
}

/attachments

Добавление вложения, которое можно будет использовать в теге attachments для таблиц шаблонов


см. POST /report_templates и PUT /report_templates/:template_id

Сохраняет файлы на диске, присваивая ему id.
Файлы сохраняются с именами:
"/attachments/" + attachment.id + "." + extension


Роль: Редактор и выше.


Ответ:
Возвращается модель вложения

{
    "id": "80a201ea-67e5-4cd9-aea5-591128d2855a", //его id
    "created": "2017-11-16 23:41:44", //дата создания
    "name": "test.doc", //переданное название файла
    "url": "/attachments/80a201ea-67e5-4cd9-aea5-591128d2855a.doc" //путь, по которому доступен файл
}

Для получения вложения нужно использовать запрос GET /attachments/80a201ea-67e5-4cd9-aea5-591128d2855a.doc

Responses

/attachments/:id

Получение вложения


После создания вложения через метод POST /attachments возвращается json c url - его нужно использовать для получения файла

path Parameters
id
required
string
Example:

Responses

/cancel_delete/:id

Отмена запроса удаления по уникальному ID


Этот ID приходит в теле ответа на запрос удаления. см. DELETE /units?ids=:ids


Роль: Редактор и выше.


Пример запроса:
PUT /cancel_delete/80a201ea-67e5-4cd9-aea5-591128d2855a.doc

Возвращает 200 в случае успешной отмены, в противном случае - 422 с текстом ошибки.

path Parameters
id
required
string
Example:

Responses

/auth_cancel_delete/:id

Отмена запроса на удаление по уникальному ID


Этот ID приходит в теле ответа на запрос удаления. см. DELETE /company/users?ids=:ids


Роль: Администратор и выше.


Пример запроса:
PUT /auth_cancel_delete/80a201ea-67e5-4cd9-aea5-591128d2855a.doc

Возвращает 200 в случае успешной отмены, в противном случае - 422 с текстом ошибки.

path Parameters
id
required
string
Example:

Responses

/mtracker_cancel_delete/:id

Отмена запроса на удаление по уникальному ID.


Уникальный ID приходит в теле ответа на запрос уделения.

см. DELETE /terminals?ids=:ids или DELETE /retranslators?ids=:ids


Роль: Супервизор и выше.


Пример запроса:
PUT /mtracker_cancel_delete/80a201ea-67e5-4cd9-aea5-591128d2855a.doc

Возвращает 200 в случае успешной отмены, в противном случае - 422 с текстом ошибки.

path Parameters
id
required
string
Example:

Responses

/support

Отправка письма в поддержку интегратора


Тело запроса:

{
    "subject": "тема письма", 
    "body": "текст сообщения"
}

Сообщение отправляется всем сотрудникам интегратора с ролью "Редактор тарифа".
Отправка доступна всем пользователям Компании.

Request Body schema: application/json
body
string
subject
string

Responses

Request samples

Content type
application/json
{
  • "body": "Как дела? Как создать объект?",
  • "subject": "Привет"
}

Компания

Методы связанные с компанией

/company/users/:id

Удаление пользователя из компании


Параметры:

id - ID пользователя

В админ панеле можно удалить из определенных компаний с укзанием списка компаний в поле companies


Роль: Администратор и выше.


Пример запроса:

{
  "companies": [
    {
      "id": "545c61a4-27ae-4335-a18e-e63e98b3eceb"
    },
    {
      "id": "6b596675-81ba-4916-ac2d-32388da57e6d"
    },
    {
      "id": "6c08dd40-950a-4d7e-86ee-aa8f12435ed7"
    }
  ]
}


Ответ: Пусто 200
Если пользователь с таким id не найден, то возвращается ошибка 400

{
  "id": [
    "Недопустимый параметр"
  ]
}
path Parameters
id
required
string
Example:

ID пользователя

Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ]
}

/company/users?ids=:ids

Планирует удаление пользователя с доступом к текущей компании по их id.


Если пользователь удаляется из последней компании, то создается новая компания, где у него роль Admin.


Роль: Администратор и выше.


Пример запроса:
DELETE /company/users?ids=456dc493-5983-478b-90cc-5bca0bfe708c,05f6bb8b-84cf-4553-951a-c5cca0be7220


Параметры:

ids - список Id пользователей

Пользователь должен обладать правами Admin, иначе возвращается ошибка 403.


Ответ:

Статус 200. В теле ответа id задачи на удаление, с помощью которого можно отменить удаление через роут PUT auth_cancel_delete/:id
Если хотя бы один пользователь с таким id не найден, то возвращается ошибка 400

{
  "id": [
    "Недопустимый параметр"
  ]
}
query Parameters
ids
string
Example: ids=
header Parameters
string
Example:

Список ID пользователей

Responses

/company/change/:id

Переключение в компанию по ссылке


В cookies пользователя сохраняется сессия компании, переданная через параметр :id, после чего происходит перенаправление на главную страницу приложения.

path Parameters
id
required
string
Example:

ID компании

Responses

/company/change/:id

Выбор компании пользователем


В cookies пользователя прописывается новая сессия


Пример запроса:

В качестве id может использоваться только id доступной пользователю компании из списка companies в сущности user, см GET /me

Параметры:

id - id доступной компании пользователя.


Ответ:

Возвращает код 200:

{
    "id": "75bd17cc-642f-4c7c-982e-e0e991907733"
}

Возвращает код 422 в случае если id не валидно:

{
    "code": 4022,
    "field": "id",
    "message": "Вы не имеете доступа к выбранной компании, попробуйте перезайти."
}
path Parameters
id
required
string
Example:

ID компании

Responses

/company/:id

Изменение параметров компании


Изменяет атрибуты компании. Доступно только для пользователей, у которых доступ к компании на уровне Admin.


Роль: Администратор и выше.


Пример запроса:

В качестве id может использоваться только id доступной пользователю компании из списка companies в сущности user, см GET /me

{
    'name': 'newCompanyName', 
    'auto_kill_sessions': 20,
    'strong_password': true
    'timezone': { 'key': 'UTC+4' },
    'holidays': [
        {'year': 2020, 'days': ['01.01', '01.02', '03.08', '04.13', '04.14']}, 
         {'year': 2021, 'days': ['01.01', '01.02', '03.08', '04.15', '04.16']}
    ],
    "properties": { // настройки для компании
        "action_templates": [// шаблоны actions
            {
                "name": "Шаблон1", // имя шаблона
                "is_unit_action": false,// true если относится к объектам.
                "actions": [// список actions, см. GET /actions
                    {"id": "e80c59b0-2c80-4bea-969c-498db4b0d446"},
                    {"id": "62e20acf-cab3-4e8d-9e1f-e8774cf10764"}
                ]
            },
             {
                "name": "Шаблон2", // имя шаблона
                "is_unit_action": true,// true если относится к объектам.
                "actions": [// список actions, см. GET /actions
                    {"id": "7d0ca86a-66e2-473b-8f4c-a61cc3e40649"},
                    {"id": "9259c55d-7e1c-45a2-ab3e-c98aef52a1f5"}
                ]
            }
        ]
    }
}

Параметры:

id - id доступной компании пользователя
name - имя компании 
auto_kill_sessions - минуты, срок жизни сессии, 
strong_password - true, если компания использует сложный пароль, иначе false
integer, если 0 то сессии живут бесконечно для пользователей компании
timezone - часовой пояс компании
dateformat - формат даты для компании, выбирается из результата запроса /properties/dateformats
timeformat - формат времени для компании, выбирается из результата запроса /properties/timeformats
holidays - нерабочие дни для компания
    year - год, int от 2000 до 3000
    days - массив нерабочих дней, в формате MM.dd 
forbidden_layers - Список запрещенных слоев, ключи получаются из справочника /properties с типом layers_type
logo - логотипе на экране мониторинга, на месте надписи Skif.Pro. Сначала нужно загрузить фото запросом: 
    `POST /api_v1/upload_photos/logos` , в form-data указать файл в поле file<br>
     logo для компании выбрать из поля small.url
 

Ответ:

Возвращает код 200 с body:

{
    "id": "75bd17cc-642f-4c7c-982e-e0e991907733",
    "name": "Моя компания",
    "auto_kill_sessions": 20,
    "strong_password": true,
    "timezone": {"key": "UTC+3"}  // часовой пояс компании
    "dateformat": {"key": "yyyy-MM-dd"},  // формат даты компании,
    "timeformat": {"key": "HH:mm:ss"},  // формат времени компании,
    "holidays": [
         {"year": 2020, "days": ["01.01", "01.02", "03.08", "04.13", "04.14"]}, 
         {"year": 2021, "days": ["01.01", "01.02", "03.08", "04.15", "04.16"]}
    ],
    "forbidden_layers": [
        {
            "key": "pressure_new",
            "type": "layers_type",
            "value": "Давление"
        }
    ],
    "action_templates": [
            {
                "name": "Шаблон1", 
                "is_unit_action": false, относиться к объектам.
                "actions": [
                    {"id": "e80c59b0-2c80-4bea-969c-498db4b0d446"},
                    {"id": "62e20acf-cab3-4e8d-9e1f-e8774cf10764"}
                ]
            },
             {
                "name": "Шаблон2",
                "is_unit_action": true,
                "actions": [
                    {"id": "7d0ca86a-66e2-473b-8f4c-a61cc3e40649"},
                    {"id": "9259c55d-7e1c-45a2-ab3e-c98aef52a1f5"}
                ]
            }
        ]
}

Возвращает код 422 в случае если id не валидно, body :

{
    "code": 4022,
    "field": "id",
    "message": "Вы не имеете доступа к выбранной компании, попробуйте перезайти."
}
path Parameters
id
required
string
Example:

ID доступной пользователю компании

Request Body schema: application/json
auto_kill_sessions
number
object
object
efis_retranslate
boolean
Array of objects
holidays
Array of any
id
string
name
string
strong_password
boolean
object
object

Responses

Request samples

Content type
application/json
{
  • "auto_kill_sessions": 0,
  • "dateformat": {
    },
  • "dealer": {
    },
  • "efis_retranslate": true,
  • "forbidden_layers": [
    ],
  • "holidays": [ ],
  • "id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "name": "Одуванчик ",
  • "strong_password": false,
  • "timeformat": {
    },
  • "timezone": {
    }
}

/company/invite

Приглашение пользователя в систему


Метод создает ссылку и отправляет ее на указанный email. По ссылке можно авторизоваться.


Роль: Администратор и выше.


Параметры:

email - email того, кого приглашаем
{
  "email": "test@gmail.com", 
  "role": {"key": "Admin", "id": "fffaa80b-28a5-466b-a0a2-29761bfc8c80"}, // Роль выбирается из списка ролей; достаточно указать только идентификатор. Получить все роли GET /roles,
  "companies": [ //Можно указать ID конкретных компаний, это поле используется в админке
        {"id": "545c61a4-27ae-4335-a18e-e63e98b3eceb"},
        {"id": "6b596675-81ba-4916-ac2d-32388da57e6d"},
        {"id": "6c08dd40-950a-4d7e-86ee-aa8f12435ed7"}
   ]
}

Параметры ответа:

Код 200. Даже если пользователь с указанным паролем не существует. Ответ всегда такого вида

{"code":200,"message":"На указанный email была выслана ссылка для восстановления."}
Request Body schema: application/json
email
string
object

Responses

Request samples

Content type
application/json
{
  • "email": "mshevelevich@gmail2.com",
  • "role": {
    }
}

/company/create

Создание пользователем новой компании


Параметры:

"company_name": текст, название компании, обязательное
"timezone": часовой пояс компании, обязательное
"dateformat": формат даты компании. Не обязательное. Если не указано, то установится дефолтный формат 
"timeformat": формат время компании. Не обязательное. Если не указано. то установится дефолтный формат 
logo - логотипе на экране мониторинга, на месте надписи Skif.Pro. Сначала нужно загрузить фото запросом: 
    `POST /api_v1/upload_photos/logos` , в form-data указать файл в поле file
     logo для компании выбрать из поля small.url

При создании вместе с первым пользователем требуются дополнительные поля:

"userProviderId": "test@mail.ru", // email пользователя
"type": "EMAIL",
"password": "11111", // пароль
"name": "Имя пользователя",

Если в запросе присутствует поле userProviderId, это означает, что компания создаётся вместе с пользователем.


Роль: Супервизор и выше.


Пример запроса:

{
    "company_name": "A company X",
    "timezone": {"key": "UTC+3"},
    "imeis": ["3424324324", "657657657"]
}

Ответ:

{
    "id": "8c78a9d2-0c10-48c2-9d25-746f243b39a8",
    "name": "A company X",
    "strong_password": false,
    "efis_retranslate": false,
    "integrator": {
        "id": "fe371bd9-bba3-4c4a-b54b-b05fb77690c9",
        "is_default": false,
        "name": "Интегратор",
        "inn": "",
        "phone": "",
        "email": "",
        "contact_person": "",
        "regions": [
            "Казахстан"
        ],
        "_default": false,
        "_delete": false
    },
    "timezone": {
        "key": "UTC+3",
        "type": "timezones",
        "value": "(GMT + 03: 00) Moscow, St. Petersburg, Volgograd"
    },
    "dateformat": {
        "key": "dd-MM-yyyy",
        "type": "dateformats",
        "value": "dd-MM-yyyy(25-01-2014, 02-12-1987)"
    },
    "timeformat": {
        "key": "HH:mm:ss",
        "type": "timeformats",
        "value": "HH:mm:ss(09:45:33, 17:20:00)"
    },
    "holidays": []
}
Request Body schema: application/json
company_name
string
imeis
Array of strings
object

Responses

Request samples

Content type
application/json
{
  • "company_name": "A comapny Y",
  • "imeis": [
    ],
  • "timezone": {
    }
}

/company/sessions/query

Получение сессий пользователей компании


Роль: Администратор и выше.


Запрос данных ограничен периодом в один месяц.

{
    "from":"2024-10-01 00:00:00",
    "from":"2024-11-01 00:00:00", // необязательный параметр
    "first":0, // необязательный параметр
    "count":100 // необязательный параметр
}
Request Body schema: application/json
count
number
first
number
from
string
to
string

Responses

Request samples

Content type
application/json
{
  • "count": 100,
  • "first": 0,
  • "from": "2024-01-01 00:00:00",
  • "to": "2024-01-12 00:00:00"
}

/company/:id/sessions/query

Получение сессий пользователей компании из админ панели


Роль: Супервизор и выше.


Параметры запроса:

id - ID компании

{
    "from":"2020-10-01 00:00:00",
    "first":0,
    "count":100
}

Запрос данных ограничен периодом в один месяц

path Parameters
id
required
string
Example:

ID компании

Request Body schema: application/json
count
number
first
number
from
string

Responses

Request samples

Content type
application/json
{
  • "count": 100,
  • "first": 0,
  • "from": "2020-10-01 00:00:00"
}

/company/updates/query

Получение истории изменения сущностей


Роль: Администратор и выше.


Пример запроса для одной сущности:

{
    "from": "2020-11-01 00:00:00",
    "to": "2020-10-01 00:00:00",
    "object_id": "b56f98e9-7c8e-4cda-a642-6d4e207de5d4",
    "first_row": 0,
    "max_rows": 100,
    "sortField": "created",
    "sortDesc": true
}

Пример запроса для всего справочника units:

{
    "from": "2020-11-01 00:00:00",
    "to": "2020-10-01 00:00:00",
    "objects": "units",
    "first_row": 0,
    "max_rows": 100,
    "sortField": "created",
    "sortDesc": true,
    "value": "user1"
}

Запрос данных ограничен периодом в один год

Возможные параметры:

max_rows - максимальное количестов строк.

from - дата-время от какой выдавать данные, необязательный параметр. По умолчанию - текущее время минус 7 дней.

to - дата-время до какой выдавать данные, необязательный параметр. По умолчанию - текущее время.

first_row - первая строка, необязательный параметр. По умолчанию 0.

max_rows - максимальное количество строк в выдаче, необязательный параметр. По умолчанию 10000.

object_id - если нужно запросить изменение по конкретной сущности, используйте id нужной сущности, необязательный параметр.

objects - по каким типам сущностей возвращать историю - users, units, company, unitsgroup, units_trailers, geozones, report_templates, notifications, routes, trips, trailers, mailings.

sortField - имя поля для сортировки результатов, возможные значения: created, user.name, operation.

sortDesc - true, если надо соортировать по убыванию.

value - искомый текст.


Пример ответа:

{
    "list": [{
        "created": "2020-11-11 15:55:33",
        "user": {
            "id": "5551b5bd-b4d7-4f99-a166-c9ecdabccee0",
            "name": "user1",
            "email": "user1@mail.ru"
        },
        "objects": "company",
        "operation": "PUT",
        "object_id": "11e541f5-3b57-4968-a428-eb13dde6ede0",
        "msg": "Пользователь user1 обновил настройки компании"
    }],
    "max_rows": 1
}

created - дата время

objects - тип сущностей

user - автор изменений

operation - операция PUT, DELETE, POST - изменение, удаление, создание

object_id - id объекта

msg - текст

Request Body schema: application/json
first_row
number
from
string
max_rows
number
objects
string
sortDesc
boolean
sortField
string
to
string

Responses

Request samples

Content type
application/json
{
  • "first_row": 0,
  • "from": "2021-01-05 00:00:00",
  • "max_rows": 100,
  • "objects": "units",
  • "sortDesc": true,
  • "sortField": "user.name",
  • "to": "2021-12-12 23:59:59"
}

/company/:id/updates/query

Получение истории изменения сущностей из админ панели


Роль: Супервизор и выше.


Пример запроса для одной сущности:

{
    "from": "2020-11-01 00:00:00",
    "to": "2020-10-01 00:00:00",
    "object_id": "b56f98e9-7c8e-4cda-a642-6d4e207de5d4",
    "first_row": 0,
    "max_rows": 100,
    "sortField": "created",
    "sortDesc": true
}

Пример запроса для всего справочника units:

{
    "from": "2020-11-01 00:00:00",
    "to": "2020-10-01 00:00:00",
    "objects": "units",
    "first_row": 0,
    "max_rows": 100,
    "sortField": "created",
    "sortDesc": true,
    "value": "user1"
}

Запрос данных ограничен периодом в один год

Возможные параметры:

max_rows - максимальное количество строк.

from - дата-время от какой выдавать данные, необязательный параметр. По умолчанию - текущее время минус 7 дней.

to - дата-время до какой выдавать данные, необязательный параметр. По умолчанию - текущее время.

first_row - первая строка, необязательный параметр. По умолчанию 0.

max_rows - максимальное количество строк в выдаче, необязательный параметр. По умолчанию 10000.

object_id - если нужно запросить изменение по конкретной сущности, используйте id нужной сущности, необязательный параметр.

objects - по каким типам сущностей возвращать историю - users, units, company, unitsgroup, units_trailers, geozones, report_templates, notifications, routes, trips, trailers, mailings.

sortField - имя поля для сортировки результатов, возможные значения: created, user.name, operation.

sortDesc - true, если надо соортировать по убыванию.

value - искомый текст.


Пример ответа:

{
    "list": [{
        "created": "2020-11-11 15:55:33",
        "user": {
            "id": "5551b5bd-b4d7-4f99-a166-c9ecdabccee0",
            "name": "user1",
            "email": "user1@mail.ru"
        },
        "objects": "company",
        "operation": "PUT",
        "object_id": "11e541f5-3b57-4968-a428-eb13dde6ede0",
        "msg": "Пользователь user1 обновил настройки компании"
    }],
    "max_rows": 1
}

created - дата время

objects - тип сущностей

user - автор изменений

operation - операция PUT, DELETE, POST - изменение, удаление, создание

object_id - id объекта

msg - текст

path Parameters
id
required
string
Example:

ID компании

Request Body schema: application/json
first_row
number
from
string
max_rows
number
objects
string
sortDesc
boolean
sortField
string
to
string

Responses

Request samples

Content type
application/json
{
  • "first_row": 0,
  • "from": "2021-01-05 00:00:00",
  • "max_rows": 100,
  • "objects": "units",
  • "sortDesc": true,
  • "sortField": "user.name",
  • "to": "2021-12-12 23:59:59"
}

/company/schedule_delete

Удаление компании


Параметры:

ids - ID удалаемых компаний.


Роль: Супервизор и выше.


Пример запроса:

{
    "ids": ["acce8268-e0ef-4fda-a6ea-89ed23ffae50"]
}

Пока можно удалить только одну компанию в одном запросе.


Если все ok, тогда запланируетсяудаление. Его можно отменить с помощью роут POST /company/cancel_delete

Request Body schema: application/json
ids
Array of strings

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ]
}

/company/cancel_delete

Отмена удаления компании


Параметры:

ids - ID удаляемых компаний.


Роль: Супервизор и выше.


Пример запроса:

{
    "ids": ["acce8268-e0ef-4fda-a6ea-89ed23ffae50"]
}

Если все ok, тогда удаление отменяется.

Request Body schema: application/json
ids
Array of strings

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ]
}

/company/:id/roles

Получение доступных ролей для компании


id - ID компании

Возвращается массив ролей


Роль: Администратор и выше.


Пример запроса:

GET https://dev5.skif.pro/api_v1/company/3e70f167-9fad-4753-bccf-d7d47c2c648c/roles

Пример ответа:

[
    {
        "key": "NO_ACCESS",
        "value": "Без доступа"
    },
    {
        "key": "OBSERVER",
        "value": "Наблюдатель"
    },
    {
        "key": "READER",
        "value": "Читатель"
    },
    {
        "key": "OPERATOR",
        "value": "Оператор"
    },
    {
        "key": "EDITOR",
        "value": "Редактор"
    },
    {
        "key": "ADMIN",
        "value": "Администратор"
    },
    {
        "key": "SUPERVISOR",
        "value": "Супервизор"
    },
    {
        "key": "TARIFF_EDITOR",
        "value": "Редактор тарифа"
    },
    {
        "key": "CONTROLLER",
        "value": "Контроллер"
    }
]
path Parameters
id
required
string
Example:

ID компании

Responses

/company/:id/addable_users?search=:search

Получение списка пользователей, доступных для добавления в компанию


Параметры:

id - ID компании.

search - текст для поиска.

offset - индекс первого элемента в странице.

count - количество в странице.

Возвращается массив пользователей с полями id, name и email.


Роль: Администратор и выше.


Пример запроса:

GET /api_v1/company/3e70f167-9fad-4753-bccf-d7d47c2c648c/addable_users?search=test1

Пример ответа:

max - общее количество

list - список пользователей

{
    "max": 4,
    "list": [
        {
            "id": "5e139290-cfbc-4770-b42a-fdf12d898684",
            "name": "123123",
            "email": "test16@test.kmm"
        },
        {
            "id": "0010b3d2-dc83-4ea3-a3ab-2cf04a79ceeb",
            "name": "test1@test.rm",
            "email": "test1@test.rm"
        }
    ]
}
path Parameters
id
required
string
Example:

ID компании

query Parameters
search
string
Example: search=

текст для поиска

offset
string
Example: offset=

индекс первого элемента в странице

count
string
Example: count=

количество в странице

Responses

/company/:id/add_users

Добавление существующих доступных пользователей в компанию


id - ID компании


Роль: Администратор и выше.


Пример запроса:

POST /api_v1/company/3e70f167-9fad-4753-bccf-d7d47c2c648c/add_users

Пример тела запроса:

{
    "users": [
        {
            "id": "8d33f780-3923-463f-ab5c-500edca4219a"
        },
        {
            "id": "edbb2a66-4847-4a80-a3c4-f76907ac31d5"
        }
    ],
    "role": {
        "key": "ADMIN",
        "value": "Администратор"
    }
}

Возврвщается ответ со статусом 200 или ошибка

path Parameters
id
required
string
Example:

ID компании

Request Body schema: application/json
object
Array of objects

Responses

Request samples

Content type
application/json
{
  • "role": {
    },
  • "users": [
    ]
}

/company/:id/users?ids=

Добавление существующих доступных пользователей в компанию


id - ID компании


Роль: Администратор и выше.


Пример запроса:

POST /api_v1/company/3e70f167-9fad-4753-bccf-d7d47c2c648c/add_users

Пример тела запроса:

{
    "users": [
        {
            "id": "8d33f780-3923-463f-ab5c-500edca4219a"
        },
        {
            "id": "edbb2a66-4847-4a80-a3c4-f76907ac31d5"
        }
    ],
    "role": {
        "key": "ADMIN",
        "value": "Администратор"
    }
}

Возврвщается ответ со статусом 200 или ошибка

path Parameters
id
required
string
Example:

ID компании

query Parameters
ids
string
Example: ids=

ID пользователя

Request Body schema: application/json
object
Array of objects

Responses

Request samples

Content type
application/json
{
  • "role": {
    },
  • "users": [
    ]
}

/company/:id/properties

Получение настройки для компании


GET /api_v1/company/3e70f167-9fad-4753-bccf-d7d47c2c648c/properties


Роль: Администратор и выше.


Возвращается ответ со статусом 200

track_gradation - цветовая градация трека
styles - массив стилей
max - максимальное значение скоорости
hex_color - шестнадцатеричный Код Цвета
monitoring_sensors_settings - настройка датчики для мониторинга
name - название, строка
sensor_name_mask - маска датчика, строка
icon - ключ для иконки, строка
gradation - цветовая градация, такая же структура как в track_gradation

Пример ответа:

{
    "track_gradation": {
        "styles": [
            {
                "max": 40,
                "hex_color": "#51AAEB"
            },
            {
                "max": 80,
                "hex_color": "#623F73"
            },
            {
                "max": 120,
                "hex_color": "#E37A3A"
            },
            {
                "max": null,
                "hex_color": "#DD1E1E"
            }
        ]
    },
    "monitoring_sensors_settings": [
        {
            "name": " Уровень топлива",
            "sensor_name_mask": "*топлива*",
            "icon": "icon_fuel_level",
            "gradation": {
                "styles": [
                    {
                        "max": 42,
                        "hex_color": "#51AAEB"
                    },
                    {
                        "max": 80,
                        "hex_color": "#623F73"
                    },
                    {
                        "max": 120,
                        "hex_color": "#E37A3A"
                    },
                    {
                        "max": null,
                        "hex_color": "#DD1E1E"
                    }
                ]
            }
        },
        {
            "name": "Зажигания",
            "sensor_name_mask": "*зажиган*",
            "icon": "icon_ignition",
            "gradation": {
                "styles": [
                    {
                        "max": 0,
                        "hex_color": "#E37A3A"
                    },
                    {
                        "max": null,
                        "hex_color": "#DD1E1E"
                    }
                ]
            }
        }
    ]
}
path Parameters
id
required
string
Example:

ID компании

Responses

/company/:id/properties

Обновление настроек компании


Параметр запроса:

id - ID компании

Тело запроса JSON:

track_gradation - цветовая градация трека
styles - массив стилей
max - максимальное значение скоорости
hex_color - шестнадцатеричный Код Цвета
monitoring_sensors_settings - настройка датчиков для мониторинга
name - название, строка
sensor_name_mask - маска датчика, строка
icon - ключ для иконки, строка
gradation - цветовая градация, такая же структура, как в track_gradation
  1. Пример запроса на обновление цвета трека:

PUT /api_v1/company/3e70f167-9fad-4753-bccf-d7d47c2c648c/properties

{
    "track_gradation": {
        "styles": [
            {
                "max": 41,
                "hex_color": "#51AAEB"
            },
            {
                "max": 80,
                "hex_color": "#623F73"
            },
            {
                "max": 120,
                "hex_color": "#E37A3A"
            },
            {
                "max": null,
                "hex_color": "#DD1E1E"
            }
        ]
    }
}

Возвращается ответ со статусом 200 или ошибка

track_gradation - Цветовая градация трека
    styles - массив стилей
        max - максимальное значение скорости
        hex_color - Шестнадцатеричный Код Цвета

Роль: Администратор и выше.


Пример тела ответа:

{
    "track_gradation": {
        "styles": [
            {
                "max": 41,
                "hex_color": "#51AAEB"
            },
            {
                "max": 80,
                "hex_color": "#623F73"
            },
            {
                "max": 120,
                "hex_color": "#E37A3A"
            },
            {
                "max": null,
                "hex_color": "#DD1E1E"
            }
        ]
    }
}

2. Пример запроса на обновление настройки датчиков для мониторинга

{
    "monitoring_sensors_settings": [
        {
            "name": " Уровень топлива",
            "sensor_name_mask": "*топлива*",
            "icon": "icon_fuel_level",
            "gradation": {
                "styles": [
                    {
                        "max": 42,
                        "hex_color": "#51AAEB"
                    },
                    {
                        "max": 80,
                        "hex_color": "#623F73"
                    },
                    {
                        "max": 120,
                        "hex_color": "#E37A3A"
                    },
                    {
                        "max": null,
                        "hex_color": "#DD1E1E"
                    }
                ]
            }
        },
        {
            "name": "Зажигания",
            "sensor_name_mask": "*зажиган*",
            "icon": "icon_ignition",
            "gradation": {
                "styles": [
                    {
                        "max": 0,
                        "hex_color": "#E37A3A"
                    },
                    {
                        "max": null,
                        "hex_color": "#DD1E1E"
                    }
                ]
            }
        }
    ]
}
path Parameters
id
required
string
Example:

ID компании

Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "track_gradation": {
    }
}

/company/:id/properties/copy

Обновление настроек компании


Параметр запроса:

id - ID компании, из которой необходимо скопировать свойства

Тело запроса JSON:

companies - список компаний, на которые копируются свойств, см. пример
properties - список свойств, которые копируются
возможные значения:

available_maps - Доступные карты
track_gradation - Цвет трека
monitoring_sensors_settings - Цветные индикаторы датчиков в мониторинге

  1. Пример запроса на обновление цвета трека:

PUT /api_v1/company/3e70f167-9fad-4753-bccf-d7d47c2c648c/properties/copy

{
    "companies": [
        {"id": "42ee050a-f6f7-40c0-a8d8-1656e787dc0b"},
        {"id": "c968398b-be00-4b4a-9e2c-7d7bdc0d43ad"}
    ],
    "properties": [
        "available_maps",
        "monitoring_sensors_settings",
        "track_gradation"
    ]
}

Возвращается ответ со статусом 200 или ошибка

Роль: Администратор и выше.


path Parameters
id
required
string
Example:
Request Body schema: application/json
Array of objects
properties
Array of strings

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ],
  • "properties": [
    ]
}

Геозоны

Работа с Гоезонами

geozones/custom_types

geozones/custom_types

header Parameters
string
Example:
Request Body schema: application/json
company_id
string
name
string
object

Responses

Request samples

Content type
application/json
{
  • "company_id": "11111111-1111-1111-1111-111111111111",
  • "name": "test",
  • "photo": {
    }
}

/goezones?ids=<ids1,ids2>

Получение геозон


Возвращает массив всех геозон.


Ответ:

Если запрашивается по одному id - вернется не массив, а один объект.

Если запрашивать по конкретному id - вернётся даже удаленная геозона.

Если запрос без id (просто GET /geozones), то удаленные геозоны не отобразятся.

"{
    "id":"a321b5f0-f52c-4d36-9d39-f11ba64f9293",
    "name":"POI",
    "type":{"key":"point","type":"geozone_type","value":"Точка"},
    "geometry":[[33.1,55.2]],
    "color":{"key":"#E68A2F","type":"color_code","value":"Оранжевый"},
    "width":1777.0,
    "icon":{"key":"hospital","type":"geo_icon","value":"Больница"},
    "is_show_on_map": true,
    "area": 2032932.5,
    "perimeter": 2234.3
}"
query Parameters
ids
string
Example: ids=

Responses

/geozones

Создание геозоны


Добавляет новую геозону, присваивая id.


Роль: Редактор и выше.


Параметры:

{
  "companies": [{"id": "e94111ca-b6a7-4b7e-a844-fcbc9043ac8f"}] //список компаний
  "name": "POI", //название
  "type": {"key": "point"}, // тип геозоны, key = [point, circle, line, polygon] (можно добавлять "type":"geozone_type").
  "icon": {"key": "hospital"}, // тип иконки, key = [hospital, school] (можно добавлять "type":"geo_icon").
  "geometry": [ //геометрия - всегда массив координат
    [
      33.1,
      55.2
    ]
  ],
  "is_show_on_map": true,
  "color": {"key": "#E6EAEE"}, //цвет, key = ['#F56C6C', '#E6EAEE', '#E68A2F', '#1585D8', '#1BB934'], (можно добавлять "type": "color_code").
  "width": 1777, //ширина
  "area": 2032932.5 // площадь в m2,
  "perimeter": 2234.3 // периметр в m,
  "polygon_geometry": [[55, 33], [56, 32]] //координаты после преобразование в полигон(только для линии)
}

Ответ:

Возвращает созданную запись и ее id. Пустые поля не возвращаются.

Request Body schema: application/json
object
Array of objects
geometry
Array of numbers[ items ]
object
name
string
object
width
number

Responses

Request samples

Content type
application/json
{
  • "color": {
    },
  • "companies": [
    ],
  • "geometry": [
    ],
  • "icon": {
    },
  • "name": "POI_Z",
  • "type": {
    },
  • "width": 20777
}

/geozones?ids=:ids

Планирование удаления геозоны


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain
Example

/goezones_on_map

Получение геозон для отображения на карте в виде geojson


Возвращает массив всех геозон, которые нужно отображать на карте.


Ответ:

{
  "type":"FeatureCollection",
  "features":[
     {
        "type":"Feature",
        "id":"a9e42e60-bdce-48ed-946c-55d141ce58b4",
        "geometry":{
           "type":"Point",
           "coordinates":[
              55.0,
              30.0
           ]
        },
        "properties":{
           "address":"",
           "name":"POI-1"
        }
     },
     {
        "type":"Feature",
        "id":"83592eea-20ff-4db0-9ca7-1aa3450c6453",
        "geometry":{
           "type":"Point",
           "coordinates":[
              55.0,
              55.0
           ]
        },
        "properties":{
           "address":"",
           "name":"POI-2"
        }
     },
     {
        "type":"Feature",
        "id":"3def4148-335f-42d1-aca4-d55366f93ee8",
        "geometry":{
           "type":"Point",
           "coordinates":[
              55.0,
              30.0
           ]
        },
        "properties":{
           "address":"",
           "name":"POI-3"
        }
     },
     {
        "type":"Feature",
        "id":"4c061c44-2112-4494-a015-63d5bdb70194",
        "geometry":{
           "type":"Point",
           "coordinates":[
              30.0,
              30.0
           ]
        },
        "properties":{
           "address":"",
           "name":"POI-4"
        }
     }
  ]
}

Responses

/geozones/:id

Обновление данных геозоны


Обновляет переданные параметры


Параметры:

См метод POST /geozones


Роль: Редактор и выше.


Ответ:

Аналогичен одному объекту из ответа метода GET /geozeons

path Parameters
id
required
string
Example:

ID геозоны

Request Body schema: application/json
object
geometry
Array of numbers[ items ]
object
id
string
name
string
object
width
number

Responses

Request samples

Content type
application/json
{
  • "color": {
    },
  • "geometry": [
    ],
  • "icon": {
    },
  • "id": "31bb27f2-c937-4a91-8a95-e65515957411",
  • "name": "POI",
  • "type": {
    },
  • "width": 1777
}

/geozones/:id

Удаление геозоны по ее id


Параметры:

id геозоны


Роль: Редактор и выше.


Ответ:

200 и удаленная геозона

Если геозона с таким id не найдена, то возвращается ошибка 400

{
    "code": 4000,
    "field": "id",
    "message": "Недопустимый параметр"
}
path Parameters
id
required
string
Example:

ID геозоны

Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

/geozones/:id/all

Удаление геозоны по ее id во всех компаниях в админке


Параметры:

id геозоны


Ответ:

200 и удаленная геозона.

Если геозона с таким id не найдена, то возвращается ошибка 400.

{
"code": 4000,
"field": "id",
"message": "Недопустимый параметр"
}
path Parameters
id
required
string
Example:

ID геозоны

Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

/geozones/list

Получение геозоны по фильтру


Аналогична запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[name, created, is_delete, icon.key, color.key, type.key]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - name (можно искать по неполному слову), icon.key, icon.type, color.key, color.type, type.key, type.type


Пример запроса:

Получить первые 10 геозон, отсортированные по возрастанию по имени, которые имеют тип "point" и иконку "school"

{
                        "from":0,
                        "count":10,
                        "sortField":"name",
                        "sortDesc":"false",                        "conditions":[ 
                            { "field": "type.key", "value": "point"},
                            { "field": "icon.key", "value": "school"}
                        ]
}

Ответ:

{
    "max":1,
    "list":
    [
        {"id":"80773471-1eb8-4b71-ad44-fcfd6d8c721a",
         "name":"aPOI-2",
         "type":{"key":"point",
                 "type":"geozone_type",
                 "value":"Точка"},
         "geometry":[[55.3,33.2]],
         "color":{"key":"#E6EAEE",
                  "type":"color_code",
                  "value":"translate.color_code.key.grey"},
         "width":1900.0,
         "area": 2032932.5,
            "perimeter": 2234.3,
         "icon":{"key":"hospital",
                 "type":"geo_icon",
                 "value":"Больница"}
         },
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number
sortDesc
string
sortField
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 1,
  • "from": 0,
  • "sortDesc": "false",
  • "sortField": "name"
}

/geozones/line2polygon

Генерация координат для линии


Параметры:

width - ширина

geometry - координаты линии

В ответ возвращаются координаты полигона в поле polygon_geometry


Роль: Редактор и выше.


Пример запроса:

{
    "width": 10,
    "geometry": [
        [
            54.6977009532508,
            37.35351562500001
        ],
        [
            54.53663764197375,
            37.40158081054688
        ],
        [
            54.61405984802798,
            37.69821166992188
        ],
        [
            54.67780208930051,
            37.54714965820313
        ],
        [
            54.762105979366964,
            37.62954711914063
        ],
        [
            54.69372196444214,
            37.69683837890626
        ]
    ]
}

Ответ:

{
    "polygon_geometry": [
        [
            54.69771417625393,
            37.35355993442366
        ],
        [
            54.536726211105375,
            37.401630671355655
        ],
        [
            54.614075095960615,
            37.698000235820835
        ],
        [
            54.67778288639096,
            37.54705432526793
        ],
        [
            54.76218431453469,
            37.62954698668847
        ],
        [
            54.693760434922694,
            37.69687747411603
        ],
        [
            54.693683493961586,
            37.696799283696485
        ],
        [
            54.762027644199236,
            37.6295472515928
        ],
        [
            54.67782129221007,
            37.547244991138335
        ],
        [
            54.61404460009534,
            37.69842310402293
        ],
        [
            54.53654907284212,
            37.40153094973811
        ],
        [
            54.69768773024767,
            37.35347131557636
        ]
    ]
}
Request Body schema: application/json
geometry
Array of numbers[ items ]
width
number

Responses

Request samples

Content type
application/json
{
  • "geometry": [
    ],
  • "width": 10
}

/geozones/export_kml

Экспорт геозон в .kml


В теле запроса укажите требуемые геозоны в geozones. Если geozones не указаны, то запрос формируется для всех геозон компании. Для группы геозон geozones_groups


Роль: Читател и выше.


Пример запроса:

{
    "geozones": [
        {"id": "0ca9f774-69fb-4a56-99ae-177f766fc291"},
        {"id": "8b13e5d3-898a-4463-8f84-0046fc15f323"},
        {"id": "d507e1ee-3e73-4ee6-a74a-3d1f6b8cbe89"}
    ]
}

Для группы геозон:

{
    "geozones_groups": [
        {"id": "517fe368-e2fe-4a64-bd96-473f2a2d670f"},
        {"id": "3789ac40-a076-48c1-85c2-a2d2515e6578"}
    ]
}

Ответ:

В теле ответа возращается kml файл

Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "geozones": [
    ]
}

Пользовательский тип геозоны

geozones/custom_types

geozones/custom_types

header Parameters
string
Example:
Request Body schema: application/json
company_id
string
name
string
object

Responses

Request samples

Content type
application/json
{
  • "company_id": "11111111-1111-1111-1111-111111111111",
  • "name": "test",
  • "photo": {
    }
}

Группы геозон

/geozonesgroup?ids=geozone_id

Получение группы геозон по id


Возвращает группу геозон


Роль: Читатель и выше.

query Parameters
ids
string
Example: ids=

Responses

/geozonesgroup

Cоздание групп геозон


В body необходимо указать id геозоны, которая будет в группе и ее имя.

{
    "name": "geozoneName",
    "geozones" : [
        { 
            "id" : "geozoneId1"
        },
        {
            "id" : "geozoneId2"
        }
    ]
}

Роль: Редактор и выше.

Request Body schema: application/json
Array of objects
name
string

Responses

Request samples

Content type
application/json
{
  • "geozones": [
    ],
  • "name": "geozoneName"
}

/geozonesgroup?ids=geozonesgroup_id

Планирование удаления группы геозон


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=

Responses

/geozonesgroup/list

Получение списка групп геозон


Поля:

В fields указать нужные поля.

{"fields":["geozones.id", "geozones.name"]}

Ответ:

geozones.id - Id группы.

geozones.name - имя группы.

header Parameters
string
Example:
Request Body schema: application/json
fields
Array of strings

Responses

Request samples

Content type
application/json
{
  • "fields": [
    ]
}

/geozonesgroup

Обновление группы геозон


Запрос:

https://dev5.skif.pro/api_v1/geozonesgroup/geozonesgroup_id
{
    "name": "testGroupGezone",
    "geozones": [
        {
            "id": "286e35d1-0d2e-481a-89b7-91755aabef54"
        }
    ]
}

Роль: Редактор и выше.

Request Body schema: application/json
Array of objects
name
string

Responses

Request samples

Content type
application/json
{
  • "geozones": [
    ],
  • "name": "testGroupGezone"
}

/geozonesgroup/:geozonegroup_id

Удаление группы геозон


Группа удаляется физически.


Роль: Редактор и выше.

path Parameters
geozonesgroup_id
required
string
Example:

Responses

Маршруты

Работа с Маршрутами

/routes?ids=<ids1,ids2>

Получение маршрутов


Возвращает массив всех маршрутов.


Роль: Читатель и выше.


Ответ:

Если запрашивается по одному id - вернется не массив, а один объект.

Если запрос без id (просто GET /routes), то вернутся все маршруты.

/routes?ids=a321b5f0-f52c-4d36-9d39-f11ba64f9293
"{
    "id":"9817341d-474d-4468-9113-922637113f66",
    "name":"route1",
    "company_id": "ea0a3a44-ca90-4491-bb20-2c7f508da1c7",
    "points":[
        {
            "name": "point1",
            "type" : {
                "key": "polygon",
                "value": "Полигон"
            },
            "width": 10,
            "geometry": [
               [37.541330, 55.772056],
               [37.598908, 55.808941]
            ]
        },
        {
            "name": "point2",
            "type" : {
                "key": "circle",
                "value": "Круг"
            },
            "width": 100,
            "geometry": [
               [37.541330, 55.772056]
            ]
        }
    ]
}"
query Parameters
ids
string
Example: ids=

Responses

/routes

Создание маршрута


Добавляет новый маршрут, присваивая id.


Роль: Редактор и выше.


Параметры:

{
  "name": "route1", // название маршрута
  "points":[
      {
          "name":"point1",// название точки
          "type": {"key":"polygon"},  // тип точки, key = [point, circle, line, polygon] (можно добавлять "type":"geozone_type")
          "width":20,//ширина
          "geometry": [  //массив координат
              [37.608734,55.793154],
              [37.541330,55.772056],
              [37.598908,55.808941]
          ]
      }
  ]
}

Ответ:

Возвращает созданную запись и ее id. Пустые поля не возвращаются.

Request Body schema: application/json
name
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "RouteName",
  • "points": [
    ]
}

/routes?ids=:ids

Планирование удаление маршрута


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain
Example

/routes/:id

Обновление данных маршрута


Обновляет переданные параметры


Параметры:

см метод POST /routes


Роль: Редактор и выше.


Ответ:

Аналогичен одному объекту из ответа метода GET /routes

path Parameters
id
required
string
Example:

ID маршрута

Request Body schema: application/json
company_id
string
id
string
name
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
  • "id": "0d2c5867-301f-468a-aa15-1095f95cc697",
  • "name": "RouteName",
  • "points": [
    ]
}

/routes/:id

Удаление маршрута по его id


Удаляет маршрут


Параметры:

id маршрута


Роль: Редактор и выше.


Ответ:

200 Удаленный маршрут

Если маршрут с таким id не найден, то возвращается ошибка 422

{
  "code": 422,
  "field": "id",
  "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID маршрута

Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

/routes/list

Получение маршрутов по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[name, created, is_delete, icon.key, color.key, type.key]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - name(можно искать по неполному слову), icon.key, icon.type, color.key, color.type, type.key, type.type


Роль: Читатель и выше.


Пример запроса:

Получить первые 10 маршрутов, отсортированные по возрастанию, по имени, которые имеют имя "route2"

{
                        "from":0,
                        "count":10,
                        "sortField":"name",
                        "sortDesc":"false",                        "conditions":[ 
                            { "field": "name", "value": "route2"}
                        ]
}

Ответ:

{
    "max":1,
    "list":
    [
        {"id":"80773471-1eb8-4b71-ad44-fcfd6d8c721a",
         "name":"route2",
         "points":[
            {                                        "name":"point1",
                "type": {"key":"polygon", "value":"Полигон"}",
                "width":20,
                "geometry": [[37.608734,55.793154],[37.541330,55.772056],[37.598908,55.808941]]
            }
         ]
    ]
}
query Parameters
Cookie
string
Example: Cookie=supportOnlineTalkID=pNsLIBxAUhElFv6zdsJ1FAqG1IVcDhXT; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
Array of objects
count
number
from
number
sortDesc
string
sortField
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 1,
  • "from": 0,
  • "sortDesc": "false",
  • "sortField": "name"
}

Рейсы

Работа с Рейсами

/trips?ids=<ids1,ids2>

Получить рейсы


Возвращает массив всех рейсов.


Роль: Читатель и выше.


Ответ:

Если запрашивается по одному id - вернется не массив, а один объект.

Если запрос без id (просто GET /trips), то вернутся все маршруты.

/trips?ids=41513f12-1773-43ed-92c5-197dac6b08a2
{
    "id": "41513f12-1773-43ed-92c5-197dac6b08a2",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "name": "A trip with 3 points",
    "unit": {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "user_id": "e8c262f8-942b-4c61-bb25-825d886e627a",
    "dates": [
        "2020-09-12 00:00:00",
        "2020-09-13 00:00:00",
        "2020-10-15 00:00:00"
    ],
    "activation_type": {
        "key": "leaving_first_point",
        "type": "trip_activation_type",
        "value": "По выходу из первой точки"
    },
    "passage_order_type": {
        "key": "strict",
        "type": "trip_passage_order_type",
        "value": "Строгий"
    },
    "work_types": [
        "work1",
        "work2"
    ],
    "points": [
        {
            "name": "point11",
            "type": {
                "key": "polygon",
                "type": "geozone_type",
                "value": "Полигон"
            },
            "geometry": [
                [
                    37.442505,
                    55.750298
                ],
                [
                    37.421736,
                    55.750956
                ],
                [
                    37.422764,
                    55.750934
                ]
            ],
            "departure": {
                "time": "08:00",
                "after_days": 0,
                "deviation_minutes": 10
            }
        },
        {
            "name": "point22",
            "type": {
                "key": "circle",
                "type": "geozone_type",
                "value": "Круг"
            },
            "geometry": [
                [
                    37.492764,
                    55.770934
                ]
            ],
            "arrival": {
                "time": "07:00",
                "after_days": 1,
                "deviation_minutes": 10
            },
            "departure": {
                "time": "06:00",
                "after_days": 2,
                "deviation_minutes": 15
            }
        },
        {
            "name": "point33",
            "type": {
                "key": "polygon",
                "type": "geozone_type",
                "value": "Полигон"
            },
            "geometry": [
                [
                    37.442505,
                    55.750298
                ],
                [
                    37.421736,
                    55.750956
                ],
                [
                    37.422764,
                    55.750934
                ]
            ],
            "arrival": {
                "time": "22:00",
                "after_days": 2,
                "deviation_minutes": 10
            }
        }
    ]
}
query Parameters
ids
string
Example: ids=

Responses

/trips

Создание рейса


Добавляет новый рейс, присваивая id.


Роль: Редактор и выше.


Параметры:

{
    "name": "A trip with 3 points", //название, обязательное
    "unit": { // объект, обязательное
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "trailer": {// прицеп, необязательное
        "id": "4e00d717-fa03-4209-8771-a6ff71a4f65d"
    },
    "user_id": "e8c262f8-942b-4c61-bb25-825d886e627a",// ID водителя, необязательное
    "activation_type": { // Тип активации, получают из справочника type=trip_activation_type
        "key": "leaving_first_point" // возможные ключи и значения: [{'time_of_first_point', 'По премени первой точки'},{'entrance_to_first_point', 'По входу в первую точку'},{'leaving_first_point', 'По выходу из первой точки'}]
    },
    "passage_order_type": {// Поядок прохождения получают из справочника type = trip_passage_order_type, обязательное
        "key": "strict" // availeble keys and values[{'strict', Строгий},{'arbitrary', 'Произволный'}]
    },
    "dates": ["2020-09-12", "2020-09-13 00:00", "2020-10-15 00:00:00"], //Даты поездки, required,HH:mm::ss всегда должны быть указаны нули
    "work_types": ["work1", "work2"], // типы работы, необязательное. Можно получить ранее добавленные значения по GET /work_types и можно добавить новые. Если добавить новые, их можно использовать при следующем добавление рейса
    "points": [{ // массив точек, обязательное, описание во 2-точке
        "name": "point11",
        "type": { 
            "key": "polygon",
            "type": "geozone_type",
            "value": "Полигон"
        },
        "departure": {
            "time": "08:00",
            "after_days": 0,
            "deviation_minutes": 10
        },
        "geometry":[                                
            [37.442505, 55.750298], 
            [37.421736, 55.750956],
            [37.422764, 55.750934]
        ]
    }, {
        "name": "point22", // название точки, string, обязательное
        "type": { // тип геозоны, object, обязательное
            "key": "circle", // один из ['point', 'circle', 'line', 'polygon']
            "type": "geozone_type", // всегда geozone_type
            "value": "Круг"
        },
        "arrival": { // прибытие, object, необязательное
            "time": "07:00", // время прибытия, string
            "after_days": 0, // через сколько дней c начала поездки, int
            "deviation_minutes": 10 // отклонение времени прибытия в минутах
        },
        "departure": { // отправления, object, необязательное
            "time": "06:00",// время отправления, string
            "after_days": 1, //через сколько дней c начала поездки, int
            "deviation_minutes": 15 // отклонение времени отправления в минутах
        },
        "geometry": [ // координаты точки, обязательное
            [37.492764, 55.770934]
        ]
    }, {
        "name": "point33",
        "type": {
            "key": "polygon"
        },
        "arrival": {
            "time": "22:00",
            "after_days": 2,
            "deviation_minutes": 10
        },
        "geometry":[
            [37.442505, 55.750298], 
            [37.421736, 55.750956],
            [37.422764, 55.750934]
        ]
    }]
}

Ответ:

Возвращает созданную запись и ее id. Пустые поля не возвращаются.

Request Body schema: application/json
object
dates
Array of strings
name
string
object
Array of objects
object
object
user_id
string
work_types
Array of strings

Responses

Request samples

Content type
application/json
{
  • "activation_type": {
    },
  • "dates": [
    ],
  • "name": "A trip with 3 points",
  • "passage_order_type": {
    },
  • "points": [
    ],
  • "trailer": {
    },
  • "unit": {
    },
  • "user_id": "e8c262f8-942b-4c61-bb25-825d886e627a",
  • "work_types": [
    ]
}

/trips?ids=:ids

Планирование удаления рейсов


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain
Example

/trips/:id

Обновление данных рейса


Обновляет переданные параметры


Роль: Редактор и выше.


Параметры:

см метод POST /trips


Ответ:

Аналогичен одному объекту из ответа метода GET /trips

path Parameters
id
required
string
Example:

ID рейса

Request Body schema: application/json
object
company_id
string
dates
Array of strings
id
string
name
string
object
Array of objects
object
user_id
string
work_types
Array of strings

Responses

Request samples

Content type
application/json
{
  • "activation_type": {
    },
  • "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
  • "dates": [
    ],
  • "id": "db91e93d-202d-4cca-9bc9-883e237ff532",
  • "name": "New new for trip",
  • "passage_order_type": {
    },
  • "points": [
    ],
  • "unit": {
    },
  • "user_id": "e8c262f8-942b-4c61-bb25-825d886e627a",
  • "work_types": [
    ]
}

/trips/:id

Удаление рейса по его ID


Параметры:

id рейса


Роль: Редактор и выше.


Ответ:

200 Удаленный рейс

Если рейс с таким id не найден возвращается ошибка 422

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID рейса

Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

/trips/list

Получение рейсов по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[name, created, is_delete]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - name (можно искать по неполному слову), unit.id, user_id, activation_type.key, passage_order_type.key


Пример запроса:

Получить первые 10 рейсов, отсортированные по возрастанию по имени, которые имеют ID объекта 7e1aaba2-625a-4a4c-b765-9934bec5a096

{
                        "from":0,
                        "count":10,
                        "sortField":"name",
                        "sortDesc":"false",                        "conditions":[ 
                            { "field": "unit.id", "value": "7e1aaba2-625a-4a4c-b765-9934bec5a096"}
                        ]
}

Ответ:

{
    "max": 1,
    "list": [
        {
            "id": "41513f12-1773-43ed-92c5-197dac6b08a2",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "name": "A trip with 3 points",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "user_id": "e8c262f8-942b-4c61-bb25-825d886e627a",
            "dates": [],
            "activation_type": {
                "key": "leaving_first_point",
                "type": null,
                "value": null
            },
            "passage_order_type": {
                "key": "strict",
                "type": null,
                "value": null
            },
            "work_types": [
                "work1",
                "work2"
            ],
            "points": [
                {
                    "name": "point11",
                    "type": {
                        "key": "polygon",
                        "type": "geozone_type",
                        "value": "Полигон"
                    },
                    "geometry": [
                        [
                            37.442505,
                            55.750298
                        ],
                        [
                            37.421736,
                            55.750956
                        ],
                        [
                            37.422764,
                            55.750934
                        ]
                    ],
                    "departure": {
                        "time": "08:00",
                        "after_days": 0,
                        "deviation_minutes": 10
                    }
                },
                {
                    "name": "point22",
                    "type": {
                        "key": "circle",
                        "type": "geozone_type",
                        "value": "Круг"
                    },
                    "geometry": [
                        [
                            37.492764,
                            55.770934
                        ]
                    ],
                    "arrival": {
                        "time": "07:00",
                        "after_days": 1,
                        "deviation_minutes": 10
                    },
                    "departure": {
                        "time": "06:00",
                        "after_days": 2,
                        "deviation_minutes": 15
                    }
                },
                {
                    "name": "point33",
                    "type": {
                        "key": "polygon",
                        "type": "geozone_type",
                        "value": "Полигон"
                    },
                    "geometry": [
                        [
                            37.442505,
                            55.750298
                        ],
                        [
                            37.421736,
                            55.750956
                        ],
                        [
                            37.422764,
                            55.750934
                        ]
                    ],
                    "arrival": {
                        "time": "22:00",
                        "after_days": 2,
                        "deviation_minutes": 10
                    }
                }
            ]
        }
    ]
}
Request Body schema: application/json
Array of objects
sortField
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "sortField": "name"
}

Объекты

API по работе с Объектами

/units?ids=:ids

Поиск объектов по ID (через запятую)


Возвращает массив объектов.
Если параметр 'ids' пустой (т.е. запрос = 'GET /units', без параметра), то вернётся список всех объектов по всем компаниям пользователя, из которого исключаются удаленные юниты. Если ids не пустой (т.е. запрос = 'GET /units?ids=00215-54021..,25541-454754-4513..'), то вернётся список только из запрошенных юнитов.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретный объект.


Роль: Читатель и выше.


Пример ответа:

[  
   {  
      "id":"2bcd95c4-d520-4203-89fc-b0d3a76a7d6b",
      "name":"testName-1",
      "type":{  
         "key":"farm_equipment",
         "type":"unit_type",
         "value":"Сельхозтехника"
      },
      "terminal_type":{  
         "key":"navtelecom",
         "type":"terminal_type",
         "value":"navtelecom"
      },
      "imei":"743b075b-3006-4450-83f8-46d80b13586b",
      "phonenumber":"8(914)3333333",
      "units_groups_names": "ТЕст123, НОДГП-1 (НОДГП-1 Кокшетау), Ntcn, все тест, Новая, НЖС-1 (ЭЧ-8 Астана)",
      "icon":{  
         "key":"bus",
         "type":"unit_icon",
         "value":"Автобус"
      },
      "services":[  
         {  
            "id":"e257e819-5d09-4da2-8ee4-9c072fef6de0",
            "unit_id":"2bcd95c4-d520-4203-89fc-b0d3a76a7d6b",
            "name":"testService",
            "description":"dumb service for test",
            "isActiveKm":true,
            "intervalKm":10000,
            "lastKm":45000,
            "isActiveDays":true,
            "intervalDays":300,
            "lastDays":"2019-06-03",
            "activeKm":true,
            "activeDays":true
         }
      ],
      "sensors":[  
         {  
            "id":"49d91500-6582-4a8c-a341-215fe2e11279",
            "unit_id":"2bcd95c4-d520-4203-89fc-b0d3a76a7d6b",
            "name":"testSensor",
            "type":{  
               "key":"ignition",
               "type":"sensor_type",
               "value":"translate.sensor_type.ignition"
            },
            "param1":{ 
                    "param_key": "dut_485_1",
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 2.0, "b": 3.0 }], 
                    "calibrationXYlist": 
                        [{ "x": 1.0, "y": 5.0 }]
                }, 
                "param2":{ 
                    "param_key": "dut_485_2", 
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 1.0, "b": 1.0 }], 
                    "calibrationXYlist":
                        [{ "x": 1.0, "y": 2.0 }]
                },
            "formula": "S1"
         }
      ],
      "custom_fields":[  
         {"key": limit", "value": "123"},
         {"key": "power", "value": "123kw"}
      ]
   },
   {  
      "id":"3f64e76d-0ff6-46ec-90dc-baadb89733f0",
      "name":"testName-2",
      "type":{  
         "key":"farm_equipment",
         "type":"unit_type",
         "value":"Сельхозтехника"
      },
      "terminal_type":{  
         "key":"navtelecom",
         "type":"terminal_type",
         "value":"navtelecom"
      },
      "imei":"1406dfa0-1a6b-4cce-be8e-5d41d1eb71c9",
      "phonenumber":"8(914)3333333",
      "icon":{  
         "key":"bus",
         "type":"unit_icon",
         "value":"Автобус"
      },
      "services":[  
         {  
            "id":"f19f6da9-d010-4ffe-87cc-3fa9c40667cc",
            "unit_id":"3f64e76d-0ff6-46ec-90dc-baadb89733f0",
            "name":"testService",
            "description":"dumb service for test",
            "isActiveKm":true,
            "intervalKm":10000,
            "lastKm":45000,
            "isActiveDays":true,
            "intervalDays":300,
            "lastDays":"2019-06-03",
            "activeKm":true,
            "activeDays":true
         }
      ],
      "sensors":[  
         {  
            "id":"bd41f2a6-56c6-46b7-97f1-1ac1096ad81b",
            "unit_id":"3f64e76d-0ff6-46ec-90dc-baadb89733f0",
            "name":"testSensor",
            "type":{  
               "key":"ignition",
               "type":"sensor_type",
               "value":"translate.sensor_type.ignition"
            },
            "param1":"voltage_main",
            "param2":"speedkph",
            "formula":"S",
            "calibrations":[  
               {  
                  "id":"b2a45781-f05f-4553-be86-9320334ce864",
                  "sensor_id":"bd41f2a6-56c6-46b7-97f1-1ac1096ad81b",
                  "fromValue":3.0,
                  "a":1.5,
                  "b":2.0,
                  "param_key":"speedkph"
               }
            ]
         }
      ],
      "custom_fields":[  
            {"name":"Игнорировать сообщения после начала движения","key":"fuel_fillings_msgignorestart","value":60.0},
                {"name":"Мин. время остановки для определения слива","key":"fuel_fillings_minstaytheft","value":60.0},
                {"name":"Минимальный объем слива","key":"fuel_fillings_minitheft","value":10.0}
      ]
   }
]
query Parameters
ids
string
Example: ids=

Responses

/units

Создание объекта


Параметры:

"name": "Автомобиль обычный-1" // Номер, наименование объекта,
"type": {"key":"transport"} // Тип объекта (из dictionary, все ключи с типом 'unit_type'),
"terminal_type":{"key": "navtelecom"} // Тип устройства (из dictionary, все ключи с типом 'terminal_type'),
"imei": "352093084258333" // imei устройства
"phonenumber": "89248608208" // номер телефона
"phonenumber2": "+79851234567" // второй номер телефона
"icon": {"key":"car_blue"} // ключ иконки (из dictionary, все ключи с типом 'unit_icon')
доп поля: // смотри GET /custom_fields, ссылка ниже.
"custom_fields": [
    {"name": "analist", 'key': 'analist', "value": "Петров"},
    {"name": "counters_mileagekey", "key": "counters_mileagekey", "value": "gps_mileage"},
    {"name": "counters_mileagecurr", "key": "counters_mileagecurr", "value": "2400"},
    {"name": "tripdetector_movedetectkey", "key": "tripdetector_movedetectkey", "value": "speed"},
    {"name": "Минимальный объем заправки", "key": "fuel_fillings_minfilling", "value": "10"},
    {"name": "advanced_mileagecoeff", "key": "advanced_mileagecoeff", "value": "1.0"},
    {"name": "Видео устройство", "key": "video_device_name", "value": "CARVIS", "group": "cf_etc"},
    {"name": "ID-видео устройства", "key": "video_device_id", "value": "3432426544", "group": "cf_etc"},
    {"name": "Камеры", "key": "video_cameras", "value": "0,1,2", "group": "cf_etc"}
Смены:
"drivers": [
        {
            "user": { // Водитель
                "id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
            },
            "date_from": "2022-10-03 00:00:00", // от
            "date_to": "2022-10-04 00:00:00"// до
        },
        {
            "user": {
                "id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
            },
            "date_from": "2022-10-05 00:00:00",
            "date_to": "2022-10-10 00:00:00"
        }
    ],
Назначение прицепов
    "trailers": [
        {
            "trailer": { // Прицеп
                "id": "fcaf9265-5a5b-4d35-8b00-ee146b8dc8f6"
            },
            "date_from": "2022-10-03 00:00:00", // от
            "date_to": "2022-10-04 00:00:00" // до
        },
        {
            "trailer": {
                "id": "d0bc0903-702b-4d96-826a-e26860681356"
            },
            "date_from": "2022-10-05 00:00:00",
            "date_to": "2022-10-10 00:00:00"
        }
    ],
"services": [{
    "id":"23453-5435345-234345345-34534533" // ОПЦИОНАЛЬНО ! Если сервис уже сохранен в БД и имеет id, то для его маппинга на текущий создаваемый юнит, необходимо указать его id, если сервис будет создаваться вместе с юнитом, то параметра "id" быть не должно. 
    "name": "Очередное ТО" // наименование сервиса,
    "description": "ваш текст" // описание,
    "isActiveKm": "true" // активно или нет по км,
    "intervalKm": "10000" // периодичность по км,
    "lastKm": "45000" // последний раз по км,
    "isActiveDays": "true" // активно или нет по дням,
    "intervaldays": "60" // периодичность по дням,
    "lastdays": "2019-05-14" // последний раз по дням (Формат yyyy-MM-dd),
    "isActiveMotohours": "true" // активно или нет по моточасам,
    "intervalMotohours": "1200" // периодичность по моточасам,
    "lastMotohours": "14000" // последний раз по моточасам 
}]
Датчики (Можно создавать отдельно через /units/sensors (без привязки к unit) или /units/:unit_id/sensors (с привязкой к unit)):
sensors:[{
    "id":"23453-5435345-234345345-34534533" // ОПЦИОНАЛЬНО ! Если сенсор уже сохранен в БД и имеет id, то для его маппинга на текущий создаваемый юнит, необходимо указать его id, если сенсор будет создаваться вместе с юнитом, то параметра "id" быть не должно.
    "name": "Зажигание" // Название датчика ,
    "type": {"key":"ignition"} // тип датчика (из dictrionary, все ключи с типом "sensor_type"),
    "param1":{ // Параметр №1 сенсора. Под примером доп.инфа.
            "param_key": "dut_485_1", // ключ параметрa, должен быть в списке разрешенных ключей для конкретного терминала (/units/sensors/params)
            "calibrationABlist": // Лист калибровок AB
                [{
                    "fromValue": 1.0, // нижняя граница
                    "a": 2.0,    // коэффициент А
                    "b": 3.0    // коэффициент B
                }], 
            "calibrationXYlist": // Лист калибровок AB
                [{
                    "x": 1.0,    // коэффициент X
                    "y": 5.0    // коэффициент Y
                }]
    }, 
    "param2":{ // Параметр №2 сенсора. Под примером доп.инфа.
            "param_key": "dut_485_2", 
            "calibrationABlist": 
                [{
                    "fromValue": 1.0,
                    "a": 1.0, 
                    "b": 1.0
                }], 
            "calibrationXYlist":
                [{
                    "x": 1.0,
                    "y": 2.0
                }]
    }, 
    "hide_in_reports": false, // флажок используется, чтобы скрыть в отчетах, По умолчанию false
    "hide_in_monitoring": true, // флажок используется чтобы скрыть значение датчика в мониторинге, По умолчанию false
    "formula": "S1" // формула связки параметра 1 и параметра 2.         Полный список возможных значений лежит в Dictionaries по ключу "formula"
     "expression": "$param + ${Пробег} / 100"// выражения формулы, это поле нужно только в случае formula=EXPR и имеет следующие синтаксисы 1) обращение к значениям любого параметра из сырых данных -  #param333 (обращение к параметру param333)
     "retrans_param_name": "fuel_level_1",Ретранслировать в параметр, необязательное поле
2)обращение к параметру текущего датчика - $param
константы - 1000 (константа 1000)
3)обращение к значению других датчиков ${Название датчика}
4)арифметические операции - + * / ^(степень)
скобки - ( или ) 
},
}]

По доп. полям смотрите GET /custom_fields

Описание param1, param2 сенсора: Данные параметры являются опциональными и если пользователь их не заполнил, то передавать их вообще не надо. Перед сохранением param1 и param2 происходит пересчет их внутренних калибровочных листов (калибровкиAB и КалибровкиXY). Лист КалибровокAB и лист калибровокXY у конкретного параметра взаимосвязаны и порождают друг друга по определенным формулам, т.е. из листа калибровок XY можно вычислить лист калибровок AB и наоборот.

В связи с этим РЕКОМЕНДУЕТСЯ перед тем, как сделать запрос, предварительно использовать метод POST /units/sensors/recalc для пересчета этих листов и передавать в calibrationABlist и calibrationXYlist результат работы этого метода.

После создания, создается объект с привязкой объекта к компании пользователя.


Роль: Редактор и выше.


Пример ответа:

Возвращается созданный объект

[{
        "id": "72154648-1f0d-4acc-a74d-81c7926e4483",
        "type": {
                "key":"farm_equipment",
                "type":"unit_type",
                "value":"Сельхозтехника"
        },
        "is_delete": 0,
        "company_id": "d12c453b-d25c-445a-9e5b-ee9f9d4b7dff",
        "name": "Scania K 810 MT 159",
        "terminal_type":  {
                "key":"navtelecom",
                "type":"terminal_type",
                "value":"navtelecom"
        },
        "imei": "868926035645339",
        "phonenumber": "+79223569544",
        "icon": {
                "key":"bus",
                "type":"unit_icon",
                "value":"автобус"
        },
        custom_fields: [
                {"name":"Игнорировать сообщения после начала движения","key":"fuel_fillings_msgignorestart","value":60.0},
                {"name":"Мин. время остановки для определения слива","key":"fuel_fillings_minstaytheft","value":60.0},
                {"name":"Минимальный объем слива","key":"fuel_fillings_minitheft","value":10.0},
                {"name":"Мин. время стоянки","key":"tripdetector_minparktime","value":300.0},
                {"name":"Коэффициент пробега","key":"advanced_mileagecoeff","value":1.0},
                {"name":"Мин. скорость движения","key":"tripdetector_minmovespeed","value":3.0},
                {"name":"Мин. расстояние поездки","key":"tripdetector_mintripdist","value":100.0}
        ],
        "services": [{
                "id": "1e83e291-690e-491e-84ee-e0d3e1397055",
                "unit_id": "72154648-1f0d-4acc-a74d-81c7926e4483",
                "name": "Очередное ТО",
                "description": "",
                "isactiveKm": 1,
                "intervalKm": 10000,
                "lastkm": 45000,
                "isActiveDays": 1,
                "intervalDays": 60,
                "lastDays": "2019-05-14 05:00:00",
                "isActiveMotohours": true,
                "intervalMotohours": 1200,
                "lastMotohours": 18600,
        }],
        "sensors": [{
                "id": "3c5b7072-abd5-4095-8be7-02d4b75751c0",
                "unit_id": "72154648-1f0d-4acc-a74d-81c7926e4483",
                "name": "Зажигание",.
                "typekey": "ignition",
                "param1":{ 
                    "param_key": "dut_485_1",
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 2.0, "b": 3.0 }], 
                    "calibrationXYlist": 
                        [{ "x": 1.0, "y": 5.0 }]
                }, 
                "param2":{ 
                    "param_key": "dut_485_2", 
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 1.0, "b": 1.0 }], 
                    "calibrationXYlist":
                        [{ "x": 1.0, "y": 2.0 }]
                },
                "formula": "S1",
                "hide_in_reports": false,
                "hide_in_monitoring": false
        }]
}]
Request Body schema: application/json
Array of objects
Array of objects
object
imei
string
name
string
phonenumber
string
phonenumber2
string
Array of objects
services
Array of any
object
Array of objects
object

Responses

Request samples

Content type
application/json
{
  • "custom_fields": [
    ],
  • "drivers": [
    ],
  • "icon": {
    },
  • "imei": "12345",
  • "name": "Hitachi XXXX",
  • "phonenumber": "+71232131231",
  • "phonenumber2": "+21312123231",
  • "sensors": [
    ],
  • "services": [ ],
  • "terminal_type": {
    },
  • "trailers": [
    ],
  • "type": {
    }
}

/units?ids=ids

Планирование удаления объектов


Планирование удаления нескольких объектов, в ids указать список идентификаторов удаляемых объектов.


Роль: Редактор и выше.


Пример запроса:
DELETE /units?ids=eece8fbc-0bad-4a2d-ac24-62573860dda0,fd848416-bf81-4a92-9c01-922b2da4dd5a


Пример ответа:

В случае успеха - ответ '200', в теле ответа ID задачи удаления, с помощью которого можно отменить удаление.
В случае ошибки - ответ 422, в теле текст ошибки.

{
    "id": "ace239ee-b7ab-42ee-9d57-d749a23987c6"
}
query Parameters
ids
string
Example: ids=
Request Body schema: application/json
ids
Array of strings

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ]
}

/units/:unit_id

Обновление объекта


Дерево объекта должно быть полным (с обновленными полями). Поля, которые будут отсутствовать в запросе, затрутся на null.


Роль: Редактор и выше.


Ответ:

Тот же, что и при GET /units - возвращает обновленное дерево объекта.

path Parameters
unit_id
required
string
Example:

ID объекта

Request Body schema: application/json
company_id
string
Array of objects
Array of objects
object
id
string
imei
string
name
string
phonenumber
string
phonenumber2
string
Array of objects
services
Array of any
object
Array of objects
object
units_groups_ids
string
units_groups_names
string

Responses

Request samples

Content type
application/json
{
  • "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "custom_fields": [
    ],
  • "drivers": [
    ],
  • "icon": {
    },
  • "id": "1058bb08-618d-493e-95bd-862dfe36989b",
  • "imei": "12121212",
  • "name": "Hitachi XXXX",
  • "phonenumber": "+71231231212",
  • "phonenumber2": "+73453435343",
  • "sensors": [
    ],
  • "services": [ ],
  • "terminal_type": {
    },
  • "trailers": [
    ],
  • "type": {
    },
  • "units_groups_ids": "92223530-e77c-4b51-aeac-0534de0276a5",
  • "units_groups_names": "1"
}

/units/:unit_id

Удаление объекта


Физически объект не удаляется из базы - флаг is_delete переводится в состояние true (необходимо для возможного восстановления объекта).


Роль: Редактор и выше.


В случае успеха - ответ '200'

path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units/:id

Обновление указанных полей объекта


Пока можно указать только custom_fields


Роль: Редактор и выше.


Пример запроса:
PATCH /units/836db03e-7475-4628-9323-0ca506e2061f

{
    "custom_fields": [{
            "key": "video_device_name",
            "value": "CARVIS"
        },
        {
            "key": "brand_code",
            "value": "123432"
        },
        {
            "key": "tripdetector_mintriptime",
            "value": 70
        }
    ]
}

Список все возможных custom_fields GET /custom_fields


Ответ:

Тот же, что и при GET /units - возвращает обновленное дерево объекта.

path Parameters
id
required
string
Example:

ID объекта

Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "custom_fields": [
    ]
}

/units/recovery/:unit_id

Восстанавливает ранее удаленный юнит


Роль: Администратор и выше.


Ответ:
200 OK

path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units/physical/:unit_id

Удаление объекта безвозвратно


Роль: Супервизор и выше.


В случае успеха - ответ '200'

path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units/services?ids=:ids

Поиск сервисов по ID (через запятую)


Пример ответа:

Возвращает массив найденных сервисов. Если параметр unit_id пустой, значит данный сервис не привязан к какому-либо юниту.

    [  
         {  
            "id":"e257e819-5d09-4da2-8ee4-9c072fef6de0",
            "unit_id":"2bcd95c4-d520-4203-89fc-b0d3a76a7d6b",
            "name":"testService",
            "description":"dumb service for test",
            "isActiveKm":true,
            "intervalKm":10000,
            "lastKm":45000,
            "isActiveDays":true,
            "intervalDays":300,
            "lastDays":"2019-06-03",
            "activeKm":true,
            "activeDays":true
         },
         {...}
    ]

Роль: Читатель и выше.

query Parameters
ids
string
Example: ids=

Responses

/units/services

Отдельное создание сервиса (без привязки к юниту)


То же самое, что и метод (POST /units/:unit_id/services), но без привязки к какому-то конкретному объекту.

Ответ будет аналогичен методу выше (POST /units/:unit_id/services), но поле 'unit_id' будет пустым.


Роль: Редактор и выше.

Responses

/units/:unit_id/services

Поиск всех сервисов юнита


Возвращает все привязанные к юниту сервисы.

Ответ аналогичный GET /units/services?ids=:ids


Роль: Читатель и выше.

path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units/:unit_id/services

Отдельное создание сервиса (с привязкой к юниту)


Данный вариант создания сервиса позволяет создать сервис для юнита через отдельный функционал и привязать их друг к другу, используя json форму только сервиса.

Также его можно создать при создании юнита (POST /units), заполнив в json'е юнита поле 'services', без указания id сервиса. Это позовлит создать и юнит и привязанный к нему сервис одномоментно.


Роль: Редактор и выше.


Пример создания сервиса для юнита с id = '4ca6ed64-3b58-493c-9ac9-862fe1a01f88' по УРЛу /units/4ca6ed64-3b58-493c-9ac9-862fe1a01f88/services:

{
    "name": "testService" // наименование сервиса,
    "description": "dumb service for test" // описание,
    "isActiveKm": "true" // активно или нет по км,
    "intervalKm": "10000" // периодичность по км,
    "lastKm": "45000" // последний раз по км,
    "isActiveDays": "true" // активно или нет по дням,
    "intervaldays": "300" // периодичность по дням,
    "lastdays": "2019-06-13" // последний раз по дням (Формат yyyy-MM-dd)
}

Пример ответа:

   {  
      "id":"2c705ae1-d99c-4be3-b564-8db5ac387caf",
      "unit_id":"4ca6ed64-3b58-493c-9ac9-862fe1a01f88",
      "name":"testService",
      "description":"dumb service for test",
      "isActiveKm":true,
      "intervalKm":10000,
      "lastKm":45000,
      "isActiveDays":true,
      "intervalDays":300,
      "lastDays":"2019-06-03"
   }
path Parameters
unit_id
required
string
Example:

ID объекта

Request Body schema: application/json
description
string
intervalKm
string
intervaldays
string
isActiveDays
string
isActiveKm
string
lastKm
string
lastdays
string
name
string

Responses

Request samples

Content type
application/json
{
  • "description": "dumb service for test",
  • "intervalKm": "10000",
  • "intervaldays": "300",
  • "isActiveDays": "true",
  • "isActiveKm": "true",
  • "lastKm": "45000",
  • "lastdays": "2019-06-13",
  • "name": "testService"
}

/units/sensors?ids=:ids

Поиск датчиков по ID (через запятую)


То же самое что и в Сервисах GET /units/services?ids=:ids


Пример ответа:

[{
                "id": "3c5b7072-abd5-4095-8be7-02d4b75751c0",
                "unit_id": "72154648-1f0d-4acc-a74d-81c7926e4483",
                "name": "Зажигание",.
                "typekey": "ignition",
                "param1":{ 
                    "param_key": "dut_485_1",
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 2.0, "b": 3.0 }], 
                    "calibrationXYlist": 
                        [{ "x": 1.0, "y": 5.0 }]
                }, 
                "param2":{ 
                    "param_key": "dut_485_2", 
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 1.0, "b": 1.0 }], 
                    "calibrationXYlist":
                        [{ "x": 1.0, "y": 2.0 }]
                },
                "formula": "S1"
        },
        {...}
        ]
query Parameters
ids
string
Example: ids=

Responses

/units/sensors

Отдельное создание датчика (без привязки к объекту)


Аналогично POST /units/services


Роль: Редактор и выше.

Responses

/units/:unit_id/sensors

Поиск всех датчиков объекта


То же самое, что и в Сервисах GET /units/:unit_id/services

Ответ аналогичный методу выше GET /units/sensors?ids=:ids


Роль: Читатель и выше.

path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units/:unit_id/sensors

Отдельное создание датчика (с привязкой к объекту)


Аналогично POST /units/:unit_id/services


Роль: Редактор и выше.


Пример запроса:

{
    "name": "Зажигание" // Название датчика ,
    "type": {"key":"ignition"} // тип датчика (из dictrionary, все ключи с типом "sensor_type"),
    "param1":{ // Параметр №1 сенсора. Под примером доп.инфа.
            "param_key": "dut_485_1", // ключ параметрa, должен быть в списке разрешенных ключей для конкретного терминала (/units/sensors/params)
            "calibrationABlist": // Лист калибровок AB
                [{
                    "fromValue": 1.0, // нижняя граница
                    "a": 2.0,    // коэффициент А
                    "b": 3.0    // коэффициент B
                }], 
            "calibrationXYlist": // Лист калибровок AB
                [{
                    "x": 1.0,    // коэффициент X
                    "y": 5.0    // коэффициент Y
                }]
    }, 
    "param2":{ // Параметр №2 сенсора. Под примером доп.инфа.
            "param_key": "dut_485_2", 
            "calibrationABlist": 
                [{
                    "fromValue": 1.0,
                    "a": 1.0, 
                    "b": 1.0
                }], 
            "calibrationXYlist":
                [{
                    "x": 1.0,
                    "y": 2.0
                }]
    }, 
    "formula": "EXPR" // формула связки параметра 1 и параметра 2.         Полный список возможных значений лежит в Dictionaries по ключу "formula". 
    "expression": "$param + ${Пробег} / 100"// выражения формулы, это поле нужно только в случае formula=EXPR и имеет следующие синтаксисы 1) обращение к значениям любого параметра из сырых данных -  #param333 (обращение к параметру param333)
2) обращение к параметру текущего датчика - $param
константы - 1000 (константа 1000)
3) обращение к значению других датчиков ${Название датчика}
4) арифметические операции - + * / ^(степень)
скобки - ( или ) 
}

Описание param1, param2 сенсора: Данные параметры являются опциональными и если пользователь их не заполнил, то передавать их вообще не надо. Перед сохранением param1 и param2 происходит пересчет их внутренних калибровочных листов (калибровкиAB и КалибровкиXY). Лист КалибровокAB и лист калибровокXY у конкретного параметра взаимосвязаны и порождают друг друга по определенным формулам, т.е. из листа калибровок XY можно вычислить лист калибровок AB и наоборот.

В связи с этим РЕКОМЕНДУЕТСЯ перед тем, как сделать запрос, предварительно использовать метод POST /units/sensors/recalc для пересчета этих листов и передавать в calibrationABlist и calibrationXYlist результат работы этого метода.


Пример ответа:

{
                "id": "3c5b7072-abd5-4095-8be7-02d4b75751c0",
                "unit_id": "72154648-1f0d-4acc-a74d-81c7926e4483",
                "name": "Зажигание",.
                "typekey": "ignition",
                "param1":{ 
                    "param_key": "dut_485_1",
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 2.0, "b": 3.0 }], 
                    "calibrationXYlist": 
                        [{ "x": 1.0, "y": 5.0 }]
                }, 
                "param2":{ 
                    "param_key": "dut_485_2", 
                    "calibrationABlist": 
                        [{ "fromValue": 1.0, "a": 1.0, "b": 1.0 }], 
                    "calibrationXYlist":
                        [{ "x": 1.0, "y": 2.0 }]
                },
                "formula": "S1"
        }
path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units/:id/files?url=:url

Получение файла объекта по URL


Параметры:
id - ID объекта
url - URL файла


Роль: Читатель и выше.

query Parameters
url
string
Example: url=/home/mih/photos/photos/359633107825189/2021_09/2021_09_08_06_52_50_0.jpg

Responses

/units/sensors/recalc

Пересчет calibrationABlist или calibrationXYlist


Метод для пересчета calibrationABlist или calibrationXYlist. ДАННЫЕ НИГДЕ НЕ СОХРАНЯЮТСЯ. Метод изолированный, создан как вспомогательный.
В теле запроса передается массив, либо calibrationABlist, либо calibrationXYlist


Роль: Редактор и выше.


Пример запроса с calibrationABlist:

"[
    {'fromValue':5.0, 'a': 3.0, 'b': 12.0}, 
    {'fromValue':1.0, 'a': 0.0, 'b': 1.0}, 
    {'fromValue':38.0, 'a': 1.0, 'b': 0.0}
]"

Пример запроса с calibrationXYlist:

"[
    {'x': 3.0, 'y': 12.0}, 
    {'x': 0.0, 'y': 1.0}, 
    {'x': 1.0, 'y': 0.0}
]"

Ответ всегда одного типа:

    "{
        "calibrationABlist":
        [
            {"fromValue":1.0,"a":0.0,"b":1.0}, 
            {"fromValue":5.0,"a":3.0,"b":12.0}, 
            {"fromValue":38.0,"a":1.0,"b":0.0}
        ],
        "calibrationXYlist":
        [
            {"x":1.0,"y":1.0}, 
            {"x":5.0,"y":27.0}, 
            {"x":38.0,"y":38.0}
        ]
    }"

либо, если ошибка, со статусом 422.

Request Body schema: application/json
Array
x
number
y
number

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

/units/sensors/validate?terminal_type=<terminal_type_key>

Валидация списка датчиков


В запросе отправляется массив датчиков .
terminal_type - ключ терминала объекта.

В ответе, если всё успешно, возвращается статус 200 с пустым телом. В случае ошибки возвращается соответствующий код ошибки и её описание.


Роль: Редактор и выше.


Пример запроса:

[
    {
        "name": "Sensor1",
        "type": {
            "key": "abs_motohours",
            "type": "sensor_type",
            "value": "Абсолютные моточасы"
        },
        "param1": {
            "param_key": "acc_x",
            "smoothing": 0.0,
            "calibrationABlist": [],
            "calibrationXYlist": []
        },
        "param2": {
            "param_key": "",
            "smoothing": 0.0,
            "calibrationABlist": [],
            "calibrationXYlist": []
        },
        "formula": "S1",
        "hide_in_reports": false,
        "invalid": false
    }, {
        "name": "Sensor2",
        "type": {
            "key": "abs_motohours",
            "type": "sensor_type",
            "value": "Абсолютные моточасы"
        },
        "param1": {
            "param_key": "acc_y",
            "smoothing": 0.0,
            "calibrationABlist": [],
            "calibrationXYlist": []
        },
        "param2": {
            "param_key": "ewqeqwewqe",
            "smoothing": 0.0,
            "calibrationABlist": [],
            "calibrationXYlist": []
        },
        "formula": "EXPR",
        "expression": "$param1 + #fdsfdsf",
        "hide_in_reports": false
    }
]
query Parameters
terminal_type
string
Example: terminal_type=
Request Body schema: application/json
Array
expression
string
formula
string
hide_in_reports
boolean
invalid
boolean
name
string
object
object
object

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

/units/sensors/params

Получение списка параметров датчика по каждой марке терминала


Роль: Читатель и выше.


Ответ:

"[{
  "navtelecom":"stamp, datepoint, imei_md5, latlon, bytes_out, bytes_in, speedkph, satellites, angle, altitude, pwr_ext, out_1_st"
 },
 {
  "mtstracker":"stamp, datepoint, imei_md5, latlon, bytes_out, bytes_in, speedkph, satellites, angle, mileage_cur, navi_sensor_st_rec, navi_sensor_st_valid, acc_x, acc_y, acc_z, acc_max_minus, 
"}]"

Responses

/units/list

Получение объектов по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, возможные значения:
["name", "created", "type.key", "terminal_type.key"]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - name (можно искать по неполному слову),
"phonenumber" - часть номера телефона,
"imei" - часть IMEI,
"type.key" - ключ тип объекта,
"terminal_type.key" - ключ тип терминала,
"custom_fields" - ,
"sensors.name" - название датчика,
"sensors.param" - параметр датчика,
"sensors.type.key" - ключ тип датчика,
"events" - события


Пример запроса:

Получить первые 10 объектов, отсортированные по возрастанию по имени

{
    "from": 0,
    "count": 10,
    "sortField": "name",
    "sortDesc": "false",
    "fields": ["name",  "custom_fields.fuel_fillings_minfilling", "custom_fields.serial_number"],
    "conditions": [
        {
            "field": "name",
            "value": "НОДГП"
        }
    ]
}

Ответ:

{
    "max": 150,
    "list": [
         {
            "id": "55e41fea-614d-4103-9a82-887d15f76013",
            "name": "НОДГП-1 (НОДГП-1) Toyota Camry 110 АТ 03 Кокшетау",
            "services": [],
            "sensors": [],
            "custom_fields": [
                {
                    "name": "Мин. объем заправки",
                    "key": "fuel_fillings_minfilling",
                    "value": "10",
                    "group": "cf_fuel",
                    "sort": 1,
                    "show_in_monitoring": false
                },
                {
                    "name": "Мин. время стоянки (сек)",
                    "key": "tripdetector_minparktime",
                    "value": "300",
                    "group": "cf_trips",
                    "sort": 1,
                    "show_in_monitoring": false
                },
                {
                    "name": "Мин. скорость движ-я (км/ч)",
                    "key": "tripdetector_minmovespeed",
                    "value": "3",
                    "group": "cf_trips",
                    "sort": 3,
                    "show_in_monitoring": false
                },
                {
                    "name": "Серийный номер терминала",
                    "key": "serial_number",
                    "value": "265100022886",
                    "group": "cf_etc",
                    "sort": 6,
                    "show_in_monitoring": false
                }
            ]
        },
        ...
    ]
}
Request Body schema: application/json
Array of objects
fields
Array of strings

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "fields": [
    ]
}

/units/validate

Валидация всех полей объекта


API для валидации всех полей объекта, без сохранения. При этом ошибка может быть в разных полях\сущностях объекта.
Тело запроса, как при создании POST /units, и при обновлении PUT /units/:id


Роль: Читатель и выше.

Request Body schema: application/json
Array of objects
Array of objects
object
imei
string
name
string
phonenumber
string
phonenumber2
string
Array of objects
services
Array of any
object
Array of objects
object

Responses

Request samples

Content type
application/json
{
  • "custom_fields": [
    ],
  • "drivers": [
    ],
  • "icon": {
    },
  • "imei": "123412312",
  • "name": "Hitachi XXXX",
  • "phonenumber": "+71231231223",
  • "phonenumber2": "+34324343443",
  • "sensors": [
    ],
  • "services": [ ],
  • "terminal_type": {
    },
  • "trailers": [
    ],
  • "type": {
    }
}

Группы объектов

/unitsgroup?ids=:ids

Получение групп объектов


Параметр 'ids' опциональный - в случае его отсутствия получим все группы по текущей активной компании.

Если в параметре ids указаны конкретные id групп (через запятую), то получим только их.


Роль: Читатель и выше.


Пример ответа:

[ 
   { 
      "id":"1a48c7d0-8ca7-4790-b001-7cc92075dabe",
      "company_id":"11111111-1111-1111-1111-111111111111",
      "name":"testGroup",
      "units":[ 
         { 
            "id":"ccea7542-6016-4e77-b61b-31e957300de6",
            "company_id":"11111111-1111-1111-1111-111111111111",
            "name":"testName-0",
            "type":{ 
               "key":"farm_equipment",
               "type":"unit_type",
               "value":"Сельхозтехника"
            },
            "terminal_type":{ 
               "key":"navtelecom",
               "type":"terminal_type",
               "value":"navtelecom"
            },
            "imei":"4690f00d-64a6-4326-95dd-acf64bbf02d9",
            "phonenumber":"8(914)3333333",
            "icon":{ 
               "key":"school-bus_orange",
               "type":"unit_icon",
               "value":"иконка"
            },
            "services":[ 
            ],
            "sensors":[ 
            ],
            "custom_fields":[ 
               { 
                  "key":"limit",
                  "value":"123"
               },
               { 
                  "key":"power",
                  "value":"123w"
               }
            ]
         },
         { 
            "id":"df2415f9-7533-436e-9f93-78dbeacd8e29",
            "company_id":"11111111-1111-1111-1111-111111111111",
            "name":"testName-1",
            "type":{ 
               "key":"farm_equipment",
               "type":"unit_type",
               "value":"Сельхозтехника"
            },
            "terminal_type":{ 
               "key":"navtelecom",
               "type":"terminal_type",
               "value":"navtelecom"
            },
            "imei":"225abdec-9f2d-4b98-89c7-a83993f97beb",
            "phonenumber":"8(914)3333333",
            "icon":{ 
               "key":"school-bus_orange",
               "type":"unit_icon",
               "value":"иконка"
            },
            "services":[ 
            ],
            "sensors":[ 
            ],
            "custom_fields":[ 
               { 
                  "key":"limit",
                  "value":"123"
               },
               { 
                  "key":"power",
                  "value":"123w"
               }
            ]
         }
      ]
   }
]
query Parameters
ids
string
Example: ids=

Responses

/unitsgroup

Создание группы


Параметры:

"name" - Имя группы. НЕ МОЖЕТ быть пустым или отсутствовать!
"units" - Массив существующих объектов, достаточно передать только id. Может быть пустым, либо вообще отсутствовать.
hide_in_lists, true если нужно "Скрыть в списках"

all_units_included, true если это группа Все объекты в которую автоматически попадают все создаваемые и копируемые объекты


Роль: Редактор и выше.


Пример запроса:

{
    "name": "testGroup", // 
    "units": [             // Массив существующих id объектов
        {
            "id": "286e35d1-0d2e-481a-89b7-91755aabef54"
        },
        {
            "id": "abdb4866-1128-489d-8a2f-179533fd5971"
        }
    ]
}

Пример ответа:

{ 
   "id":"b6d098f8-dd71-48e0-b812-8460eadf7b2e",
   "company_id":"11111111-1111-1111-1111-111111111111",
   "name":"testGroup",
   "units":[ 
      { 
         "id":"2ecbc434-c05c-4e8b-9905-ffa554fd18e0",
         "company_id":"11111111-1111-1111-1111-111111111111",
         "name":"testName-0",
      },
      { 
         "id":"8e42b82c-62bf-4678-b26e-b0636c9d7e66",
         "company_id":"11111111-1111-1111-1111-111111111111",
         "name":"testName-1"
      }
   ],
}
Request Body schema: application/json
name
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "testGroup",
  • "units": [
    ]
}

/unitsgroup?ids=:ids

Планирование удаления группы объектов


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/unitsgroup/list

Получение списка групп


Аналогично запросу POST /users/list


Запрос:

В fields указать нужные поля.


Роль: Редактор и выше.


Ответ:

"id"- Id группы

"name" - Имя группы.
"units" - Массив объектов в группе
"users" - Массив пользователей имеющий доступ в эту группу. Пустой, если группа не общедоступна внутри компании


Пример запроса:

{"fields":["id","name","units.id","units.name","users.id","units.imei"]}

Пример ответа:

{
    "max": 2,
    "list": [
        {
            "id": "c6608022-7d69-4531-b8c5-190afc4aade1",
            "name": "Группа1",
            "units": [
                {
                    "id": "b1c87520-e0b0-469f-baf7-4ec446679867",
                    "name": "Ford Р024РХ790",
                    "imei": "866854052110916"
                },
                {
                    "id": "c5f41d3c-4388-47bc-b7d0-928415591218",
                    "name": "МАЗ 606 TTA 03",
                    "imei": "8628430418651631"
                },
                {
                    "id": "cdac02c5-ac08-46bd-968d-91da19732784",
                    "name": "IVECO 606 TВA 0323",
                    "imei": "862843041865163"
                }
            ],
            "users": [
                {
                    "id": "ec8dc446-f72e-4524-88be-2980c960706a"
                },
                {
                    "id": "202cf740-d05d-4661-aaa9-c80e6a38c09a"
                },
                {
                    "id": "c9bb3e9c-d02d-4ead-930b-2dd174da2f11"
                }
            ]
        },
        {
            "id": "3dfbed67-c6b1-4a2c-9781-db54f627bad8",
            "name": "Группа2",
            "units": [
                {
                    "id": "8d09c650-d870-4677-9c22-a9977c347e49",
                    "name": "С550ТК799 (#938)",
                    "imei": "866854052154401"
                },
                {
                    "id": "a9f4bd65-f56c-45ab-865f-9c36d04ce2c2",
                    "name": "Ford Р024РХ790",
                    "imei": "866854052110916"
                },
                {
                    "id": "cfb99142-b07e-40ee-97f0-be19a99db46e",
                    "name": "Кран Урал 676 STA 03",
                    "imei": "860906049720870"
                }
            ],
            "users": [
                {
                    "id": "7ddd3ef0-ea36-4000-997e-30a7954fc0bf"
                },
                {
                    "id": "c69be66f-5bad-49cf-bdf6-53983eb9d234"
                },
                {
                    "id": "28500618-ad5d-46d8-8f60-f3534d7af1d2"
                }
            ]
        }
    ]
}
Request Body schema: application/json
name
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "testGroup",
  • "units": [
    ]
}

/unitsgroup/:unitsgroup_id

Изменение группы


Cписок units заменяется полностью.


Роль: Редактор и выше.

path Parameters
unitsgroup_id
required
string
Example:
Request Body schema: application/json
name
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "testGroup",
  • "units": [
    ]
}

/unitsgroup/:unitsgroup_id

Удаление группы


Группа удаляется физически.


Роль: Редактор и выше.


Пример ответа:

пустая строка (при этом response status = 200)
path Parameters
unitsgroup_id
required
string
Example:

Responses

Смены

API по работе со сменами

/units_drivers?ids=:ids

Поиск смен по ID (через запятую)


Возвращает массив смен.
Если параметр 'ids' пустой (т.е. запрос = 'GET /units_drivers', без параметра), то вернётся список всех связей всех компаний пользователя, из которого исключаются удаленные связи. Если ids не пустой (т.е. запрос = 'GET /units_drivers?ids=00215-54021..,25541-454754-4513..'), то вернётся список только из запрошенных связей.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретная смена.


Роль: Читатель и выше.


Пример запроса:

/units_drivers?ids=da47b5da-d030-44f0-acc4-a43107dbb090

Пример ответа:

{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "unit": {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "user": {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2020-10-01 10:00:00",
    "date_to": "2020-11-01 18:00:00"
}
query Parameters
ids
string
Example: ids=

Responses

/units_drivers

Создание смены


Параметры:

"unit": {"id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"} указать ID объекта в unit.id, обязательно
"user": {"id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"}, указать ID водителя(пользователя) в user.id, необязательно
"date_from": "2020-10-01 10:00:00", дата и время от, обязательно
"date_to": "2020-11-01 18:00:00", дата и время до, не обязательно
"custom_fields": [ // пользовательские доп поля: // смотри GET /custom_fields
    {"name": "цвет", 'key': 'цвет', "value": "синий"},
    {"name": "масса", "key": "масса", "value": "20 т"}
]


Роль: Редактор и выше.


Пример запроса:

{
    "unit" : {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "user" : {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2020-10-01 10:00:00",
    "date_to": "2020-11-01 18:00:00",
    "custom_fields": [
    {"name": "цвет", 'key': 'цвет', "value": "синый"},
    {"name": "масса", "key": "масса", "value": "20 т"}
    ]
}

Пример ответа:

Возвращается созданная смена

{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "unit": {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "user": {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2020-10-01 10:00:00",
    "date_to": "2020-11-01 18:00:00",
    "custom_fields": [
    {"name": "цвет", 'key': 'цвет', "value": "синый"},
    {"name": "масса", "key": "масса", "value": "20 т"}
    ]
}
Request Body schema: application/json
date_from
string
date_to
string
object
object

Responses

Request samples

Content type
application/json
{
  • "date_from": "2020-10-01 10:00:00",
  • "date_to": "2020-11-01 18:00:00",
  • "unit": {
    },
  • "user": {
    }
}

/units_drivers?ids=:ids

Планирование удаления связи объект-водитель


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/units_drivers_bulk

Создание нескольких смен


Параметры:

"unit": {"id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"} указать ID объекта в unit.id, обязательно
"user": {"id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"}, указать ID водителя(пользователя) в user.id, необязательно
"dates" : [
    {
        "date_from": "2021-02-01 18:00:00",
        "date_to": "2021-02-02 04:00:00"
    },
    {
        "date_from": "2021-02-03 18:00:00",
        "date_to": "2021-02-04 04:00:00"
    },
    {
        "date_from": "2021-02-10 18:00:00",
        "date_to": "2021-02-11 04:00:00"
    }
] // даты и время смены, date_from -  начала, date_to - окончания
"custom_fields": [ // пользовательские доп поля: // смотри GET /custom_fields
    {"name": "цвет", 'key': 'цвет', "value": "синый"},
    {"name": "масса", "key": "масса", "value": "20 т"}
]

Роль: Редактор и выше.


Пример запроса:

{
    "unit" : {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "user" : {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2020-10-01 10:00:00",
    "date_to": "2020-11-01 18:00:00",
    "dates" : [
        {
            "date_from": "2021-02-01 18:00:00",
            "date_to": "2021-02-02 04:00:00"
        },
        {
            "date_from": "2021-02-03 09:00:00",
            "date_to": "2021-02-03 18:00:00"
        }
    ]
    "custom_fields": [
    {"name": "цвет", 'key': 'цвет', "value": "синый"},
    {"name": "масса", "key": "масса", "value": "20 т"}
    ]
}

Пример ответа:

Возвращается созданные смены в виде массива - одна запись для каждой даты.

[
{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "unit": {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "user": {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2021-02-01 18:00:00",
    "date_to": "2021-02-02 04:00:00",
    "custom_fields": [
    {"name": "цвет", 'key': 'цвет', "value": "синый"},
    {"name": "масса", "key": "масса", "value": "20 т"}
    ]
},
{
    "id": "ed47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "unit": {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "user": {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2021-02-03 09:00:00",
    "date_to": "2021-02-03 18:00:00",
    "custom_fields": [
    {"name": "цвет", 'key': 'цвет', "value": "синый"},
    {"name": "масса", "key": "масса", "value": "20 т"}
    ]
}
]
Request Body schema: application/json
date_from
string
date_to
string
object
object

Responses

Request samples

Content type
application/json
{
  • "date_from": "2020-10-01 10:00:00",
  • "date_to": "2020-11-01 18:00:00",
  • "unit": {
    },
  • "user": {
    }
}

/units_drivers/:id

Обновить данные смены


Обновляет переданные параметры


Параметры:

см метод POST /units_drivers


Роль: Редактор и выше.


Ответ:

Аналогичен одному объекту из ответа метода GET /units_drivers?ids=:id

path Parameters
id
required
string
Example:

ID смены

Request Body schema: application/json
company_id
string
date_from
string
date_to
string
id
string
object
object

Responses

Request samples

Content type
application/json
{
  • "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
  • "date_from": "2020-10-01 10:00:00",
  • "date_to": "2020-11-01 18:00:00",
  • "id": "62184dd3-38c0-4476-a549-cc371199eb27",
  • "unit": {
    },
  • "user": {
    }
}

/units_drivers/:id

Удаление смены по ее id


Параметры:

id смены


Роль: Редактор и выше.


Ответ: 200

Если смена с таким id не найдена, то возвращается ошибка 422

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID смены

Responses

/units_drivers/list

Получить смены по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[date_from, date_to, created, is_delete]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - unit.id, user.id, date_from, date_to
Если использованы date_from, date_to тогда выбирается смены которые пересекаются с [date_from, date_to] интервалом.


Пример запроса:

Получить первые 10 смен, отсортированные по возрастанию даты начала, связанные с объектом с ID 7e1aaba2-625a-4a4c-b765-9934bec5a096 и в октябре 2020 года

{
    "from": 0,
    "count": 10,
    "sortField": "date_from",
    "sortDesc": "false",
    "conditions": [
        {
            "field": "unit.id",
            "value": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
        },
        {
            "field": "date_from",
            "value": "2020-10-01 00:00:00"
        },
        {
            "field": "date_to",
            "value": "2020-11-01 00:00:00"
        }
    ]
}

Ответ:

{
    "max": 2,
    "list": [
        {
            "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "user": {
                "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
            },
            "date_from": "2020-09-05 10:00:00",
            "date_to": "2020-10-05 18:00:00"
        },
        {
            "id": "d604452b-9e9d-4e01-817d-b0d391138569",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "user": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-10-15 10:00:00",
            "date_to": "2020-11-21 18:00:00"
        }
    ]
}

Еще один пример запроса:

Получить первые 10 смен, отсортированные по возрастанию даты окончания по убыванию, связанные с водителем (пользователь) с ID 22ae4a3c-f742-460c-9479-63f08c81b5c3

{
    "from": 0,
    "count": 10,
    "sortField": "date_to",
    "sortDesc": "true",
    "conditions": [
        {
            "field": "user.id",
            "value": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
        }
    ]
}

Ответ:

{
    "max": 3,
    "list": [
        {
            "id": "f9c60641-0393-4345-aa2a-aadb869db3c9",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "cc1c4c33-5895-4fec-9295-020ffcee9372"
            },
            "user": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2021-01-01 10:00:00"
        },
        {
            "id": "d604452b-9e9d-4e01-817d-b0d391138569",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "user": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-11-01 10:00:00",
            "date_to": "2020-12-01 18:00:00"
        },
        {
            "id": "5acc2fd1-e63a-4c10-95d0-22eaf59439ae",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "cc1c4c33-5895-4fec-9295-020ffcee9372"
            },
            "user": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-09-01 10:00:00",
            "date_to": "2020-10-01 18:00:00"
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number
sortDesc
string
sortField
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 10,
  • "from": 0,
  • "sortDesc": "false",
  • "sortField": "date_from"
}

Прицепы объектов

API по работе со связью прицепов и объектов

/units_trailers

Связать объект и прицеп на определенный период


Параметры:

"unit": {"id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"} указать ID объекта в unit.id, обязательно
"trailer": {"id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"}, указать ID прицепа в trailer.id, обязательно
"date_from": "2020-10-01 10:00:00", дата и время от, обязательно
"date_to": "2020-11-01 18:00:00", дата и время до, необязательно,
"min_speed": 1.5, Мин. скорость в км/ч, необязательно,
"max_speed": 10.5, Макс. скорость в км/ч, необязательно,
"work_type": "Обработка поля" Тип работ, необязательно,

Роль: Редактор и выше.


Пример запроса:

{
    "unit" : {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "trailer" : {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2020-10-01 10:00:00",
    "date_to": "2020-11-01 18:00:00",
    "min_speed": 1.5,
    "max_speed": 10.5,
    "work_type": "Обработка поля"
}

Пример ответа:

Возвращается созданная связь

{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "unit": {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "trailer": {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2020-10-01 10:00:00",
    "date_to": "2020-11-01 18:00:00",
    "min_speed": 1.5,
    "max_speed": 10.5,
    "work_type": "Обработка поля"
}
Request Body schema: application/json
date_from
string
date_to
string
object
object

Responses

Request samples

Content type
application/json
{
  • "date_from": "2020-10-01 10:00:00",
  • "date_to": "2020-11-01 18:00:00",
  • "trailer": {
    },
  • "unit": {
    }
}

/units_trailers?ids=:ids

Планирование удаления связи прицепы-объекты


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/units_trailers?ids=:ids

Поиск связей по ID (через запятую)


Возвращает массив связей объектов и прицепов.
Если параметр 'ids' пустой (т.е. запрос = 'GET /units_trailers', без параметра), то вернётся список всех связей всех компаний пользователей, из которого исключаются удаленные связи. Если ids не пустой (т.е. запрос = 'GET /trailers?ids=00215-54021..,25541-454754-4513..'), то вернётся список только из запрошенных связей.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретная связь.


Роль: Читатель и выше.


Пример запроса:

/units_trailers?ids=da47b5da-d030-44f0-acc4-a43107dbb090

Пример ответа:

{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "unit": {
        "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
    },
    "trailer": {
        "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
    },
    "date_from": "2020-10-01 10:00:00",
    "date_to": "2020-11-01 18:00:00",
    "min_speed": 1.5,
    "max_speed": 10.5,
    "work_type": "Обработка поля"
}
query Parameters
ids
string
Example: ids=

Responses

/units_trailers/:id

Обновить данные связи


Обновляет переданные параметры


Параметры:

см метод POST /units_trailers


Роль: Редактор и выше.


Ответ:

Аналогичен одному объекту из ответа метода GET /units_trailers?ids=:id

path Parameters
id
required
string
Example:

ID связи

Request Body schema: application/json
company_id
string
date_from
string
date_to
string
id
string
object
object

Responses

Request samples

Content type
application/json
{
  • "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
  • "date_from": "2020-10-05 10:00:00",
  • "date_to": "2020-11-05 18:00:00",
  • "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
  • "trailer": {
    },
  • "unit": {
    }
}

/units_trailers/:id

Удаление связи по его ID


Параметры:

id связи


Роль: Редактор и выше.


Ответ:

200

Если связь с таким id не найдена, то возвращается ошибка 422

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID связи

Responses

/units_trailes/list

Получить связи объектов и прицепов по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[date_from, date_to, created, is_delete]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - unit.id, trailer.id


Пример запроса:

Получить первые 10 связей, отсортированные по возрастанию даты начала, связанные с объектом с ID 7e1aaba2-625a-4a4c-b765-9934bec5a096

{
    "from": 0,
    "count": 10,
    "sortField": "date_from",
    "sortDesc": "false",
    "conditions": [
        {
            "field": "unit.id",
            "value": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
        }
    ]
}

Ответ:

{
    "max": 2,
    "list": [
        {
            "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "trailer": {
                "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
            },
            "date_from": "2020-10-05 10:00:00",
            "date_to": "2020-11-05 18:00:00"
        },
        {
            "id": "d604452b-9e9d-4e01-817d-b0d391138569",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "trailer": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-11-01 10:00:00",
            "date_to": "2020-12-01 18:00:00",
             "min_speed": 1.5,
            "max_speed": 10.5,
            "work_type": "Обработка поля"
        }
    ]
}

Еще один пример запроса:

Получить первые 10 связей, отсортированные по возрастанию даты окончания, по убыванию, связанные с прицепом с ID 22ae4a3c-f742-460c-9479-63f08c81b5c3

{
    "from": 0,
    "count": 10,
    "sortField": "date_to",
    "sortDesc": "true",
    "conditions": [
        {
            "field": "trailer.id",
            "value": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
        }
    ]
}

Ответ:

{
    "max": 3,
    "list": [
        {
            "id": "f9c60641-0393-4345-aa2a-aadb869db3c9",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "cc1c4c33-5895-4fec-9295-020ffcee9372"
            },
            "trailer": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2021-01-01 10:00:00"
        },
        {
            "id": "d604452b-9e9d-4e01-817d-b0d391138569",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "trailer": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-11-01 10:00:00",
            "date_to": "2020-12-01 18:00:00"
        },
        {
            "id": "5acc2fd1-e63a-4c10-95d0-22eaf59439ae",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "cc1c4c33-5895-4fec-9295-020ffcee9372"
            },
            "trailer": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-09-01 10:00:00",
            "date_to": "2020-10-01 18:00:00"
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number
sortDesc
string
sortField
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 11,
  • "from": 0,
  • "sortDesc": "false",
  • "sortField": "date_from"
}

Состояния объекта

Архив состояний объекта

/units_states/:unit_id

Получение состояний объекта


Параметр запроса unit_id - ID объекта

Запрос без тела


Пример запроса:

GET /units_states/897c7708-6758-4da0-92f7-208d8caa2f07


Пример ответа:

В ответ приходят все состояния объекта в порядке убывания даты (date_from).

Поля:

id - ID состояния.

name - имя состояния.

date_from - дата состояния.

state_unit - Короткая информация об объекте в этом состоянии, имеет следующие поля:

id - объекта. При нажатии на редактирование необходимо открыть объект по этому ID.

terminal_type - тип терминала

imei - IMEI

[
    {
        "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
        "name": "Терминал Navtelecom",
        "date_from": "2022-10-09",
        "state_unit": {
            "id": "897c7708-6758-4da0-92f7-208d8caa2f07",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    },
    {
        "id": "57814be3-d38f-4540-b155-184204a0fe27",
        "name": "Начальное состояние",
        "date_from": "2020-12-09",
        "state_unit": {
            "id": "9d34e736-4565-4d1c-b83f-fab119b44e6f",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    }
]
path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units_states/:unit_id

Добавление нового состояния объекта


Параметр запроса unit_id - ID объекта

Тело запроса JSON:

name - название состояния, обязательная строка.

from_date - дата состояния, обязательное в формате yyyy-MM-dd.


Роль: Редактор и выше.


Пример запроса:

POST /units_states/897c7708-6758-4da0-92f7-208d8caa2f07

{
    "name": "Терминал Navtelecom",
    "date_from": "2022-10-09"
}

Пример ответа:

В ответ приходят все состояния объекта, как в запросе GET /units_states/:unit_id

[
    {
        "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
        "name": "Терминал Navtelecom",
        "date_from": "2022-10-09",
        "state_unit": {
            "id": "897c7708-6758-4da0-92f7-208d8caa2f07",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    },
    {
        "id": "57814be3-d38f-4540-b155-184204a0fe27",
        "name": "Начальное состояние",
        "date_from": "2020-12-09",
        "state_unit": {
            "id": "9d34e736-4565-4d1c-b83f-fab119b44e6f",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    }
]
path Parameters
unit_id
required
string
Example:

ID объекта

Responses

/units_states/:id

Обновление состояния объекта


Параметр запроса id - ID состояния

Тело запроса JSON:

name - название состояния, обязательная строка.

from_date - дата состояния, обязательное в формате yyyy-MM-dd


Роль: Редактор и выше.


Пример запроса:

PUT /units_states/fab2f033-15de-46a4-ad7b-5ae422c0c9a2

{
    "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
    "name": "Терминал Gelileo",
    "date_from": "2022-10-10"
}

Пример ответа:

В ответ приходят все состояния объекта, как в запросе GET /units_states/:unit_id

[
    {
        "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
        "name": "Терминал Gelileo",
        "date_from": "2022-10-10",
        "state_unit": {
            "id": "04e234d4-1a35-402b-ad4b-16d0969e389e",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    },
    {
        "id": "57814be3-d38f-4540-b155-184204a0fe27",
        "name": "Начальное состояние",
        "date_from": "2020-12-09",
        "state_unit": {
            "id": "9d34e736-4565-4d1c-b83f-fab119b44e6f",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    }
]
path Parameters
id
required
string
Example:

ID состояния

Request Body schema: application/json
date_from
string
id
string
name
string

Responses

Request samples

Content type
application/json
{
  • "date_from": "2022-10-10",
  • "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
  • "name": "Терминал Gelileo"
}

/units_states/:id

Удаление состояния объекта


Параметр запроса id - ID состояния


Пример запроса:

DELETE /units_states/fab2f033-15de-46a4-ad7b-5ae422c0c9a2


Роль: Редактор и выше.


Пример ответа:

В ответ приходят все состояния объекта, как в запросе GET /units_states/:unit_id

[
    {
        "id": "57814be3-d38f-4540-b155-184204a0fe27",
        "name": "Начальное состояние",
        "date_from": "2020-12-09",
        "state_unit": {
            "id": "9d34e736-4565-4d1c-b83f-fab119b44e6f",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    }
]
path Parameters
id
required
string
Example:

ID состояния

Request Body schema: application/json
date_from
string
id
string
name
string

Responses

Request samples

Content type
application/json
{
  • "date_from": "2022-10-10",
  • "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
  • "name": "Терминал Gelileo"
}

/units_states/:id/copy

Копирование состояния объекта


Параметр запроса id - ID состояния

Без тела запроса.


Роль: Редактор и выше.


Пример запроса:

POST /units_states/fab2f033-15de-46a4-ad7b-5ae422c0c9a2/copy


Пример ответа:

В ответ приходят все состояния объекта, как в запросе GET /units_states/:unit_id

[
    {
        "id": "5ec2659e-b05d-4907-9d6c-2ae595e361f0",
        "name": "Копия: Начальное состояние",
        "date_from": "2024-01-18",
        "state_unit": {
            "id": "04e234d4-1a35-402b-ad4b-16d0969e389e",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    },
    {
        "id": "57814be3-d38f-4540-b155-184204a0fe27",
        "name": "Начальное состояние",
        "date_from": "2020-12-09",
        "state_unit": {
            "id": "0efe7ee0-4748-4f9c-a1b6-0d7c70afa628",
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "imei": "862273040906299"
        }
    }
]
path Parameters
id
required
string
Example:

ID состояния

Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/units_states_count

Получение количества состояний объектов в группе на интервале


Тела запроса JSON:

from - дата и время начала интервала.

to - дата и время окончания интервала.

groups - группа объектов.


Пример запроса:

{
    "from": "2022-10-10 00:00:00",
    "to": "2024-11-10 00:00:00",
    "groups": [
        {"id": "6c39623d-9d91-45c6-8754-aba1de05ea5e"}
    ]
}

Пример ответа:

Возвращается JSON массив в формате элементов :<количество состояний>

[
    {
        "216ee2cf-38d8-4ecc-a08f-c111a61ddf61": 4
    },
    {
        "20470514-e2b9-49b9-9470-e2a34cf8c1b4": 1
    }
]
Request Body schema: application/json
from
string
Array of objects
to
string

Responses

Request samples

Content type
application/json
{
  • "from": "2022-10-10 00:00:00",
  • "groups": [
    ],
  • "to": "2024-11-10 00:00:00"
}

Прицепы

API по работе с Прицепами

/trailers?ids=:ids

Поиск прицепов по ID (через запятую)


Возвращает массив прицепов.
Если параметр 'ids' пустой (т.е. запрос = 'GET /trailers', без параметра), то вернётся список всех прицепов по всем компаниям пользователя, из которого исключаются удаленные прицепы.

Если ids не пустой (т.е. запрос = 'GET /trailers?ids=00215-54021..,25541-454754-4513..'), то вернётся список только из запрошенных прицепов.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретный прицеп.


Роль: Читатель и выше.


Пример запроса:

/trailers?ids=7c4253d5-4bc6-4885-bf25-985a75919fb4&

Пример ответа:

{
    "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "name": "Прецеп1",
    "code": "XYZ111222333",
    "description": "Описания прецепа1",
    "width": 2.5,
    "custom_fields": [
        {
            "name": "масса",
            "key": "масса",
            "value": "20 т",
            "group": "custom"
        },
        {
            "name": "цвет",
            "key": "цвет",
            "value": "синый",
            "group": "custom"
        }
    ]
}
query Parameters
ids
string
Example: ids=

Responses

/trailers

Создание прицепа


Параметры:

"name": строка, номер, наименование прецепа,
"code": строка, уникальный код прицепа
"description": строка, описания прицепа
"width": число, ширина прицепа
"custom_fields": [ // пользовательские доп поля: // смотри GET /custom_fields
    {"name": "цвет", 'key': 'цвет', "value": "синый"},
    {"name": "масса", "key": "масса", "value": "20 т"}

Роль: Редактор и выше.


Пример запроса:

{
    "code": "XYZ111222333",
    "name": "Прецеп1",
    "description": "Описания прецепа1",
    "width": 2.5,
    "custom_fields": [
        {
            "name": "масса",
            "key": "масса",
            "value": "20 т"
        },
        {
            "name": "цвет",
            "key": "цвет",
            "value": "синый"
        }
    ]
}

Пример ответа:

Возвращается созданный прицеп

{
    "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "name": "Прецеп1",
    "code": "XYZ111222333",
    "description": "Описания прецепа1",
    "width": 2.5,
    "custom_fields": [
        {
            "name": "масса",
            "key": "масса",
            "value": "20 т",
            "group": "custom"
        },
        {
            "name": "цвет",
            "key": "цвет",
            "value": "синый",
            "group": "custom"
        }
    ]
}
Request Body schema: application/json
code
string
Array of objects
description
string
name
string

Responses

Request samples

Content type
application/json
{
  • "code": "XYZ111222333",
  • "custom_fields": [
    ],
  • "description": "Описания прецепа2",
  • "name": "Прецеп2"
}

/trailers?ids=:ids

Планирование удаления прицепов


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/trailers/:trailer_id

Обновление данных прицепа


Обновляет переданные параметры


Роль: Редактор и выше.


Параметры:

см метод POST /trailers


Ответ:

Аналогичен одному объекту из ответа метода GET /trailers?ids=:trailer_id

path Parameters
trailer_id
required
string
Example:

ID прицепа

Request Body schema: application/json
code
string
company_id
string
Array of objects
description
string
id
string
name
string

Responses

Request samples

Content type
application/json
{
  • "code": "XYZ111222333",
  • "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
  • "custom_fields": [
    ],
  • "description": "новая описания прецепа1",
  • "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4",
  • "name": "Прецеп1 новая названия"
}

/trailers/:trailer_id

Удаление прицепа по его id


Параметры:

id прицепа


Роль: Редактор и выше.


Ответ: 200

Если прицеп с таким id не найден возвращается ошибка 422

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
trailer_id
required
string
Example:

ID прицепа

Responses

/trailes/list

Получить прицепы по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[name, created, is_delete]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - name (можно искать по неполному слову), code, description


Роль: Читатель и выше.


Пример запроса:

Получить первые 10 прицепов, отсортированные по возрастанию, по имени, которые имеют ID прицепа 7e1aaba2-625a-4a4c-b765-9934bec5a096

{
    "from": 0,
    "count": 10,
    "sortField": "name",
    "sortDesc": "false",
    "conditions": [
        {
            "field": "name",
            "value": "Прицеп1 новое название"
        }
    ]
}

Ответ:

{
    "max": 1,
    "list": [
        {
            "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "name": "Прицеп1 новое название",
            "code": "XYZ111222333",
            "description": "новое описание прецепа1",
            "width": 2.5,
            "custom_fields": [
                {
                    "name": "масса",
                    "key": "масса",
                    "value": "19 т",
                    "group": "custom"
                },
                {
                    "name": "цвет",
                    "key": "цвет",
                    "value": "красный",
                    "group": "custom"
                },
                {
                    "name": "123",
                    "key": "123",
                    "value": "456",
                    "group": "custom"
                }
            ]
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number
sortDesc
string
sortField
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 10,
  • "from": 0,
  • "sortDesc": "false",
  • "sortField": "name"
}

События

API по работе с событиями

/events?ids=:ids

Поиск событий по ID (через запятую)


Возвращает массив событий.
Если параметр 'ids' пустой (т.е. запрос = 'GET /events', без параметра), то вернётся список всех событий всех компаний пользователя, из которого исключаются удаленные связи. Если ids не пустой (т.е. запрос = 'GET /events?ids=00215-54021..,25541-454754-4513..'), то вернётся список только из запрошенных событий.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретное собитие.


Пример запроса:

/events?ids=da47b5da-d030-44f0-acc4-a43107dbb090

Пример ответа:

{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "datetime": "2020-01-02 12:30:00",
    "type": {"key": "filling"},
    "deviation_minutes": 20,
    "filled": 101.5,
    "price": "3532.7",
    "description": "som details",
    "latitude": 53.343243,
    "longitude": 33.56432
}
query Parameters
ids
string
Example: ids=

Responses

/events

Создание события для объекта


Параметры:

"unit": {"id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"} указать ID объекта в unit.id, обязательно
"type": {"key": "filling"} // ключ типа события. Список типов может быть получен по запросу GET /dictionaries. Необходимо выбрать те записи у которых type=event_type, возможные значения: filling, theft, accident, service, waybill, random
latitude: Координата широты на карте. Вещественное значение
longitude: Координата долготы на карте. Вещественное значение
    latitude и longitude должны выбираться на стороне клиента для всех типов события, кроме "путевые листы" при смене даты с помощью метода POST /point.  
Остальные поля зависят от типа события
1) Заправка - type.key=filling
"datetime": "2020-01-01 12:30:00", обязательное, дата и время события
"deviation_minutes": 100, Отклонение, мин.:  (обязательное) - числовое поле от 0 до 1000
"filled": 30.5 - Заправлено топлива, л:  (обязательное) - числовое поле больше 0
"price": 3050.7 - Стоимость (необязательное): - числовое поле от 0.
"description": "some details", Описание: (необязательное) - текстовое поле
2) Слив - type.key=theft
"datetime": "2020-01-01 12:30:00", Дата время; (Как и в Заправках)
"deviation_minutes": 100, Отклонение, мин.;  (Как и в Заправках)
"stolen": 20.8, Слито топлива, л;  (Как “Заправлено топлива” и в Заправках)
"description": "some details", Описание:  (Как и в Заправках)
3) ДТП - type.key=accident
"datetime": "2020-01-01 12:30:00", Дата время; (Как и в Заправках)
"deviation_minutes": 100, Отклонение, мин.;  (Как и в Заправках)
"description": "some details", Описание:  (Как и в Заправках)
4) Тех. обслуживание - type.key=service
"datetime": "2020-01-01 12:30:00", Дата время; (Как и в Заправках)
"deviation_minutes": 100, Отклонение, мин.;  (Как и в Заправках)
"service_name": "Установка ДУТ", Название сервиса
"motohours": 2345.5, Моточасы, ч: (необязательное) - числовое поле
"millage": 23453.5, Пробег, км: (необязательное) - числовое поле. 
"duration_hours": 3.5, Длительность, ч: (необязательное) - числовое поле. 
"price": 3000.4, Стоимость:  (Как и в Заправках)
"guaranteed": true, Гарантийный(обязательный): true/false.
"description": "some details", Описание:  (Как и в Заправках)
При создании события ТО вызывается метод POST /point для получения координаты. 
Он также возвращает показания датчиков.
Получить моточасы из записи, где group="sensors" и type="abs_motohours". 
А для пробега group="sensors" и type="mileage". 
5) Путевой лист - type.key=waybill
"start_date": "2020-01-03 12:30:00", Начало: дата и времемя (обязательное)
"finish_date": "2020-01-05 18:00:00", Окончание: дата и времемя (обязательное)
"user_id": ID Водителя, (необязатльное) - выбор из списка Пользователей с отметкой водитель
"motohours": 2345.5, Моточасы, ч: (необязательное) - числовое поле
"millage": 23453.5, Пробег, км: (необязательное) - числовое поле.
"filled": 30.5 - Заправлено топлива, л:  (необязательное)
6)Статус ТС - type.key=vehicle_status
"datetime": "2020-01-01 12:30:00", Дата время; (Как и в Заправках)
"type_name": "В гараже", Тип события (обязательное) текстовое поле
"description": "some details", Описание:  (Как и в Заправках
7)Произвольное событие - type.key=random
"datetime": "2020-01-01 12:30:00", Дата время; (Как и в Заправках)
"deviation_minutes": 100, Отклонение, мин.;  (Как и в Заправках)
"type_name": "Повышение скорости", Тип события (обязательное) текстовое поле
"description": "some details", Описание:  (Как и в Заправках)

Роль: Оператор и выше.


Пример запроса:

{
"unit" : {
"id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
},
"datetime": "2020-01-02 12:30:00",
"type": {"key": "filling"},
"deviation_minutes": 20,
"filled": 101.5,
"price": "3532.7",
"description": "som details",
"latitude": 53.343243,
"longitude": 33.56432
}

Пример ответа:

Возвращается созданное событие

{
"id": "da47b5da-d030-44f0-acc4-a43107dbb090",
"company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
"datetime": "2020-01-02 12:30:00",
"type": {"key": "filling"},
"deviation_minutes": 20,
"filled": 101.5,
"price": "3532.7",
"description": "som details",
"latitude": 53.343243,
"longitude": 33.56432
}

К событиям можно добавлять фотографии. Максимальное количество 10 шт. Максимальный размер одной фотографии 10 мб.

Перед отправкой события, фотографии должны быть загружены на сервер.
Загрузить фотографии нужно иcпользуя POST {{base_url}}/upload_photos/events.

В этот запрос нужно положить одно фото в поле file.

Запрос должен быть в формате multipart/form-data

Пример ответа:

Возвращается два поля в JSON small и original.

{
    "small": {
        "url": "/photos/events/fa3357f6-7ff5-4f4a-9840-99eaf3bf1de5_300.png",
        "width": 251,
        "height": 300,
        "param_type": "events"
    },
    "original": {
        "url": "/photos/events/fa3357f6-7ff5-4f4a-9840-99eaf3bf1de5_original.png",
        "width": 628,
        "height": 749,
        "param_type": "events"
    }
}

small - для загрузки изображения в списке.

original - для открытия оригинального фото с большим размером.

Запросить нужное фото можно через роут {{base_url}}://api_v1/{url}.
Все добавленные фотографии необходимо отправлять в поле photos при создании и обновлении события.

Пример запроса:
POST /api_v1/events

{
    "unit": {
        "id": "2bd74bab-8173-4c06-8fd8-ad923d3ad7d3"
    },
    "type": {
        "key": "accident"
    },
    "datetime": "2024-03-19 09:57:58",
    "deviation_minutes": 10,
    "description": "DPT",
    "latitude": 55.6558837890625,
    "longitude": 37.83785629272461,
    "photos": [
        {
            "small": {
                "url": "/photos/events/5e65cfe3-31e3-4bee-83ea-b7bf23ad6bd6_300.jpeg",
                "width": 300,
                "height": 200,
                "param_type": "events"
            },
            "original": {
                "url": "/photos/events/5e65cfe3-31e3-4bee-83ea-b7bf23ad6bd6_original.jpeg",
                "width": 5184,
                "height": 3456,
                "param_type": "events"
            }
        },
        {
            "small": {
                "url": "/photos/events/fa3357f6-7ff5-4f4a-9840-99eaf3bf1de5_300.png",
                "width": 251,
                "height": 300,
                "param_type": "events"
            },
            "original": {
                "url": "/photos/events/fa3357f6-7ff5-4f4a-9840-99eaf3bf1de5_original.png",
                "width": 628,
                "height": 749,
                "param_type": "events"
            }
        }
    ]
}
Request Body schema: application/json
datetime
string
deviation_minutes
number
filled
number
object
object

Responses

Request samples

Content type
application/json
{
  • "datetime": "2020-01-02 12:30:00",
  • "deviation_minutes": 20,
  • "filled": 101.5,
  • "type": {
    },
  • "unit": {
    }
}

/events?ids=:ids

Планирование удаления события


см. DELETE /units?ids=:ids


Роль: Оператор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/events/:id

Обновление данных события


Обновляет переданные параметры


Параметры:

см метод POST /events


Роль: Оператор и выше.


Ответ:

Аналогичен одному событию из ответа метода GET /events?ids=:id

path Parameters
id
required
string
Example:

ID события

Request Body schema: application/json
company_id
string
datetime
string
deviation_minutes
number
filled
number
id
string
object
object

Responses

Request samples

Content type
application/json
{
  • "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
  • "datetime": "2020-01-02 12:30:00",
  • "deviation_minutes": 20,
  • "filled": 102.5,
  • "id": "b193f468-f0cf-4551-ad0a-8615f1f0dd7a",
  • "type": {
    },
  • "unit": {
    }
}

/events/:id

Удаление события по его id


Параметры:

id события


Роль: Оператор и выше.


Ответ: 200

Если событие с таким id не найдено, то возвращается ошибка 422

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID события

Responses

/events/list

Получить события по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[type.key, unit.id]

sortDesc - сортировка по убыванию? значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - unit.id, type.key


Пример запроса:

Получить первые 10 событий от 2020-01-01 00:00:00 до 2020-01-10 00:00:00, отсортированные по возрастанию type.key, для объекта с ID 7e1aaba2-625a-4a4c-b765-9934bec5a096

{
    "from": 0,
    "count": 10,
    "sortField": "type.key",
    "sortDesc": "false",
    "conditions": [
        {
            "field": "unit.id",
            "value": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
        },
        {
            "field": "date_from",
            "value": "2020-01-01 00:00:00"
        },
         {
            "field": "date_to",
            "value": "2020-01-10 00:00:00"
        }
    ]
}

Ответ:

{
    "max": 2,
    "list": [
        {
            "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
           "type": {
                "key": "filling"
            },
            "datetime": "2020-01-02 12:30:00",
            "deviation_minutes": 20,
            "filled": 102.5
        },
        {
            "id": "d604452b-9e9d-4e01-817d-b0d391138569",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
           "type": {
                "key": "filling"
            },
            "datetime": "2020-01-03 14:10:00",
            "deviation_minutes": 20,
            "filled": 101.5
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 10,
  • "from": 0
}

/events/service_names

Получение всех названий ТО при создании события

Воозврашает Осмотр, Замена терминала, Установка ДУТ, Замена ДУТ, Калибровка ДУТ и новые введенные сервисы внутри компании

Пример ответа:

[
    "Осмотр",
    "Замена терминала",
    "Установка ДУТ",
    "Замена ДУТ",
    "Калибровка ДУТ",
    "21",
    "Terminal replacement",
    "Замена ремня ГРМ",
    "Новый сервмс",
    "Пищевая заправка",
    "Предыдущий сервис",
]

Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

Мониторинг

/messages

Получение изменений в справочниках


Используется один вебсокет для получения следующих данных:

  1. Последнего сообщения от объекта

  2. Уведомлений за последние сутки

  3. Новых уведомлений

  4. Изменения справочников

Если сервер использует протокол HTTP, то вебсокет должен работать по протоколу WS. Аналогично, если сервер использует HTTPS, то вебсокет должен работать по протоколу WSS.

Можно также передать параметр ?from_time=1628259485000, где значение — это метка времени в формате Unix (в часовом поясе пользователя). Это нужно, если вы хотите получить данные, начиная с определённого момента времени. Например, если у вас уже есть закэшированные данные на клиенте, и вы хотите получить только новые сообщения, начиная с этого времени.

Примеры:

  1. Последнего сообщения от объекта
[
    {
        "columns": [
            {
                "key": "unit_name",
                "name": "Имя",
                "value": "336024861",
                "group": "main"
            },
            {
                "key": "datepoint",
                "name": "Был на связи",
                "value": "2023-11-26 05:34:13",
                "group": "main"
            },
            {
                "key": "_datepoint",
                "name": "_datepoint",
                "value": "2023-11-26 05:34:13",
                "group": "hidden"
            },
            {
                "key": "_unix_timestamp",
                "name": "_unix_timestamp",
                "value": 1700966053,
                "group": "hidden"
            },
            {
                "key": "speed",
                "name": "Скорость",
                "value": 0,
                "group": "gps"
            },
            {
                "key": "satellites",
                "name": "Спутники",
                "value": 17,
                "group": "gps"
            },
            {
                "key": "_angle",
                "name": "Угол",
                "value": 159,
                "group": "hidden"
            },
            {
                "key": "address",
                "name": "Адрес",
                "value": "41.1201 44.8419",
                "group": "gps"
            },
            {
                "key": "_imei",
                "name": "imei",
                "value": "336024861",
                "group": "hidden"
            },
            {
                "key": "_marker_latlon", //координаты, широта и долгота
                "name": "_marker_latlon",
                "value": [
                    41.1200669,
                    44.8419028
                ],
                "group": "hidden"
            }
        ],
        "unit_id": "363771f3-9769-4817-b986-b22ee9f37fdd",
        "unit_name": "336024861",
        "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c"
    }
]
{
    "notify": {
        "time": "2020-10-16 17:03:16", //время изменений
        "objects": "units", //изменяемая сущность - "users", "units", "notifications" и т.д.
        "operation": "PUT", // операция изменения - PUT,POST,DELETE,PATCH
        "id": "9eb8b795-dfb0-46e7-a35d-0fc43512ba66", //id изменяемой сущности
        "msg": "Пользователь Mih обновил объект" //сообщение 
    }
}

Иконки для наглядного отображения состояния датчиков в мониторинге


Добавляется новое поле sensors_settings (массив), если для компании были настроены датчики.

{
    "columns": [
        {
            "key": "unit_name",
            "name": "Имя",
            "value": "Omnicomm 22 336023861",
            "group": "main"
        },
        {
            "key": "datepoint",
            "name": "Был на связи",
            "value": "2025-02-18 15:20:17",
            "group": "main"
        },
        ...
    ],
    "sensors_settings": [
        {
            "name": "Уровень топлива", // Название, по этому значению определяется
            "icon": "icon_fuel_level", // иконка
            "sensor_name": "Топлива",// Название найденного датчика
            "sensor_value": 17, //Значение датчика
            "style_color": "#51AAEB" // Цвет иконки рассчитывается на основе показаний датчика
        }
    ],
    "unit_id": "e037342f-e891-44d7-91b6-354ede0ef629",
    "unit_name": "Omnicomm 22",
    "company_id": "3e70f167-9fad-4753-bуcf-d7d47c2c648c"
}
query Parameters
monitoring_filter
string
Example: monitoring_filter={"conditions":[{"field":"name","value": "Бензовоз"},{"field":"sensors.type.key","value": "ignition"}]}

Responses

/monitoring_extra

Получение дополнительной информации по объекту в мониторинге


В теле запроса в units указать ID объектов.

{
    "units": [
        {"id": "1478c4b7-464e-4f85-b962-afcc124755a2"}
    ]
}

Возращает следующую информацию:
Последнюю поездку - начало, конец, длительность, нач. адрес, кон. адрес.
Последнюю остановку\стоянку - начало, конец, длительность, нач. адрес, кон. адрес.
Последнюю заправку - начало, заправка, кон. адрес.
Последний слив - начало, слив, кон. адрес.

Ответ состоит из нескольких записей, каждое имеет поля key, name, value и columns. Каждый элемент в columns имеет поля key, name и value. Если нет информации, то column пустое.

[
    {
        "key": "last_trip",
        "name": "Последняя поездка",
        "value": "3:48:23",
        "columns": [
            {
                "key": "first_datepoint",
                "name": "Начало",
                "value": "19/11/21 12:05"
            },
            {
                "key": "last_datepoint",
                "name": "Конец",
                "value": "19/11/21 15:54"
            },
            {
                "key": "sum_datepoint",
                "name": "Длит-сть",
                "value": "3:48:23"
            },
            {
                "key": "first_address",
                "name": "Нач. адрес",
                "value": "56.509 67.5143"
            },
            {
                "key": "last_address",
                "name": "Кон. адрес",
                "value": "57.0903 63.8347"
            }
        ]
    },
    {
        "key": "last_stop",
        "name": "Последняя остановка",
        "value": "0:04:54",
        "columns": [
            {
                "key": "first_datepoint",
                "name": "Начало",
                "value": "19/11/21 15:32"
            },
            {
                "key": "last_datepoint",
                "name": "Конец",
                "value": "19/11/21 15:37"
            },
            {
                "key": "sum_datepoint",
                "name": "Длит-сть",
                "value": "0:04:54"
            },
            {
                "key": "last_address",
                "name": "Кон. адрес",
                "value": "57.0992 64.1719"
            }
        ]
    },
    {
        "key": "last_filling",
        "name": "Последняя заправка",
        "value": 186.49,
        "columns": [
            {
                "key": "first_datepoint",
                "name": "Начало",
                "value": "19/11/21 11:56"
            },
            {
                "key": "stucked_fillings",
                "name": "Заправки",
                "value": 186.49
            },
            {
                "key": "last_address",
                "name": "Кон. адрес",
                "value": "56.5107 67.4843"
            }
        ]
    },
    {
        "key": "last_theft",
        "name": "Последний слив",
        "columns": []
    }
]
Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "units": [
    ]
}

Отчеты

/report

Запрос отчета


Запрос отчета содержит следующие параметры:

  • units - массив id объектов, по которым требуется сделать отчет. Если отчет по группам, тогда groups - массив id групп объектов, по которым требуется сделать отчет.
  • template_tables - массив id таблиц. Используется ТОЛЬКО первая таблица.
  • from - время начала отчета в формате yyyy-mm-dd hh:mm:ss
  • to - время конца отчета в формате yyyy-mm-dd hh:mm:ss
  • offset - опционально. Параметр для пагинации. Определяет количество пропущенных строк, начиная с нулевой строки. Если параметр отсутствует в запросе, то по дефолту он равен 0.
  • max - опционально. Параметр для пагинации. Определяет максимальное количество строк, выдаваемое в запросе. Если параметр отсутствует в запросе, то по дефолту он равен значению всех строк, которые удалось сформировать в отчете. (Для графика это количество максимальных точек в графике. Если не приходит или значение больше 5000, тогда по умолчанию выбирается 5000).
  • selected_columns - опционально. Только для графиков или для журналов (отчет с типом chart или journal), иначе просто игнорируется. Определяет набор данных (сырых или датчиков), которые будут возвращены, вместе с данными по датчикам. Выбирается из possible_columns. Например ('selected_columns': [{'key': '1a590afb-bfe5-44cf-8d78-f5137bfbb7ae', 'name': 'Напряжение', 'sensor': true},{'key': 'voltage_main', 'name': 'voltage_main', 'sensor': false}]).
  • only_totals - опционально. Логическое значение. Если параметр отсутствует в запросе, то по дефолту он равен false. Если true, то возвращается только итоговые строки отчета.
  • sortField - опционально. Строка. Ключ поля, по которому нужно сортировать результат.
  • sortDesc - опционально. Логическое значение. True, если нужно сортировать по убыванию.
  • time_group - Группировка по времени, моожно указать hour, day, week, month

Ограничения:

  • Параметры offset и max следует использовать в паре.
  • Параметры sortField и sortDesc следует использовать в паре.
  • Колонки, ключи которых начинаются с "_", являются сервисными и не должны быть видимы на фронте, даже если у них случайно 'is_visible' = true.
    Типы сервисных колонок:
  - '_start_latlon_%ключ отчета%' - начальная координата
  - '_end_latlon_%ключ отчета%' - конечная координата
  - '_start_time_%ключ отчета%' - время начала
  - '_end_time_%ключ отчета%' - время конца
  - '_marker_latlon_%ключ отчета%' - координата маркера
  - '_is_total' - Определяет, является ли строка итоговой. Итоговые строки должны быть выделены жирным шрифтом.

Структура отчета:

"unit_id": id объекта
"unit_name": имя объекта
"report": {
  "name": //название отчета, заданное пользователем, либо, если таблица дефолтная - дефолтное имя
  "default_name": //название дефолтной таблицы, если название таблицы отличается от название дефолтной таблицы.
  "key": //ключ отчета. Ключ не может быть произвольным и, если таблица создана пользователем, всегда должен быть равен ключу дефолтной таблицы, на основе которой таблица создавалась. см. GET /report_templates?ids=:ids
  "possible_columns": [ // список возможных полей, которые можно выбрать в журнале и графике
      {'key': '1a590afb-bfe5-44cf-8d78-f5137bfbb7ae', 'name': 'Напряжение', 'sensor': true},
      {'key': 'voltage_main', 'name': 'voltage_main'},
      {'key': 'angle', 'name': 'angle'},
      {'key': 'byte_in', 'name': 'byte_in'}
  ]
  "columns": [  //тех. информация о колонках отчета
    {
      "key": //тип колонки, определяет уникальность. Ключ заранее задается бэкендом.
      "name": //имя колонки. Задается юзером в таблице перед построением отчета.
      "filter_min": //мин. значение для фильтрации. Значения, не удовлетворяющие фильтру, не используются в построении отчета.
      "filter_max": //мин. значение для фильтрации.
      "sort": //порядковый номер колонки в отчете. Если у колонок совпадает sort, то очередность среди них определяется рандомно.
      "is_visible": //видимость колонки для пользователя.
      "is_searchable": //true, если можно фильтровать по этому полю.
      "is_sortable": //true, если можно сортировать по этому полю.
    }
  ],
  "rows": [ // строки отчета
    {
      "№": 1 //значение колонки, ассоциированное по принципу "columns.key":"value" 
      "unit_name": "ДВД Актобе Уаз 186 КР 04" //значение колонки, ассоциированное по принципу "columns.key":"value"
      "first_datepoint": "2020-01-01 06:07:59" //значение колонки, ассоциированное по принципу "columns.key":"value"
      "last_datepoint": "2020-01-02 14:01:50" //значение колонки, ассоциированное по принципу "columns.key":"value"
      "_is_total": false //данное значение является сервисным.
    }
  ],
  "max_rows": Общее количество строк отчета, которое было построено. Необходимо для пагинации. А для графика - это количество максимальных точек в терминале в указанном интервале времени запроса.

Про дефолтные таблицы можно почитать здесь GET /report_templates?ids=:ids


Пример запроса:

{  
    'units': [{'id': '712ceae4-f112-4714-9a4d-afe141e47bf7'}],
    'template_tables': [{'id': '275c6ee8-2933-4dd3-8adf-9544e26bf98a'}],
    'from': '2020-01-01 00:00:00',
    'to': '2020-01-06 00:00:00',
    'offset': 0,
    'max': 50
}

Пример запроса с фильтром и сортировкой отчета:

{
  "units": [
    {
      "id": "712ceae4-f112-4714-9a4d-afe141e47bf7"
    }
  ],
  "template_tables": [
    {
      "id": "275c6ee8-2933-4dd3-8adf-9544e26bf98a"
    }
  ],
  "from": "2020-01-01 00:00:00",
  "to": "2020-01-06 00:00:00",
  "offset": 0,
  "max": 50,
  "sortField": "first_datepoint",
  "sortDesc": true,
  "conditions": [
    {
      "field": "sum_fillings",
      "value": "100",
      "operator": "ge"
    }
  ]
}

Пример ответа:

{
      "unit_id": "712ceae4-f112-4714-9a4d-afe141e47bf7",
      "unit_name": "ДВД Актобе Уаз 186 КР 04",
      "report": {
        "name": "Cтоянки",
        "key": "stays",
        "columns": [
          {
            "key": "№",
            "name": "№",
            "filter_min": 0,
            "filter_max": 0,
            "sort": 0,
            "is_visible": true
          },
          {
            "key": "unit_name",
            "name": "Имя объекта",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 1,
            "is_visible": true
          },
          {
            "key": "first_datepoint",
            "name": "Начало",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 2,
            "is_visible": true
          },
          {
            "key": "last_datepoint",
            "name": "Конец",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 3,
            "is_visible": true
          },
          {
            "key": "sum_datepoint",
            "name": "Длительность",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 4,
            "is_visible": true
          },
          {
            "key": "first_fillings_fuel",
            "name": "first_fillings",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 5,
            "is_visible": true
          },
          {
            "key": "last_address",
            "name": "Конечный адрес",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 6,
            "is_visible": true
          },
          {
            "key": "finish_fillings_fuel",
            "name": "finish_fillings",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 7,
            "is_visible": true
          },
          {
            "key": "stucked_fillings_fuel",
            "name": "stucked_fillings",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 8,
            "is_visible": true
          },
          {
            "key": "count_point",
            "name": "Кол-во сообщений",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 10,
            "is_visible": true
          },
          {
            "key": "sum_fillings_fuel",
            "name": "расход",
            "filter_min": 0,
            "filter_max": 1000,
            "sort": 13,
            "is_visible": true
          },
          {
            "key": "_is_total",
            "name": "_is_total",
            "filter_min": 0,
            "filter_max": 0,
            "sort": 99999,
            "is_visible": false
          }
        ],
        "rows": [
          {
            "№": 1,
            "unit_name": "ДВД Актобе Уаз 186 КР 04",
            "first_datepoint": "2020-01-01 06:07:59",
            "last_datepoint": "2020-01-01 08:45:58",
            "sum_datepoint": "2:37:59",
            "first_fillings_fuel": 263.61,
            "last_address": "[lat: 52.984060, lon: 63.235077]",
            "finish_fillings_fuel": 243.13,
            "stucked_fillings_fuel": 0,
            "count_point": 765,
            "sum_fillings_fuel": 20.48,
            "_is_total": false
          },
          {
            "№": 2,
            "unit_name": "ДВД Актобе Уаз 186 КР 04",
            "first_datepoint": "2020-01-01 08:47:39",
            "last_datepoint": "2020-01-01 16:52:38",
            "sum_datepoint": "8:04:59",
            "first_fillings_fuel": 243.15,
            "last_address": "[lat: 52.983917, lon: 63.235310]",
            "finish_fillings_fuel": 236.74,
            "stucked_fillings_fuel": 0,
            "count_point": 77,
            "sum_fillings_fuel": 6.41,
            "_is_total": false
          },
          {
            "№": 3,
            "unit_name": "ДВД Актобе Уаз 186 КР 04",
            "first_datepoint": "2020-01-01 16:59:20",
            "last_datepoint": "2020-01-01 17:16:10",
            "sum_datepoint": "0:16:50",
            "first_fillings_fuel": 234.81,
            "last_address": "[lat: 52.982044, lon: 63.230095]",
            "finish_fillings_fuel": 234.2,
            "stucked_fillings_fuel": 0,
            "count_point": 13,
            "sum_fillings_fuel": 0.61,
            "_is_total": false
          },
          {
            "№": 4,
            "unit_name": "ДВД Актобе Уаз 186 КР 04",
            "first_datepoint": "2020-01-01 18:47:38",
            "last_datepoint": "2020-01-02 14:01:50",
            "sum_datepoint": "19:14:12",
            "first_fillings_fuel": 218.77,
            "last_address": "[lat: 52.827972, lon: 62.642530]",
            "finish_fillings_fuel": 17697.64,
            "stucked_fillings_fuel": 0,
            "count_point": 82,
            "sum_fillings_fuel": 0,
            "_is_total": false
          },
          {
            "№": 5,
            "unit_name": "ДВД Актобе Уаз 186 КР 04",
            "first_datepoint": "2020-01-01 06:07:59",
            "last_datepoint": "2020-01-02 14:01:50",
            "sum_datepoint": "29:42:12",
            "first_fillings_fuel": 263.61,
            "last_address": "[lat: 52.827972, lon: 62.642530]",
            "finish_fillings_fuel": 17697.64,
            "stucked_fillings_fuel": 0,
            "count_point": 256,
            "sum_fillings_fuel": 27.61,
            "_is_total": true
          }
        ],
        "max_rows": 4
      }
    }

Примеры запросов и ответов:
selected_columns - для журнала можно указать максимум 6 параметров, для графика максимум 2 параметра.

1) Журнал

Если не указан selected_columns, то приходят дефолтные поля (datepoint, speedkph, latitude, longitude и _marker_latlon_journal)

Запрос:

{
    "units": [{
        "id": "712ceae4-f112-4714-9a4d-afe141e47bf7"
    }],
    "template_tables": [{
        "id": "275c6ee8-2933-4dd3-8adf-9544e26bf98a"
    }],
    "from": "2020-11-01 00:00:00",
    "to": "2020-12-01 15:00:00",
    "offset": 0,
    "max": 5
}

Ответ:

{
    "unit_id": "d20f49af-d68b-47fa-99f8-bb4e56354391",
    "unit_name": "НЖС-1 (ЭЧ-10) Уаз 860 AL 03 Астана",
    "report": {
        "name": "Журнал",
        "key": "journal",
        "possible_columns": [{
            "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
            "name": "Напряжение"
        }, {
            "key": "voltage_main",
            "name": "voltage_main"
        }, {
            "key": "785bb809-c6eb-4876-89c0-149f98775c70",
            "name": "Топливо"
        }, {
            "key": "dut_485_1",
            "name": "dut_485_1"
        }, {
            "key": "d7205a84-0c01-4c4d-9fb8-7d039a043e33",
            "name": "Зажигание"
        }, {
            "key": "vol_a_in_1",
            "name": "vol_a_in_1"
        }, {
            "key": "3efd7812-dcfd-4fa9-b5dc-a9f16ff8888d",
            "name": "Резкий поворот"
        }, {
            "key": "acc_right",
            "name": "acc_right"
        }, {
            "key": "1f742665-e78d-40e3-a4ec-369bdf5dfd28",
            "name": "Резкое ускорение"
        }, {
            "key": "acc_forward",
            "name": "acc_forward"
        }, {
            "key": "42773f51-cc5e-4c84-996a-e1f930d998ca",
            "name": "Резкое торможение"
        }, {
            "key": "acc_back",
            "name": "acc_back"
        }, {
            "key": "89fcedcf-9689-4ea5-bb9a-7879b5136427",
            "name": "Превышение скорости"
        }, {
            "key": "acc_speed",
            "name": "acc_speed"
        }],
        "columns": [{
            "key": "№",
            "name": "№"
        }, {
            "key": "_marker_latlon_journal",
            "name": "_marker_latlon_journal"
        }, {
            "key": "datepoint",
            "name": "datepoint"
        }, {
            "key": "speedkph",
            "name": "speedkph"
        }, {
            "key": "latitude",
            "name": "latitude"
        }, {
            "key": "longitude",
            "name": "longitude"
        }],
        "rows": [{
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:26",
            "longitude": 37.711567,
            "№": 1,
            "_marker_latlon_journal": [55.7962, 37.711567]
        }, {
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:55",
            "longitude": 37.711567,
            "№": 2,
            "_marker_latlon_journal": [55.7962, 37.711567]
        }, {
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:55",
            "longitude": 37.711567,
            "№": 3,
            "_marker_latlon_journal": [55.7962, 37.711567]
        }, {
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:55",
            "longitude": 37.711567,
            "№": 4,
            "_marker_latlon_journal": [55.7962, 37.711567]
        }, {
            "speedkph": 0,
            "latitude": 51.80577,
            "datepoint": "2020-11-01 13:40:55",
            "longitude": 68.36547,
            "№": 5,
            "_marker_latlon_journal": [51.80577, 68.36547]
        }],
        "max_rows": 22406
    }
}

Если указан selected_columns, то приходят значения указанных параметров и дефолтные параметры.

Запрос:

{
    "units": [{
        "id": "712ceae4-f112-4714-9a4d-afe141e47bf7"
    }],
    "template_tables": [{
        "id": "275c6ee8-2933-4dd3-8adf-9544e26bf98a"
    }],
    "from": "2020-11-01 00:00:00",
    "to": "2020-12-01 15:00:00",
    "offset": 0,
    "max": 100,
    "selected_columns": [{
        "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
        "name": "Напряжение"
    }, {
        "key": "voltage_main",
        "name": "voltage_main"
    }]
}

Ответ:

{
    "unit_id": "d20f49af-d68b-47fa-99f8-bb4e56354391",
    "unit_name": "НЖС-1 (ЭЧ-10) Уаз 860 AL 03 Астана",
    "report": {
        "name": "Журнал",
        "key": "journal",
        "possible_columns": [{
            "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
            "name": "Напряжение"
        }, {
            "key": "voltage_main",
            "name": "voltage_main"
        }, {
            "key": "785bb809-c6eb-4876-89c0-149f98775c70",
            "name": "Топливо"
        }, {
            "key": "dut_485_1",
            "name": "dut_485_1"
        }, {
            "key": "d7205a84-0c01-4c4d-9fb8-7d039a043e33",
            "name": "Зажигание"
        }, {
            "key": "vol_a_in_1",
            "name": "vol_a_in_1"
        }, {
            "key": "3efd7812-dcfd-4fa9-b5dc-a9f16ff8888d",
            "name": "Резкий поворот"
        }, {
            "key": "acc_right",
            "name": "acc_right"
        }, {
            "key": "1f742665-e78d-40e3-a4ec-369bdf5dfd28",
            "name": "Резкое ускорение"
        }, {
            "key": "acc_forward",
            "name": "acc_forward"
        }, {
            "key": "42773f51-cc5e-4c84-996a-e1f930d998ca",
            "name": "Резкое торможение"
        }, {
            "key": "acc_back",
            "name": "acc_back"
        }, {
            "key": "89fcedcf-9689-4ea5-bb9a-7879b5136427",
            "name": "Превышение скорости"
        }, {
            "key": "acc_speed",
            "name": "acc_speed"
        }, {
            "key": "acc_left",
            "name": "acc_left"
        }, {
            "key": "acc_max_angle",
            "name": "acc_max_angle"
        }, {
            "key": "acc_max_minus",
            "name": "acc_max_minus"
        }, {
            "key": "acc_max_plus",
            "name": "acc_max_plus"
        }, {
            "key": "acc_x",
            "name": "acc_x"
        }, {
            "key": "acc_y",
            "name": "acc_y"
        }, {
            "key": "acc_z",
            "name": "acc_z"
        }],
        "columns": [{
            "key": "№",
            "name": "№"
        }, {
            "key": "_marker_latlon_journal",
            "name": "_marker_latlon_journal"
        }, {
            "key": "datepoint",
            "name": "datepoint"
        }, {
            "key": "speedkph",
            "name": "speedkph"
        }, {
            "key": "latitude",
            "name": "latitude"
        }, {
            "key": "voltage_main",
            "name": "voltage_main"
        }, {
            "key": "longitude",
            "name": "longitude"
        }, {
            "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
            "name": "Напряжение"
        }],
        "rows": [{
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:26",
            "voltage_main": 12251,
            "longitude": 37.711567,
            "№": 1,
            "_marker_latlon_journal": [55.7962, 37.711567],
            "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae": 12251.0
        }, {
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:55",
            "voltage_main": 12123,
            "longitude": 37.711567,
            "№": 2,
            "_marker_latlon_journal": [55.7962, 37.711567],
            "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae": 12123.0
        }, {
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:55",
            "voltage_main": 12123,
            "longitude": 37.711567,
            "№": 3,
            "_marker_latlon_journal": [55.7962, 37.711567],
            "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae": 12123.0
        }, {
            "speedkph": 0,
            "latitude": 55.7962,
            "datepoint": "2020-11-01 13:39:55",
            "voltage_main": 12121,
            "longitude": 37.711567,
            "№": 4,
            "_marker_latlon_journal": [55.7962, 37.711567],
            "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae": 12121.0
        }, {
            "speedkph": 0,
            "latitude": 51.80577,
            "datepoint": "2020-11-01 13:40:55",
            "voltage_main": 12088,
            "longitude": 68.36547,
            "№": 5,
            "_marker_latlon_journal": [51.80577, 68.36547],
            "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae": 12088.0
        }],
        "max_rows": 22406
    }
}

2) График

Если не указан selected_columns, то приходят поля с данными datepoint, speed, is_trip, trips_intervals и значения 2 первых датчиков (если есть).

Запрос:

{
    "units": [{
        "id": "712ceae4-f112-4714-9a4d-afe141e47bf7"
    }],
    "template_tables": [{
        "id": "275c6ee8-2933-4dd3-8adf-9544e26bf98a"
    }],
    "from": "2020-11-01 00:00:00",
    "to": "2020-12-01 00:00:00"
}

Ответ:

{
    "unit_id": "d20f49af-d68b-47fa-99f8-bb4e56354391",
    "unit_name": "НЖС-1 (ЭЧ-10) Уаз 860 AL 03 Астана",
    "report": {
        "name": "график",
        "key": "chart",
        "possible_columns": [{
            "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
            "name": "Напряжение"
        }, {
            "key": "voltage_main",
            "name": "voltage_main"
        }, {
            "key": "785bb809-c6eb-4876-89c0-149f98775c70",
            "name": "Топливо"
        }, {
            "key": "dut_485_1",
            "name": "dut_485_1"
        }, {
            "key": "d7205a84-0c01-4c4d-9fb8-7d039a043e33",
            "name": "Зажигание"
        }, {
            "key": "vol_a_in_1",
            "name": "vol_a_in_1"
        }, {
            "key": "3efd7812-dcfd-4fa9-b5dc-a9f16ff8888d",
            "name": "Резкий поворот"
        }, {
            "key": "acc_right",
            "name": "acc_right"
        }, {
            "key": "1f742665-e78d-40e3-a4ec-369bdf5dfd28",
            "name": "Резкое ускорение"
        }, {
            "key": "acc_forward",
            "name": "acc_forward"
        }, {
            "key": "42773f51-cc5e-4c84-996a-e1f930d998ca",
            "name": "Резкое торможение"
        }, {
            "key": "acc_back",
            "name": "acc_back"
        }, {
            "key": "89fcedcf-9689-4ea5-bb9a-7879b5136427",
            "name": "Превышение скорости"
        }, {
            "key": "acc_speed",
            "name": "acc_speed"
        }, {
            "key": "acc_left",
            "name": "acc_left"
        }],
        "columns": [{
            "key": "datepoint",
            "name": "datepoint",
            "data": ["2020-11-01 13:39:26", "2020-11-01 13:50:12", "2020-11-01 14:04:40", "2020-11-01 16:29:09", "2020-11-01 19:00:52", "2020-11-01 19:48:12", "2020-11-01 20:34:44", "2020-11-01 21:19:05", "2020-11-01 21:57:05", "2020-11-01 22:30:46"]
        }, {
            "key": "speed",
            "name": "speed",
            "data": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        }, {
            "key": "is_trip",
            "name": "is_trip",
            "data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        }, {
            "key": "trips_intervals",
            "name": "trips_intervals",
            "data": [
                ["2020-11-01 13:42:26", "2020-11-01 13:43:06"],
                ["2020-11-01 14:04:04", "2020-11-01 14:05:15"],
                ["2020-11-02 08:17:31", "2020-11-02 08:18:20"],
                ["2020-11-02 08:23:05", "2020-11-02 08:29:04"],
                ["2020-11-02 08:38:34", "2020-11-02 08:39:13"],
                ["2020-11-02 08:44:11", "2020-11-02 08:50:27"],
                ["2020-11-02 10:54:29", "2020-11-02 10:55:31"],
                ["2020-11-02 11:52:07", "2020-11-02 12:03:11"],
                ["2020-11-02 14:06:43", "2020-11-02 14:22:20"],
                ["2020-11-02 15:41:19", "2020-11-02 15:45:19"]
            ]
        }, {
            "key": "_marker_latlon_chart",
            "name": "_marker_latlon_chart",
            "data": [
                [52.19, 65.45],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37]
            ]
        }, {
            "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
            "name": "Напряжение",
            "data": [12086.14, 12455.71, 11866.95, 11813.52, 11891.0, 11885.48, 11881.95, 11879.57, 11877.76, 11873.1]
        }, {
            "key": "785bb809-c6eb-4876-89c0-149f98775c70",
            "name": "Топливо",
            "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
        }],
        "max_rows": 1014
    }
}

Если указан selected_columns, то приходят поля с данными datepoint, speed, is_trip, trips_intervals и указанные параметры.

Запрос:

{
    "units": [{
        "id": "712ceae4-f112-4714-9a4d-afe141e47bf7"
    }],
    "template_tables": [{
        "id": "275c6ee8-2933-4dd3-8adf-9544e26bf98a"
    }],
    "from": "2020-11-01 00:00:00",
    "to": "2020-12-01 00:00:00",
    "selected_columns": [{
        "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
        "name": "Напряжение"
    }, {
        "key": "angle",
        "name": "angle"
    }]
}

Ответ:

{
    "unit_id": "d20f49af-d68b-47fa-99f8-bb4e56354391",
    "unit_name": "НЖС-1 (ЭЧ-10) Уаз 860 AL 03 Астана",
    "report": {
        "name": "график",
        "key": "chart",
        "possible_columns": [{
            "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
            "name": "Напряжение"
        }, {
            "key": "voltage_main",
            "name": "voltage_main"
        }, {
            "key": "785bb809-c6eb-4876-89c0-149f98775c70",
            "name": "Топливо"
        }, {
            "key": "dut_485_1",
            "name": "dut_485_1"
        }, {
            "key": "d7205a84-0c01-4c4d-9fb8-7d039a043e33",
            "name": "Зажигание"
        }, {
            "key": "vol_a_in_1",
            "name": "vol_a_in_1"
        }, {
            "key": "3efd7812-dcfd-4fa9-b5dc-a9f16ff8888d",
            "name": "Резкий поворот"
        }, {
            "key": "acc_right",
            "name": "acc_right"
        }, {
            "key": "1f742665-e78d-40e3-a4ec-369bdf5dfd28",
            "name": "Резкое ускорение"
        }, {
            "key": "acc_forward",
            "name": "acc_forward"
        }, {
            "key": "42773f51-cc5e-4c84-996a-e1f930d998ca",
            "name": "Резкое торможение"
        }, {
            "key": "acc_back",
            "name": "acc_back"
        }, {
            "key": "89fcedcf-9689-4ea5-bb9a-7879b5136427",
            "name": "Превышение скорости"
        }, {
            "key": "acc_speed",
            "name": "acc_speed"
        }, {
            "key": "acc_left",
            "name": "acc_left"
        }, {
            "key": "acc_max_angle",
            "name": "acc_max_angle"
        }, {
            "key": "acc_max_minus",
            "name": "acc_max_minus"
        }, {
            "key": "acc_max_plus",
            "name": "acc_max_plus"
        }, {
            "key": "acc_x",
            "name": "acc_x"
        }, {
            "key": "acc_y",
            "name": "acc_y"
        }, {
            "key": "acc_z",
            "name": "acc_z"
        }, {
            "key": "altitude",
            "name": "altitude"
        }, {
            "key": "angle",
            "name": "angle"
        }, {
            "key": "box_crack",
            "name": "box_crack"
        }, {
            "key": "bth_conf_st",
            "name": "bth_conf_st"
        }, {
            "key": "bytes_in",
            "name": "bytes_in"
        }, {
            "key": "bytes_out",
            "name": "bytes_out"
        }, {
            "key": "can_accel_pos",
            "name": "can_accel_pos"
        }, {
            "key": "can_break_pos",
            "name": "can_break_pos"
        }, {
            "key": "can_disel_filter",
            "name": "can_disel_filter"
        }],
        "columns": [{
            "key": "datepoint",
            "name": "datepoint",
            "data": ["2020-11-01 13:39:26", "2020-11-01 13:50:12", "2020-11-01 14:04:40", "2020-11-01 16:29:09", "2020-11-01 19:00:52", "2020-11-01 19:48:12", "2020-11-01 20:34:44", "2020-11-01 21:19:05", "2020-11-01 21:57:05", "2020-11-01 22:30:46"]
        }, {
            "key": "speed",
            "name": "speed",
            "data": [0, 1, 0, 3, 5, 6, 10, 20, 12, 0, 0]
        }, {
            "key": "is_trip",
            "name": "is_trip",
            "data": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        }, {
            "key": "trips_intervals",
            "name": "trips_intervals",
            "data": [
                ["2020-11-01 13:42:26", "2020-11-01 13:43:06"],
                ["2020-11-01 14:04:04", "2020-11-01 14:05:15"],
                ["2020-11-02 08:17:31", "2020-11-02 08:18:20"],
                ["2020-11-02 08:23:05", "2020-11-02 08:29:04"],
                ["2020-11-02 08:38:34", "2020-11-02 08:39:13"],
                ["2020-11-02 08:44:11", "2020-11-02 08:50:27"],
                ["2020-11-02 10:54:29", "2020-11-02 10:55:31"],
                ["2020-11-02 11:52:07", "2020-11-02 12:03:11"],
                ["2020-11-02 14:06:43", "2020-11-02 14:22:20"],
                ["2020-11-02 15:41:19", "2020-11-02 15:45:19"]
            ]
        }, {
            "key": "_marker_latlon_chart",
            "name": "_marker_latlon_chart",
            "data": [
                [52.19, 65.45],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37],
                [51.81, 68.37]
            ]
        }, {
            "key": "1a590afb-bfe5-44cf-8d78-f5137bfbb7ae",
            "name": "Напряжение",
            "data": [12086.14, 12455.71, 11866.95, 11813.52, 11891.0, 11885.48, 11881.95, 11879.57, 11877.76, 11873.1]
        }, {
            "key": "angle",
            "name": "angle",
            "data": [111.95, 125.38, 124.71, 37.0, 37.0, 37.0, 37.0, 37.0, 37.0, 37.0]
        }],
        "max_rows": 1014
    }
}

Новые поля для графика в template_tables:

  1. Чекбокс "Отображать сливы и заправки" - show_fillings_thefts, boolean
  2. Чекбокс "Сделать отчет закрытым" - closed_to_change, boolean
  3. Маски названия датчиков топлива - fuel_sensor_name_masks, массив имеющий поле value, как в поле sensor_name_masks
  4. "Параметры" - params, массив, имеет поля terminal_type_key - ключ типа протокола (если не указан или null, тогда это для всех протоколов), value-значение параметра

Пример:

{
   "id": "dc029d04-0ed7-4ddd-b243-d32bd9201671",
   "key": "chart",
   "name": "Журнал",
   ..
   "show_fillings_thefts": true,
   "fuel_sensor_name_masks": [
      {
         "value": "Топлива1"
      },
      {
         "value": "Топлива2"
      }
   ],
   "params": [
      {"terminal_type_key": "navtelecom", "value": "dut_485_1"},
      {"value":"speedkph"}
    ],
   "closed_to_change": true,
   ...
}

Приходят новые элементы в columns: fillings_intervals - для заправок и thefts_intervals - для сливов. В data приходят даты начала и окончания, как в trips_intervals.

Пример:

"columns": [
    ....
    {
        "key": "fillings_intervals",
        "name": "fillings_intervals",
        "data": [
          [
            "2021-08-01 09:08:18",
            "2021-08-01 09:37:19"
          ],
          [
            "2021-08-10 08:51:51",
            "2021-08-10 09:02:20"
          ],
          [
            "2021-08-13 10:48:34",
            "2021-08-13 11:13:01"
          ]
        ]
      },
      {
        "key": "thefts_intervals",
        "name": "thefts_intervals",
        "data": [
          [
            "2021-08-11 00:00:30",
            "2021-08-12 00:08:19"
          ]
        ]
      }
  ]
Request Body schema: application/json
from
string
Array of objects
max
number
offset
number
Array of objects
to
string

Responses

Request samples

Content type
application/json
{
  • "from": "2022-05-04 10:03:00",
  • "groups": [
    ],
  • "max": 100,
  • "offset": 0,
  • "template_tables": [
    ],
  • "to": "2022-07-03 11:00:11"
}

/report/bar_chart

Получение данных для графика


После получения отчета (POST /report), если тег report.is_bar_chart ответа истинен (true), то для этого отчета можно получить данные для графика по этому запросу

Тело запроса, как в POST /report, только без max и offset значений.

В полученном отчете (структура данных, как и во всех report) будут колонки bar_chart_x и bar_chart_y, по ним нужно будет отобразить bar chart.


Структура ответа:

"unit_id": id объекта,если отчет построен по объекту.
"unit_name": имя объекта, если отчет построен по объекту.
"group_id": id группы, если отчет построен по группе.
"group_name": имя группы, если отчет построен по группе.
"report": {
  "name": название отчета, заданное пользователем, либо, если таблица дефолтная - дефолтное имя.
  "key": ключ отчета. Ключ не может быть произвольным и, если таблица создана юзером, всегда должен быть равен ключу дефолтной таблицы, на основе которой таблица создавалась. см. GET /report_templates?ids=:ids
  "columns": [  //тех. информация о колонках отчета
    {
      "key": тип колонки      
      "name": имя колонки..
    }
  ],
  "rows": [ // строки отчета
    {
        "bar_chart_x" : Названия элемент,
        "bar_chart_y": Значение элемента
    }
  ]
}

Пример запроса:

{
    "groups": [
        {
            "id": "ae3f9037-9fcc-492c-9ba4-8063e737cf95"
        }
    ],
    "template_tables": [
        {
            "id": "a5dc0870-78cd-4fa9-9522-eb658bb5806b"
        }
    ],
    "from": "2022-09-01 00:00:00",
    "to": "2022-10-01 00:00:00"
}

Пример ответа:

{
    "group_name": "Камазы",
    "group_id": "ae3f9037-9fcc-492c-9ba4-8063e737cf95"
    "report": {
        "columns": [
            {
                "key": "bar_chart_x",
                "name": "Имя"
            },
            {
                "key": "bar_chart_y",
                "name": "Балл нарушения"
            }
        ],
        "rows": [
            {
                "bar_chart_x": "Объект 1",
                "bar_chart_y": 68.0
            },
            {
                "bar_chart_x": "Объект 10",
                "bar_chart_y": 24.0
            },
            {
                "bar_chart_x": "Объект 4",
                "bar_chart_y": 63.0
            },
            {
                "bar_chart_x": "Объект 6",
                "bar_chart_y": 604.0
            },
            {
                "bar_chart_x": "Объект 9",
                "bar_chart_y": 255.0
            },
            {
                "bar_chart_x": "Объект 3",
                "bar_chart_y": 86.0
            },
            {
                "bar_chart_x": "Объект 8",
                "bar_chart_y": 123.0
            },
            {
                "bar_chart_x": "Объект 5",
                "bar_chart_y": 47.0
            },
            {
                "bar_chart_x": "Объект 2",
                "bar_chart_y": 267.0
            },
            {
                "bar_chart_x": "Объект 7",
                "bar_chart_y": 115.0
            }
        ]
    }
}
Request Body schema: application/json
from
string
Array of objects
Array of objects
to
string

Responses

Request samples

Content type
application/json
{
  • "from": "2022-09-01 00:00:00",
  • "groups": [
    ],
  • "template_tables": [
    ],
  • "to": "2022-10-01 00:00:00"
}

/report_excel/:body

Запрос отчета в формате excel


Запрос отчета в формате excel. Параметры аналогичные /report.

Результат - массив байт файла excel.

query Parameters
body
string
Example: body=

Responses

/report_excel

Запрос отчета в формате Excel


Запрос отчета в формате excel. Параметры аналогичны /report.

Результат - массив байт файла excel.

Request Body schema: application/json
from
string
Array of objects
Array of objects
to
string

Responses

Request samples

Content type
application/json
{
  • "from": "2022-03-05 00:00:00",
  • "groups": [
    ],
  • "template_tables": [
    ],
  • "to": "2022-03-06 00:00:00"
}

/report_pdf

Запрос генерации pdf отчета


Запрос отчета в формате pdf. Параметры аналогичные /report.

В поле files можно отправить Base64 код файлов.
Результат - массив байт файла pdf


Пример запроса:

{
    "units": [
        {
            "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
        }
    ],
    "template_tables": [
        {
            "id": "800c0795-5b79-40cd-bdeb-ab309228534b"
        }
    ],
    "from": "2022-04-28 00:00:00",
    "to": "2022-06-29 00:00:00",
    "files": [
    "c29tZV9maWxlMQ==",
    "c29tZV9maWxlMg=="
    ]
}
Request Body schema: application/json
files
Array of strings
from
string
Array of objects
to
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "files": [
    ],
  • "from": "2022-04-28 00:00:00",
  • "template_tables": [
    ],
  • "to": "2022-06-29 00:00:00",
  • "units": [
    ]
}

/report_word

Запрос генерации word отчета


Запрос отчета в формате word. Параметры аналогичные /report.

В поле files можно отправить Base64 код файлов.
Результат - массив байт файла word.


Пример запроса:

{
    "units": [
        {
            "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
        }
    ],
    "template_tables": [
        {
            "id": "800c0795-5b79-40cd-bdeb-ab309228534b"
        }
    ],
    "from": "2022-04-28 00:00:00",
    "to": "2022-06-29 00:00:00",
    "files": [
        "c29tZV9maWxlMQ==",
        "c29tZV9maWxlMg=="
    ]
}
Request Body schema: application/json
files
Array of strings
from
string
Array of objects
to
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "files": [
    ],
  • "from": "2022-04-28 00:00:00",
  • "template_tables": [
    ],
  • "to": "2022-06-29 00:00:00",
  • "units": [
    ]
}

/report_any

Запрос создания отчета по ключу отчета


Параметры аналогичные POST /report , только в template_tables можно отправить ключ (key) отчета.


Пример запроса на получение журнала:

{
    "units": [
        {
            "id": "6b68de17-f031-4371-a792-74670c58d3ce"
        }
    ],
    "template_tables": [
        {
            "key": "journal"
        }
    ],
    "from": "2023-04-25 00:00:00",
    "to": "2023-06-29 00:00:00",
    "max": 100,
    "offset": 0
}
Request Body schema: application/json
files
Array of strings
from
string
Array of objects
to
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "files": [
    ],
  • "from": "2022-04-28 00:00:00",
  • "template_tables": [
    ],
  • "to": "2022-06-29 00:00:00",
  • "units": [
    ]
}

/finance/:body

Запрос финансового отчета


Для поиска нужно передвать {"search":"Company"}

Результат - отчет, аналогичный получаемому по запросу POST /reports


Роль: Администратор и выше.

query Parameters
body
string
Example: body={"from":0, "count":100}

Responses

/heat_maps

Выдача данных для отображения тепловых карт


Выдача данных для отображения тепловых картах в виде

[{
    "density": n,
    "lat": x,
    "lon": y
}]

где n - количество точек, попавших в группу точности до 0.01 - т.е. в радиусе 1 км.

Параметры в теле запроса:
max_radius - максимальный радиюь в метрах


Роль: Читатель и выше.


Пример запроса:

{
    "max_radius": 1000
}

Пример ответа:

Маскимум 20 тыс записей в ответе.

[
    {
        "density": 10.5,
        "lat": 59.78,
        "lon": 57.06
    },
    {
        "density": 1.0,
        "lat": 55.57,
        "lon": 36.75
    }
]
Request Body schema: application/json
max_radius
number

Responses

Request samples

Content type
application/json
{
  • "max_radius": 1000
}

/last_point

Получение последних данных по объектам


В запросе можно указать объекты или одну группу


Роль: Читатель и выше.


Пример запроса и объектами:

{
    "units": [
        {
            "id": "2bd74bab-8173-4c06-8fd8-ad923d3ad7d3"
        },
        {
            "id": "655f9207-b19d-4df4-9cbe-442c8777baec"
        }
    ]
}

Пример запрос с группой:

{
    "groups": [
        {
            "id": "5dabceab-ae23-493f-8c04-8028c7066e8a"
        }
    ]
}

В ответе возвращаются следующий поля:

**по объекту**
unit.id
unit.name
unit.imei
unit.custom_fields - Ваши параметры
**Из последнего сообщения**
unix_timestamp 
speed
altitude
satellites
latitude
logitude
address
trip_detector - стоит или едет c учетом минимальной скорости движения ("stop" or "movement")
[
    {
        "unit": {
            "id": "2bd74bab-8173-4c06-8fd8-ad923d3ad7d3",
            "imei": "8674590000000000",
            "name": "MAN К922ОС 77 (Main) ",
            "custom_fields": [
                {
                    "name": "S-2551",
                    "value": "#1"
                },
                {
                    "name": "Тип терминала",
                    "value": "1"
                },
                {
                    "name": "Осмотр 5",
                    "value": "55555"
                },
                {
                    "name": "Вторая sim",
                    "value": "11111XYZV"
                }
            ]
        },
        "last_point": {
            "unix_timestamp": 1707982594,
            "speed": 3,
            "angle": 318,
            "altitude": 1745,
            "satellites": 21,
            "latitude": 55.5130615234375,
            "longitude": 37.7850456237793,
            "address": "Горки Ленинские, Ленинский городской округ, Московская область",
            "trip_detector": "movement"
        }
    }
]
Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "units": [
    ]
}

/cancel_report

POST /cancel_report
{
  "_reportId": "....."
}

Остановить запущенный отчет.

_reportId формируется на вебе при формировании отчета.

Responses

Шаблоны отчетов

/report_templates?ids=:ids

Получить все шаблоны отчетов по компании


Каждый Шаблон по сути это именнованая группа Таблиц Шаблонов отчетов.

Таблица Шаблона - это набор Колонок Таблицы Шаблона + параметры.

В самих Таблицах Шаблона задаются параметры для отображения отчета, например имя таблицы, группировка по определенной колонке, и т.д.

Любой запрос шаблонов, помимо пользовательских шаблонов, также выводит Базовный шаблон (с таблицами и колонками по умолчанию), у которого параметр 'is_default' = true и параметр 'company_id' пустой. Таблицы и колонки данного шаблона не изменяемы и используются только для создания на их основе пользовательских таблиц.


Роль: Читатель и выше.


Ответ:

[{
    "id": "27aaa1b1-0510-4b7b-b020-99837f5621f0", //id шаблона
    "name": "шаблон2",  //имя
    "template_tables": [{
        "id": "d3134efa-9e9f-4be1-9459-1ded125ea73a", //id таблицы
        "id_template": "27aaa1b1-0510-4b7b-b020-99837f5621f0",  //id родительского шаблона
        "name": "Уведомления", //имя таблицы
        "key": "notifications", //ключ таблицы (берется из справочников по типу 'report_template_table_type') ------ НЕ ИЗМЕНЯЕМОЕ ПОЛЕ --------
        "geozones": [{ // список выбранных геозон
            "id": "d3134efa-9e9f-4be1-9459-1ded125ea73a"
            // --------------- полный перечень полей геозоны ---------------------
        }],
        "show_itog": true, //показывать ли итог в таблице отчета
        "intervals_priority_high": true, // Приоритетны ли интервалы отчета или смены
        "time_group": "nogrouping", //временная группировка, возможные значения Без групперовки, По дням, По неделям, По месяцам (берется из справочников по типу 'report_template_table_type')
        "column_group": "name", // ключ колонки по которой происходит группировка
        "template_columns": [{ //колонки талбицы отчета, первоначально колонки берутся из справочника (для каждой таблицы предустановлены колонки) ------ НЕ ИЗМЕНЯЕМОЕ КОЛИЧЕСТО КОЛОНОК --------
            "id": "27aaa1b1-0510-4b7b-b020-99837f5621f0",
            "name": "Имя", //имя колонки
            "filter_min": 0, //фильтрация строк по минимальному значению
            "filter_max": 1000, //фильтрация строк по максимльному значению
            "user_filter": false,//использовать фильтрацию filter_min  и filter_max 
            "sort": 0, //порядок колонки в отчете
            "key": "name", //ключ колонки   ------ НЕ ИЗМЕНЯЕМОЕ ПОЛЕ --------
            "is_visible": true //видима ли колонка в отчете 
        }],
        "template_sensors": [{
            "id": "8f05e497-bddc-4b6a-bedb-e1c6ab5b55f0",
            "sensor_type": { // тип датчика, справочник типа sensor_type
                "key": "digital_sensors",
                "type": "sensor_type",
                "value": "Датчик"
            },
            "sensor_value": { //значение датчика, справочник типа template_sensor_value_type
                "key": "template_sensor_first_value",
                "type": "template_sensor_value_type",
                "value": "Начальное значение"
            },
            "name_mask": "Пробег" //string, маска по имени
        }, {
            "id": "91100c04-9ca6-48b1-9201-715713d023cc",
            "sensor_type": {
                "key": "digital_sensors",
                "type": "sensor_type",
                "value": "Датчик"
            },
            "sensor_value": {
                "key": "template_sensor_last_value",
                "type": "template_sensor_value_type",
                "value": "Конечное значение"
            },
            "name_mask": "Пробег"
        }],
        "template_computable_columns": [// вычисляемые колонки
            {
                "name": "Тип / марка машины", // название колонки
                "value": "custom_fields.brand_name"// значение колонки
            },
            {
                "name": "Расход по показаниям системы  SKIF APP, л.",
                "value": "columns.sum_fillings"
            },
            {
                "name": % экономии от SKIF APP",
                "value": "columns.sum_fillings_plan / columns.sum_fillings * 100 - 100"
            },
        ]
    }]
}]
query Parameters
ids
string
Example: ids=
Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

/report_templates

Создает свой шаблон отчетов


По правилам, таблица шаблона должна строиться на основании дефолтного шаблона таблиц, т.е. путем копирования полей дефолтного шаблона и заполнения их пользовательскими значениями
(кроме поля 'key').

При создании Шаблона Таблицы:
- ключи таблиц должны быть в словаре таблиц см. /dictionaries (не допускаются произвольные ключи или пустые значения);
- количество колонок и их ключи должны совпадать с шаблоном конкретной таблицы Базового шаблона ;

Запрос для создания пустого шаблона:

{"name": "Имя_шаблона", "template_tables": []}

Роль: Редактор и выше.


Ответ:

[{
    "id": "27aaa1b1-0510-4b7b-b020-99837f5621f0", //id шаблона
    "name": "шаблон2",  //имя
    "template_tables": [{
        "id": "d3134efa-9e9f-4be1-9459-1ded125ea73a", //id таблицы
        "id_template": "27aaa1b1-0510-4b7b-b020-99837f5621f0",  //id родительского шаблона
        "name": "Уведомления", //имя таблицы
        "key": "notifications", //ключ таблицы (берется из справочников по типу 'report_template_table_type') ------ НЕИЗМЕНЯЕМОЕ ПОЛЕ --------
        "attachments": [{ //вложения
           "id": "80a201ea-67e5-4cd9-aea5-591128d2855a", //его id
           "created": "2017-11-16 23:41:44", //дата создания
           "name": "test.doc", //переданное название файла
           "url": "/attachments/80a201ea-67e5-4cd9-aea5-591128d2855a.doc" //путь по которому доступен файл
        }], 
        "sensor_name_masks":[ // Маски по названия датчиков
            {"value": "Датчик1"},
            {"value": "Датчик2"}
        ]
        "geozones": [{ // список выбранных геозон
            "id": "d3134efa-9e9f-4be1-9459-1ded125ea73a"
            // --------------- полный перечень полей геозоны ---------------------
        }],
        "default_template_table": { //базовый шаблон таблицы, для базовой таблицы нет такого поля 
           "id": "800c0795-5b79-40cd-bdeb-ab309228534b",
           "name": "Поездки"
        }
        "show_itog": true, //показывать ли итог в таблице отчета
        "intervals_priority_high": true, // Приоритетны ли интервалы отчета или смены
        "time_group": "nogrouping", //временная группировка. Возможные значения: Без групперовки, По дням, По неделям, По месяцам (берется из справочников по типу 'report_template_table_type')
        "column_group": "name", // ключ колонки, по которой происходит группировка
        "used_geozones_filter": true,//для включения фильтрации по геозонам, boolean.
         "filter_geozones_type": { //тип фильтрации по геозонам. Возможные значения получить из dictionaries, где type=filter_geozones_type
          "key": "filter_geozones_include",
           "type": "filter_geozones_type",
           "value": "Включение"
         },
        "geozones": [ //выбранные геозоны
           {
            "id": "3fa1a644-bee4-4823-940b-b7542b3a9919"
           },
           {
             "id": "a671e052-f44d-4787-a3b4-6b3cac711a47"
           }
        ], // geozones_groups если используются группы геозонов вместо геозоны.
        "template_columns": [{ //колонки талбицы отчета, первоначально колонки берутся из справочника (для каждой таблицы предустановлены колонки) ------ НЕИЗМЕНЯЕМОЕ КОЛИЧЕСТО КОЛОНОК --------
            "id": "27aaa1b1-0510-4b7b-b020-99837f5621f0",
            "name": "Имя", //имя колонки
            "filter_min": 0, //фильтрация строк по минимальному значению
            "filter_max": 1000, //фильтрация строк по максимльному значению
            "user_filter": true // использовать фильтр для поля
            "sort": 0, //порядок колонки в отчете
            "key": "name", //ключ колонки   ------ НЕИЗМЕНЯЕМОЕ ПОЛЕ --------
            "is_visible": true //видима ли колонка в отчете 
        }],
        "template_sensors": [{ // датчиковые поля
            "id": "8f05e497-bddc-4b6a-bedb-e1c6ab5b55f0",
            "sensor_type": { // тип датчика, справочник типа sensor_type
                "key": "digital_sensors",
                "type": "sensor_type",
                "value": "Датчик"
            },
            "sensor_value": { //значение датчика, справочник типа template_sensor_value_type
                "key": "template_sensor_first_value",
                "type": "template_sensor_value_type",
                "value": "Начальное значение"
            },
            "name_mask": "Пробег", //string, маска по имени
            "column_name": "Среднее" // Название колонки
        }, {
            "id": "91100c04-9ca6-48b1-9201-715713d023cc",
            "sensor_type": {
                "key": "digital_sensors",
                "type": "sensor_type",
                "value": "Датчик"
            },
            "sensor_value": {
                "key": "template_sensor_last_value",
                "type": "template_sensor_value_type",
                "value": "Конечное значение"
            },
            "name_mask": "Пробег",
            "column_name": "Конечное"
        }],
        "template_computable_columns": [// вычисляемые колонки
            {
                "name": "Тип / марка машины", // название колонки
                "value": "custom_fields.brand_name"// значение колонки
                "total_ops": "take_first" //способ формирования итога для этой колонки, получается из справочника type=report_column_total_type, отправляется ключ (key)
            },
            {
                "name": "Расход по показаниям системы  SKIF APP, л.",
                "value": "columns.sum_fillings",
                "total_ops": "sum"
            },
            {
                "name": % экономии от SKIF APP",
                "value": "columns.sum_fillings_plan / columns.sum_fillings * 100 - 100",
                "total_ops": "max"
            },
        ],
        "weekdays": [1,2,4,7], // 
        "crop_intervals": true,// активировать обрезание интервалов
        "time_intervals": [ // временные интервалы для фильтрации
           {
               "from": "10:00",
                "to": "12:00"
           },
           {
               "from": "15:30",
               "to": "17:45"
           }
        ]
    }]
}]
query Parameters
string
Example: =
Request Body schema: application/json
_default
boolean
is_default
boolean
name
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "_default": false,
  • "is_default": false,
  • "name": "Шаблон123",
  • "template_tables": [
    ]
}

/report_templates?ids=:ids

Планирование удаление шаблона отчетов


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/report_templates/list

Запрос списка шаблонов отчетов


Все также как и в /units/list.


Возможные значения:
SortField = ["name", ""]
Conditions.Field = ["name", ""]


Роль: Читатель и выше.

Responses

/report_templates/computable_table_fields?table_key=:table_key

Получение возможных ссылок на значения для формулы в колонке отчета


table_key - ключ таблицы
Возвращает все преобразования:

{
  "custom_fields.fuel_fillings_minfilling": "Доп. поля объекта/Мин. объем заправки",
  "custom_fields.fuel_fillings_msgignorestart": "Доп. поля объекта/Игнор-ть сообщ-я после начала движения",
  "custom_fields.fuel_fillings_minstaytheft": "Доп. поля объекта/Мин. время остановки для опр-ия слива",
  "custom_fields.fuel_fillings_minitheft": "Доп. поля объекта/Мин. объем слива",
  "custom_fields.fuel_consumption_summerconsump": "Доп. поля объекта/Расход летом (л/100км.)",
  "custom_fields.fuel_consumption_winterconsump": "Доп. поля объекта/Расход зимой (л/100км.)",
  "custom_fields.fuel_math_idlingsummer": "Доп. поля объекта/На холостом ходу летом (л./час.)",
  "custom_fields.fuel_math_idlingwinter": "Доп. поля объекта/На холостом ходу зимой (л./час.)",
  "custom_fields.fuel_math_coeffunderload": "Доп. поля объекта/Коэф. при движении под нагрузкой",
  "custom_fields.fuel_consumption_winterfrom": "Доп. поля объекта/Первый месяц зимы (январь-1)",
  "custom_fields.fuel_consumption_winterto": "Доп. поля объекта/Последний месяц зимы (январь-1)",
  "custom_fields.fuel_price": "Доп. поля объекта/Стоимость (1 л.)",
  "custom_fields.tripdetector_minparktime": "Доп. поля объекта/Мин. время стоянки (сек)",
  "custom_fields.advanced_mileagecoeff": "Доп. поля объекта/Коэф. пробега",
  "custom_fields.tripdetector_minmovespeed": "Доп. поля объекта/Мин. скорость движ-я (км/ч)",
  "custom_fields.tripdetector_mintripdist": "Доп. поля объекта/Мин. расст-ие поездки (м)",
  "custom_fields.advanced_maxintervalmsg": "Доп. поля объекта/Макс. интервал между сообщ-ми (сек)",
  "custom_fields.tripdetector_maxdistancemsg": "Доп. поля объекта/Макс. расст-ие между сообщ-ми (м)",
  "custom_fields.tripdetector_mintriptime": "Доп. поля объекта/Мин. время поездки (сек)",
  "custom_fields.key_tripdetector_movedetect": "Доп. поля объекта/Опр-ие движ-я",
  "custom_fields.tripdetector_mileagedetect": "Доп. поля объекта/Определение пробега",
  "custom_fields.key_motohourdetector": "Доп. поля объекта/Определение моточасов",
  "custom_fields.analyst": "Доп. поля объекта/Аналитик"
  "custom_fields.installer": "Доп. поля объекта/Установщик",
  "custom_fields.install_date": "Доп. поля объекта/Дата установки",
  "custom_fields.install_place": "Доп. поля объекта/Место установки в ТС",
  "custom_fields.serial_number": "Доп. поля объекта/Серийный номер терминала",
  "custom_fields.serial_number_dut": "Доп. поля объекта/Серийный номер ДУТ",
  "custom_fields.dut_seal_serial_number": "Доп. поля объекта/Серийный номер пломбы ДУТ",
  "custom_fields.license_plate_number": "Доп. поля объекта/Гос номер",
  "custom_fields.hours_rate": "Доп. поля объекта/Норма часов в день",
  "custom_fields.block_date": "Доп. поля объекта/Дата блокировки(yyyy-MM-dd)",
  "custom_fields.kp": "Доп. поля объекта/КП",
  "custom_fields.dut": "Доп. поля объекта/ДУТ",
  "custom_fields.second_sim": "Доп. поля объекта/Вторая sim",
  "custom_fields.serial_number_dut_1": "Доп. поля объекта/Серийный номер ДУТ 1",
  "custom_fields.serial_number_dut_2": "Доп. поля объекта/Серийный номер ДУТ 2",
  "custom_fields.brand_name": "Доп. поля объекта/Тип/марка машины",
  "custom_fields.fuel_type": "Доп. поля объекта/Вид топлива (бенз., д/т)",
  "report_columns.unit_name": "Колонки отчета/Имя",
  "report_columns.first_datepoint": "Колонки отчета/Начало",
  "report_columns.last_datepoint": "Колонки отчета/Конец",
  "report_columns.count_point": "Колонки отчета/Кол-во сообщ-й",
  "report_columns.sum_distance": "Колонки отчета/Пробег",
  "report_columns.stucked_fillings": "Колонки отчета/Заправки",
  "report_columns.drained_fillings": "Колонки отчета/Сливы топл.",
  "report_columns.avg_speedkph": "Колонки отчета/Ср-яя скор-ть",
  "report_columns.fuel_price": "Колонки отчета/Затраты на топливо",
  "report_columns.fuel_price_plan": "Колонки отчета/Затраты на топл. по нормам",
  "report_columns.sum_fillings_idling": "Колонки отчета/Расход на холостом",
  "report_columns.sum_fillings_idling_plan": "Колонки отчета/Расход по нормам на холостом",
  "report_columns.sum_fillings_idling_deviation": "Колонки отчета/Откл. расхода на холостом",
  "report_columns.sum_fillings_plan": "Колонки отчета/Расход по нормам",
  "report_columns.sum_fillings": "Колонки отчета/Израсх-но топл.",
  "report_columns.sum_fillings_absolute": "Колонки отчета/Расход по ДАРТ",
  "report_columns.sum_fillings_instant": "Колонки отчета/Расход по ДМРТ",
  "report_columns.max_speedkph": "Колонки отчета/Макс. скор-ть",
  "report_columns.sum_fillings_deviation": "Колонки отчета/Отклонение расхода",
  "report_columns.first_fillings": "Колонки отчета/Нач. знач. топл.",
  "report_columns.finish_fillings": "Колонки отчета/Кон. знач. топл.",
  "report_columns.fuel_consumption_rates": "Колонки отчета/Расх. топл.(л\100км)",
  "report_columns.motohour_idling": "Колонки отчета/Холостой ход",
  "report_columns.motohours": "Колонки отчета/Моточасы",
  "report_columns.motohour_moving": "Колонки отчета/В движении",
  "report_columns.driver": "Колонки отчета/Водитель",
  "report_columns.trailer": "Колонки отчета/Прицеп",
  "report_columns.work_types": "Колонки отчета/Вид работ",
  "report_columns.groups_of_unit": "Колонки отчета/Группы"
}

Роль: Читатель и выше.

query Parameters
table_key
string
Example: table_key=

Responses

/report_templates/excel_table_fields?table_key=:table_key

Получение возможных ссылок на значения для формулы в шаблоне эксель


table_key - ключ таблицы
Возвращает все возможные поля:

[
    {
        "key": "company.name",
        "name": "Название компании"
    },
    {
        "key": "unit.name",
        "name": "Название объекта"
    },
    {
        "key": "unit.type",
        "name": "Тип объекта"
    },
    {
        "key": "shift.start_time",
        "name": "Запланированное время начала смена"
    },
    {
        "key": "shift.end_time",
        "name": "Запланированное время окончания смена"
    },
    {
        "key": "unit.custom_fields.fuel_fillings_minfilling",
        "name": "Доп. поля объекта/Мин. объем заправки"
    },
    {
        "key": "unit.custom_fields.fuel_fillings_msgignorestart",
        "name": "Доп. поля объекта/Игнор-ть сообщ-я после начала движения(с)"
    },
    {
        "key": "unit.custom_fields.fuel_fillings_minstaytheft",
        "name": "Доп. поля объекта/Мин. время остановки для опр-ия слива(с)"
    },
    {
        "key": "unit.custom_fields.fuel_fillings_minitheft",
        "name": "Доп. поля объекта/Мин. объем слива"
    },
    {
        "key": "unit.custom_fields.fuel_consumption_summerconsump",
        "name": "Доп. поля объекта/Расход летом (л/100км.)"
    },
    {
        "key": "unit.custom_fields.fuel_consumption_winterconsump",
        "name": "Доп. поля объекта/Расход зимой (л/100км.)"
    },
    {
        "key": "unit.custom_fields.fuel_math_idlingsummer",
        "name": "Доп. поля объекта/На холостом ходу летом (л./час.)"
    },
    {
        "key": "unit.custom_fields.fuel_math_idlingwinter",
        "name": "Доп. поля объекта/На холостом ходу зимой (л./час.)"
    },
    {
        "key": "unit.custom_fields.fuel_math_coeffunderload",
        "name": "Доп. поля объекта/Коэф. при движении под нагрузкой"
    },
    {
        "key": "unit.custom_fields.fuel_consumption_winterfrom",
        "name": "Доп. поля объекта/Первый месяц зимы (январь-1)"
    },
    {
        "key": "unit.custom_fields.fuel_consumption_winterto",
        "name": "Доп. поля объекта/Последний месяц зимы (январь-1)"
    },
    {
        "key": "unit.custom_fields.fuel_price",
        "name": "Доп. поля объекта/Стоимость (1 л.)"
    },
    {
        "key": "unit.custom_fields.fuel_type",
        "name": "Доп. поля объекта/Вид топлива (бенз., д/т)"
    },
    {
        "key": "unit.custom_fields.fuel_mark",
        "name": "Доп. поля объекта/Марка горючего"
    },
    {
        "key": "unit.custom_fields.fueler_distance",
        "name": "Доп. поля объекта/Радиус приближения как Топливозаправщик(м)"
    },
    {
        "key": "unit.custom_fields.tripdetector_minparktime",
        "name": "Доп. поля объекта/Мин. время стоянки (сек)"
    },
    {
        "key": "unit.custom_fields.advanced_mileagecoeff",
        "name": "Доп. поля объекта/Коэф. пробега"
    },
    {
        "key": "unit.custom_fields.tripdetector_minmovespeed",
        "name": "Доп. поля объекта/Мин. скорость движ-я (км/ч)"
    },
    {
        "key": "unit.custom_fields.tripdetector_mintripdist",
        "name": "Доп. поля объекта/Мин. расст-ие поездки (м)"
    },
    {
        "key": "unit.custom_fields.advanced_maxintervalmsg",
        "name": "Доп. поля объекта/Макс. интервал между сообщ-ми (сек)"
    },
    {
        "key": "unit.custom_fields.tripdetector_maxdistancemsg",
        "name": "Доп. поля объекта/Макс. расст-ие между сообщ-ми (м)"
    },
    {
        "key": "unit.custom_fields.tripdetector_mintriptime",
        "name": "Доп. поля объекта/Мин. время поездки (сек)"
    },
    {
        "key": "unit.custom_fields.key_tripdetector_movedetect",
        "name": "Доп. поля объекта/Опр-ие движ-я"
    },
    {
        "key": "unit.custom_fields.tripdetector_mileagedetect",
        "name": "Доп. поля объекта/Определение пробега"
    },
    {
        "key": "unit.custom_fields.key_motohourdetector",
        "name": "Доп. поля объекта/Определение моточасов"
    },
    {
        "key": "unit.custom_fields.analyst",
        "name": "Доп. поля объекта/Аналитик"
    },
    {
        "key": "unit.custom_fields.installer",
        "name": "Доп. поля объекта/Установщик"
    },
    {
        "key": "unit.custom_fields.install_date",
        "name": "Доп. поля объекта/Дата установки(формат год-месяц-день, например 2019-03-07)"
    },
    {
        "key": "unit.custom_fields.install_place",
        "name": "Доп. поля объекта/Место установки в ТС"
    },
    {
        "key": "unit.custom_fields.serial_number",
        "name": "Доп. поля объекта/Серийный номер терминала"
    },
    {
        "key": "unit.custom_fields.serial_number_dut",
        "name": "Доп. поля объекта/Серийный номер ДУТ"
    },
    {
        "key": "unit.custom_fields.dut_seal_serial_number",
        "name": "Доп. поля объекта/Серийный номер пломбы ДУТ"
    },
    {
        "key": "unit.custom_fields.license_plate_number",
        "name": "Доп. поля объекта/Гос номер"
    },
    {
        "key": "unit.custom_fields.hours_rate",
        "name": "Доп. поля объекта/Норма часов в день"
    },
    {
        "key": "unit.custom_fields.block_date",
        "name": "Доп. поля объекта/Дата блокировки(формат год-месяц-день, например 2019-03-07)"
    },
    {
        "key": "unit.custom_fields.kp",
        "name": "Доп. поля объекта/КП"
    },
    {
        "key": "unit.custom_fields.dut",
        "name": "Доп. поля объекта/ДУТ"
    },
    {
        "key": "unit.custom_fields.second_sim",
        "name": "Доп. поля объекта/Вторая sim"
    },
    {
        "key": "unit.custom_fields.serial_number_dut_1",
        "name": "Доп. поля объекта/Серийный номер ДУТ 1"
    },
    {
        "key": "unit.custom_fields.serial_number_dut_2",
        "name": "Доп. поля объекта/Серийный номер ДУТ 2"
    },
    {
        "key": "unit.custom_fields.brand_name",
        "name": "Доп. поля объекта/Марка машины"
    },
    {
        "key": "unit.custom_fields.brand_code",
        "name": "Доп. поля объекта/Код марки"
    },
    {
        "key": "unit.custom_fields.video_device_name",
        "name": "Доп. поля объекта/Видео устройство"
    },
    {
        "key": "unit.custom_fields.video_device_id",
        "name": "Доп. поля объекта/ID-видео устройства"
    },
    {
        "key": "unit.custom_fields.video_cameras",
        "name": "Доп. поля объекта/Камеры"
    },
    {
        "key": "unit.custom_fields.max_speed",
        "name": "Доп. поля объекта/Максимальная скорость в сообщениях"
    },
    {
        "key": "unit.custom_fields.min_satellites",
        "name": "Доп. поля объекта/Минимальное количество спутников"
    },
    {
        "key": "unit.custom_fields.max_hdop",
        "name": "Доп. поля объекта/Максимальное значение dhop"
    },
    {
        "key": "report.unit_name",
        "name": "Колонки отчета/Имя"
    },
    {
        "key": "report.first_datepoint",
        "name": "Колонки отчета/Начало"
    },
    {
        "key": "report.last_datepoint",
        "name": "Колонки отчета/Конец"
    },
    {
        "key": "report.sum_datepoint",
        "name": "Колонки отчета/Длит-сть"
    },
    {
        "key": "report.driver",
        "name": "Колонки отчета/Водитель"
    },
    {
        "key": "report.first_address",
        "name": "Колонки отчета/Нач. адрес"
    },
    {
        "key": "report.first_fillings",
        "name": "Колонки отчета/Нач. знач. топл.",
        "has_sensor": true
    },
    {
        "key": "report.finish_fillings",
        "name": "Колонки отчета/Кон. знач. топл.",
        "has_sensor": true
    },
    {
        "key": "report.last_address",
        "name": "Колонки отчета/Кон. адрес"
    },
    {
        "key": "report.sum_fillings_plan_in_moving",
        "name": "Колонки отчета/Расход по нормам в движении",
        "has_sensor": true
    },
    {
        "key": "report.fuel_consumption_rates",
        "name": "Колонки отчета/Расх. топл.(л\\100км)",
        "has_sensor": true
    },
    {
        "key": "report.avg_speedkph",
        "name": "Колонки отчета/Ср-яя скор-ть"
    },
    {
        "key": "report.sum_distance",
        "name": "Колонки отчета/Пробег(км)"
    },
    {
        "key": "report.drained_fillings",
        "name": "Колонки отчета/Сливы топл.",
        "has_sensor": true
    },
    {
        "key": "report.sum_fillings_absolute",
        "name": "Колонки отчета/Расход по ДАРТ",
        "has_sensor": true
    },
    {
        "key": "report.sum_distance_absolute",
        "name": "Колонки отчета/Пробег по датчику",
        "has_sensor": true
    },
    {
        "key": "report.sum_distance_absolute_error",
        "name": "Колонки отчета/Погрешность пробега по датчику(%)",
        "has_sensor": true
    },
    {
        "key": "report.sum_fillings",
        "name": "Колонки отчета/Израсх-но топл.",
        "has_sensor": true
    },
    {
        "key": "report.sum_fillings_instant",
        "name": "Колонки отчета/Расход по ДМРТ",
        "has_sensor": true
    },
    {
        "key": "report.sum_fillings_deviation",
        "name": "Колонки отчета/Отклонение расхода",
        "has_sensor": true
    },
    {
        "key": "report.sum_fillings_plan",
        "name": "Колонки отчета/Расход по нормам",
        "has_sensor": true
    },
    {
        "key": "report.sum_fillings_absolute_error",
        "name": "Колонки отчета/Погрешность расхода по ДАРТ(%)",
        "has_sensor": true
    },
    {
        "key": "report.fuel_price_plan",
        "name": "Колонки отчета/Затраты на топл. по нормам",
        "has_sensor": true
    },
    {
        "key": "report.fuel_price",
        "name": "Колонки отчета/Затраты на топливо",
        "has_sensor": true
    },
    {
        "key": "report.fuel_consumption_rates_absolut",
        "name": "Колонки отчета/Расх. топл. по ДАРТ(л\\100км)"
    },
    {
        "key": "report.last_accumulate_sensor",
        "name": "Колонки отчета/Кон. знач. Накоп. датч.",
        "has_sensor": true
    },
    {
        "key": "report.last_mileagecurr",
        "name": "Колонки отчета/Пробег"
    },
    {
        "key": "report.sum_accumulate_sensor",
        "name": "Колонки отчета/Накоп. датч. (сум)",
        "has_sensor": true
    },
    {
        "key": "report.max_speedkph",
        "name": "Колонки отчета/Макс. скор-ть"
    },
    {
        "key": "report.sum_counter",
        "name": "Колонки отчета/Счетчик (сум)"
    },
    {
        "key": "report.count_point",
        "name": "Колонки отчета/Кол-во сообщ-й"
    },
    {
        "key": "report.first_accumulate_sensor",
        "name": "Колонки отчета/Нач. знач. Накоп. датч.",
        "has_sensor": true
    },
    {
        "key": "report.max_temperature",
        "name": "Колонки отчета/Макс. темп."
    },
    {
        "key": "report.min_temperature",
        "name": "Колонки отчета/Мин. темп."
    },
    {
        "key": "report.avg_temperature",
        "name": "Колонки отчета/Ср-я темп."
    },
    {
        "key": "report.last_stamp",
        "name": "Колонки отчета/Время приема"
    },
    {
        "key": "report.sharp_accel",
        "name": "Колонки отчета/Резкое ускорение",
        "has_sensor": true
    },
    {
        "key": "report.sharp_braking",
        "name": "Колонки отчета/Резкое торможение",
        "has_sensor": true
    },
    {
        "key": "report.sharp_turn",
        "name": "Колонки отчета/Резкий поворот",
        "has_sensor": true
    },
    {
        "key": "report.jump",
        "name": "Колонки отчета/Скачок",
        "has_sensor": true
    },
    {
        "key": "report.over_speed",
        "name": "Колонки отчета/Превышение скорости",
        "has_sensor": true
    },
    {
        "key": "report.sum_distance_corrected",
        "name": "Колонки отчета/Пробег (скоррект.)"
    },
    {
        "key": "report.violation_score",
        "name": "Колонки отчета/Балл нарушения"
    },
    {
        "key": "report.trailer",
        "name": "Колонки отчета/Прицеп"
    },
    {
        "key": "report.work_types",
        "name": "Колонки отчета/Вид работ"
    },
    {
        "key": "report.groups_of_unit",
        "name": "Колонки отчета/Группы"
    }
]

Роль: Читатель и выше.

query Parameters
table_key
string
Example: table_key=
table_id
string
Example: table_id=

Responses

/report_templates/report_templates/table_formula_check

Проверка формулы в колонке отчета


"table_key" - ключ таблицы, текстовое.
"formula" - формула, которую нужно проверить.


Роль: Редактор и выше.


Возвращает 200, если формула валидная, иначе 422 с текстом ошибки

{
    "table_key": "trips",
    "formula": "({report_columns.sum_fillings_plan} - {report_columns.sum_fillings}) * {custom_fields.fuel_price} / 1000."
}

Ответ 200:

{
    "table_key": "trips",
    "formula": "xyz"
}

Ответ 422

{
    "code": 4220,
    "field": "",
    "message": "Неправильная формула в таблице "Поездки""
}
Request Body schema: application/json
formula
string
table_key
string

Responses

Request samples

Content type
application/json
{
  • "formula": "xyz",
  • "table_key": "trips"
}

/report_templates/table_validate

Валидация отдельной таблицы


В теле запроса указать все поля таблицы.
Возвращает 200, если формула валидная, иначе 422 с текстом ошибки.


Роль: Редактор и выше.


{
    "name": "Поездки",
    "key": "trips",
    "show_itog": "true",
    "time_group": "week",
    "column_group": "",
    "template_sensors": [{
        "sensor_type": {
            "key": "fuelsensor"
        },
        "name_mask": "топлива",
        "column_name": "Начала топл",
        "sensor_value": {
            "key": "template_sensor_first_value"
        }
    }, {
        "sensor_type": {
            "key": "ignition"
        },
        "name_mask": "Зажи1",
        "sensor_value": {
            "key": "template_sensor_last_value"
        }
    }],
    "template_computable_columns": [{
        "name": "Тип / марка машины",
        "value": "{custom_fields.brand_name}"
    }, {
        "name": "Расход по показаниям системы  SKIF APP, л.",
        "value": "{report_columns.sum_fillings}"
    }, {
        "name": "Расход по базовой норме, л.",
        "value": "{report_columns.sum_fillings_plan}"
    }, {
        "name": "Экономия, л.",
        "value": "{report_columns.sum_fillings_plan} - {report_columns.sum_fillings}"
    }, {
        "name": "% экономии от SKIF APP",
        "value": "{report_columns.sum_fillings_plan} / {report_columns.sum_fillings} * 100 - 100"
    }, {
        "name": "Экономия в тыс.тг.",
        "value": "({report_columns.sum_fillings_plan} - {report_columns.sum_fillings}) * {custom_fields.fuel_price} / 1000."
    }, {
        "name": "Тестовая колонка",
        "value": "({sensors.Начала топл} - {report_columns.sum_fillings}) * {computable_columns.Экономия в тыс.тг.}"
    }],
    "template_columns": [{
        "name": "translate.reports.default_template.columns._unit_id",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "1",
        "key": "_unit_id",
        "is_visible": "false",
        "type": "string",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.unit_name",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "2",
        "key": "unit_name",
        "is_visible": "true",
        "type": "string",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.first_datepoint",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "3",
        "key": "first_datepoint",
        "is_visible": "true",
        "type": "date",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.last_datepoint",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "4",
        "key": "last_datepoint",
        "is_visible": "true",
        "type": "date",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.count_point",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "5",
        "key": "count_point",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_distance",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "6",
        "key": "sum_distance",
        "is_visible": "true",
        "type": "number",
        "meta": "trips"
    }, {
        "name": "translate.reports.default_template.columns.stucked_fillings",
        "filter_min": "0",
        "filter_max": "100000",
        "use_filter": null,
        "sort": "7",
        "key": "stucked_fillings",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.drained_fillings",
        "filter_min": "0",
        "filter_max": "100000",
        "use_filter": null,
        "sort": "7",
        "key": "drained_fillings",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.avg_speedkph",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "7",
        "key": "avg_speedkph",
        "is_visible": "true",
        "type": "number",
        "meta": "trips"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_deviation",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings_deviation",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_plan",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings_plan",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_idling",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings_idling",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_idling_plan",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings_idling_plan",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_absolute",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings_absolute",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_instant",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings_instant",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_distance_absolute_error",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_distance_absolute_error",
        "is_visible": "true",
        "type": "number",
        "meta": "trips"
    }, {
        "name": "translate.reports.default_template.columns.sum_distance_absolute",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_distance_absolute",
        "is_visible": "true",
        "type": "number",
        "meta": "trips"
    }, {
        "name": "translate.reports.default_template.columns.max_speedkph",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "max_speedkph",
        "is_visible": "true",
        "type": "number",
        "meta": "trips"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_idling_deviation",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "sum_fillings_idling_deviation",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.fuel_price_plan",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "fuel_price_plan",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.fuel_price",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "8",
        "key": "fuel_price",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.sum_fillings_absolute_error",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "9",
        "key": "sum_fillings_absolute_error",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.first_fillings",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "9",
        "key": "first_fillings",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.finish_fillings",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "10",
        "key": "finish_fillings",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.fuel_consumption_rates",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "11",
        "key": "fuel_consumption_rates",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.fuel_consumption_rates_absolut",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "12",
        "key": "fuel_consumption_rates_absolut",
        "is_visible": "true",
        "type": "number",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.motohour_idling",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "12",
        "key": "motohour_idling",
        "is_visible": "true",
        "type": "string",
        "meta": "motohour"
    }, {
        "name": "translate.reports.default_template.columns.motohours",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "12",
        "key": "motohours",
        "is_visible": "true",
        "type": "string",
        "meta": "motohour"
    }, {
        "name": "translate.reports.default_template.columns.motohour_moving",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "13",
        "key": "motohour_moving",
        "is_visible": "true",
        "type": "string",
        "meta": "motohour"
    }, {
        "name": "translate.reports.default_template.columns.driver",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "2000",
        "key": "driver",
        "is_visible": "true",
        "type": "string",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.trailer",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "2100",
        "key": "trailer",
        "is_visible": "true",
        "type": "string",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.work_types",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "2200",
        "key": "work_types",
        "is_visible": "true",
        "type": "string",
        "meta": "total"
    }, {
        "name": "translate.reports.default_template.columns.groups_of_unit",
        "filter_min": "0",
        "filter_max": "1000",
        "use_filter": null,
        "sort": "3000",
        "key": "groups_of_unit",
        "is_visible": "true",
        "type": "string",
        "meta": "total"
    }]
}

Ответ 200

{
    "name": "Поездки",
    "key": "trips",
    "show_itog": "true",
    "time_group": "week",
    "column_group": "",
    "template_computable_columns": [
        {
            "name": "Тестовая колонка",
            "value": "(1000 - {report_columns.sum_fillings}) * {computable_columns.Тестовая колонка2}"
        },
        {
            "name": "Тестовая колонка2",
            "value": "(300 + {report_columns.sum_fillings}) * {computable_columns.Тестовая колонка3}"
        },
        {
            "name": "Тестовая колонка3",
            "value": "(1000 - {report_columns.sum_fillings}) * {computable_columns.Тестовая колонка}"
        }
    ],
    "template_columns": [
        {
            "name": "translate.reports.default_template.columns._unit_id",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "1",
            "key": "_unit_id",
            "is_visible": "false",
            "type": "string",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.unit_name",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "2",
            "key": "unit_name",
            "is_visible": "true",
            "type": "string",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.first_datepoint",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "3",
            "key": "first_datepoint",
            "is_visible": "true",
            "type": "date",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.last_datepoint",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "4",
            "key": "last_datepoint",
            "is_visible": "true",
            "type": "date",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.count_point",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "5",
            "key": "count_point",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_distance",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "6",
            "key": "sum_distance",
            "is_visible": "true",
            "type": "number",
            "meta": "trips"
        },
        {
            "name": "translate.reports.default_template.columns.avg_speedkph",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "7",
            "key": "avg_speedkph",
            "is_visible": "true",
            "type": "number",
            "meta": "trips"
        },
        {
            "name": "translate.reports.default_template.columns.drained_fillings",
            "filter_min": "0",
            "filter_max": "100000",
            "use_filter": null,
            "sort": "7",
            "key": "drained_fillings",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.stucked_fillings",
            "filter_min": "0",
            "filter_max": "100000",
            "use_filter": null,
            "sort": "7",
            "key": "stucked_fillings",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_idling_plan",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings_idling_plan",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_idling",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings_idling",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_plan",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings_plan",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_distance_absolute_error",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_distance_absolute_error",
            "is_visible": "true",
            "type": "number",
            "meta": "trips"
        },
        {
            "name": "translate.reports.default_template.columns.sum_distance_absolute",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_distance_absolute",
            "is_visible": "true",
            "type": "number",
            "meta": "trips"
        },
        {
            "name": "translate.reports.default_template.columns.max_speedkph",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "max_speedkph",
            "is_visible": "true",
            "type": "number",
            "meta": "trips"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_idling_deviation",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings_idling_deviation",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.fuel_price_plan",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "fuel_price_plan",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.fuel_price",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "fuel_price",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_absolute",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings_absolute",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_instant",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings_instant",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_deviation",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "8",
            "key": "sum_fillings_deviation",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.sum_fillings_absolute_error",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "9",
            "key": "sum_fillings_absolute_error",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.first_fillings",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "9",
            "key": "first_fillings",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.finish_fillings",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "10",
            "key": "finish_fillings",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.fuel_consumption_rates",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "11",
            "key": "fuel_consumption_rates",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.motohours",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "12",
            "key": "motohours",
            "is_visible": "true",
            "type": "string",
            "meta": "motohour"
        },
        {
            "name": "translate.reports.default_template.columns.motohour_idling",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "12",
            "key": "motohour_idling",
            "is_visible": "true",
            "type": "string",
            "meta": "motohour"
        },
        {
            "name": "translate.reports.default_template.columns.fuel_consumption_rates_absolut",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "12",
            "key": "fuel_consumption_rates_absolut",
            "is_visible": "true",
            "type": "number",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.motohour_moving",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "13",
            "key": "motohour_moving",
            "is_visible": "true",
            "type": "string",
            "meta": "motohour"
        },
        {
            "name": "translate.reports.default_template.columns.driver",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "2000",
            "key": "driver",
            "is_visible": "true",
            "type": "string",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.trailer",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "2100",
            "key": "trailer",
            "is_visible": "true",
            "type": "string",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.work_types",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "2200",
            "key": "work_types",
            "is_visible": "true",
            "type": "string",
            "meta": "total"
        },
        {
            "name": "translate.reports.default_template.columns.groups_of_unit",
            "filter_min": "0",
            "filter_max": "1000",
            "use_filter": null,
            "sort": "3000",
            "key": "groups_of_unit",
            "is_visible": "true",
            "type": "string",
            "meta": "total"
        }
    ]
}

Ответ 422

{
  "errors": [
    {
      "code": 4221,
      "field": "",
      "message": "В дополнительных колонок таблицы Поездки есть циклические зависимости: Тестовая колонка->Тестовая колонка2->Тестовая колонка3->Тестовая колонка"
    }
  ],
  "code": 4220,
  "message": "В дополнительных колонок таблицы Поездки есть циклические зависимости: Тестовая колонка->Тестовая колонка2->Тестовая колонка3->Тестовая колонка"
}
Request Body schema: application/json
column_group
string
key
string
name
string
show_itog
string
Array of objects
Array of objects
time_group
string

Responses

Request samples

Content type
application/json
{
  • "column_group": "",
  • "key": "trips",
  • "name": "Поездки",
  • "show_itog": "true",
  • "template_columns": [
    ],
  • "template_computable_columns": [
    ],
  • "time_group": "week"
}

/report_templates/:template_id

Создает свой шаблон отчетов


По правилам, таблица шаблона должна строится на основании дефолтного шаблона таблиц, т.е. путем копирования полей дефолтного шаблона и заполнения их пользовательскими значениями
(кроме поля 'key').

Запрос для создания пустого шаблона:

{"name": "Имя_шаблона", "template_tables": []}


Роль: Редактор и выше.


Ответ:

[{
    "id": "27aaa1b1-0510-4b7b-b020-99837f5621f0", //id шаблона
    "name": "шаблон2",  //имя
    "template_tables": [{
        "id": "d3134efa-9e9f-4be1-9459-1ded125ea73a", //id таблицы
        "id_template": "27aaa1b1-0510-4b7b-b020-99837f5621f0",  //id родительского шаблона
        "name": "Уведомления", //имя таблицы
        "attachments": [{
           "id": "80a201ea-67e5-4cd9-aea5-591128d2855a", //его id
           "created": "2017-11-16 23:41:44", //дата создания
           "name": "test.doc", //переданное название файла
           "url": "/attachments/80a201ea-67e5-4cd9-aea5-591128d2855a.doc" //путь, по которому доступен файл
        }], //вложения
        "key": "notifications", //ключ таблицы (берется из справочников по типу 'report_template_table_type') ------ НЕИЗМЕНЯЕМОЕ ПОЛЕ --------
        "geozones": [{ // список выбранных геозон
            "id": "d3134efa-9e9f-4be1-9459-1ded125ea73a"
            // --------------- полный перечень полей геозоны ---------------------
        }],
        "template_sensors": [{
            "id": "8f05e497-bddc-4b6a-bedb-e1c6ab5b55f0",
            "sensor_type": { // тип датчика, справочник типа sensor_type
                "key": "digital_sensors",
                "type": "sensor_type",
                "value": "Датчик"
            },
            "sensor_value": { //значение датчика, справочник типа template_sensor_value_type
                "key": "template_sensor_first_value",
                "type": "template_sensor_value_type",
                "value": "Начальное значение"
            },
            "name_mask": "Пробег" //string, маска по имени
        }, {
            "id": "91100c04-9ca6-48b1-9201-715713d023cc",
            "sensor_type": {
                "key": "digital_sensors",
                "type": "sensor_type",
                "value": "Датчик"
            },
            "sensor_value": {
                "key": "template_sensor_last_value",
                "type": "template_sensor_value_type",
                "value": "Конечное значение"
            },
            "name_mask": "Пробег"
        }],
        "show_itog": true, //показывать ли итог в таблице отчета
        "time_group": "nogrouping", //временная группировка. Возможные значения: Без групперовки, По дням, По неделям, По месяцам (берется из справочников по типу 'report_template_table_type')
        "column_group": "name", // ключ колонки, по которой происходит группировка
        "template_columns": [{ //колонки таблицы отчета, первоначально колонки берутся из справочника (для каждой таблицы предустановлены колонки) ------ НЕИЗМЕНЯЕМОЕ КОЛИЧЕСТО КОЛОНОК --------
            "id": "27aaa1b1-0510-4b7b-b020-99837f5621f0",
            "name": "Имя", //имя колонки
            "filter_min": 0, //фильтрация строк по минимальному значению
            "filter_max": 1000, //фильтрация строк по максимльному значению
            "sort": 0, //порядок колонки в отчете
            "key": "name", //ключ колонки   ------ НЕИЗМЕНЯЕМОЕ ПОЛЕ --------
            "is_visible": true //видима ли колонка в отчете 
        }]
    }]
}]
path Parameters
template_id
required
string
Example:

ID шаблона

Responses

/report_templates/:template_id

Удаление шаблона


Удаление физическое. При успехе - ответ 200


Роль: Редактор и выше.

path Parameters
template_id
required
string
Example:

ID шаблона

Responses

/report_templates/time_groups?table_key=<table_key>

Получение списка группировок для таблицы отчета


Пример запроса:

https://dev5.skif.pro/api_v1/report_templates/time_groups?table_key=trips

Возвращается массив, каждый элемент которого имеет поля key и name.


Роль: Читатель и выше.


Пример ответа:

[
  {
    "key": "day",
    "name": "По дням"
  },
  {
    "key": "week",
    "name": "По неделям"
  },
  {
    "key": "month",
    "name": "По месяцам"
  },
  {
    "key": "unit",
    "name": "По объектам"
  },
  {
    "key": "driver",
    "name": "По водителям"
  },
  {
    "key": "shift",
    "name": "По сменам"
  }
]
query Parameters
table_key
string
Example: table_key=

Responses

/report_templates/reorder

Изменение порядка шаблонов отчетов


В теле запроса в поле order необходимо отправить идентификаторы шаблонов (поле id) в желаемом порядке.


Роль: Редактор и выше.


Пример запроса:

PATCH https://dev5.skif.pro/api_v1/report_templates/reorder

{
    "order": [
        "9341dc4e-e7f1-4695-b166-5c84dce2a199",
        "2f25afc4-42e5-40bc-b6c4-4f41c6ff3b5a",
        "a53a0781-7064-4a50-a190-432bf0e8338c",
        "13fb2731-4a0f-427d-af66-b16107d1d936"
    ]
}

Возвращает ответ 200 без тела в случае успеха или ошибку с текстом.

Request Body schema: application/json
order
Array of strings

Responses

Request samples

Content type
application/json
{
  • "order": [
    ]
}

Треки

/points_geozones

Получение точек с информацией о вхождении в геозоны


Роль: Администратор и выше.


Пример запроса:

{
    "model": "units",
    "value": "тест", // для поиска
    "from": 0,
    "count": 100
}

Пример ответа:

 {
     "max": 2,
     "list": [{
         "id": "53e57d49-4e98-4399-bbf2-b03964df68b7",
         "name": "testName-777",
         "imei": "e2f856c7-e7a9-4071-adb4-f76df176661b",
         "company_id": "11111111-1111-1111-1111-111111111111",
         "company_name": "companyName"
     }, {
         "id": "9e49f72f-1f1a-46c3-9e61-b61a5f9900ea",
         "name": "testName-22222222",
         "imei": "06ee6786-905b-4aa3-ac65-2a18054128ea",
         "company_id": "11111111-1111-1111-1111-111111111111",
         "company_name": "companyName"
     }]
 }
Request Body schema: application/json
from
string
Array of objects
max
number
offset
number
to
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "from": "2021-05-30 00:00:00",
  • "geozones": [
    ],
  • "max": 100,
  • "offset": 0,
  • "to": "2021-05-30 10:00:00",
  • "units": [
    ]
}

/point

Метод возвращает информацию о конкретной точке объекта (аннотация точки).


Аннотация содержит в себе краткую информацию о точке:
datepoint - время данной точки.
speed - скорость в этой точке.
_marker_latlon - координата в формате [longitude, latitude].
<...далее идут все датчики юнита, со своими показаниями, пересчитанными по формуле. key - id датчика, name - имя...>

Параметр "from" опциональный. При его отсутствии будет возвращена последняя точка юнита.


Пример запроса:

{  
    'units': [ {'id': '9e86f2e9-3429-4674-945e-9519404451c0'} ], // берется только первый в массиве id, поэтому передавать несколько id не имеет смысла.
    'from': '2020-01-06 13:26:42'
}

Пример ответа:

{
    "columns": [
        {
            "key": "datepoint",
            "name": "datepoint",
            "value": "2019-07-22 08:19:35"
        },
        {
            "key": "speed",
            "name": "speed",
            "value": 0
        },
        {
            "key": "_marker_latlon",
            "name": "_marker_latlon",
            "value": [
                63.534103,
                53.1473
            ]
        },
        {
            "key": "43eb314b-2eba-4f3f-aff8-2178a8d2431c",
            "name": "Топливо",
            "value": 21505.1559
        },
        {
            "key": "7bbd2122-7078-4b5e-91b1-a1cfc84480cd",
            "name": "Напряжение",
            "value": 24.05
        },
        {
            "key": "b4274fde-2f64-4144-9cfb-3a1223ba0ceb",
            "name": "Зажигание",
            "value": 0.0
        }
    ]
}
Request Body schema: application/json
from
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "from": "2020-04-07 07:41:35",
  • "units": [
    ]
}

/fasttracks

Запрос на получение трека юнита


Запрос состоит из 4 параметров.

units - id объекта, берется всегда ПЕРВЫЙ объект, передавать несколько объектов не имеет смысла.

from - начало периода

to - конец периода

zoom - зумирование трека. Чем выше значение, тем больше точек будет пропущено (исключено из выборки) и тем менее точным будет сам трек. По сути, это площадь вокруг текущей точки. Будет отрисована та следующая точка, которая не попадёт в эту площадь, т.е. некий шаг пропуска.

Весь трек состоит из суб-треков, так называемых отрезков, которые в свою очередь состоят из конкретных точек, в которых содержится информация о состоянии объекта в конкретный момент времени.


Ответ имеет две колонки: columns и values.

process_id - уникальный идентификатор для выделение трека в области карты.

Columns - это набор полей объекта. Данная колонка всегда статична, поэтому индекс поля в этой колонке всегда равен индексу поля в конкретных точках (т.е. Если longitude в Columns имеет индекс 2, то в каждой точке мы найдем конкретное значение для longitude под индексом 2).


Пример ответа:

{
    "columns": [
      {
        "key": "datepoint",
        "value": "Дата"
      },
      {
        "key": "longitude",
        "value": "Широта"
      },
      {
        "key": "latitude",
        "value": "Долгота"
      },
      {
        "key": "speed",
        "value": "Скорость"
      },
      {
        "key": "angle",
        "value": "Угол"
      },
      {
        "key": "distance",
        "value": "Дистанция"
      }
    ],
    "values": [
      {
        "style": "style_0",
        "points": [
          [
            1578131434,
            63.5339,
            53.1475,
            0,
            101,
            0
          ],
          [
            1578198784,
            63.5347,
            53.1472,
            0,
            159,
            62.35
          ],
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            118.67
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            1682.05
          ],
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            1682.05
          ]
        ]
      },
      {
        "style": "style_0",
        "points": [
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            742.77
          ],
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            742.77
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            1800.23
          ],
          [
            1578199320,
            63.5797,
            53.1518,
            43,
            30,
            1800.23
          ],
          [
            1578199513,
            63.5941,
            53.1667,
            51,
            25,
            1921.08
          ]
        ]
      }
Request Body schema: application/json
from
string
to
string
Array of objects
zoom
number

Responses

Request samples

Content type
application/json
{
  • "from": "2021-05-03 00:00:00",
  • "to": "2021-05-24 00:00:00",
  • "units": [
    ],
  • "zoom": 14
}

/box_tracks

Запрос на получение трека в прямоугольной области карты


Запрос состоит из 2 параметров:

process_id - уникальный идентификатор, полученный в ответе на запрос /fasttracks .

box - массив [latitude1, longitude1, latitude2, longitude2].

latitude1, longitude1 - координаты нижнего левого угла прямоугольника.

latitude2, longitude2 - координаты верхного правого угла прямоугольника.

zoom - зумирование .

Ответ имеет такую же структуру, как в запросе POST /fasttracks.


Пример запроса:

{
    "process_id": "fed93e82-6c86-4cfd-bcf2-637bd3dfecaa",
    "box": [
       55.775519, 37.934139, 55.956245, 38.342490
    ],
    "zoom": 18
}

Пример ответа:

{
    "columns": [
      {
        "key": "datepoint",
        "value": "Дата"
      },
      {
        "key": "longitude",
        "value": "Широта"
      },
      {
        "key": "latitude",
        "value": "Долгота"
      },
      {
        "key": "speed",
        "value": "Скорость"
      },
      {
        "key": "angle",
        "value": "Угол"
      },
      {
        "key": "distance",
        "value": "Дистанция"
      }
    ],
    "values": [
      {
        "style": "style_0",
        "points": [
          [
            1578131434,
            63.5339,
            53.1475,
            0,
            101,
            0
          ],
          [
            1578198784,
            63.5347,
            53.1472,
            0,
            159,
            62.35
          ],
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            118.67
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            1682.05
          ],
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            1682.05
          ]
        ]
      },
      {
        "style": "style_0",
        "points": [
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            742.77
          ],
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            742.77
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            1800.23
          ],
          [
            1578199320,
            63.5797,
            53.1518,
            43,
            30,
            1800.23
          ],
          [
            1578199513,
            63.5941,
            53.1667,
            51,
            25,
            1921.08
          ]
        ]
      }
Request Body schema: application/json
box
Array of numbers
process_id
string

Responses

Request samples

Content type
application/json
{
  • "box": [
    ],
  • "process_id": "fed93e82-6c86-4cfd-bcf2-637bd3dfecaa"
}

/fasttracks_group

Запрос на получение трека юнита


Запрос состоит из 4 параметров:

Если нужен трек для несколько объектов, то необходимо передать ID объектов в units : "units": [{"id": "c4e945a2-eb38-448c-b843-c2a5c72f55eb"}, {"id", "992806ef-ed56-492f-9787-3963f1db53fa"}, ...]

Если нужен трек для группы объектов, то необходимо передать groups: "groups": [{"id": "7e58cc3c-2ce3-4597-80da-ed63e5d64c8a"}]

from - начало периода

to - конец периода

zoom - зумирование трека. Чем выше значение, тем больше точек будет пропущено (исключено из выборки) и тем менее точным будет сам трек. По сути, это площадь вокруг текущей точки. Будет отрисована та следующая точка, которая не попадёт в эту площадь, т.е. некий шаг пропуска.

Весь трек состоит из суб-треков, так называемых отрезков, которые в свою очередь состоят из конкретных точек, в которых содержится информация о состоянии объекта в конкретный момент времени.


Ответ имеет массив результатов.
Каждый эдемент массива:
unit_id, unit_name, color, columns и values.

unit_id - ID объекта,
unit_name - имя объекта,
color - цвет трека
Columns - это набор полей объекта. Данная колонка всегда статична, поэтому индекс поля в этой колонке всегда равен индексу поля в конкретных точках (т.е. если longitude в Columns имеет индекс 2, то в каждой точке мы найдем конкретное значение для longitude под индексом 2).


Пример запроса:

{  
    'units': [{'id': '712ceae4-f112-4714-9a4d-afe141e47bf7'}, {'id': 'fc0a7f07-f04f-42de-8b77-9d0625a163c4'}],
    'from': '2020-01-01 00:00:00',
    'to': '2020-01-30 00:00:00',
    'zoom': 1000 
}

Пример ответа:

[
{
    "unit_id": "712ceae4-f112-4714-9a4d-afe141e47bf7",
    "unit_name": "unit1",
    "color": "#641e16",
    "columns": [
      {
        "key": "datepoint",
        "value": "Дата"
      },
      {
        "key": "longitude",
        "value": "Широта"
      },
      {
        "key": "latitude",
        "value": "Долгота"
      },
      {
        "key": "speed",
        "value": "Скорость"
      },
      {
        "key": "angle",
        "value": "Угол"
      },
      {
        "key": "distance",
        "value": "Дистанция"
      }
    ],
    "values": [
      {
        "style": "style_0",
        "points": [
          [
            1578131434,
            63.5339,
            53.1475,
            0,
            101,
            0
          ],
          [
            1578198784,
            63.5347,
            53.1472,
            0,
            159,
            62.35
          ],
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            118.67
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            1682.05
          ],
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            1682.05
          ]
        ]
      },
      {
        "style": "style_0",
        "points": [
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            742.77
          ],
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            742.77
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            1800.23
          ],
          [
            1578199320,
            63.5797,
            53.1518,
            43,
            30,
            1800.23
          ],
          [
            1578199513,
            63.5941,
            53.1667,
            51,
            25,
            1921.08
          ]
        ]
      },
    {
              "unit_id": "fc0a7f07-f04f-42de-8b77-9d0625a163c4",
    "unit_name": "unit2",
    "color": "#641e16",
    "columns": [
      {
        "key": "datepoint",
        "value": "Дата"
      },
      {
        "key": "longitude",
        "value": "Широта"
      },
      {
        "key": "latitude",
        "value": "Долгота"
      },
      {
        "key": "speed",
        "value": "Скорость"
      },
      {
        "key": "angle",
        "value": "Угол"
      },
      {
        "key": "distance",
        "value": "Дистанция"
      }
    ],
    "values": [
      {
        "style": "style_0",
        "points": [
          [
            1578131434,
            63.5339,
            53.1475,
            0,
            101,
            0
          ],
          [
            1578198784,
            63.5347,
            53.1472,
            0,
            159,
            62.35
          ],
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            118.67
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578198974,
            63.5337,
            53.1464,
            17,
            160,
            1682.05
          ],
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            1682.05
          ]
        ]
      },
      {
        "style": "style_0",
        "points": [
          [
            1578199107,
            63.5548,
            53.1381,
            51,
            132,
            742.77
          ],
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            742.77
          ]
        ]
      },
      {
        "style": "style_40",
        "points": [
          [
            1578199192,
            63.5659,
            53.1379,
            39,
            11,
            1800.23
          ],
          [
            1578199320,
            63.5797,
            53.1518,
            43,
            30,
            1800.23
          ],
          [
            1578199513,
            63.5941,
            53.1667,
            51,
            25,
            1921.08
          ]
        ]
      }
]
Request Body schema: application/json
from
string
Array of objects
to
string
zoom
number

Responses

Request samples

Content type
application/json
{
  • "from": "2021-05-01 00:00:00",
  • "groups": [
    ],
  • "to": "2021-05-31 00:00:00",
  • "zoom": 14
}

/datepoint

Получение номера записи в журнале по искомой дате


units - объект.
from - начало интервала журнала.
datepoint - искомая дата.


Пример запроса:

{
    "units": [
        {
            "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
        }
    ],
    "from": "2022-12-16 00:00:00",
    "datepoint": "2022-12-16 12:40:36"
}

Пример ответа:

{
    "index": 2006
}
Request Body schema: application/json
datepoint
string
from
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "datepoint": "2022-12-16 12:40:36",
  • "from": "2022-12-16 00:00:00",
  • "units": [
    ]
}

/fasttracks_to_geozone

Создание геозоны на основе трека объекта


units - id объекта, берется всегда ПЕРВЫЙ объект, передавать несколько объектов не имеет смысла.

from - начало периода

to - конец периода

geozone - все данные для создания геозоны, кроме точек (geometry). см. POST /geozones

Ответ - Поля отправленные в geozone в запросе + geometry - координаты


Пример запроса:

{
    "units": [
        {
            "id": "194659d6-b51c-4da7-b3e0-a9fd0c08bd08"
        }
    ],
    "geozone": {
        "name": "Геозона",
        "width": 1,
        "type": {
            "key": "polygon",
            "type": "geozone_type",
            "value": "Полигон"
        },
        "icon": {
            "key": "territory",
            "type": "geo_icon",
            "value": "Территория"
        },
        "color": {
            "key": "#E68A2F",
            "type": "color_code",
            "value": "Оранжевый"
        }
    },
    "from": "2022-05-01 00:00:00",
    "to": "2022-05-08 00:00:00"
}

Пример ответа:

{
    "name": "Геозона",
    "width": 1,
    "type": {
        "key": "polygon",
        "type": "geozone_type",
        "value": "Полигон"
    },
    "icon": {
        "key": "territory",
        "type": "geo_icon",
        "value": "Территория"
    },
    "color": {
        "key": "#E68A2F",
        "type": "color_code",
        "value": "Оранжевый"
    },
    "geometry": [
        [
            58.477291107177734,
            56.41659164428711
        ],
        [
            58.477989196777344,
            56.414066314697266
        ],
        [
            58.478939056396484,
            56.41456985473633
        ],
        [
            58.47801971435547,
            56.41176986694336
        ],
        [
            58.47996139526367,
            56.41171646118164
        ],
        [
            58.49407196044922,
            56.43291091918945
        ],
        [
            58.455448150634766,
            56.4921875
        ],
        [
            58.44243621826172,
            56.5400390625
        ],
        [
            58.435298919677734,
            56.54085922241211
        ],
        [
            58.432525634765625,
            56.539642333984375
        ],
        [
            58.42418670654297,
            56.52698516845703
        ],
        [
            58.390262603759766,
            56.50182342529297
        ],
        [
            58.37371063232422,
            56.48448944091797
        ],
        [
            58.35701370239258,
            56.47863006591797
        ],
        [
            58.34515380859375,
            56.46323013305664
        ],
        [
            58.34355545043945,
            56.44695281982422
        ],
        [
            58.33879852294922,
            56.43614959716797
        ],
        [
            58.32884216308594,
            56.43088912963867
        ],
        [
            58.316139221191406,
            56.43156814575195
        ],
        [
            58.31150436401367,
            56.42858123779297
        ],
        [
            58.30974197387695,
            56.42164611816406
        ],
        [
            58.302207946777344,
            56.417686462402344
        ],
        [
            58.3018913269043,
            56.41263961791992
        ],
        [
            58.306488037109375,
            56.40105056762695
        ],
        [
            58.30192565917969,
            56.412593841552734
        ],
        [
            58.30179214477539,
            56.41674041748047
        ],
        [
            58.30784606933594,
            56.42136764526367
        ],
        [
            58.30413818359375,
            56.43191146850586
        ],
        [
            58.309669494628906,
            56.4671516418457
        ],
        [
            58.305442810058594,
            56.47206115722656
        ],
        [
            58.29851150512695,
            56.47565841674805
        ],
        [
            58.294681549072266,
            56.481937408447266
        ],
        [
            58.300418853759766,
            56.484275817871094
        ],
        [
            58.30851364135742,
            56.48251724243164
        ],
        [
            58.31448745727539,
            56.46957015991211
        ],
        [
            58.31837463378906,
            56.46688461303711
        ],
        [
            58.3328742980957,
            56.47914123535156
        ],
        [
            58.335201263427734,
            56.47939682006836
        ],
        [
            58.33803939819336,
            56.47685623168945
        ],
        [
            58.34174728393555,
            56.467525482177734
        ],
        [
            58.34584426879883,
            56.46585464477539
        ],
        [
            58.358394622802734,
            56.47978973388672
        ],
        [
            58.373939514160156,
            56.48464584350586
        ],
        [
            58.38987350463867,
            56.50153350830078
        ],
        [
            58.42338180541992,
            56.52629089355469
        ],
        [
            58.43311309814453,
            56.54020309448242
        ],
        [
            58.442684173583984,
            56.540000915527344
        ],
        [
            58.4559440612793,
            56.49037551879883
        ],
        [
            58.45564651489258,
            56.43037414550781
        ],
        [
            58.4511833190918,
            56.422027587890625
        ],
        [
            58.455528259277344,
            56.43009567260742
        ],
        [
            58.45490646362305,
            56.43424987792969
        ],
        [
            58.45737075805664,
            56.4296989440918
        ],
        [
            58.456932067871094,
            56.42644119262695
        ],
        [
            58.463802337646484,
            56.39642333984375
        ],
        [
            58.470794677734375,
            56.39438247680664
        ],
        [
            58.47585678100586,
            56.407806396484375
        ],
        [
            58.47556686401367,
            56.40900802612305
        ],
        [
            58.474639892578125,
            56.40435028076172
        ],
        [
            58.47453689575195,
            56.409210205078125
        ],
        [
            58.47787094116211,
            56.41158676147461
        ],
        [
            58.47735595703125,
            56.416500091552734
        ],
        [
            58.477962493896484,
            56.41410446166992
        ],
        [
            58.478851318359375,
            56.41459655761719
        ],
        [
            58.47584915161133,
            56.409793853759766
        ],
        [
            58.470985412597656,
            56.39485168457031
        ],
        [
            58.468772888183594,
            56.39400100708008
        ],
        [
            58.464168548583984,
            56.395565032958984
        ],
        [
            58.45691680908203,
            56.42605972290039
        ],
        [
            58.457672119140625,
            56.42924118041992
        ],
        [
            58.45512390136719,
            56.434085845947266
        ],
        [
            58.45643997192383,
            56.467201232910156
        ],
        [
            58.45261764526367,
            56.464988708496094
        ],
        [
            58.45439147949219,
            56.46688461303711
        ],
        [
            58.456478118896484,
            56.466243743896484
        ],
        [
            58.45513916015625,
            56.43400955200195
        ],
        [
            58.457672119140625,
            56.428993225097656
        ],
        [
            58.45687484741211,
            56.426273345947266
        ],
        [
            58.46389389038086,
            56.396141052246094
        ],
        [
            58.47080612182617,
            56.39448928833008
        ],
        [
            58.47549819946289,
            56.40879821777344
        ],
        [
            58.47584915161133,
            56.407806396484375
        ],
        [
            58.47478485107422,
            56.40472412109375
        ],
        [
            58.47456359863281,
            56.409278869628906
        ],
        [
            58.47783660888672,
            56.41162872314453
        ],
        [
            58.47768020629883,
            56.41593933105469
        ],
        [
            58.4779167175293,
            56.411678314208984
        ],
        [
            58.47163009643555,
            56.410831451416016
        ],
        [
            58.46517562866211,
            56.41938018798828
        ],
        [
            58.460968017578125,
            56.4117431640625
        ],
        [
            58.45635986328125,
            56.43159484863281
        ],
        [
            58.451236724853516,
            56.4222526550293
        ],
        [
            58.44839096069336,
            56.42311477661133
        ],
        [
            58.45040512084961,
            56.42209243774414
        ],
        [
            58.452735900878906,
            56.42485809326172
        ],
        [
            58.45558166503906,
            56.43049240112305
        ],
        [
            58.4548454284668,
            56.434326171875
        ],
        [
            58.45744323730469,
            56.4295539855957
        ],
        [
            58.45690155029297,
            56.42661666870117
        ],
        [
            58.460601806640625,
            56.41170883178711
        ],
        [
            58.464805603027344,
            56.4195442199707
        ],
        [
            58.47134780883789,
            56.41114044189453
        ],
        [
            58.47795486450195,
            56.41222381591797
        ],
        [
            58.47724914550781,
            56.4166259765625
        ]
    ]
}
Request Body schema: application/json
from
string
object
to
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "from": "2022-05-01 00:00:00",
  • "geozone": {
    },
  • "to": "2022-05-08 00:00:00",
  • "units": [
    ]
}

/tracks/get_tracks

Запрос для получения трека

Тело запроса JSON


Поля запроса :

unit_id - ID объекта

from - начало периода, в формате yyyy-MM-dd HH:mm:ss, необходимо отправлять в UTC+0

to - конеч периода, в формате yyyy-MM-dd HH:mm:ss, необходимо отправлять в UTC+0

min_lat - Минимальное значение широты, вещественное число

max_lat - Максимальное значение широты, вещественное число

min_lon - Минимальное значение долготы, вещественное число

max_lon - Максимальное значение долготы, вещественное число

zoom - зум, целое число

process_id - опциональное поле, для указания идентификатор запроса на клиенте

На странице локатора дополнительно отправить параметр locator_id - ID локатора


Пример запроса:

GET https://dev5.skif.pro/api_v1/tracks/get_tracks

{
    "unit_id": "93a62a79-a117-4b4e-b53a-568e1d06e603",
    "from": "2023-10-01 00:00:00",
    "to": "2024-12-01 00:00:00",
    "min_lat": 34.323233,
    "min_lon": 20.343545,
    "max_lat": 80.34324,
    "max_lon": 88.32321,
    "zoom": 10,
    "process_id": "4c658ab8-2ef6-460c-aee2-ecc4a1486df8"
}

Ответ:

Каждый элемент массива points в таком формате: [datepoint_delta,latitude,longitude,speed]

datepoint_delta - разница datepoint от предыдущей записи в секундах. Для первого элемента это разница от from. datepoint в unix timestamp.


Пример ответа:

{
    "points": [
        [
            17140501,
            59.959656,
            30.311783,
            16
        ],
        [
            222,
            59.956139,
            30.320679,
            45
        ],
        [
            244,
            59.950233,
            30.326031,
            13
        ]
    ],
    "process_id": "4c658ab8-2ef6-460c-aee2-ecc4a1486df8"
}
header Parameters
cookie
string
Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX1837SQcSoYSWGg1LPwUmHtV7ONZrz1BFryeqgVO6dXAKzEpKdMN3+1F"; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
from
string
max_lat
number
max_lon
number
min_lat
number
min_lon
number
process_id
string
to
string
unit_id
string
zoom
number

Responses

Request samples

Content type
application/json
{
  • "from": "2023-10-01 00:00:00",
  • "max_lat": 80.34324,
  • "max_lon": 88.32321,
  • "min_lat": 34.323233,
  • "min_lon": 20.343545,
  • "process_id": "4c658ab8-2ef6-460c-aee2-ecc4a1486df8",
  • "to": "2024-12-01 00:00:00",
  • "unit_id": "93a62a79-a117-4b4e-b53a-568e1d06e603",
  • "zoom": 10
}

Уведомления

/notifications?ids=:ids

Получение шаблона уведомления


Роль: Читатель и выше.

query Parameters
ids
string
Example: ids=

Responses

/notifications

Создание нового шаблона уведомлений


Модель шаблона:

    Unit[] units - обязательный параметр. Должен быть хотя бы один юнит.
    units_groups[] units_groups - Новый параметр для уведомлений по группе объектов
    Dictionary type - виды уведомлений - Контроль скорости, Контроль геозон, Контроль значения датчика, Тревожная кнопка, Потеря связи, Простой ТС, Контроль ТО. Ключи можно получить через запрос GET /dictionaries/notification_type
    Dictionary sound - Звук, Ключи можно получить через запрос GET /dictionaries,  тип - notify_sounds
    String[] delivery_emails - массив строк с емейлами
    String[] delivery_sms - массив строк с телефонами
    UUID[] delivery_push - массив uuid юзеров
    Long[] delivery_telegram - массив id-рассылки для Telegram. Массив целых чисел. Выбирается из пользователей из поля telegram_chat_id
    В запросе должен быть хотя бы один из этих 4 параметров.
    List<DeliveryCommand> delivery_commands - массив настройки для отправки команды, каждый элемент 
       состоит из полей terminal_type_key - ключ тип протокола, command - текст команды.
    List<DeliveryHttpRequest> delivery_http_requests - массив настройки для отправки GET/POST запросов
    UUID[] delivery_add_unit_group - массив UUID групп объектов для "Добавление объекта в группы"
    UUID[] delivery_remove_unit_from_group -  UUID групп объектов для "Удаление объекта из группы"
    Dictionary delivery_unit_icon - изменение иконки объекта
    String name - имя шаблона. Обязательный параметр.
    Boolean is_active; //деактивация
    String notificationtext - шаблон текста уведомления. Обязательный параметр.
    Boolean is_show_online; // включить показать онлайн
    Boolean isdeliveryemail; // включить отправку на почту
    Boolean isdeliverysms; // включить отправку sms
    Boolean isdeliverypush; //включить отправку push
    Boolean isdeliverytelegram; //включить отправку на телеграм
    Boolean isdeliverycommand; // включить отправку команды 
    Boolean isdeliveryhttp; // включить отправку GET/POST
    Boolean isdeliveryaddtogroup; // включить добавление объекта из группы
    Boolean isdeliveryremovefromgroup; // включить удаление объекта из группы
    Boolean isdeliverychangeicon; // включить изменение иконки объекта
Boolean isviolation;
    Boolean isevent;
    Boolean weeks_control; //контроль по дням недели
    Boolean wc_active_1; //monday
    Boolean wc_active_2;
    Boolean wc_active_3;
    Boolean wc_active_4;
    Boolean wc_active_5;
    Boolean wc_active_6;
    Boolean wc_active_7;
    String wc_from_1; //from for monday
    String wc_from_2;
    String wc_from_3;
    String wc_from_4;
    String wc_from_5;
    String wc_from_6;
    String wc_from_7;
    String wc_to_1; //to for monday
    String wc_to_2;
    String wc_to_3;
    String wc_to_4;
    String wc_to_5;
    String wc_to_6;
    String wc_to_7;
    Geozones[] geozones - массив геозон. Должна быть хотя бы одна геозона в массиве, если type = 'geozone_notification' или 'velocity_notification'.
    GeozonesGroup[] geozones_groups - массив групп геозон. 
    Dictionary sensor_type - ключ типа сенсора. Список типов может быть получен по запросу GET /dictionaries/sensor_type
    String name_mask - маска имени сенсора.
    В случае, если type = 'sensor_notification', то должен быть заполнен хотя бы один из этих 2 параметров.
    Boolean in_geozone - тип триггера для геозон. false - выход из геозоны, true - вход в геозону. Является обязательным, если type = 'geozone_notification'.
    Boolean in_interval - тип триггера для датчика. false - вне установленных рамок, true - в установленных рамках.  Является обязательным, если type = 'sensor_notification'.
    Double speed_notless - скорость "не менее". Параметр используется только если type = 'velocity_notification'
    Double speed_notmore - скорость "не более". Параметр используется только если type = 'velocity_notification' или 'idle_notification'.
    Если type = 'velocity_notification', то должен быть заполнен хотя бы 1 параметр из этих двух. 
    Double sensor_notless - значение датчика "не менее". Параметр используется только если type = 'sensor_notification'
    Double sensor_notmore - значение датчика "не более". Параметр используется только если type = 'sensor_notification'
    Если type = 'sensor_notification', то должен быть заполнен хотя бы 1 параметр из этих двух. 
    Double lostsignal_notless - минимальное время потери сигнала. Параметр используется только если type = 'sensor_notification' и в этом случае является обязательным.
    Integer duration - Длительность простоя. Используется только если type = 'idle_notification' и в таком случае является обязательным. 
    Также, если type = 'idle_notification', то параметр speed_notmore является обязательным.
    Integer interval_milage - интервал пробега. Используется только если type = 'service_notification'.
    Integer interval_days - интервал по дням. Используется только если type = 'service_notification'.
    Integer interval_motohours - интервал моточасы
Используется только если type = 'service_notification'.
    Если type = 'service_notification', то должен быть заполнен хотя бы 1 параметр из этих трех. 
    Dictionary timeout_conditions_type - Виды таймаута проверки условия. Возможные ключи: timeout_conditions_sec, timeout_conditions_min, timeout_conditions_hour
    Integer timeout_conditions_value - Значение таймаута проверки условия. 

Роль: Оператор и выше.

header Parameters
string
Example:
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
"{\n\t\"units\":[{\"id\":\"7e078c26-3043-4117-a822-54b29785c086\"},{\"id\":\"4b8f9e89-cc66-43b4-bafe-bf08fac8b211\"}],\n \"units_groups\": [{\"id\":\"266b1737-e85f-4ba0-9985-dbeefa2dd697\"}],\n\t\"type\":{\"key\":\"sensor_notification\"},\n \"sound\":{\"key\":\"8tone\"},\n\t\"delivery_emails\":[\"test1@mail.uk\",\"test2@mail.uk2\"],\n\t\"delivery_sms\":[\"12345644848\",\"12345644849\"],\n\t\"delivery_push\":[\"990cb3e1-474a-4f07-95b9-8568c194d801\",\"b1fd9628-9f72-4e72-9da8-f5ca4e2fffc1\"],\n \"delivery_commands\": [\n {\n \"terminal_type_key\": \"navtelecom\",\n \"command\": \"*?V\"\n },\n {\n \"terminal_type_key\": \"galileo\",\n \"command\": \"Info\"\n }\n ],\n \"delivery_http_requests\" : [\n {\n \"url\": \"http://example.com\",\n \"method\" : \"post\",\n \"jsonBody\" : \"{ 'invalid syntax': 'json' }\", // в этом примере возвращается ошибка. нужно отправить { \"valid syntax\": \"json\" }\n \"headers\": [\n {\n \"name\" : \"headerName\",\n \"value\": \"headerValue\"\n }\n ]\n }\n\n ],\n \"timeout_conditions_type\": {\n \"key\": \"timeout_conditions_min\"\n },\n \"timeout_conditions_value\": 1,\n\t\"name\":\"testNotification\",\n\t\"is_active\":true,\n\t\"notificationtext\":\"some text\",\n\t\"is_show_online\": true,\n\t\"isdeliveryemail\": true,\n \"isdeliverysms\": true,\n \"isdeliverypush\": true,\n \"isdeliverycommand\": true,\n \"isviolation\": false,\n \"isdeliveryhttp\": true,\n \"isevent\": true,\n \n \"weeks_control\": true,\n \"wc_active_1\":true,\n \"wc_from_1\": 4124,\n \"wc_to_1\": 4200,\n \n\t\"geozones\":[{\"id\":\"79883ab2-968a-405d-839e-fad90e92a3d0\"},{\"id\":\"266b1737-e85f-4ba0-9985-dbeefa2dd697\"}],\n\t\"sensor_type\":{\"key\":\"ignition\"},\n\t\"name_mask\": \"CustomFuelSenso\",\n\t\"in_geozone\": true,\n\t\"in_interval\": false,\n\t\"speed_notless\": 12.0,\n\t\"speed_notmore\": 15.0,\n\t\"sensor_notless\": 333.0,\n\t\"sensor_notmore\": 555.0,\n\t\"duration\": 10,\n\t\"interval_milage\": 34000,\n\t\"interval_days\": 90,\n \n \"isdeliveryaddtogroup\": true,\n \"isdeliveryremovefromgroup\" : true,\n \"delivery_add_unit_group\": [\"9fd6f8d7-0d9a-4a8a-93f7-a2b0c28fcee4\"],\n \"delivery_remove_unit_from_group\": [\"9fd6f8d7-0d9a-4a8a-93f7-a2b0c28fcee4\"]\n\n}"

/notifications?ids=:ids

Планирование удаления шаблона уведомления


см. DELETE /units?ids=:ids


Роль: Оператор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/notifications/:notification_id


Роль: Оператор и выше.

path Parameters
notification_id
required
string
Example:

ID уведомления

Responses

/notifications/:notification_id

Удаление шаблона уведомлений


Удаление физическое.


Роль: Оператор и выше.

path Parameters
notification_id
required
string
Example:

ID уведомления

Responses

/notifications/:notification_id

Изменение активности уведомлений


Параметры:
notification_id - ID уведомления

Тело запроса:
Чтобы сделать активным, необходимо отправить запрос с таким телом:

{
    "is_active": true
}
или
{
    "is_active": "true"
}
или
{
    "is_active": 1
}

Чтобы сделать неактивным, необходимо отправить запрос с таким телом:

{
    "is_active": false
}
или
{
    "is_active": "false"
}
или
{
    "is_active": 0
}

В ответе возвращается обновленный объект notification , как в PUT /notifications/:notification_id


Роль: Оператор и выше.

path Parameters
notification_id
required
string
Example:

ID уведомления

Request Body schema: application/json
is_active
string

Responses

Request samples

Content type
application/json
{
  • "is_active": "false"
}

/notifications/list


Роль: Читатель и выше.

Responses

/messages

Получение уведомлений


Используется один вебсокет для получения следующих данных:

  1. последнего сообщения от объекта

  2. уведомлений за последние сутки

  3. новых уведомлений

  4. изменения справочников

После открытия сокета сервер будет присылать уведомления вида:

[{
    "id": "27379574-a367-4864-a2de-b236aa22dbd4",
    "template": {},
    "notificationtext": "Камаз P 293 BT Костанай в 2020-07-21 15:49:00 зафиксирован вход в геозону / выход из геозоны ... на скорости 10 возле Нефтебаза. ",
    "time": "2020-07-21 15:49:00",
    "unit": {},
    "latitude": 53.2038766,
    "longitude": 63.583665
}]

Responses

Рассылки

/mailings?ids=:ids

Получение рассылок по их ID (через запятую)


Возвращает массив рассылок.
Если параметр 'ids' пустой (т.е. запрос = 'GET /units_trailers', без параметра), то вернётся список всех связей всех компаний пользователя, из которого исключаются удаленные связей. Если ids не пустой (т.е. запрос = 'GET /mailings?ids=00215-54021..,25541-454754-4513..'), то вернётся список только из запрошенных связей.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретная связь.


Роль: Читатель и выше.


Пример запроса:

/mailings?ids=13b37095-f2eb-4c3f-804b-6f780281e398

Пример ответа:

{
    "id": "13b37095-f2eb-4c3f-804b-6f780281e398",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "name": "New mailing",
    "units_group": {
        "id": "09581d93-a351-44de-9f33-1d4b0a1b0b48"
    },
    "report_template": {
        "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
    },
    "periodic": 2,
    "periodic_type": {
        "key": "periodic_days",
        "type": "periodic_type",
        "value": "По дням"
    },
    "weekdays": [
        {
            "key": "monday",
            "type": "weekdays_type",
            "value": "Понедельник"
        },
        {
            "key": "friday",
            "type": "weekdays_type",
            "value": "Пятница"
        }
    ],
    "delivery_emails": [
        "test@mail.ru",
        "xyz@gmail.com"
    ],
    "last_run": "2020-10-05 10:25:45",
    "msg": "Some message",
    "is_active": false,
    "_active": false
}
query Parameters
ids
string
Example: ids=
header Parameters
cookie
string
Example: PLAY_LANG=ru; PLAY_SESSION={{vault:json-web-token}}

Responses

/mailings

Создание новой рассылки


Модель рассылки:

    name - название рассылки, строка, обязательно
    Unit unit - объект
    UnitsGroup units_group - группа объектов, в одно и той же время надо указать или unit или units_group
    ReportTemplate report_template - шаблон отчета, обязательно
    periodic - период отправки письма, целое положительное число, обязательно
    periodic_type - тип периода отправки, получается из справочника по типу periodic_type, обязательно
    weekdays - список дней недели, в которых надо отправить письмо, обязательно
    delivery_emails - список почт
    delivery_telegram - список телеграм чатов
    last_run - дата и время последней отправки, необязательно
    msg - сообщение, текст
    is_active - признак активности, булеан

Роль: Редактор и выше.


Пример запроса:

{
    "name": "New mailing",
    "unit": {
        "id": "b8b1f330-52cf-46c6-a41e-ab0f70a0cce5"
    },
    "report_template": {
        "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
    },
    "periodic": 2,
    "periodic_type": {
        "type": "periodic_type",
        "key": "periodic_days"
    },
    "weekdays": [
        {
            "type": "weekdays_type",
            "key": "monday"
        },
        {
            "type": "weekdays_type",
            "key": "friday"
        }
    ],
    "delivery_emails": [
        "test@mail.ru",
        "xyz@gmail.com"
    ],
    "delivery_telegram": [
        484392478323,
        -13894857843
    ],
    "last_run": "2020-10-05 10:25:45",
    "msg": "Some message",
    "is_active": true
}

Ответ:

{
    "id": "afa8dc0f-4e8f-422d-9059-2fedb9039f4e",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "unit": {
        "id": "b8b1f330-52cf-46c6-a41e-ab0f70a0cce5"
    },
    "report_template": {
        "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
    },
    "periodic": 2,
    "periodic_type": {
        "key": "periodic_days",
        "type": "periodic_type",
        "value": "По дням"
    },
    "weekdays": [
        {
            "key": "monday",
            "type": "weekdays_type",
            "value": "Понедельник"
        },
        {
            "key": "friday",
            "type": "weekdays_type",
            "value": "Пятница"
        }
    ],
    "delivery_emails": [
        "test@mail.ru",
        "xyz@gmail.com"
    ],
     "delivery_telegram": [
        484392478323,
        -13894857843
    ],
    "last_run": "2020-10-05 10:25:45",
    "msg": "Some message",
    "is_active": true,
    "_active": true
}

Запрос по группе объектов:

{
    "name": "New mailing",
    "units_group": {
        "id": "09581d93-a351-44de-9f33-1d4b0a1b0b48"
    },
    "report_template": {
        "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
    },
    "periodic": 2,
    "periodic_type": {
        "type": "periodic_type",
        "key": "periodic_days"
    },
    "weekdays": [
        {
            "type": "weekdays_type",
            "key": "monday"
        },
        {
            "type": "weekdays_type",
            "key": "friday"
        }
    ],
    "delivery_emails": [
        "test@mail.ru",
        "xyz@gmail.com"
    ],
     "delivery_telegram": [
        484392478323,
        -13894857843
    ],
    "last_run": "2020-10-05 10:25:45",
    "msg": "Some message",
    "is_active": true
}
header Parameters
cookie
string
Example: PLAY_LANG=ru; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
delivery_emails
Array of strings
is_active
boolean
last_run
string
msg
string
periodic
number
object
object
object
Array of objects

Responses

Request samples

Content type
application/json
{
  • "delivery_emails": [
    ],
  • "is_active": true,
  • "last_run": "2020-10-05 10:25:45",
  • "msg": "Some message",
  • "periodic": 2,
  • "periodic_type": {
    },
  • "report_template": {
    },
  • "units_group": {
    },
  • "weekdays": [
    ]
}

/mailings?ids=:ids

Планирование удаление рассылки


см. DELETE /units?ids=:ids


Роль: Редактор и выше.

query Parameters
ids
string
Example: ids=
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/mailings/:id

Удаление рассылки


Удаление физическое.


Роль: Редактор и выше.

path Parameters
id
required
string
Example:

ID рассылки

Responses

/mailings/:id

Изменение активности рассылки


Параметры:
id - ID рассылки

Чтобы сделать активным, необходимо отправить запрос с таким телом:

{
    "is_active": true
}
или
{
    "is_active": "true"
}
или
{
    "is_active": 1
}

Чтобы сделать неактивным, необходимо отправить запрос с таким телом:

{
    "is_active": false
}
или
{
    "is_active": "false"
}
или
{
    "is_active": 0
}

В ответе возвращается обновленный объект mailing как в PUT /mailings/:id

path Parameters
id
required
string
Example:

ID рассылки

header Parameters
cookie
string
Example: PLAY_LANG=ru; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
is_active
string

Responses

Request samples

Content type
application/json
{
  • "is_active": "false"
}

/mailings/list

Получить рассылки по фильтру


Аналогичнао запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
["periodic", "last_run", created, is_delete]

sortDesc - сортировка по убыванию, значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - "units_group.id", "unit.id", "is_active", "msg"


Роль: Читатель и выше.


Пример запроса:

Получить первые 10 связей, отсортированные по возрастанию даты создания объект с ID равным b8b1f330-52cf-46c6-a41e-ab0f70a0cce5

{
    "from": 0,
    "count": 10,
    "conditions": [
        {
            "field": "unit.id",
            "value": "b8b1f330-52cf-46c6-a41e-ab0f70a0cce5"
        }
    ]
}

Ответ:

{
    "max": 2,
    "list": [
        {
            "id": "afa8dc0f-4e8f-422d-9059-2fedb9039f4e",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "name": "New mailing",
            "unit": {
                "id": "b8b1f330-52cf-46c6-a41e-ab0f70a0cce5"
            },
            "report_template": {
                "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
            },
            "periodic": 2,
            "periodic_type": {
                "key": "periodic_days",
                "type": null,
                "value": null
            },
            "weekdays": [],
            "delivery_emails": [
                "test@mail.ru",
                "xyz@gmail.com"
            ],
            "last_run": "2020-10-05 10:25:45",
            "msg": "Some message",
            "is_active": true,
            "_active": true
        },
        {
            "id": "13b37095-f2eb-4c3f-804b-6f780281e398",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "name": "New mailing2",
            "units_group": {
                "id": "09581d93-a351-44de-9f33-1d4b0a1b0b48"
            },
            "report_template": {
                "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
            },
            "periodic": 2,
            "periodic_type": {
                "key": "periodic_days",
                "type": null,
                "value": null
            },
            "weekdays": [],
            "delivery_emails": [
                "test@mail.ru",
                "xyz@gmail.com"
            ],
            "last_run": "2020-10-05 10:25:45",
            "msg": "Some message",
            "is_active": false,
            "_active": false
        }
    ]
}

Еще один пример запроса:

Получить первые 10 связей, отсортированные по возрастанию даты окончания по убыванию, связаные с водителем (пользователем) с ID 22ae4a3c-f742-460c-9479-63f08c81b5c3

{
    "from": 0,
    "count": 10,
    "sortField": "date_to",
    "sortDesc": "true",
    "conditions": [
        {
            "field": "user.id",
            "value": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
        }
    ]
}

Ответ:

{
    "max": 3,
    "list": [
        {
            "id": "f9c60641-0393-4345-aa2a-aadb869db3c9",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "cc1c4c33-5895-4fec-9295-020ffcee9372"
            },
            "user": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2021-01-01 10:00:00"
        },
        {
            "id": "d604452b-9e9d-4e01-817d-b0d391138569",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
            },
            "user": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-11-01 10:00:00",
            "date_to": "2020-12-01 18:00:00"
        },
        {
            "id": "5acc2fd1-e63a-4c10-95d0-22eaf59439ae",
            "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
            "unit": {
                "id": "cc1c4c33-5895-4fec-9295-020ffcee9372"
            },
            "user": {
                "id": "22ae4a3c-f742-460c-9479-63f08c81b5c3"
            },
            "date_from": "2020-09-01 10:00:00",
            "date_to": "2020-10-01 18:00:00"
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 10,
  • "from": 0
}

/mailings/:id

Обновить данные рассылки


Обновляет переданные параметры


Параметры:

см метод POST /mailings


Роль: Редактор и выше.


Ответ:

Аналогичен одному объекту из возврата метода GET /mailings?ids=:id

path Parameters
id
required
string
Example:

ID рассылки

Responses

Биллинг

Методы для интеграции с сервисом биллинга

/bill_create_order

Запрос на получение данных для оплаты текущей компании на сумму, указанную в теле запроса


Пример запроса:

{
  "amount": 300,
  "skip_init_payment": true
}

Чтобы начать автоплатеж нужно указать start_recurrent=1

{
  "amount": 300,
  "start_recurrent": 1,
  "skip_init_payment": true
}

В ответ приходят данные, которые необходимо преобразовать в формат www-form-urlencoded и отправить запрос

POST

в ответ на который вернется страница с формой для оплаты.


Роль: Читатель и выше.


Пример ответа:

{
    "merchant": "60ddcdb9-a37a-438b-8a43-ba9e04400aff",
    "amount": 150,
    "order_id": "7f6e0b1e-4874-426e-849e-a47ff2cf4aba",
    "custom_order_id": "297-7ee49",
    "description": "Пополнение кошелька SKIF PRO",
    "success_url": "https://pay.modulbank.ru/success",
    "testing": 1,
    "callback_url": "https://dev.skif.pro/api_v1/billing_success",
    "receipt_items": [
        {
            "name": "Пополнение кошелька SKIF PRO",
            "payment_method": "full_payment",
            "payment_object": "payment",
            "quantity": "1",
            "sno": "usn_income",
            "vat": "none"
        }
    ],
    "unix_timestamp": 1627568279,
    "signature": "60efe5ef7c1292efa0b0e10c44147f8ba408c488"
}

Для Paybox

{
    "pg_merchant_id": "12345",
    "pg_amount": 3000,
    "pg_order_id": "d4ce08d6-7313-49dd-abb4-9d08b37096b9",
    "pg_description": "Пополнение кошелька SKIF PRO",
    "pg_success_url": "https://dev.skif.pro",
    "pg_salt": "659bc044-a8d8-4da5-95a2-0a3fea31dd18",
    "customOrderId": "612-9c00c",
    "pg_testing_mode": 1,
    "pg_result_url": "https://dev.skif.pro/api_v1/billing_success",
    "pg_receipt_positions": [
        {
            "name": "Пополнение кошелька SKIF PRO",
            "paymentMethod": "full_payment",
            "paymentObject": "payment",
            "price": "3000.0",
            "count": "1",
            "sno": "usn_income",
            "vat": "none",
            "tax_type": 0
        }
    ],
    "unixTimestamp": 1670310278,
    "pg_sig": "a7065338d399008135d354284ff0e388"
}
Request Body schema: application/json
amount
number
skip_init_payment
boolean
start_recurrent
number

Responses

Request samples

Content type
application/json
{
  • "amount": 3000,
  • "skip_init_payment": true,
  • "start_recurrent": 1
}

/billing_success

Запрос который вызывается банковским сервисом, должен проходить по NO_ACCESS.
В теле запроса данные о подтверждении успешной транзакции в формате www-form-urlencoded


Роль: Читатель и выше.


Пример запроса:

testing:1
pan_mask:220011**4440
unix_timestamp:1570161434
salt:DB9481A6554924BFD2F2279B5AD05B9D
rrn:927703219385
transaction_id:0EyuFLLZ9DagCXy8O67Q6x
original_amount:10.00
auth_number:2164219385
amount:10.00
created_datetime:2019-10-04 03:56:09
auth_code:201471
signature:622e1486dba17d05d080c6734131205a75d59188
client_phone:+79999999999
client_email:example@example.ru
state:COMPLETE
order_id:697144
currency:RUB
merchant:51cb8a0f-6fb8-4a20-98b1-9fd85dc47500
payment_method:card
meta:'{"bill_id": "vlICmFjY7nST9KARa5RsSJ"}'
Request Body schema: application/x-www-form-urlencoded
amount
string
auth_code
string
auth_number
string
client_email
string
client_phone
string
created_datetime
string
currency
string
merchant
string
meta
string
order_id
string
original_amount
string
pan_mask
string
payment_method
string
rrn
string
salt
string
signature
string
state
string
testing
string
transaction_id
string
unix_timestamp
string

Responses

Request samples

Content type
application/x-www-form-urlencoded
amount=10.00&auth_code=201471&auth_number=2164219385&client_email=example%40example.ru&client_phone=%2B79999999999&created_datetime=2019-10-04%2003%3A56%3A09&currency=RUB&merchant=51cb8a0f-6fb8-4a20-98b1-9fd85dc47500&meta=%27%7B%22bill_id%22%3A%20%22vlICmFjY7nST9KARa5RsSJ%22%7D%27&order_id=697144&original_amount=10.00&pan_mask=220011%2A%2A4440&payment_method=card&rrn=927703219385&salt=DB9481A6554924BFD2F2279B5AD05B9D&signature=622e1486dba17d05d080c6734131205a75d59188&state=COMPLETE&testing=1&transaction_id=0EyuFLLZ9DagCXy8O67Q6x&unix_timestamp=1570161434

/bill_set_billing


Роль: Редактор тарифа и выше.

Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain
{
    // "method": "history",
    // "compnay_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
    "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
    "with_trial": false
    // "amount": 15,
    // "tariff": {
        // "units":4,
        // "price": 200
    // }
}

/bill_transactions

Получение списка транзакций в текущей компании


Роль: Читатель и выше.


Пример запроса:

{
  "max_rows": 100,
  "first_row":100,
}

Пример ответа:

{
    "transactions": [
        {
            "id": "6dd2c369-9012-440a-a708-a65b7e6f12fb",
            "timestamp": "2021-07-29 17:35:57",
            "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
            "user_id": "null",
            "amount": 0,
            "amount_before": 0,
            "amount_after": 0,
            "order_id": null,
            "custom_order_id": null
        }
    ]
}
Request Body schema: application/json
first_row
number
from
string
max_rows
number
to
string

Responses

Request samples

Content type
application/json
{
  • "first_row": 5,
  • "from": "2021-08-25 00:00:00",
  • "max_rows": 15,
  • "to": "2021-08-26 00:00:00"
}

/bill_tariff_history

Запрос для получения списка истории изменений тарифов текущей компании


Роль: Читатель и выше.


Пример запроса:

{
  "max_rows": 100,
  "first_row":100,
  "from": 2021-07-29 17:35:57,
  "to":2021-07-29 17:35:57
}

Пример ответа:

[
    {
        "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
        "user_name": "vlad",
        "datepoint": "2021-07-29 18:12:50",
        "new_tariff": {
            "units": 4,
            "price": 200,
            "total": 800
        },
        "old_tariff": {
            "units": 3,
            "price": 250,
            "total": 750
        }
    },
    {
        "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
        "user_name": "vlad",
        "datepoint": "2021-07-29 18:12:39",
        "new_tariff": {
            "units": 3,
            "price": 250,
            "total": 750
        },
        "old_tariff": {
            "units": 2,
            "price": 200,
            "total": 400
        }
    },
    {
        "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
        "user_name": "vlad",
        "datepoint": "2021-07-29 17:35:52",
        "new_tariff": {
            "units": 2,
            "price": 200,
            "total": 400
        }
    }
]
Request Body schema: application/json
first_row
number
from
string
max_rows
number
to
string

Responses

Request samples

Content type
application/json
{
  • "first_row": 0,
  • "from": "2021-07-01 00:00:00",
  • "max_rows": 100,
  • "to": "2021-08-31 00:00:00"
}

/bill_tariff

Создает тариф для текущей компании


Роль: Читатель и выше.


Пример запроса:

{
    "tariff":{
        "units": 1,
        "length": 30,
        "price": 300
    }
}

Пример ответа:

{
    "amount": 236,
    "rate": 600,
    "company_status": "BLOCKED",
    "valid_from": "2021-08-20 14:08:56",
    "tariff": {
        "units": 2,
        "price": 300,
        "total": 600,
        "length": 30
    }
}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "tariff": {
    }
}

/bill_transaction

Добавляет дилером транзакцию в компанию со статусом оплаты CASH.


Используется для того, чтобы учитывать оплаты произведенные наличными.


Роль: Редактор тарифа и выше.


Пример запроса:

{
"amount": 2500,
"company_id": "0f90e21b-a5a9-4929-8d83-67951440df61",
"custom_order_id": "12344"
}
Request Body schema: application/json
amount
number
company_id
string

Responses

Request samples

Content type
application/json
{
  • "amount": 2501,
  • "company_id": "0f90e21b-a5a9-4929-8d83-67951440df61"
}

/bill_tariff_admin

Изменение тарифа для компании


Роль: Редактор тарифа и выше.


Пример запроса:

{
    "amount": 0,
    "rate": 500,
    "company_status": "ACTIVE",
    "valid_from": "2021-10-28 10:19:17",
    "tariff": {
        "units": 2,
        "price": 250,
        "total": 500,
        "length": 30
    },
    "currency": {
        "code": "RUB"
    },
    "company_id": "483aafbf-7682-471c-8612-555dcb0ed584"
}

Пример ответа:

{
    "amount": 0,
    "rate": 500,
    "company_status": "ACTIVE",
    "valid_to": "2021-11-27 10:19:17",
    "valid_from": "2021-10-28 10:19:17",
    "tariff": {
        "units": 2,
        "price": 250,
        "total": 500,
        "length": 30
    },
    "currency": {
        "code": "RUB"
    },
    "company_id": "483aafbf-7682-471c-8612-555dcb0ed584"
}
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
Example
"{\n \"company_status\": \"ACTIVE\" ,\n \"valid_from\":\"2021-08-27 11:19:10\",\n \"valid_to\": \"2021-08-27 11:24:09\",\n \"tariff\": {\n \"units\": 2,\n \"price\": 20,\n \"length\": 3002,\n },\n \"company_id\": \"7bcba823-3aa4-455d-be8a-db04c39e9409\"\n}"

/bill_tariff_admin

Возвращает информацию о тарифе для списка компаний


Запрос без списка компаний возвращает транзакции по всем компаниям.


Роль: Редактор тарифа и выше.


Пример запроса:

{
    "companies": [
        {
            "id": "7bcba823-3aa4-455d-be8a-db04c39e9409"
        },
        {
            "id": "fe371bd9-bba3-4c4a-b54b-b05fb77690c9"
        }
    ]
}

Пример ответа:

[
    {
        "amount": 370,
        "rate": 9000,
        "company_status": "ACTIVE",
        "valid_to": "2021-10-30 00:00:00",
        "valid_from": "2021-10-28 09:07:28",
        "tariff": {
            "units": 36,
            "price": 250,
            "total": 9000,
            "length": 30
        },
        "currency": {
            "code": "RUB"
        },
        "company_id": "7bcba823-3aa4-455d-be8a-db04c39e9409"
    },
    {
        "amount": 0,
        "tariff": {
            "units": 0,
            "price": 250,
            "total": 0,
            "length": 30
        },
        "currency": {
            "code": "RUB"
        },
        "company_id": "fe371bd9-bba3-4c4a-b54b-b05fb77690c9"
    }
]
Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ]
}

/bill_transactions_admin

Получение списка всех транзакций для списка компаний с пагинацией


Роль: Администратор и выше.


Пример запроса:

{
    "companies": [
        {
            "id": "7bcba823-3aa4-455d-be8a-db04c39e9409"
        },
        {
            "id": "fe371bd9-bba3-4c4a-b54b-b05fb77690c9"
        }
    ],
    "max_rows": 15,
    "first_row": 5,
    "from": "2021-08-25 00:00:00",
    "to": "2021-08-26 00:00:00",
    "conditions": [
        {"key": "payment_type", "values": ["CARD_DEPOSIT", "CASH_DEPOSIT"]}
    ]
}

Пример ответа:

{
    "max": 485,
    "transactions": [
        {
            "id": "7b145ed1-04ec-401a-a643-07dc2d45c693",
            "timestamp": "2022-03-25 08:19:15",
            "company_id": "41ee3ec9-185b-4af7-bfc0-ff370835b9b9",
            "user_id": null,
            "amount": 0,
            "amount_before": 0,
            "amount_after": 0,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "TRIAL_ACTIVATION",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "kgKzLQdVTgJcVoEbOmKufd",
            "timestamp": "2022-03-10 07:29:00",
            "company_id": "7bcba823-3aa4-455d-be8a-db04c39e9409",
            "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
            "amount": 55,
            "amount_before": 870,
            "amount_after": 925,
            "order_id": "0032a6ec-a8f6-416c-9647-a937b0f893a8",
            "custom_order_id": "103-2c204",
            "payment_type": "CARD",
            "operation_type": "CARD_DEPOSIT",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "a58e22ed-c671-4c4c-812f-a6c0f091fc8d",
            "timestamp": "2022-03-01 13:26:51",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -222,
            "amount_before": 318,
            "amount_after": 96,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "4028e3e3-fa5b-4e2d-8f40-ee6a9d624b77",
            "timestamp": "2022-03-01 13:26:07",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -222,
            "amount_before": 540,
            "amount_after": 318,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "e3c08461-8ba3-4f46-b436-1f88fe23bd23",
            "timestamp": "2022-03-01 13:23:49",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -222,
            "amount_before": 762,
            "amount_after": 540,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "4d5e983b-db17-4b29-8ee7-198c66b5159f",
            "timestamp": "2022-03-01 13:21:09",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -500,
            "amount_before": 1262,
            "amount_after": 762,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "4b0ad5d3-6761-400b-a89b-8229426b8684",
            "timestamp": "2022-03-01 12:57:30",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -246,
            "amount_before": 1508,
            "amount_after": 1262,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "d31e05ba-35c5-473b-be60-6ac503bc7cfa",
            "timestamp": "2022-03-01 12:47:31",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -246,
            "amount_before": 1754,
            "amount_after": 1508,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "MDvUB6sV90PvV03QSBDsso",
            "timestamp": "2022-03-01 12:47:16",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
            "amount": 1500,
            "amount_before": 254,
            "amount_after": 1754,
            "order_id": "2829e663-682a-4806-bd80-9b839e43af3e",
            "custom_order_id": "13-70652",
            "payment_type": "CARD",
            "operation_type": "CARD_DEPOSIT",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "6c8de8b5-50af-47d8-b32d-5064254e82cf",
            "timestamp": "2022-03-01 12:46:46",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -246,
            "amount_before": 500,
            "amount_after": 254,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "FsZGSq9QABMVTEhs0IjWBU",
            "timestamp": "2022-03-01 12:46:46",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
            "amount": 500,
            "amount_before": 0,
            "amount_after": 500,
            "order_id": "4176e398-06ea-472d-a959-166e38a1f1db",
            "custom_order_id": "13-e953c",
            "payment_type": "CARD",
            "operation_type": "CARD_DEPOSIT",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "509e2cc1-72b5-41c9-8120-01fe8b3168d9",
            "timestamp": "2022-02-22 10:07:39",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": null,
            "amount": -500,
            "amount_before": 500,
            "amount_after": 0,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "sps3w0Kn5osyE0jl9UTwa3",
            "timestamp": "2022-02-22 10:07:39",
            "company_id": "8981e6d1-79d4-4030-9d60-e2701b37e796",
            "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
            "amount": 500,
            "amount_before": 0,
            "amount_after": 500,
            "order_id": "f7a007d9-7a4e-467d-8ce8-61ce72c8c2b2",
            "custom_order_id": "222-13a58",
            "payment_type": "CARD",
            "operation_type": "CARD_DEPOSIT",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "b65c8bf5-3f2b-4611-acdc-6da4f67a8e08",
            "timestamp": "2022-02-22 09:49:18",
            "company_id": "3c6e77d4-4dcb-456f-b67c-62ed8cc62aa8",
            "user_id": null,
            "amount": -500,
            "amount_before": 500,
            "amount_after": 0,
            "order_id": null,
            "custom_order_id": null,
            "operation_type": "WITHDRAWAL",
            "currency": {
                "code": "RUB"
            }
        },
        {
            "id": "HUUfhpRxEbtMMb6AAPEf9G",
            "timestamp": "2022-02-22 09:49:18",
            "company_id": "3c6e77d4-4dcb-456f-b67c-62ed8cc62aa8",
            "user_id": "98cf93bb-9312-46e2-97b6-f699ae7b3f06",
            "amount": 500,
            "amount_before": 0,
            "amount_after": 500,
            "order_id": "876cee04-b94a-450a-b896-84c0990a3cd6",
            "custom_order_id": "222-336fd",
            "payment_type": "CARD",
            "operation_type": "CARD_DEPOSIT",
            "currency": {
                "code": "RUB"
            }
        }
    ]
}
Request Body schema: application/json
Array of objects
first_row
number
from
string
max_rows
number
to
string

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ],
  • "first_row": 5,
  • "from": "2021-08-25 00:00:00",
  • "max_rows": 15,
  • "to": "2021-08-26 00:00:00"
}

/bill_transactions_admin_excel

Экспорт транзакций для списка компаний с пагинацией


Роль: Администратор и выше.


Пример запроса:

POST /bill_transactions_admin_excel?body={
"companies": [
{
"id": "7bcba823-3aa4-455d-be8a-db04c39e9409"
},
{
"id": "fe371bd9-bba3-4c4a-b54b-b05fb77690c9"
}
],
"from": "2021-08-25 09:00:00",
"to": "2021-08-26 19:00:00"
}

В теле запроса необходимо отправить следующие поля:

companies - списко выбранных компаний, необязательное

from - начала периода

to - окончания периода


В ответе возвращается эксель файл

Request Body schema: application/json
Array of objects
object
first_row
number
from
string
max_rows
number
timezone_key
string
to
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "dealer": {
    },
  • "first_row": 0,
  • "from": "2024-04-01 00:00:00",
  • "max_rows": 100,
  • "timezone_key": "UTC+3",
  • "to": "2024-05-01 00:00:00"
}

Response samples

Content type
text/plain
PK-xl/worksheets/sheet1.xml��[sW���
��4;��4a��֙n�O�=�gZ%�I�AB�����倧2���݉��ٕ]���
`���ߏg�^^��O��{?\����>�o�>?��o����?>���~����j�9.������f������/�Ǜ��ϫ��r�~y��l�������eus�/z|��_]/o��?��O<�ww��V��?}}\=m&/���Ͷ��/�ϯ����_���6������������j�=|^�����y�o~[���������?o�������.��w����6�������O���W��~��ռ>�m�?��?w���ϯΏF����Dz�~�mk�������X�����e��0ڂخ����u����x��g�7�������͗������d����>}}ݬ?�����X�n���σ��j��oV���z
��05^�Q��y}��8Y�߬�W��5I^����5M^����^�Y�yM�תw��v/��}����n��6�n��;����ݎo�݋�{oǷ��ű��p�v/��}.;����F�K���Qh���fs�����������>^l��gۂ����W�.��m�o��������f��酇oo���aM�������l���/Q�\�]b�K�u�.��%ƸD�KLp����������.����4'ɛ~�H{bڬ�'���<�m���"�e�E�w������~:,M���/ �֟�k�7�j�Km�>������O��pD+m��фVۂ3��ɂ�L�ibA��7�3��M��اw�ܺ�ޱ�JއAd�^C*�"44�vP'��`Lk����K��� N� NM��F��8 Z�O���u��r@b
��k(@%C�
]��Р|�G\�f�0U.���'D�8{83�._4q:`����u]��C,���?����U�Jfi��IK
5�K��4m�ki^z��7Q,�����=��]��)h��@�$�`,&֒s
�u�
X�H�+�ܢ18d���(�T$�v������m
�R%Q�Q�>�c-����!lAU�^Sk�mJ�:��+<a>ں��;O,��������
��dV%Q�O�����v_`-qAU�^Wk��J�z-�h,Da :.���(�T$:�Df
:TTI�DԪrIƼyP;������U�Z!
]���e��m�[��Lt�[���;S,��-��y����A��*�b��ZU�Zc�jk��\��@��
X+P�+~75(3��*�$�R��sg�%��2ԑ�����[*��<�K�T9GU�z}��0�`B'����-�s���^b-_��SŒ�ds6��?�%U�Y>2	�����zkt�^Wk����b�zC:o��e�����ҭ�ܩbIE�9+�AN�iQR�-q��.y��|��=���[��d���
Y�טw���-vM��kT��
�p�f�%����IHI��ժ�3$�
�t�AU�^[k�mK�5 �����l��`�f�%��8�JI���93C��c�x5T�����6=
�ٕt9
���a*�g�j;w�XR�y^N����p��Tq;`u�7��L�,{VP��T�ZƊ��f�5�
-3X��o]��Ν+�T�å�MT���m$�V���9:3X(��1*X�����K���[��0�K��s�%��t��
�UI�Ԫ��zY�k��
���
X+D��ތ�5���-�Y��O�nm��K*�d���p̔TqKd�*WL�,dm-?m�AU�^Wk���j�t��\0��P������v�L��"�3!X�)�▨�9:U[�w�5:U����B���d
�C��-Ta&�t�[۹3Œ�Tsδ���������[�jU=
C�#Tm��YA�>]���Uo�W
/�����,�E[۹sŒ�ds�Է�
o�*��Ȃ�	":Y[;+&7gr�
X+dmW����pH�#I����"u��v�T��"ל3�m���qUR�-qus&p�<�'r���Ln[k�mk��W��Xnqd�#p&�hrc&w�XRk���6V��UI��ժS�sp�1�Ҷ�AU�^Wk���ꂓ�e�ho�Ya&���Ν)�T��S���U��B�TqKT��T!e�P+y�3]��#�5x�2Co�[��L�Ex��;S,�@u�C��
U�r�J����:�Kap�X˧VP���U�Z�
]�؀*Lљ��D�.��Ν(�Td���T���J��%�V�=��)��YTe�u�V�ڮ.��eޑ[��0�U��Ν)�T��C���Tx]UR�-Q��D�T7d���5:U����B������Eo�
3q��v�L��"�A�j�\y�TqKTA�[pV��v�Q�J��*`�P���y��t��i�]��TF���;U,��5GL���s�*�▸ZU�pV��v�a����*`�p��z�+#xN+Z��0�nm��K*��1���*���*���ZuƟ�g%��\��d���
Y��E��oȆ�}֋��q.���[۹sŒ�ds�4��
9�J��%�V�M4g%kkg�15P���U�Z!]����lh٩[����0K��s�%��i`���L�TqKh���h�2����J5�
��+`���}]���lhٯ[𗸉�d��7X,�7�M�������[��\CAts�.T_q8���X+tmc��^F�.�Y-+[��	,��X��"ۜ:
l��_⪒*n��U%"�h���6Q
����
X+hqb�n@��ř,EDz%Xo�XR�0OC���[�Tq;�U����E�+�A�n_k,��gr
n�[����P|���*�T�ӧ��[��UR�-���?��r��,+X����ֶ%X��[4��^�D�S�ŝ;Q,�H5�OC��wM���[�jU�̘�3o�:�g�k���V�Z�
m���Q7�_��/lq0�*���,�Td;�lm��_���*n��U9z����g��r
����
X+lm[�i6(�P-zW��
��s��%��jh#�&r�TqK\���X�|��9�AV�^ck�,��'�d9�8��cq(jl��B�*�T$�3���\x�*��Ȃ*<`�lT�Y�\���+`���m	V���e���x�w�D��"՜?
m�Ÿn��*n��U��5g=�3o�d�@ݶ�
TۖF��8ݢ��ũ8�p�;w�XRlN��6j�{*���ZU��3?^3�Y�zm���-���ܢ�@ʼn8�p�;w�XRjN��6b��v��*n	*��ls�|i��b9�����W�Z�j��^-U���[ܹŒ�Ts�4�x��B�DT~;k��b9��y��W�Z�
m�cv����+tŏʖnq�K*`�id��J�����h�rjEg~�T�5Su�
X�T�-�
iP�Z�f�4�Y���*�T�æ�MW��K���[�jU��g�
��̡Y�zm�����S
�|gТ�pš���w�P��"�7�l�¿�R%U�WP9Z�����b>���`���
Xۖ`�zn�X��D$/��Ν(�T�:�Tm�¿IS%U�UP9���5o���d����V�b[W�¡�E�߷���>�t�;w�XRpN�F6_�ܩ�*n	0;��Br#|��o�k��^[k��m�?�Ԁ*'��+�$gY��sg�%��id��c��*n	�U9#����曬d����V�ھ.�C~j�����%K���T��,�T��S��
Y�ǔ���[!��n��|M^�����
X+lm[��4��ݢ��8?^w�;w�XR�j��F�p�TqKT����uV���Wn5�J�k+`�P�mm�X�Rd���G�4?aw�;w�XR�mN�F6j��*��؂*WQ������<}��.�ɰA]>Ղ��q,��Zo�XRm��F6n��?��*n	�U�m1�h����5Ȋ��+`����Ioh�,��-,`q(Z���7T,�v���
\��*��v��e���,ЙO5Z3W�������*j@�sp�δ�k�?9�w�H��"�?�m��?�W%U�U���h�r�Eg>N� +U����B��M�G^?6Ӣ����荱t�;w�XR�m���6s�C�TqKl�*WP��x��o�d.���V�ڶ�H�����K���-F��-���bIE����f.{�UR�-����us(t�� +[�����ֶu����Z@��/lq0��r�;w�XR�mΠ�6t�N���[bkU�8����_�AV�^ck��m���������{M3�%Xo�XRlN��6r�[%U�XT���u-Л��5�
�k,`������o�\;8��š�2ʍ�ܡbIE��c�f.���*n��U�,9���7Ak����V�Z�jے�!6 �G�8�\BA�p���%��jl#�m���[�jU�j��4�@c��S���U�Z�j����e���Ă��ƖX,X��bIE�9۴�UR�-a�0E�Zg�]�Y~�d���V�b�$\�,[Y��Pr��O�P��"�>�m��G�*�▸��8�uՂ�I�AV�^[k�+,X�*[�X�b[r��FO�L���I��&^S%U�XA��,7;��WM V�������ȫ���Tq`�J]53Uw�XR�j��&6h�s\�TqKT��ǫ98��$�,��u�J�k-`��������;%Z��������-�ܹbIE�9}�ج���UR�-ᵪ��;����	d��5�V�����u�3Xl��Z�ŝ;S,�v��ڠ��a���[kUѓ���͗O$Ӆ�G������	Y��W��$�7�����%���ib�����*n	�U�u�m�@o��КV-h����֋������(��6�����%���ib��B��*n	�U�u��&Z�5�ThMk�^cT%krc
ȧ�b��e9��6��X��"ۜ>Ml��W�UR�-��v��zv�FZA
��n���
_�ۨ5��9�o`��a�iq-�pM���f�X8{�Œ��s5��ߎTI��T�l��с?��r��X+�mo�C:6����B�k��!G7K,��x��"�OMl��hUR�-qU9C>u�38��R������
g�����6t˜~/���㑼�b��K*r�q���3|Z%U�gP���.pފ5���k.`�p�����5����B�k�8/�X8{�Œ
��9�����oʫ��ہ3���OsF��5���m.`-s��z��iX��{�ŵ0g�V��b��K*rΉ�Ԧ7;TI��T�l���A~_d��5�V8c��CH
,r����J3NǗaX,���bIE�9ٚ�$���*��0�����i�`�r
�R�zX+�mk�=A�",r���:2v��`(do�XR� C��GMUR�-A�DG [�Ӑ!���\%!{����ژ;k`���� ��w��BY{�Œ��s�5��'UR�-!�dG[듄!���]%�	{���^��wm��-l�k��BY�zCŒ�ls�5�P����R%���9X��]P-?{ ��zm���+��ܢ�0Ŏ��%���(�Td�c���r8'��*n�)4�����d���V�k����X�Z�j�������J�E{�����e���K*�����8��WI���k�/����r�@����:d�tmg=���\�h/tq��%�Bכ+�T�����m�9H�TqKt!��h�&\`���*����+5�u�j@V�-�Y\5?WBY�zSŒ�ds�5�A
?ݩ�*n��U�~p�r�ń��[,\��Y3W���{�D�rHvc+Z;?VBY�z�Œ
hg9���l�pUI�ZP�cW��h��/?��2�u�
dMh�+��e�*CEg�J륶�(3Tw�XRjΨf6����*�■Z�?x6g>.����ۮQ�^[���*���U����EZ�5�������,�Td�����_�Al�TqKl1�!s�V�XLj���W�Z�k���4ڐ΍��.hq,*���+�TD;�hm������[B�q��DG�b��Aʂ��+`��������u�E��-��Q�[ܹcŒ�hs5��?V��*n	-D*|m�}�����{5���k,`���������-[���ŝ;V,��6�P3��g
���[b������~�tA��^,p���
\��D�(,Т��Ź�A�[ܹsŒ�ts 5��P�J��%��]k}.��c ����Y�Z�kSx
�J�Ew�*op�w�X��"�H�l����*n	.�2r�p�\~se��u�V�Bc�]��.pq,���;w�XRnΣf��p�TqKpA���k�q�}��]����V�Z!y��g<�>H�G{����5�Wܹ�Œ�|s*5�!��J��%���5�R'�]����Q�^ck��mLv\���%�����ͤܙbI�ۆ���^��Je1<�EY���jA�c�5��o/P5#��2�@��g���Hg��p�(�U�^�Ve1<����h~5D7�ˤ+j��@Պ�v�w�Խ,В����ʿd]P{�ŢL�st�{mP�au������|e1G��S�!͑_`����u���Xء�����+p����Jܛ/e">0�m�×�Q�#q+� n��?,��o��ڕ��] {�m���
�'����+l���ͺ��ƋE�`�k�����(��6|^��;?^`y_~��׮����+l
��#~�֜X��v-O��Qד7��ܛ2eb����kJ��#t+��&t?�WX��ŭI�ӷ�]�j���f�ԉ���R-��:&��v�w�|(p_�~Y�6��ln>{\�|^U���W���eu����ޏ�������㢿���-~�����y�|��z��z�Y??��a�eȻ�z�z��k{�����}����n�_����������9^|]m�>=<^~������z~����a�jw]zw��m������^����������&n}�_�د�����j���yx]����p��ϟ�n�r�Y��u�r�z��l��O�ϟ�/����ͮ��D���g��ww���{��?w���VOG�û���ǽ�vs��ۗ�ß�^ەm��m�����PKXA����PK-[Content_Types].xml���N1�_����0ưp��RI���,��S:��]�Q��v�����v4Y{�V���P�pAGcü����3,*�b��o�d<�m #m�����)Q���� P��٫B�<�I酚���@(U�<�x��Z�ž�t�͑�!g��ƎUs���Z��U0G�jG��{��	o��˓���;`�{��dk�MU.��S�\;���`�K�!8�t"jl��D��$�2(-@�N�����-G�8�z����W̋��fw��ʆ��f��2�r������昐t���_l��A.���D��xtc�>�s�-��=�PK�@PK-docProps/app.xmlM��
�0D�dߦ��4� �][��mHnBr�~���c9s��vv�x@L�c�VU�
@�{�c�ΧC�e���D2����԰�(8Oz�R�1f2���G��h�{}w���u��0`}��L�.k��� o��+E�I�H���e{y��,���,�OS>PK�$/X��PK-docProps/core.xmlm�MO�0��
�Z`1�؃fO����x1��l#�H;���-�b�z��}��̴���|�ʚ��#	i{e���w�tK����b�b,ٵ�t\Z��:� $Qc��!D�)
�Z�,&���k���uB��h��Հ�(,L�j$'e/W�{��"�%�44�r��"x�mX��<�R�4eS�pq��>�\�-ç�̫K m}Rs�A �Ip�t�"?�Cyy��I[�b��*-Y�ox��U���ꩦ���m}�����0AH�f|Mkzv��PK�ѫ
�PK-_rels/.rels���N�0@%}u7$�в]�n�0��Fm�(	��=ဠ�=Ʊ��-��4�w�ɉװ�jP�X�;
/���T��-��YÙ�g)��Ի�Ta����9�#&��D������'��;d�wu}��7�Lu���ހj΁װ�m��1o�|���[��K}̢̮�g
V�S	'����l�[o���8q&K��H��>_ׄ���_�2��f�C��*2|����PK�"B��JPK-xl/workbook.xml���n� Dm��p�F�c�KU)����wl�ŀ4��E�z���iG�S�f g�A;ˡX0 h;'=r�<=m`���O�s'��6p�c+JCףa�F�颜7"&�GF�B�1��.[S#���P��t8�t����6hc.�8����^���><�"b��JJ�6�t��x	��DtQ�� Zl��_�y��
��e��Vm�Q.=g�36[ �Ғ�����j�����>HTڢ|O/��?z��PK������PK-xl/_rels/workbook.xml.rels��Mk�0@���}q���n/c����c+qh"K�迟���@;�$��{��~Γy�"#���i� �#
^�O7�`D=E?1�b�n��8y�?$�YLE�8H���Z		g/
g����^6�p��U���r΀%�좃����/�I�`|�Rˤ��:f����~���mF�v�����:���ׯ�������p9HB�SyݵK~�����PK�;��3PK-xl/sharedStrings.xml�Y�n�8��I�)�J�-��{���$�5[Y�	�>�
��krHi���5��3��|I?�����{w��0>��=��ܩ���˧������j�/��ٗ��>?ܸ���i/;@��O����k��0�_�ю�ë;��G{���/����n������ +��p�����t�U9/������7�����|���.Ͽ��6\���bz(>=~�MO;t���`���1|z�<?=�UnWL�;o�c���3aw���Д����H}�x��BcPa�t~ �BZQ�Z��������p������S
�9rJr����nWY�P�
��.TE��U}R�@I�o���B4m���/<:*.p*�
TMZl�f���ҒH����j�=��� �"�@D������|EZ���x���Xc*�@���H�:��;�a/A Qεt��d=8%[����ƀT�|R��E!����_2:(��[���M��������85�ǀ�ËbNj��Z��e^�����f����ED�v������c��=���o�����Ą������ŧ�};c.t��c�F����+
�D䔏V��0��������T�/,%/�}�n�k�ڔn���D�?r�E-�Z��e���n��tpy��*�����<~;����!��ե&, �e�b1����[����t���3��s���1K^>���;�}Dž��R����^^���—�P�&��ш�ɘp^��~1����/6�YAR%�C֖1,��"�DR��*C1�/M�J4�B��	��vM�n`��`��B,d)��k����:�]����Y<��C
�3�t��M�b�{<�����ux�g<�ڡbL֒��s�,�_!���8*�Pk�*�%����R��	��lFbk�.�t
��-��Uk��ѵ.k��GV�#��@mp$�/ �	�XM�	+[«'�MhUU`��YRgV�!�]0��nh��XIr�c9w|c]~�����0EpN�ew�����.%���#fʙ�kH�P,�f�}3$^^��t���������3+6}�mc�䚴��XM@郩�L��)[�L��LѴ�iV�F�
���
FV	{����HB3ItUµҒ%S�3- ��%=�l!7��GRՀ�h*��e�L�u0i9um�-3#�jɺ�)��'������W+U��Ԋ*����w¦wG�5U(���?y�l[�a�����Ijz�%���`uF#㊊�,",D ���%Ho�VQ+Sk�E�7eKk�F9��XfzcS9^mc�I_
�SB�e�uU�{��8t�mW��U����P
�3��V�^üL��/���68-�
�{�
�xe�ˁC�F}#�d��
�m�Q�2W$�r��GX(��{����lzd��$�L@�ZŶR5K����=4���H:�a�Vq�\ŗ�ѫ�+��	A��P�Bl.�m߷�I�k%3̌N4�+2X�ʆbyf�+3k�eՄ���ئ��qDXV�$�u����~��:몍uE6�%�����Ǘ���i�x�8���=]�lV��"QJ�-p���/���d���ō���ޟ�b7~+ª�f�����DIy����l��Ÿ9b�ժ�9?��7��u���sJ���Z�k��t��+=dE�(~bI�y,�m����ROV��Œ���
Nf���Kp�
��E�`���Xݘ�(D�I_9�򇬟X"�c�K"XAX&�ےN��̹�5}��]�KFꖉ3�W�i�M7�΢k�l����b�U~G(6�R���֏�e*!���c�t�����1��;h�����5`5�D!Pf�7[&�b^�϶|<<�a�~\��u�mzbO���f]�X�UI?��
�=����-
I�����we��˅�9���
�{X���ڈe�q!��]���`�3p؎��:.I�V�b�K���LC�x�^�w�پ~�U�b������F6Ms}Ht�aީ�����2�kH�e����7m�a/��PKVl\���%PK-
xl/styles.xml�SMK�0�+!wM[QD�.�B��
^�m��Q�(��zg��,�
��L��{yI'��y�Kk*�_g���N���/���=�ԥG%�F!�z�+:0=0��Qh��$dz�4�t���HҊYv�4��֥yӍ���̈́�f���ޚ%U�����8�eu�Zeqþ�M�Ł��Z��Wr�$�,i����Z�аT�l�
P�A8������q5ֈ$�~�?����	�*١�a��iGYϒq����ַ���T�@wrqvb��j:�k��
N�5���hc0�f��T���N[^����9��B�'$���3�@?�$��c��H�ǞB��9L2i��k����ū��,9�g�����.��|a>M긍)L��F��aq_0-O��PK�n�\�PK-XA����xl/worksheets/sheet1.xmlPK-�@+[Content_Types].xmlPK-�$/X���docProps/app.xmlPK-�ѫ
��docProps/core.xmlPK-�"B��J�_rels/.relsPK-������!xl/workbook.xmlPK-�;��3L"xl/_rels/workbook.xml.relsPK-Vl\���%p#xl/sharedStrings.xmlPK-�n�\�
�+xl/styles.xmlPK		?�-

/bill_stop_auto_pay

Остановка автоплатежа для компании


Роль: Читатель и выше.


Параметры ответа:

В случае успешного отключения возвращается код 200 c пустым body.

Если не добавлена карта или не включен автоплатеж, то возвращается ошибка.

Пример ошибки:

{
    "code": 4220,
    "field": "",
    "message": "Карта не добавлена"
}
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/bill_start_auto_pay

Включение автоплатежа для компании


Роль: Читатель и выше.


Параметры ответа:

В случае успешного включения возвращается код 200 c пустым body.

Если не добавлена карта или уже включен автоплатеж, то возвращантся ошибка.

Пример ошибки:

{
    "code": 4220,
    "field": "",
    "message": "Карта не добавлена"
}
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/bill_remove_card

Удаление сохраненной карты


Роль: Читатель и выше.


Параметры ответа:

В случае успешного удаления возвращается код 200 c пустым body.

Если не добавлена карта, возвращается ошибка.

Пример ошибки:

{
"code": 4220,
"field": "",
"message": "Карта не добавлена"
}
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

Терминалы

API по работе с Терминалами

/terminals?ids=:ids

Поиск imei по ID


Возвращает массив терминалов компании

Если в параметре ids содержится только один id, то вернется не массив из 1 элемента, а конкретный терминал.


Роль: Читатель и выше.


Пример запроса:

/terminals?ids=da47b5da-d030-44f0-acc4-a43107dbb090

Пример ответа:

{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
    "imei": "123456",
    "password": "xyz",
    "use_lbs_for_coords": false
}
query Parameters
ids
string
Example: ids=

Responses

/terminals

Создание нового терминала в компании


Роль: Супервизор и выше.


Параметры:

"company_id": ID компании, обязательно
"imei": Imei, текст, обязательно,
"password": Пароль, текст, необязательно,
"is_blocked": true, если блокирован, необязательно
"use_lbs_for_coords": true, если определение координат по GPS должно дополняться координатами по LBS

Пример запроса:

{
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "12345678",
    "password": "xyz",
    "use_lbs_for_coords": true
}

Пример ответа:

Возвращается созданная запись

{
    "id": "da47b5da-d030-44f0-acc4-a43107dbb090",
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "12345678",
    "password": "xyz",
    "use_lbs_for_coords": true
}
Request Body schema: application/json
company_id
string
imei
string

Responses

Request samples

Content type
application/json
{
  • "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
  • "imei": "12345678910"
}

/terminals?ids=:ids

Планирование удаления терминалов компании по их ID


См. DELETE /units?ids=:ids


Роль: Супервизор и выше.

query Parameters
ids
string
Example: ids=

Responses

/terminals_bulk

Создание нескольких терминалов в компании


Роль: Супервизор и выше.


Параметры:

"companies": Список компании, обязательно
"imeis": список Imei, текст, обязательно,
"password": Пароль, тектс, необязательно

Пример запроса:

{
    "companies": [
      {"id": "d852f0ef-ed7e-490b-866d-a6f1a1eb354f"},
      {"id": "6b994029-6aa1-4e87-9207-36056ca890dd"}
    ],
    "imeis": ["11345679", "113456710"],
    "password": "xyzt"
}

Пример ответа:

Возвращается созданные записи

[
    {
        "id": "a4f71782-9ccf-4da2-a132-303c27c48707",
        "company_id": "d852f0ef-ed7e-490b-866d-a6f1a1eb354f",
        "imei": "11345679",
        "password": "xyzt"
    },
    {
        "id": "99d307f0-5c20-45bf-a6b7-d261d75327cc",
        "company_id": "d852f0ef-ed7e-490b-866d-a6f1a1eb354f",
        "imei": "113456710",
        "password": "xyzt"
    },
    {
        "id": "84797aa9-0aad-459a-80ac-9cd2601b587b",
        "company_id": "6b994029-6aa1-4e87-9207-36056ca890dd",
        "imei": "11345679",
        "password": "xyzt"
    },
    {
        "id": "f4a42e66-27eb-4e98-b51d-4f36de23458a",
        "company_id": "6b994029-6aa1-4e87-9207-36056ca890dd",
        "imei": "113456710",
        "password": "xyzt"
    }
]
Request Body schema: application/json
Array of objects
imeis
Array of strings
password
string

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ],
  • "imeis": [
    ],
  • "password": "xyzt"
}

/terminals/:id

Обновить данные терминала


Обновляет переданные параметры


Роль: Супервизор и выше.


Параметры:

см метод POST /terminals


Ответ:

Аналогичен одному объекту из ответа метода GET /terminals?ids=:id

path Parameters
id
required
string
Example:

ID терминала

Request Body schema: application/json
company_id
string
company_name
string
id
string
imei
string
is_blocked
boolean
password
string
use_lbs_for_coords
boolean
use_previous_param_value
boolean

Responses

Request samples

Content type
application/json
{
  • "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
  • "company_name": "0Одуванчик",
  • "id": "1a2e1319-abfc-4406-ae1e-dc348937ef5c",
  • "imei": "43235674543234534532",
  • "is_blocked": false,
  • "password": "",
  • "use_lbs_for_coords": false,
  • "use_previous_param_value": true
}

/terminals/:id

Удаление терминала компании по его ID


Параметры:

id записи


Роль: Супервизор и выше.


Ответ: 200

Если терминал с таким id не найден, то возвращается ошибка 422

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID терминала

Responses

/terminals/batch

Обновить данные терминала


Массовое обновление некоторых полей выбранных терминалв


Роль: Супервизор и выше.


Боди запроса:

terminals - Список терминалов

is_blocked - true для блокировки, false для разблокировки


Ответ:

Возвращаются обновленные терминалы

Пример запроса:

{
    "terminals": [
        {"id": "d799058e-1be8-4404-b476-6b5e49d4844a"},
        {"id": "3f6f01f0-edcd-4942-94e5-45dd8e293150"},
        {"id": "56760481-d045-4091-9b5d-ad092c14a69e"}
    ],
    "is_blocked": true
}

Пример ответа:

[
    {
        "id": "d799058e-1be8-4404-b476-6b5e49d4844a",
        "company_id": "bfbb4c66-4242-4997-8905-425245d8136f",
        "dealer_id": "17d41d6f-a8ae-4644-9793-92988604746a",
        "imei": "3528480xxxxxxxx",
        "is_blocked": false,
        "use_lbs_for_coords": false,
        "use_previous_param_value": false
    },
    {
        "id": "3f6f01f0-edcd-4942-94e5-45dd8e293150",
        "company_id": "bfbb4c66-4242-4997-8905-425245d8136f",
        "dealer_id": "17d41d6f-a8ae-4644-9793-92988604746a",
        "imei": "3528480xxxxxxxx",
        "is_blocked": false,
        "use_lbs_for_coords": false,
        "use_previous_param_value": false
    },
    {
        "id": "56760481-d045-4091-9b5d-ad092c14a69e",
        "company_id": "d5fbe5f4-5d68-41bc-bb43-2dea42569fdb",
        "dealer_id": "17d41d6f-a8ae-4644-9793-92988604746a",
        "imei": "3528480xxxxxxxx",
        "is_blocked": false,
        "use_lbs_for_coords": false,
        "use_previous_param_value": false
    }
]
Request Body schema: application/json
is_blocked
boolean
Array of objects

Responses

Request samples

Content type
application/json
{
  • "is_blocked": true,
  • "terminals": [
    ]
}

/terminals/list

Поиск терминалов по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[imei]

sortDesc - сортировка по убыванию, значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - imei

companies - список компаний в которых искать терминал


Роль: Читатель и выше.


Пример запроса:

Получить первые 2 imei компании 36c52c2b-64a0-45dd-a75f-3c723fffee77 или 95f38fda-b8b5-4754-8fa2-07fadb72637d имеющие подстроку "123"

Если у пользователя роль не супервизор, то возвращается только imei компании пользователя.

{
    "from": 0,
    "count": 2,
    "sortField": "imei",
    "conditions": [
        {
            "field": "imei",
            "value": "123"       
        }    
    ]
}

Ответ:

{
    "max": 9,
    "list": [
        {
            "id": "fcdb331c-4e27-4fb3-91b6-443330dbef2c",
            "company_id": "6c1a0092-9f99-4fb0-a2f3-37eb8db08b31",
            "imei": "862531040831233",
            "password": "123456"
        },
        {
            "id": "0ad9df34-ce6e-4665-a1f8-f6e2d93d5d1e",
            "company_id": "6c1a0092-9f99-4fb0-a2f3-37eb8db08b31",
            "imei": "862531042812348",
            "is_blocked": true
        }
    ]
}
Request Body schema: application/json
Array of objects
Array of objects
count
number
from
number
sortField
string

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ],
  • "conditions": [
    ],
  • "count": 2,
  • "from": 0,
  • "sortField": "imei"
}

/terminals_logs?from=&max=&terminal_id=<terminal_id>

Получение лога терминала


Параметры:

imei - IMEI терминала
from - начальный индекс записи, начинается с нуля
max - максимальное количество записей


Роль: Администратор и выше.


Пример запроса:

https://dev.skif.pro/api_v1/terminals_logs?from=0&max=10&imei=862531046859196

Пример ответа:

{
    "imei": "862531046859196",
    "date": "2022_03_28",
    "report": {
        "name": "Сырые данные",
        "key": "pureparams",
        "max_rows": 1531,
        "columns": [
            {
                "key": "№",
                "name": "№",
                "is_visible": true
            },
            {
                "key": "datepoint",
                "name": "datepoint",
                "is_visible": true
            },
            {
                "key": "satellites",
                "name": "satellites",
                "is_visible": true
            },
            {
                "key": "altitude",
                "name": "altitude",
                "is_visible": true
            },
            {
                "key": "speedkph",
                "name": "speedkph",
                "is_visible": true
            },
            {
                "key": "angle",
                "name": "angle",
                "is_visible": true
            },
            {
                "key": "TEMP_1",
                "name": "TEMP_1",
                "is_visible": true
            },
            {
                "key": "INFO_MES",
                "name": "INFO_MES",
                "is_visible": true
            },
            {
                "key": "PWR_EXT_PARAM",
                "name": "PWR_EXT_PARAM",
                "is_visible": true
            },
            {
                "key": "longitude",
                "name": "longitude",
                "is_visible": true
            },
            {
                "key": "LONGITUDE_TAG",
                "name": "LONGITUDE_TAG",
                "is_visible": true
            },
            {
                "key": "DIN1",
                "name": "DIN1",
                "is_visible": true
            },
            {
                "key": "ANGLE_TAG",
                "name": "ANGLE_TAG",
                "is_visible": true
            },
            {
                "key": "ALTITUDE_TAG",
                "name": "ALTITUDE_TAG",
                "is_visible": true
            },
            {
                "key": "DINX_MODE",
                "name": "DINX_MODE",
                "is_visible": true
            },
            {
                "key": "UNIXTIME",
                "name": "UNIXTIME",
                "is_visible": true
            },
            {
                "key": "SPEED_TAG",
                "name": "SPEED_TAG",
                "is_visible": true
            },
            {
                "key": "SATELLITES_TAG",
                "name": "SATELLITES_TAG",
                "is_visible": true
            },
            {
                "key": "PWR_INT_PARAM",
                "name": "PWR_INT_PARAM",
                "is_visible": true
            },
            {
                "key": "latitude",
                "name": "latitude",
                "is_visible": true
            },
            {
                "key": "LATITUDE_TAG",
                "name": "LATITUDE_TAG",
                "is_visible": true
            }
        ],
        "rows": [
            {
                "№": 1,
                "satellites": "15",
                "altitude": "80",
                "speedkph": "0",
                "angle": "14",
                "datepoint": "2022-03-28 12:30:37",
                "TEMP_1": "2443",
                "INFO_MES": "306",
                "PWR_EXT_PARAM": "4178",
                "longitude": "37.634151458740234",
                "LONGITUDE_TAG": "37.634151458740234",
                "DIN1": "2",
                "ANGLE_TAG": "14",
                "ALTITUDE_TAG": "80",
                "DINX_MODE": "2",
                "UNIXTIME": "1648470637000",
                "SPEED_TAG": "0",
                "SATELLITES_TAG": "15",
                "PWR_INT_PARAM": "14727",
                "latitude": "55.70588302612305",
                "LATITUDE_TAG": "55.70588302612305"
            },
            {
                "№": 2,
                "satellites": "15",
                "altitude": "80",
                "speedkph": "0",
                "angle": "14",
                "datepoint": "2022-03-28 12:30:07",
                "TEMP_1": "2443",
                "INFO_MES": "306",
                "PWR_EXT_PARAM": "0",
                "longitude": "37.634151458740234",
                "LONGITUDE_TAG": "37.634151458740234",
                "DIN1": "2",
                "ANGLE_TAG": "14",
                "ALTITUDE_TAG": "80",
                "DINX_MODE": "2",
                "UNIXTIME": "1648470607000",
                "SPEED_TAG": "0",
                "SATELLITES_TAG": "15",
                "PWR_INT_PARAM": "14713",
                "latitude": "55.70588302612305",
                "LATITUDE_TAG": "55.70588302612305"
            },
            {
                "№": 3,
                "satellites": "14",
                "altitude": "80",
                "speedkph": "0",
                "angle": "14",
                "datepoint": "2022-03-28 12:29:37",
                "TEMP_1": "2443",
                "INFO_MES": "306",
                "PWR_EXT_PARAM": "0",
                "longitude": "37.634151458740234",
                "LONGITUDE_TAG": "37.634151458740234",
                "DIN1": "2",
                "ANGLE_TAG": "14",
                "ALTITUDE_TAG": "80",
                "DINX_MODE": "2",
                "UNIXTIME": "1648470577000",
                "SPEED_TAG": "0",
                "SATELLITES_TAG": "14",
                "PWR_INT_PARAM": "14713",
                "latitude": "55.70588302612305",
                "LATITUDE_TAG": "55.70588302612305"
            },
            {
                "№": 4,
                "satellites": "13",
                "altitude": "80",
                "speedkph": "0",
                "angle": "14",
                "datepoint": "2022-03-28 12:29:07",
                "TEMP_1": "2437",
                "INFO_MES": "306",
                "PWR_EXT_PARAM": "522",
                "longitude": "37.634151458740234",
                "LONGITUDE_TAG": "37.634151458740234",
                "DIN1": "2",
                "ANGLE_TAG": "14",
                "ALTITUDE_TAG": "80",
                "DINX_MODE": "2",
                "UNIXTIME": "1648470547000",
                "SPEED_TAG": "0",
                "SATELLITES_TAG": "13",
                "PWR_INT_PARAM": "14727",
                "latitude": "55.70588302612305",
                "LATITUDE_TAG": "55.70588302612305"
            },
            {
                "№": 5,
                "satellites": "15",
                "altitude": "80",
                "speedkph": "0",
                "angle": "14",
                "datepoint": "2022-03-28 12:28:37",
                "TEMP_1": "2437",
                "INFO_MES": "400",
                "PWR_EXT_PARAM": "0",
                "longitude": "37.634151458740234",
                "LONGITUDE_TAG": "37.634151458740234",
                "DIN1": "2",
                "ANGLE_TAG": "14",
                "ALTITUDE_TAG": "80",
                "DINX_MODE": "2",
                "UNIXTIME": "1648470517000",
                "SPEED_TAG": "0",
                "SATELLITES_TAG": "15",
                "PWR_INT_PARAM": "14713",
                "latitude": "55.70588302612305",
                "LATITUDE_TAG": "55.70588302612305"
            },
            {
                "№": 6,
                "satellites": "15",
                "altitude": "100",
                "speedkph": "0",
                "angle": "150",
                "datepoint": "2022-03-28 12:28:17",
                "SATELLITES_TAG": "15",
                "TEMP_1": "2437",
                "ALTITUDE_TAG": "100",
                "latitude": "55.70598220825195",
                "LATITUDE_TAG": "55.70598220825195",
                "SPEED_TAG": "0",
                "ANGLE_TAG": "150",
                "PWR_INT_PARAM": "14699",
                "DIN1": "2",
                "PWR_EXT_PARAM": "4176",
                "DINX_MODE": "2",
                "INFO_MES": "407",
                "longitude": "37.6342887878418",
                "LONGITUDE_TAG": "37.6342887878418",
                "UNIXTIME": "1648470497000"
            },
            {
                "№": 7,
                "satellites": "16",
                "altitude": "100",
                "speedkph": "0",
                "angle": "150",
                "datepoint": "2022-03-28 12:28:04",
                "SATELLITES_TAG": "16",
                "TEMP_1": "2437",
                "ALTITUDE_TAG": "100",
                "latitude": "55.70598220825195",
                "LATITUDE_TAG": "55.70598220825195",
                "SPEED_TAG": "0",
                "ANGLE_TAG": "150",
                "PWR_INT_PARAM": "14686",
                "DIN1": "2",
                "PWR_EXT_PARAM": "521",
                "DINX_MODE": "2",
                "INFO_MES": "306",
                "longitude": "37.6342887878418",
                "LONGITUDE_TAG": "37.6342887878418",
                "UNIXTIME": "1648470484000"
            },
            {
                "№": 8,
                "satellites": "15",
                "altitude": "100",
                "speedkph": "0",
                "angle": "150",
                "datepoint": "2022-03-28 12:27:34",
                "SATELLITES_TAG": "15",
                "TEMP_1": "2437",
                "ALTITUDE_TAG": "100",
                "latitude": "55.70598220825195",
                "LATITUDE_TAG": "55.70598220825195",
                "SPEED_TAG": "0",
                "ANGLE_TAG": "150",
                "PWR_INT_PARAM": "14713",
                "DIN1": "2",
                "PWR_EXT_PARAM": "0",
                "DINX_MODE": "2",
                "INFO_MES": "306",
                "longitude": "37.6342887878418",
                "LONGITUDE_TAG": "37.6342887878418",
                "UNIXTIME": "1648470454000"
            },
            {
                "№": 9,
                "satellites": "15",
                "altitude": "100",
                "speedkph": "0",
                "angle": "150",
                "datepoint": "2022-03-28 12:27:04",
                "SATELLITES_TAG": "15",
                "TEMP_1": "2437",
                "ALTITUDE_TAG": "100",
                "latitude": "55.70598220825195",
                "LATITUDE_TAG": "55.70598220825195",
                "SPEED_TAG": "0",
                "ANGLE_TAG": "150",
                "PWR_INT_PARAM": "14713",
                "DIN1": "2",
                "PWR_EXT_PARAM": "0",
                "DINX_MODE": "2",
                "INFO_MES": "306",
                "longitude": "37.6342887878418",
                "LONGITUDE_TAG": "37.6342887878418",
                "UNIXTIME": "1648470424000"
            },
            {
                "№": 10,
                "satellites": "15",
                "altitude": "100",
                "speedkph": "0",
                "angle": "150",
                "datepoint": "2022-03-28 12:26:34",
                "SATELLITES_TAG": "15",
                "TEMP_1": "2437",
                "ALTITUDE_TAG": "100",
                "latitude": "55.70598220825195",
                "LATITUDE_TAG": "55.70598220825195",
                "SPEED_TAG": "0",
                "ANGLE_TAG": "150",
                "PWR_INT_PARAM": "14713",
                "DIN1": "2",
                "PWR_EXT_PARAM": "0",
                "DINX_MODE": "2",
                "INFO_MES": "306",
                "longitude": "37.6342887878418",
                "LONGITUDE_TAG": "37.6342887878418",
                "UNIXTIME": "1648470394000"
            }
        ]
    }
}

Структура ответа:

date - Дата
max_rows - Максимальное количество строк
columns - колонки
с - строки, отсортированные по датам в обратном порядке

query Parameters
from
string
Example: from=

начальный индекс записи, начинается с нуля

max
string
Example: max=

максимальное количество записей

imei
string
Example: imei=

IMEI терминала

Request Body schema: application/json
count
number
from
number

Responses

Request samples

Content type
application/json
{
  • "count": 2,
  • "from": 0
}

Ретрансляции

API по работе с Ретрансляциями

/retranslators?ids=:ids

Поиск imei по ID


Возвращает массив ретрансляций по ID.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретная ретрансляция.


Роль: Читатель и выше.


Пример запроса:

/retranslators?ids=eeadc5d1-9a68-4083-bef6-51173d532cb0

Пример ответа:

{
    "id": "eeadc5d1-9a68-4083-bef6-51173d532cb0",
    "name": "Ретрансляция в Эрнис1",
    "comment": " Комментс",
    "retrans_protocol": "retranslator_wilaon_ips",
    "retrans_server": "10.11.12.13",
    "retrans_port": 8080,
    "retrans_pw": "1234",
    "is_active": true,
    "activate_date": "2024-08-28 00:00:00",
    "terminals": [
        {
            "imei": "862531041183956",
            "to_imei": "4324324234"
        },
        {
            "imei": "862531041156705",
            "to_imei": "3244324"
        }
    ]
}
query Parameters
ids
string
Example: ids=
header Parameters
cookie
string
Example: PLAY_SESSION_DEV={{vault:json-web-token}}; __ddg1_=iXH59Du4QaAkZvHblGsa; PLAY_SESSION={{vault:json-web-token}}

Responses

/retranslators

Создание новой ретрансляции


Параметры:

"name": Название ретрансляции, текcт, обязательно,
"comment": Комментарий, текcт, необязательно
"retrans_server": Адрес сервера ретрансляции, текcт, обязательно,
"retrans_port": Порт сервера ретрансляции, целое число, обязательно,
"retrans_pw": Пароль ретрансляции, текст, не обязательно,
"retrans_protocol": Протокол, возможные ключи получают из dictionaries, где type=retranslator_protocols
"is_active": Статус, если true то ретрансляция включена, иначе отключена

Роль: Супервизор и выше.


Пример запроса:

{
    "name": "Ретрансляция в Эрнис1",
    "comment": " Комментс",
    "retrans_server": "10.11.12.13", 
    "retrans_port": 8080,
    "retrans_pw": "1234",
    "retrans_protocol": "retranslator_wilaon_ips",
    "terminals": [
        {"imei": "51233441252927", "to_imei": "4324324234"},
        {"imei": "350612070173768", "to_imei": "3244324"}
    ]
}

Пример ответа:

Возвращается созданная запись

{
    "id": "2c2fd09c-5584-42cb-a3d0-4006bcfddf71",
    "name": "Ретрансляция в Эрнис1",
    "comment": " Комментс",
    "retrans_protocol": "retranslator_wilaon_ips",
    "retrans_server": "10.11.12.13",
    "retrans_port": 8080,
    "retrans_pw": "1234",
    "is_active": true,
    "activate_date": "2024-08-28 00:00:00",
    "terminals": [
        {
            "imei": "51233441252927",
            "to_imei": "4324324234"
        },
        {
            "imei": "350612070173768",
            "to_imei": "3244324"
        }
    ]
}

Yandex retranslator

Для yandex retranslator используются дополнительние поля:

member_name - Идентификатор участника программы, текстовое поле:
route_name - Идентификатор маршрута, текстовое поле:

gps_category_type_key - Категория GPS-сигнала
public_vehicle_type_key - Тип общественного транспортного средства

{
    "retrans_server": "10.10.10.10",
    "company_name": "0000 тест001",
    "retrans_protocol": "ya_transport",
    "retrans_port": "1234",
    "terminals": [
        {
            "imei": "356917059172986",
            "to_imei": "1233322"
        }
    ],
    "member_name": "НКгоалв",
    "route_name": "123",
    "gps_category_type_key": "gps_category_type_s",
    "public_vehicle_type_key": "public_vehicle_type_bus"
}
header Parameters
cookie
string
Example: PLAY_SESSION_DEV={{vault:json-web-token}}; __ddg1_=iXH59Du4QaAkZvHblGsa; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
comment
string
name
string
retrans_port
number
retrans_protocol
string
retrans_pw
string
retrans_server
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "comment": " Комментс",
  • "name": "Ретрансляция в Эрнис1",
  • "retrans_port": 8080,
  • "retrans_protocol": "retranslator_wilaon_ips",
  • "retrans_pw": "1234",
  • "retrans_server": "10.11.12.13",
  • "terminals": [
    ]
}

/retranslators?ids=:ids

Удаление ретрансляции по id


См. DELETE /units?ids=:ids


Роль: Супервизор и выше.

query Parameters
ids
string
Example: ids=

Responses

/retranslators/:id

Обновить данные ретрансляции


Обновляет переданные параметры


Роль: Супервизор и выше.


Параметры:

См метод POST /retranslators


Ответ:

Аналогичен одному объекту из возврата метода GET /retranslators?ids=:id

path Parameters
id
required
string
Example:

ID записи

Request Body schema: application/json
company_id
string
id
string
imei
string
retrans_from
string
retrans_port
number
retrans_server
string
retrans_to
string

Responses

Request samples

Content type
application/json
{
  • "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "id": "0c1641be-3ca3-4928-b640-9653882f2b60",
  • "imei": "359633107825189",
  • "retrans_from": "2021-08-01 00:00:00",
  • "retrans_port": 8081,
  • "retrans_server": "10.11.12.13",
  • "retrans_to": "2021-09-01 00:00:00"
}

/retranslators/:id

Удаление ретрансляции по его ID


Параметры:

id записи


Роль: Супервизор и выше.


Ответ: 200

Если ретрансляция с таким id не найдена, то возвращается ошибка 422.

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID записи

Responses

/retranslators/list

Поиск ретрансляции по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

sortField - поле сортировки, значения
[imei]

sortDesc - сортировка по убыванию, значения "true", "false".

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - imei, retrans_server


Роль: Читатель и выше.


Пример запроса:

Получить первые 2 imei имеющие подстроку "123"

{
    "from": 0,
    "count": 2,
    "sortField": "imei",
    "conditions": [
        {
            "field": "imei",
            "value": "123"       
        }    
    ]
}

Ответ:

{
    "max": 9,
    "list": [
        {
            "id": "fcdb331c-4e27-4fb3-91b6-443330dbef2c",
            "company_id": "6c1a0092-9f99-4fb0-a2f3-37eb8db08b31",
            "imei": "862531040831233",
            "retrans_server": "10.10.10.10",
            "retrans_port": 8080,
             "retrans_pw": "xyzt"
        },
        {
            "id": "0ad9df34-ce6e-4665-a1f8-f6e2d93d5d1e",
            "company_id": "6c1a0092-9f99-4fb0-a2f3-37eb8db08b31",
            "imei": "862531042812348",
            "retrans_server": "10.10.10.10",
            "retrans_port": 8080,
             "retrans_pw": "xyzt"
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number
sortField
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 2,
  • "from": 0,
  • "sortField": "imei"
}

/retranslators/:id/logs

Получение лога ретрансляции


Параметры запроса:

id - ID ретранслятора

Поля тела json-запроса:

from - дата и время начала интервала(в формате yyyy-MM-dd HH:mm:ss).

to - дата и время окончания интервала(в формате yyyy-MM-dd HH:mm:ss).

max - Параметр для пагинации. Максимальное число строк.

offset - Параметр для пагинации. Определяет количество пропущенных строк, начиная с нулевой строки. Если параметр отсутствует в запросе, то по дефолту он равен 0.

imeis - список выбранных IMEI, они должны быть выбраны из текущей ретрансляции. Если не указано или пусто, то лог получается по первому IMEI.

Ответ состоит из трех полей:

columns - колонки

rows - строки, состоит из datetime, imei, is_error, text полей.

max_rows максимальное количество строк, используется для пагинации


Роль: Администратор и выше.


Пример запроса:

POST https://admin-dev.skif.pro/api_v1/retranslators/d8105af4-ce13-4451-b1bc-32c9988e90d1/logs

{
    "offset": 0,
    "max": 100,
    "from": "2024-09-17 00:00:00",
    "to": "2024-09-17 23:59:59",
    "imeis": ["336023881", "336023861"]
}

Ответ:

{
    "columns": [
        {
            "key": "datetime",
            "name": "Дата"
        },
        {
            "key": "imei",
            "name": "IMEI"
        },
        {
            "key": "is_error",
            "name": "Статус"
        },
        {
            "key": "text",
            "name": "Сообщение"
        }
    ],
    "rows": [
        {
            "datetime": "2024-09-17 14:07:11",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:10",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:03",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:02",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:01",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка: \n#D#170924;090731;0000.000000;S;00000.000000;W;0;0;0;0;NA;NA;NA;1,1,1,1;NA;battery_lvl:1:41,flg:1:2,fuel1:1:2043,fuel1_state:1:2,fuel1_temp:1:21,fuel2:1:0,fuel2_state:1:0,fuel2_temp:1:0,fuel3:1:0,fuel3_state:1:0,fuel3_temp:1:0,fuel4:1:0,fuel4_state:1:0,fuel4_temp:1:0,global_number:1:5866372,ignition:1:0,mileage:1:0,pwr_ext:2:23.4,rpm:1:0,sum_acc:1:0;6792\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:01",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная авторизация",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:00",
            "imei": "336023881",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:00",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:07:00",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:06:50",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:06:50",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:06:46",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:06:31",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:06:16",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:06:01",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:05:46",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:05:31",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:05:16",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:05:01",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка: \n#D#170924;090531;0000.000000;S;00000.000000;W;0;0;0;0;NA;NA;NA;1,1,1,1;NA;battery_lvl:1:41,flg:1:2,fuel1:1:2043,fuel1_state:1:2,fuel1_temp:1:21,fuel2:1:0,fuel2_state:1:0,fuel2_temp:1:0,fuel3:1:0,fuel3_state:1:0,fuel3_temp:1:0,fuel4:1:0,fuel4_state:1:0,fuel4_temp:1:0,global_number:1:5866364,ignition:1:0,mileage:1:0,pwr_ext:2:23.4,rpm:1:0,sum_acc:1:0;8247\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:04:46",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:04:31",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:04:16",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:04:01",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:46",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:38",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:38",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:38",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:38",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:38",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:38",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:38",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:37",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:37",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:37",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:36",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:36",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:36",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:35",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:35",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:35",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:34",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:34",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:33",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:33",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:33",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:33",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:32",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:32",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:32",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:32",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:31",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:31",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:31",
            "imei": "336023881",
            "is_error": false,
            "text": "Успешная отправка",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:29",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:29",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:29",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:29",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:28",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:28",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:28",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:28",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:28",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:28",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:27",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:27",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:27",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:27",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:26",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:26",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:25",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:25",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:25",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:25",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:24",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:23",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:23",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:23",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:23",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:22",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:22",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:22",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:22",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:21",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:21",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:21",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:19",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:19",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:19",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:18",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:18",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:18",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:18",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:18",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:18",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:17",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:17",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:17",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:17",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:17",
            "imei": "336023861",
            "is_error": false,
            "text": "Connecting to 212.154.238.102:20332",
            "server": "212.154.238.102"
        },
        {
            "datetime": "2024-09-17 14:03:16",
            "imei": "336023861",
            "is_error": true,
            "text": "Проблема авторизации: #AL#0\r\n",
            "server": "212.154.238.102"
        }
    ],
    "max_rows": 4012
}
path Parameters
id
required
string
Example:

ID записи

header Parameters
cookie
string
Example: PLAY_SESSION_DEV={{vault:json-web-token}}; __ddg1_=iXH59Du4QaAkZvHblGsa; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
from
string
imeis
Array of strings
max
number
offset
number
to
string

Responses

Request samples

Content type
application/json
{
  • "from": "2024-09-17 00:00:00",
  • "imeis": [
    ],
  • "max": 100,
  • "offset": 0,
  • "to": "2024-09-17 23:59:59"
}

Ретрансляция исторических данных

Ретрансляция исторических данных

/retranslator_histories

Добавление ретрансляции исторических данных


Поля в JSON:

imei - IMEI объекта

terminal_type - ключ типа протокола объекта.

name - имя объекта.

comment - комментарий.

retrans_from - период ретрансляции от в формате yyyy-MM-dd HH:mm:ss

retrans_to - период ретрансляции до.


Роль: Супервизор и выше.


Пример запроса:

POST https://dev5.skif.pro/api_v1/retranslator_histories

{
    "imei": "324235243242354",
    "terminal_type": "navtelecom",
    "name": "Ретранслятор 1234",
    "unit_name": "Man 922",
    "comment": "Комментария 456",
    "retrans_from": "2023-10-12 11:41:55",
    "retrans_to": "2023-10-13 12:44:30"
}

Пример ответа:

Если запрос успешен, тогда возвращается соозданная запись, иначе ошибка.

{
    "id": "435aa261-d06a-422b-b64c-1ee94b447c9e",
    "imei": "324235243242354",
    "name": "Ретранслятор 1234",
    "unit_name": "Man 922",
    "terminal_type": "navtelecom",
    "comment": "Комментария 456",
    "retrans_from": "2023-10-12 11:41:55",
    "retrans_to": "2023-10-13 12:44:30",
    "status": "WAITING"
}
header Parameters
cookie
string
Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX19i1MKLt0JXuvb8mt/6JCYaI+BDpJcnGlWTJD/DXtOrgxRHWt6raUeL"; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
comment
string
imei
string
name
string
retrans_from
string
retrans_to
string
terminal_type
string
unit_name
string

Responses

Request samples

Content type
application/json
{
  • "comment": "Комментария 456",
  • "imei": "324235243242354",
  • "name": "Ретранслятор 1234",
  • "retrans_from": "2023-10-14 11:41:55",
  • "retrans_to": "2023-10-18 12:44:30",
  • "terminal_type": "navtelecom",
  • "unit_name": "Man 922"
}

Команды терминалов

API по работе с команд терминалов

/commands?ids=:ids

Поиск команд по ID


Возвращает массив команд по ID.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретная команда.


Роль: Оператор и выше.


Пример запроса:

/commands?ids=8d174fc8-57c8-4a35-9347-0dba76c04957

Пример ответа:

{
    "id": "8d174fc8-57c8-4a35-9347-0dba76c04957",
    "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
    "imei": "359633107825189",
    "command": "command three",
    "status": "WAITING"
}
query Parameters
ids
string
Example: ids=

Responses

/commands

Добавление новой команды


Параметры:

"company_id": ID компании, обязательно для дилера. Для компании необязательно - получается активная компания.
"imei": Imei, текст, обязательно.
"command": Команда, обязательно для дилера, для компании нет.
"template": шаблон команды, обязательно для компании.


Роль: Оператор и выше.


Пример запроса:

  1. Создание команды дилером

{
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "100000000000008",
    "commnad": "*?V"
}

Возвращается созданная запись

status - статус отправки команды. Возможные значения: WAITING - в ожидании, OK - отправлена, FAIL - не удалось отправить.
Пример ответа:

{
    "id": "7d7bb072-9daf-4142-9b03-3efea7265a73",
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "100000000000008",
    "commnad": "*?V",
    "status": "WAITING"
}

  1. Создание команды в компании
{
    "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
    "imei": "100000000000008",
    "template": {
        "id": "eede4765-273c-45da-b2c6-8b331d532402", // ID шаблонов команд
        "params_values": [ // значения параметров
            {"key": "Номер выхода", "value": "2"}
        ]
    }
}

Ответ:

{
    "id": "cc584df9-791b-4074-af7e-6bc319be6173",
    "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
    "imei": "100000000000008",
    "command": "*!2N",
    "status": "WAITING",
    "user_id": "6e8f4833-c430-4509-ac5e-e1802691655c",
    "template": {
        "id": "eede4765-273c-45da-b2c6-8b331d532402",
        "name": "Выключения выходной линии",
        "params_values": [
            {
                "key": "Номер выхода",
                "value": "2"
            }
        ]
    }
}
Request Body schema: application/json
command
string
company_id
string
imei
string

Responses

Request samples

Content type
application/json
{
  • "command": "*?V",
  • "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "imei": "100000000000008"
}

/commands_bulk

Добавить новую команду для нескольких терминалов


Параметры:

"imeis": Список Imei, текст массив.
"command": Команда, обязательно для дилера, для компании нет.
"template": Шаблон команды, обязательно для компании.


Роль: Оператор и выше.


Пример запроса:

1) Создание команды дилером


{
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imeis": ["100000000000008", "100000000000009"],
    "commnad": "*?V"
}

Возвращается созданные записи

status - статус отправки команды. Возможные значения: WAITING - в ожидании, OK - отправлена, FAIL - не удалось отправить
Пример ответа:

[
    {
    "id": "7d7bb072-9daf-4142-9b03-3efea7265a73",
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "100000000000008",
    "commnad": "*?V",
    "status": "WAITING"
  },
  {
    "id": "7d7bb072-9daf-4142-9b03-3efea7265a73",
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "100000000000008",
    "commnad": "*?V",
    "status": "WAITING"
  }
]

2) Создание команды в компании

{
    "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
    "imeis": ["100000000000008", "100000000000009"],
    "template": {
        "id": "eede4765-273c-45da-b2c6-8b331d532402",
        "params_values": [
            {"key": "Номер выхода", "value": "2"}
        ]
    }
}

Ответ:

[
    {
    "id": "7d7bb072-9daf-4142-9b03-3efea7265a73",
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "100000000000008",
    "commnad": "*?V",
    "status": "WAITING"
  },
  {
    "id": "7d7bb072-9daf-4142-9b03-3efea7265a73",
    "company_id": "a786d1e0-5cc2-4e3d-a1f6-2c8ae06f9a39",
    "imei": "100000000000008",
    "commnad": "*?V",
    "status": "WAITING"
  }
]
Request Body schema: application/json
company_id
string
imei
string
object

Responses

Request samples

Content type
application/json
{
  • "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "imei": "100000000000008",
  • "template": {
    }
}

/commands/:id

Обновить данные команды


Обновляет переданные параметры


Параметры:

см метод POST /commands


Роль: Оператор и выше.


Ответ:

Аналогичен одному объекту из ответа метода GET /commands?ids=:id

path Parameters
id
required
string
Example:

ID записи

Request Body schema: application/json
command
string
company_id
string
id
string
imei
string
sent_time
string
status
string

Responses

Request samples

Content type
application/json
{
  • "command": "*?V",
  • "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "id": "68c00e05-a462-4b93-9698-ab411003aa1f",
  • "imei": "866795039460264",
  • "sent_time": "2022-02-11 15:39:26",
  • "status": "FAIL"
}

/commands/:id

Удаление команды по ее id


Удаляет команду


Параметры:

id записи


Роль: Оператор и выше.


Ответ: 200

Если команда с таким id не найдена, то возвращается ошибка 422

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID записи

Responses

/commands/list

Поиск команды по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
значения для field - imei


Роль: Оператор и выше.


Пример запроса:

Получить первые 2 команды для imei

{
    "from": 0,
    "count": 2,
    "conditions": [
        {
            "field": "imei",
            "value": "862531041141236"
        }
    ]
}

Ответ:

{
    "max": 2,
    "list": [
        {
            "id": "9fa4bb38-c4da-4339-8c27-eac652363c63",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9", 
            "imei": "862531041141236", 
            "command": "command xyz", //Команда
            "status": "SENT", //Статус
            "answer": "*@С" // Ответ
        },
        {
            "id": "72019dff-e056-4137-86f8-19e790d3067b",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "imei": "862531041141236",
            "command": "command abc",
            "status": "FAIL"
        },
        {
            "id": "1630c5b2-4e1d-447a-9102-97f6eb5ddf47",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "imei": "862531041141236",
            "command": "command abc",
            "status": "WAITING"
        }
    ]
}
Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ]
}

Шаблоны команд терминалов

API по работе с шаблонами команд терминалов

/admin_query

Получение сущностей по всем компаниям


Роль: Администратор и выше.


Примеры запросов:

{
    "model": "units",
    "value": "тест", //для поиска
    "from": 0,
    "count": 100
}

Для получение удаленных объектов:

{
    "model": "units",
    "value": "тест", //для поиска
    "from": 0,
    "count": 100,
    "is_delete": true
}

Для фильтрации по компании указать компании в поле companies:

{
    "model": "units",
    "value": "тест", /для поиска
    "from": 0,
    "count": 100,
    "companies": [
        {"id": "935aa95a-d245-42d9-92ea-da6a2530d59c"},
        {"id": "25d1ff38-e39e-42f4-9659-2124d308400c"}
    ],
   "conditions": [
        {"field": "terminal_type_key", "values":["adm","galileo"]},
        {"field": "sensors.type_key", "values": ["cardnumber,ignition"]}
    ] 
}

Возможные значения model - "unitsgroup", "units", "geozones", "report_templates", "notifications", "routes", "trailers", "mailings", "terminals", "retranslators".

В conditions можно указать дополнительный фильтр для объектов по протоколам и типам датчиков.

Чтобы фильтровать по интегратору надо отправить в запросе поле dealer. Достаточно указать id.

"dealer": {"id": "8a7d85f9-156e-41ab-9534-da71d1847cba"}

Пример ответа:

 {
     "max": 2,
     "list": [{
         "id": "53e57d49-4e98-4399-bbf2-b03964df68b7",
         "name": "testName-777",
         "imei": "e2f856c7-e7a9-4071-adb4-f76df176661b",
         "company_id": "11111111-1111-1111-1111-111111111111",
         "company_name": "companyName"
     }, {
         "id": "9e49f72f-1f1a-46c3-9e61-b61a5f9900ea",
         "name": "testName-22222222",
         "imei": "06ee6786-905b-4aa3-ac65-2a18054128ea",
         "company_id": "11111111-1111-1111-1111-111111111111",
         "company_name": "companyName"
     }]
 }

Пример получения тех. параметров объекта: укажите необходимое поле в виде custom_fields.

{
    "model": "units",
    "fields": ["id", "name", "custom_fields.tripdetector_minmovespeed"],
    "from": 0,
    "count": 2
}

Пример ответа:

{
    "max": 202,
    "list": [
        {
            "id": "da8e065e-27b8-4007-a231-4ffcb0c20e98",
            "name": "IVECO 606 TВA 03",
            "custom_fields": [
                {
                    "key": "tripdetector_minmovespeed",
                    "value": "3",
                    "group": "cf_trips"
                }
            ]
        },
        {
            "id": "504f7e4e-d938-4016-99f5-4e8294efa9f0",
            "name": "Кран Урал 676 STA 033",
            "custom_fields": [
                {
                    "key": "tripdetector_minmovespeed",
                    "value": "5",
                    "group": "cf_trips"
                }
            ]
        }
    ]
}

Пример получения списка терминалов в отсортированном порядке по названию компании в обратном порядке:

{
    "model": "terminals",
    "sortField": "company_name",
    "sortDesc": true,
    "from": 0,
    "count": 100
}
header Parameters
cookie
string
Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX19i1MKLt0JXuvb8mt/6JCYaI+BDpJcnGlWTJD/DXtOrgxRHWt6raUeL"; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
Array of objects
count
number
from
number
model
string

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 100,
  • "from": 0,
  • "model": "commands"
}

/commands_templates?ids=:ids

Получение шаблонов команд по ID


Возвращает шаблоны команд.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретный шаблон команды.


Роль: Оператор и выше.


Пример запроса:

/commands_templates?ids=edfd0b85-b056-4726-9762-fa63dc61efd2

Пример ответа:

{
    "id": "edfd0b85-b056-4726-9762-fa63dc61efd2",
    "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
    "terminal_type": "navtelecom",
    "name": "Команда произвольной звуковой индикации зуммером",
    "command_template": "*!BEEP {Кол-во импульсов в каждом такте},{Кол-во тактов в звуковой индикации},{Длительность каждого такта в 1/128 долях секунды.},{Частота звуковой индикации (Гц)}",
    "params": [
        "Кол-во импульсов в каждом такте",
        "Кол-во тактов в звуковой индикации",
        "Длительность каждого такта в 1/128 долях секунды.",
        "Частота звуковой индикации (Гц)"
    ]
}
query Parameters
ids
string
Example: ids=

Responses

/commands_templates

Добавление нового шаблона команды


Параметры:
"name": Название шаблона команды.
"terminal_type": Тип терминала.
"command_template": Шаблон команды.


Роль: Супервизор и выше.


Пример запроса:

{
    "name": "Команда произвольной звуковой индикации зуммером",
    "terminal_type": "navtelecom",
    "command_template": "*!BEEP {Кол-во импульсов в каждом такте},{Кол-во тактов в звуковой индикации},{Длительность каждого такта в 1/128 долях секунды.},{Частота звуковой индикации (Гц)}"
}

Пример ответа:

Возвращается созданная запись

{
    "id": "edfd0b85-b056-4726-9762-fa63dc61efd2",
    "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
    "terminal_type": "navtelecom",
    "name": "Команда произвольной звуковой индикации зуммером",
    "command_template": "*!BEEP {Кол-во импульсов в каждом такте},{Кол-во тактов в звуковой индикации},{Длительность каждого такта в 1/128 долях секунды.},{Частота звуковой индикации (Гц)}",
    "params": [
        "Кол-во импульсов в каждом такте",
        "Кол-во тактов в звуковой индикации",
        "Длительность каждого такта в 1/128 долях секунды.",
        "Частота звуковой индикации (Гц)"
    ]
}
Request Body schema: application/json
command_template
string
name
string
terminal_type
string

Responses

Request samples

Content type
application/json
{
  • "command_template": "*!BEEP {Кол-во импульсов в каждом такте},{Кол-во тактов в звуковой индикации},{Длительность каждого такта в 1/128 долях секунды.},{Частота звуковой индикации (Гц)}",
  • "name": "Команда произвольной звуковой индикации зуммером",
  • "terminal_type": "navtelecom"
}

/commands_templates/:id

Обновить данные шаблона команды


Параметры:

id - ID шаблона команды
см метод POST /commands_templates


Роль: Супервизор и выше.


Ответ:

Аналогичен GET /commands_templates?ids=:id

path Parameters
id
required
string
Example:

ID шаблона команды

Request Body schema: application/json
command
string
company_id
string
id
string
imei
string
sent_time
string
status
string

Responses

Request samples

Content type
application/json
{
  • "command": "*?V",
  • "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "id": "68c00e05-a462-4b93-9698-ab411003aa1f",
  • "imei": "866795039460264",
  • "sent_time": "2022-02-11 15:39:26",
  • "status": "FAIL"
}

/commands_templates/:id

Удаление шаблона команды по его id


Параметры:

id записи


Роль: Супервизор и выше.


Ответ: 200

Если команда с таким id не найдена, то возвращается ошибка 422.

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID шаблона команды

Responses

/commands_templates/list

Поиск шаблонов комманд по фильтру


Аналогично запросу POST /users/list


Параметры:

from - с какого найденного элемента выдавать результат.

count - максимальное число элементов.

conditions - условие отбора в виде массива [ {"field":"значение", "value":"значение"}, {... и т.д. ...} ].
Возможные значения для field - terminal_type, name


Роль: Оператор и выше.


Примеры:

1) Получение всех шаблонов команд дилера

{}

Пример ответа:

{
    "max": 3,
    "list": [
        {
            "id": "b6f555e8-4c69-4545-9639-44ef56bb1db5",
            "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
            "terminal_type": "navtelecom",
            "name": "Включения выходной линии",
            "command_template": "*!{Номер выхода}Y",
            "params": [
                "Номер выхода"
            ]
        },
        {
            "id": "eede4765-273c-45da-b2c6-8b331d532402",
            "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
            "terminal_type": "navtelecom",
            "name": "Выключения выходной линии",
            "command_template": "*!{Номер выхода}N",
            "params": [
                "Номер выхода"
            ]
        },
        {
            "id": "b91c6a18-5965-46d4-acbe-e164d4dbf11a",
            "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
            "terminal_type": "navtelecom",
            "name": "Запрос модели и версии устройства",
            "command_template": "*?V",
            "params": []
        }
    ]
}

2) Получение первых 2 шаблонов команд для navtelecom.

{
    "from": 0,
    "count": 2,
    "conditions": [
        {
            "field": "terminal_type",
            "value": "navtelecom"
        }
    ]
}

Ответ:

{
    "max": 3,
    "list": [
        {
            "id": "b6f555e8-4c69-4545-9639-44ef56bb1db5",
            "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
            "terminal_type": "navtelecom",
            "name": "Включения выходной линии",
            "command_template": "*!{Номер выхода}Y",
            "params": [
                "Номер выхода"
            ]
        },
        {
            "id": "eede4765-273c-45da-b2c6-8b331d532402",
            "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
            "terminal_type": "navtelecom",
            "name": "Выключения выходной линии",
            "command_template": "*!{Номер выхода}N",
            "params": [
                "Номер выхода"
            ]
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 2,
  • "from": 0
}

Интеграторы

API по работе с Интеграторами

/dealers?ids=:ids

Поиск дилера по ID


Возвращает массив дилеров по ID.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретный интергатор.


Роль: Супервизор и выше.


Пример запроса:

/dealers?ids=8ce34b65-49da-4bac-bbce-379da83e9638

Пример ответа:

{
    "id": "8ce34b65-49da-4bac-bbce-379da83e9638",
    "type": {
        "key": "legal_entity",
        "type": "dealer_types",
        "value": "Юридическое лицо"
    },
    "inn": "1231231233220",
    "phone": "+7899323236",
    "email": "email@skif.com",
    "contact_person": "Ivanov Ivan",
    "name": "СКИФ ЭПП",
    "server": "212.158.160.177",
    "sms_tariff": 1000,
    "address": "Лининский проспект, 116к1, Москва, 119415",
    "services": "Мониторинг транспорта", 
    "tariff_description": "от 200 руб/мес за 1 объект",
    "billing": {
        "merchant": "111222333",
        "system": "MODULBANK",
        "key": "key123xyz",
        "default_unit_price": 260,
        "default_trial_length_days": 10,
        "default_period_length_days": 30,
        "qr_unit_price": 270,
        "qr_trial_length_days": 20,
        "qr_period_length_days": 40,
        "public_offer_path": "/files/dealer_offer/1933792985_8ce34b65-49da-4bac-bbce-379da83e9638.pdf"
    },
    "is_default": false,
    "telegram_bot_token": "6734990111:RTF6Tik5"
}
query Parameters
ids
string
Example: ids=

Responses

/dealers

Создание нового дилера


Параметры:

"type": Тип организации: “Юридическое лицо” или “Индивидуальный предприниматель”. Справочник с типом    'dealer_types'
"name": Название, строка, обязательно. С таким названием создается компания
"email": Email, строка, обязательно
"inn": ИНН, строка, обязательно
"phone": Телефон контактного центра, строка, обязательно
"contact_person": Контактное лицо, строка, обязательно
"is_default": true, если интегратор по умолчанию, его нельзя удалить.  Нельзя сделать дилера по умолчанию 
"password": Пароль 
"sms_tariff": Количество доступных SMS для уведоиления за месяц,
"address": Адрес,
"services": Услуги,
"tariff_description": Описание тарифа
"telegram_bot_token": Токен для телеграм бот

Пример запроса:

{
type': {'key': 'legal_entity'}
"name": "ООО Новый Скиф",
"email": "newskif@skif.pro",
"inn": "11122233",
"phone": "+78981234567",
"contact_person": "Иванов Иван Иванович",
"address": "Ленинский проспект, 116к1, Москва, 119415",
"services": "Мониторинг транспорта",
"tariff_description": "от 200 руб/мес за 1 объект",
"telegram_bot_token": "6734990111:RTF6Tik"
}

Пример ответа:

Возвращается созданная запись.

{
"id": "8ce34b65-49da-4bac-bbce-379da83e9638",
"type": {"key": "legal_entity", "value": "Юридическое лицо", "type": "dealer_types"}
"is_default": false,
"name": "ООО "Новый Скиф"",
"inn": "11122233444",
"phone": "+78981234568",
"email": "newskif@skif.pro",
"contact_person": "Иванов Иван Иванович",
"address": "Лининский проспект, 116к1, Москва, 119415",
"services": "Мониторинг транспорта",
"tariff_description": "от 200 руб/мес за 1 объект",
"telegram_bot_token": "6734990111:RTF6Tik5"
}
Request Body schema: application/json
address
string
contact_person
string
email
string
inn
string
name
string
password
string
phone
string
services
string
tariff_description
string
object

Responses

Request samples

Content type
application/json
{
  • "address": "Лининский проспект, 116к1, Москва, 119415",
  • "contact_person": "Иванов Иван Иванович",
  • "email": "vegeho71508@epeva.com",
  • "inn": "364322233444512",
  • "name": "ООО \"Рога и Копыта\"",
  • "password": "123456aa",
  • "phone": "+7898423456334",
  • "services": "Мониторинг транспорта",
  • "tariff_description": "от 200 руб/мес за 1 объект",
  • "type": {
    }
}

/dealers/invite

Приглашение к дилеру


Параметры:

'email' - приглашаемая электронная почта


Роль: Супервизор и выше.


Пример запроса:

{
"email": "abc@mail.com"
}

Возвращается OK если такоq email не зарегистрован в системе и правильный email, иначе ошибка со статусом 422&
Ссылка в писmме на почту направляет на стрaницу /register?invite_id=&email=

Request Body schema: application/json
email
string

Responses

Request samples

Content type
application/json
{
  • "email": "gopixo6537@epeva.com"
}

/registrate_dealer

Регистрация дилера


Параметры:

"type": Тип организации: “Юридическое лицо” или “Индивидуальный предприниматель”. Справочник с типом    'dealer_types'
"name": Название компании, строка, обязательно. С таким названием создается компания.
"email": Email, строка, обязательно
"inn": ИНН, строка, обязательно
"phone": Телефон контактного центра, строка, обязательно
"contact_person": Контактное лицо, строка, обязательно
"is_default": true, если интегратор по умолчанию, его нельзя удалить.  Нелзя сделать интегратора по умолчанию 
"password": Пароль 
"captcha" - код с картинки получамой методом GET /captcha

Пример запроса:

{
"type": {"key": "legal_entity"}
"name": "ООО Новый Скиф",
"email": "skif@skif.pro",
"inn": "11122233",
"phone": "+78981234567",
"contact_person": "Иванов Иван Иванович",
"capcha": "atxgs"
}

Пример ответа:
Код 200 и пустой body в случае успеха.
Если уже есть аккаунт (см. /approve) с таким email возращается код 422 и body c ошибкой session.errors.emailAlreadyRegistered
В случае частого вызова метода, а именно чаще чем раз в 30 секунд возвращаем код 400 и body validation.errors.often_request

Request Body schema: application/json
contact_person
string
email
string
inn
string
name
string
password
string
phone
string
object

Responses

Request samples

Content type
application/json
{
  • "contact_person": "Иванов Иван Иванович",
  • "email": "newskif2@skif.pro",
  • "inn": "111222334454",
  • "name": "ООО \"Новая Скиф\"",
  • "password": "12345A",
  • "phone": "+789812345687",
  • "type": {
    }
}

/dealer/:inn

Получение общедоступной информации дилера по ИНН


Возвращает объект дилера по ИНН.

Если такой дилер не найден, то приходит ошибка с кодом 422, а в теле ответа:

{"code":4220,"field":"","message":"Не найден такой дилер"}

Пример запроса:

GET /api_v1/dealer/364322233444512

Пример ответа:

{
    "name": "ООО \"Рога и Копыта\"", //Имя
    "type": { //Тип организации,key=legal_entity для Юридическое лицо, key=individual_entrepreneur для 
 Индивидуальный предприниматель         
                 "key": "legal_entity",
        "type": "dealer_types",
        "value": "Юридическое лицо"
    },
    "inn": "364322233444512", // ИНН
    "address": "Ленинский проспект, 116к1, Москва, 119415",//Адрес
    "services": "Мониторинг транспорта",//Услуги
    "tariff_description": "от 200 руб/мес за 1 объект",// Описание тарифа
    "contact_person": "Иванов Иван Иванович",//Контактное лицо
    "email": "vegeho71508@epeva.com",//Email
    "phone": "7898423456334",//Телефон
    "system": { //Система оплаты, key=MODULBANK для модульбанка, key=PAYBOX для paybox 
        "key": "MODULBANK",
        "type": "payment_types",
        "value": "Модульбанк"
    },
    "public_offer_link": "https://dev5.skif.pro/api_v1//files/dealer_offer/1397418377_526c18df-d7d2-4de5-b50a-263515a374e2.pdf" // Ссылка для загрузки оферту 
}
path Parameters
inn
required
string
Example:

Responses

/dealers/:id

Обновить данные дилера


Роль: Редактор тарифа и выше.


Параметры:

{
    "id": "8ce34b65-49da-4bac-bbce-379da83e9638", //ID дилера
    "type": {  // Тип организации
        "key": "legal_entity",
        "type": "dealer_types",
        "value": "Юридическое лицо"
    },
    "inn": "1231231233220", //ИНН
    "phone": "+7899323236", // Номер телефона
    "email": "email@skif.com", // Email
    "contact_person": "Ivanov Ivan", //Контактное лицо
    "name": "СКИФ ЭПП",//Название компании
    "server": "212.158.160.177",//Сервер для отправки данных терминала
    "sms_tariff": 1000, //SMS тариф
    "address": "Лининский проспект, 116к1, Москва, 119415",//Адрес
    "services": "Мониторинг транспорта", // Услуги
    "tariff_description": "от 200 руб/мес за 1 объект", //Описание тарифа
    "billing": { //Биллинг
        "system": "MODULBANK", //Платежная система, обязательное, получается из справочника type = payment_types
        "merchant": "111222333",// Идентификатор магазина, обязательное
        "key": "key123xyz",//Секретный ключ, обязательное
        "default_unit_price": 260, Стоимость одного объекта по умолчанию, обязательное
        "default_trial_length_days": 10, Пробный период (дней) по умолчанию, обязательное
        "default_period_length_days": 30, Период оплаты (дней)  по умолчанию, обязательное
        "qr_unit_price": 270, Стоимость одного объекта  по qr, необязательное
        "qr_trial_length_days": 20,Пробный период (дней) по qr, необязательное
        "qr_period_length_days": 40, Период оплаты (дней)  по qr, необязательное
        "public_offer_path": "/files/dealer_offer/1933792985_8ce34b65-49da-4bac-bbce-379da83e9638.pdf" //Публичная оферта (Прикрепленный файл и подсказка - это соглашение об использовании мобильного приложения будет отображаться вашим пользователям), необязательное
    },
    "is_default": false,
    "telegram_bot_token": "6734990111:RTF6Tik"
}

см метод POST /dealers


Ответ:

Аналогичен одному объекту из возврата метода GET /dealers?ids=:id

path Parameters
id
required
string
Example:

ID интегратора

Request Body schema: application/json
_default
boolean
_delete
boolean
contact_person
string
email
string
id
string
inn
string
is_default
boolean
name
string
phone
string
server
string
sms_tokens
Array of strings
object

Responses

Request samples

Content type
application/json
{
  • "_default": false,
  • "_delete": false,
  • "contact_person": "XXXXXXX",
  • "email": "ewqew123@mail.com",
  • "id": "dd11e469-f929-4087-96b2-3911335015c1",
  • "inn": "34324324324",
  • "is_default": false,
  • "name": "Мониторинг Плюс Москва",
  • "phone": "+7787878",
  • "server": "178.90.136.62",
  • "sms_tokens": [
    ],
  • "type": {
    }
}

/dealers/:id

Удаление дилера по его id


Удаляет дилера


Параметры:

id записи


Ответ: 200

Если дилер с таким id не найден возвращается ошибка 422.

{
    "code": 422,
    "field": "id",
    "message": "Параметр не найден в базе"
}
path Parameters
id
required
string
Example:

ID интегратора

Responses

/dealers/:id/block_unblock

Блокировка / разблокировка интегратора


Блокирует / разблокирует интегратора.


Параметры:

id - ID интегратора

В теле запроса отправить "block": true для блокировки, "block": false для разблокировки


{
    "block": true
}
path Parameters
id
required
string
Example:

ID интегратора

Request Body schema: application/json
block
boolean

Responses

Request samples

Content type
application/json
{
  • "block": true
}

/dealers_admin_query

Поиск интеграторов в админке


Поиск выполняется по полей name, email, phone


Роль: Администратор и выше.


Пример запроса:

Найти по названию "Новый Скиф"

{
   "value": "Новый Скиф",
   "from": 0,
   "count": 100
}

Ответ:

{
    "max": 2,
    "list": [
        {
            "id": "2cbd9d97-329d-4631-9161-b11556561b77",
            "is_default": false,
            "name": "ООО Новый Скиф",
            "inn": "11122233",
            "phone": "+78981234567",
            "email": "skif@skif.pro",
            "contact_person": "Иванов Иван Иванович",
            "regions": [],
            "_default": false
        },
        {
            "id": "8ce34b65-49da-4bac-bbce-379da83e9638",
            "is_default": false,
            "name": "ООО \"Новый Скиф2\"",
            "inn": "11122233444",
            "phone": "+78981234568",
            "email": "newskif@skif.pro",
            "contact_person": "Иванов Иван Иванович",
            "regions": [
                "Узбекистан",
                "Туркменистан"
            ],
            "_default": false
        }
    ]
}
Request Body schema: application/json
count
number
from
number
value
string

Responses

Request samples

Content type
application/json
{
  • "count": 100,
  • "from": 0,
  • "value": "Новая Скиф"
}

/dealers/send_email/static

dealer_key:

legal_entity

individual_entrepreneur

header Parameters
cookie
string
Example:
Request Body schema: application/json
captcha
string
company_name
string
dealer_key
string
inn
string
phone
string
user_email
string
username
string

Responses

Request samples

Content type
application/json
{
  • "captcha": "p54xa",
  • "company_name": "company_name",
  • "dealer_key": "legal_entity",
  • "inn": "456984332",
  • "phone": "+7999999999",
  • "user_email": "user_email",
  • "username": "username"
}

Коробочное решение

API по работе с коробочным решением

/boxes/create_code

Создание нового кода для коробочного решения


Параметры:

units: список объектов (пока обрабатывается только один объект)


Роль: Супервизор и выше.


Пример запроса:

{
    "units": [
        {"id": "c031563b-31df-43ab-b60d-7c79cd4ae500"}
    ]
}

Пример ответа:

Возвращается созданная запись

{
    "id": "e5020ef9-1d9f-4e80-a189-d54b5a6535a8",
    "dealer_id": "b0de9e77-3ae1-4a1d-b246-6ba1bccf0052",
    "unit_id": "c031563b-31df-43ab-b60d-7c79cd4ae500",
    "code": "A6P29V",
    "link": "https://app.skif.page.link/?link=https://dev.skif.pro/boxes?code=A6P29V&apn=ru.skifapp.skif&amv=27&afl=https://dev.skif.pro/c",
    "used": false
}

Имеет значение code - Шестизначный код и link - cсылка для QR кода.
Если уже был создан код для данного объекта тогда возвращается созданная запись.

Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "units": [
    ]
}

/boxes/create_unit

Создание объекта по коду из коробочного решения


Параметры:

  1. Если выбран "Я новый пользователь SKIF.PRO" то выполняется регистрация, при этом указать new_user=true и данные для регистрация.

Пример запроса:

{
    "new_user": true, 
    "code": "A6P29V", // код
    "userProviderId": "gurkacarti@vusra.com", // email
    "type": "EMAIL", 
    "company_name": "Company123", // название компании
    "name": "Саша", // Имя пользователя
    "phone": "+7(894)455-32-43", // телефон
    "password": "12345abc", //пароль
    "timezone": {
        "key": "UTC+3"// получить список от GET /properties type=timezones
    }, // таймзона компании
    "unit_name": "Bersendz benz Bus 455", // Имя объекта
    "unit_type": {"key": "bus"} // Тип объекта, получить список от GET /properties type=unit_type
}

Создается новая компания, пользователь с указанном email, паролем и объектом. Возвращает новую сессию со статусом OK, если всё ok, иначе ошибка со статусом 422.

  1. Если выбран "У меня есть учетная запись SKIF.PRO" тогда указать код, компанию и данные объекта
{
    "new_user": false,
    "code": "ARKMV1",
    "company": {
        "id": "9b18ce93-c4eb-4479-a978-36c640c54f31"
    },
    "unit_name": "Bersendz benz Bus 455",
    "unit_type": {"key": "bus"}
}

Роль: Читатель и выше.

Request Body schema: application/json
code
string
object
new_user
boolean
unit_name
string
object

Responses

Request samples

Content type
application/json
{
  • "code": "SYSM1I",
  • "company": {
    },
  • "new_user": false,
  • "unit_name": "Bersendz benz Bus 111",
  • "unit_type": {
    }
}

/boxes/:id

Обновление данных кода по ID


Роль: Супервизор и выше.


Параметры:
message - информационный текст

{
  "message": "some message"
}

Возвращает обновленную запись

path Parameters
id
required
string
Example:
Request Body schema: application/json
message
string

Responses

Request samples

Content type
application/json
{
  • "message": "abcXYZ"
}

/boxes?code=<code>

Получение информации о коде


Параметры:
code - шестизначный код в коробке


Роль: Читатель и выше.


Ответ:
used - true если уже использовался

{
    "id": "483f0de0-b8d1-4822-b672-d7d35c659373",
    "dealer_id": "dd11e469-f929-4087-96b2-3911335015c1",
    "unit_id": "4bb05676-1d99-4552-a037-1288c3e60b83",
    "code": "AT1FPU",
    "link": "https://appskif.page.link/?link=https://dev.skif.pro/c?code=AT1FPU&apn=ru.skifapp.skif&amv=27&ibi=com.skifApp.SKIF2&isi=1540602214&imv=1.4.6&efr=1",
    "used": true
}
query Parameters
code
string
Example: code=AT1FPU
Request Body schema: text/plain
Schema not provided

Responses

Request samples

Content type
text/plain

Эмулятор трека

/emulators/start

Начать эмуляцию


Параметры:

terminal_type - ключ типа терминала, протокол реального и фейкого объекта должен быть таким же.

imei - реальный imei, с которого нужно начинать эмуляцию.
fake_imei - imei созданного объекта для теста.
date_from - Дата и время начала, в формате yyy-MM-dd HH:mm:ss в UTC
date_to - Дата и время окончания, в формате yyy-MM-dd HH:mm:ss в UTC


Пример запроса:
GET https://dev.skif.pro/api_v1/emulators/start?imei=862273041373150&fake_imei=33344455566777&from=2021-11-11 10:10:00&to=2021-11-11 10:15:00

query Parameters
terminal_type
string
Example: terminal_type=egts
imei
string
Example: imei=862273040897712
fake_imei
string
Example: fake_imei=33344455566777
from
string
Example: from=2023-09-30 21:00:00
to
string
Example: to=2023-10-00 16:41:55
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/emulators/stop

Остановить эмуляцию


Например:
GET https://dev.skif.pro/api_v1/emulators/stop?fake_imei=33344455566777

query Parameters
fake_imei
string
Example: fake_imei=33344455566777
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

/emulators/show

Получение списка фейковых imei для которых запущен эмулятор

Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
""

Интеграция с ЕФИС

/efis/units

Получение всех объектов


Возвращает массив - список объектов в компании. Какдые строки имеют следующие поля:

[
    {
"id": <uint>, //ID объекта
"nm": <text>, //название
"pos":  { // Последняя информация о местоположение
    “t”:<unit>, //UTC время  в секундах
”y”:<double>,//широта
”x”:<double>, //долгота
”s”:<int>, //скорость 
”c”:<int> ,// курс 
”sc”: <int>// количество спутников
},
"tempsens": [ // Информация о показаниях датчиков температуры
    {
    "id”:<bigint>, //ID датчика
            "n":<text>, //название датчика
            "p":<text>, //первый параметр датчика
            "v":<double> //значение датчика
  },]
   }
]    


Роль: Читатель и выше.


Пример:

[
    {
        "id": 1777673690,
        "nm": "Маршрутка",
        "pos": {
            "t": 1645709415,
            "y": 53.141914,
            "x": 63.581444,
            "s": 0.0,
            "c": 120.0,
            "sc": 18.0
        },
        "tempsens": [
            {
                "id": 5406794727589329475,
                "n": "Temp sensor",
                "p": "temp_d_1",
                "v": 13.6
            }
        ]
    },]

Responses

/efis/units/:id/messages/:time_from/:time_to?index_from=<uint>&index_to=<uint>

Получение сообщений для одного объекта


Параметры:

   {id}: <uint> ID объекта 
   {time_from}: <uint> начало интервала (время UTC, Unix  timestamp в секундах)
   {time_to}: <uint> окончание интервала (время UTC, Unix  timestamp в секундах)
   {index_from}: <uint> индекс первого сообщения, которое будет получено, индексы начинается с нуля
   {index_to}: <uint> индекс последного сообщения, которое будет получено, index_to не принадлежит интервалу, т.е сообщении в позициях [index_from, index_to). index_to-index_from не может быть больше 1000

Роль: Читатель и выше.


Возвращает массив - список сообщений.
Какдые строки имеют следующие поля:

[
   {
     “t”: <uint>, //время UTC в сукундах
     “index”:<uint>, //индекс сообщении, индексы начиначется с нуля
     “pos”: {} //  // информация о позиции в этом сообщении, см. GET /api_v1/units
     "p": {  // значения параметров, отображается только не нулевые значения 
           “key”: value
      },
     "tempsens": [ // Значения температурных датчиков, см. GET /api_v1/units.
     ]
   }]

Пример:
Запрос:
/api_v1/efis/units/1777673690/messages/1645448226/1645534626?index_from=0&index_to=1000

Ответ:

[{
        "t": 1645448228,
        "index": 0,
        "pos": {
            "y": 53.214832,
            "x": 63.637047,
            "z": 0,
            "s": 0,
            "c": 221,
            "sc": 15
        },
        "p": {
            "navi_sensor_st_rec": 1.0,
            "hours_t37": 15.0,
            "gsm_level": 31.0,
            "navi_sensor_st_valid": 1.0,
            "voltage_main": 28361.0,
            "virt_acc_wakeup": 1.0,
            "vol_a_in_1": 34.0,
            "latitude": 53.214832,
            "entry_num": 1078507.0,
            "angle": 221.0,
            "dut_485_1": 592.0,
            "event_id": 4545.0,
            "virt_acc_sh3": 1.0,
            "communication_st": 1.0,
            "longitude": 63.637047,
            "satellites": 15.0,
            "mileage_cur": 33964.230469,
            "altitude": 1665.0,
            "voltage_res": 4127.0,
            "dut_temp_485_1": 5.0
        },
        "tempsens": [{
            "id": 5406794727589329475,
            "n": "Temp sensor",
            "p": "temp_d_1",
            "v": 13.4
        }]
    },
    {
        "t": 1645448229,
        "index": 1,
        "pos": {
            "y": 53.214825,
            "x": 63.637035,
            "z": 0,
            "s": 5,
            "c": 221,
            "sc": 15
        },
        "p": {
            "speedkph": 5.0,
            "navi_sensor_st_rec": 1.0,
            "hours_t37": 15.0,
            "gsm_level": 31.0,
            "navi_sensor_st_valid": 1.0,
            "voltage_main": 28362.0,
            "virt_acc_wakeup": 1.0,
            "vol_a_in_1": 34.0,
            "latitude": 53.214825,
            "entry_num": 1078508.0,
            "angle": 221.0,
            "dut_485_1": 592.0,
            "event_id": 5897.0,
            "virt_acc_sh3": 1.0,
            "communication_st": 1.0,
            "longitude": 63.637035,
            "satellites": 15.0,
            "mileage_cur": 33964.234375,
            "altitude": 1668.0,
            "voltage_res": 4127.0,
            "dut_temp_485_1": 5.0
        },
        "tempsens": [{
            "id": 5406794727589329475,
            "n": "Temp sensor",
            "p": "temp_d_1",
            "v": 14.5
        }]
    }]
path Parameters
id
required
string
Example:

ID объекта

time_from
required
string
Example:

Начало интервала (время UTC, Unix timestamp в секундах

time_to
required
string
Example:

Окончание интервала (время UTC, Unix timestamp в секундах)

query Parameters
index_from
string
Example: index_from=

Индекс первого сообщения, которое будет получено

index_to
string
Example: index_to=

Индекс последного сообщения, которое будет получено

Responses

/efis/units/messages/:time_from/:time_to?index_from=<uint>&index_to=<uint>

Получение сообщений для всех объектов


Параметры:

   {time_from}: <uint> начало интервала (время UTC, Unix  timestamp в секундах)
   {time_to}: <uint> окончание интервала (время UTC, Unix  timestamp в секундах)
   {index_from}: <uint> индекс первого сообщения, которое будет получено, индексы начинается с нуля
   {index_to}: <uint> индекс последного сообщения, которое будет получено, index_to не принадлежит интервалу, т.е сообщении в позициях [index_from, index_to). index_to-index_from не может быть больше 1000

Роль: Читатель и выше.


Возвращает массив - список сообщений.
Какдые строки имеют следующие поля:

[
   {
     “t”: <uint>, //время UTC в секундах
     “index”:<uint>, //индекс сообщения, индексы начиначется с нуля
     “id”:<uint>, //ID объекта
     “pos”: {} //  // информация о позиции в этом сообщении, см. GET /api_v1/units
     "p": {  // значения параметров, отображается только не нулевые значения 
           “key”: value
      },
     "tempsens": [ // Значения температурных датчиков, см. GET /api_v1/units.
     ]
   }]

Сообщения сортируются по объектам, для объекты по времени


Пример:
Запрос:
/api_v1/efis/units/messages/1645448226/1645534626?index_from=2&index_to=4

Ответ:

[
  {
    "index": 2,
    "id": 906772659,
    "t": 1645500784,
    "tp": "ud",
    "pos": {
      "y": 58.205078125,
      "x": 54.68750762939453,
      "z": 0,
      "s": 32,
      "c": 117,
      "sc": 9
    },
    "tempsens": [],
    "p": {
      "altitude": 126,
      "speedkph": 32,
      "pwr_int": 36,
      "latitude": 58.205078125,
      "pwr_ext": 142,
      "angle": 117,
      "longitude": 54.68750762939453,
      "satellites": 9,
      "hdop": 112,
      "is_valid": 1,
      "input_2": 8,
      "input_4": 19
    }
  },
  {
    "index": 3,
    "id": 906772659,
    "t": 1645500787,
    "tp": "ud",
    "pos": {
      "y": 58.204891204833984,
      "x": 54.688175201416016,
      "z": 0,
      "s": 26,
      "c": 119,
      "sc": 9
    },
    "tempsens": [],
    "p": {
      "altitude": 126,
      "speedkph": 26,
      "pwr_int": 36,
      "latitude": 58.204891204833984,
      "pwr_ext": 141,
      "angle": 119,
      "longitude": 54.688175201416016,
      "satellites": 9,
      "hdop": 112,
      "is_valid": 1,
      "input_4": 19
    }
  }
]
path Parameters
time_from
required
string
Example:

Начало интервала (время UTC, Unix timestamp в секундах)

time_to
required
string
Example:

Окончание интервала (время UTC, Unix timestamp в секундах)

query Parameters
index_from
string
Example: index_from=

Индекс первого сообщения, которое будет получено

index_to
string
Example: index_to=

Индекс последного сообщения, которое будет получено

Responses

Отзывы

/feedback?ids=ids

Поиск отзыва по ID


Возвращает массив отзывов по ID.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретный отзыв.


Роль: Супервизор и выше.


Пример запроса:

GET /feedback?ids=78516162-cf8a-4056-bdaa-73ca6311a1d5

Пример ответа:

{
    "id": "78516162-cf8a-4056-bdaa-73ca6311a1d5",
    "company": {
        "id": "1792239f-47eb-42b3-aef7-c49a3cc6988e",
        "name": "Мониторинг Плюс Москва"
    },
    "user": {
        "id": "6e8f4833-c430-4509-ac5e-e1802691655c",
        "name": "azat",
        "email": "yusupovazat@gmail.com"
    },
    "type": {
        "key": "proposal",
        "type": "feedback_type",
        "value": "Предложение"
    },
    "rating": 5,
    "message": "Все супер!!!"
}
query Parameters
ids
string
Example: ids=

Responses

/feedback

Создание нового отзыва


Поля запроса JSON:
rating - число от 1 до 5, обязательное
message - текст отзыва, обязательное
type - тип отзыва, выбрать из GET /properties где type=feedback_type, обязательное

Пример запроса:

{
    "rating": 5,
    "type": {"key": "proposal"},
    "message": "Все супер!!!"
}

Пример ответа:

{
    "id": "78516162-cf8a-4056-bdaa-73ca6311a1d5",
    "company": {
        "id": "1792239f-47eb-42b3-aef7-c49a3cc6988e",
        "name": "Мониторинг Плюс Москва"
    },
    "user": {
        "id": "6e8f4833-c430-4509-ac5e-e1802691655c",
        "name": "azat",
        "email": "yusupovazat@gmail.com"
    },
    "type": {
        "key": "proposal",
        "type": "feedback_type",
        "value": "Предложение"
    },
    "rating": 5,
    "message": "Все супер!!!"
}
Request Body schema: application/json
message
string
rating
number
object

Responses

Request samples

Content type
application/json
{
  • "message": "Все супер!!!",
  • "rating": 5,
  • "type": {
    }
}

/feedback/:id

Удаление отзыва по ID


Роль: Супервизор и выше.


Пример запроса

https://dev.skif.pro/api_v1/feedback/03d5be4f-4adb-4bd7-99b2-ab0edaaa414a
path Parameters
id
required
string
Example:

ID отзыва

Request Body schema: application/json
message
string
rating
number
object

Responses

Request samples

Content type
application/json
{
  • "message": "Все супер!!!",
  • "rating": 5,
  • "type": {
    }
}

/feedback_admin_query

Быстрый поиск отзывов в админ панеле


Роль: Администратор и выше.


Пример запроса:

{
    "from": 0,
    "count": 10,
    "value": 5
}

Пример ответа:

{
    "max": 1,
    "list": [
        {
            "id": "78516162-cf8a-4056-bdaa-73ca6311a1d5",
            "company": {
                "id": "1792239f-47eb-42b3-aef7-c49a3cc6988e",
                "name": "Мониторинг Плюс Москва"
            },
            "user": {
                "id": "6e8f4833-c430-4509-ac5e-e1802691655c",
                "name": "azat",
                "email": "yusupovazat@gmail.com"
            },
            "type": {
                "key": "proposal",
                "type": "feedback_type",
                "value": "Предложение"
            },
            "rating": 5,
            "message": "Все супер!!!"
        }
    ]
}
Request Body schema: application/json
count
number
from
number
value
number

Responses

Request samples

Content type
application/json
{
  • "count": 10,
  • "from": 0,
  • "value": 5
}

/feedback/list

Поиск отзывов


from - начальный индекс.
count - количество записей.
conditions - условия.
field - название поля, возможные значения: rating, type.key.
value - значение.


Роль: Супервизор и выше.


Пример запроса:

{
    "from": 0,
    "count": 10,
    "conditions": [
        {"field": "rating", "value": "5"}
    ]
}

Пример ответа:

{
    "max": 1,
    "list": [
        {
            "id": "78516162-cf8a-4056-bdaa-73ca6311a1d5",
            "company": {
                "id": "1792239f-47eb-42b3-aef7-c49a3cc6988e",
                "name": "Мониторинг Плюс Москва"
            },
            "user": {
                "id": "6e8f4833-c430-4509-ac5e-e1802691655c",
                "name": "azat",
                "email": "yusupovazat@gmail.com"
            },
            "type": {
                "key": "proposal",
                "type": "feedback_type",
                "value": "Предложение"
            },
            "rating": 5,
            "message": "Все супер!!!"
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 2,
  • "from": 0
}

Ссылки доступа (Локатор)

/locators?ids=ids

Поиск локаторов по ID


Возвращает массив локаторов по ID.

Если в параметре ids содержится только один id, то вернется НЕ массив из 1 элемента, а конкретный локатор.


Роль: Администратор и выше.


Пример запроса:

GET /locators?ids=5bf87787-9592-41c7-a25e-500cc1234402


Пример ответа:

{
    "id": "5bf87787-9592-41c7-a25e-500cc1234402",
    "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
    "units": [{
        "id": "1f6fe207-31c9-4cd0-894b-7b1cb85944c9",
        "name": "Маршрутка",
        "imei": "338770698941441",
        "icon": {
            "key": "van_universal2_red",
            "type": "unit_icon",
            "value": "Иконка"
        }
    },{
        "id": "3dee5ff9-808f-4536-bec3-9e146bca9327",
        "name": "Бензовоз",
        "imei": "514295160184391",
        "icon": {
            "key": "van_universal2_red",
            "type": "unit_icon",
            "value": "Иконка"
        }
    }
    ],
    "date_from": "2022-10-28 00:00:00",
    "date_to": "2022-10-29 00:00:00",
    "status": {
        "key": "locator_finished",
        "type": "locator_type",
        "value": "Завершено"
    },
    "is_active": true,
    "description": "Сопроводительное письмо",
    "_active": true
}
query Parameters
ids
string
Example: ids=

Responses

/locators

Cоздание ссылки для объекта, по которой пользователь без доступа к SKIF.PRO может следить за объектом на карте


Ссылка на объект формируется следующим образом: {{base_url}}/locator?id=:locator_id


Поля запроса JSON:

name - Название
units - объекты или units_groups - группы объектов
date_from - время начала
date_to - время окончания
description - Сопроводительное письмо


Роль: Администратор и выше.


Пример запроса:

{
    "name": "Имя",
    "units": [
        {"id": "1f6fe207-31c9-4cd0-894b-7b1cb85944c9"}, 
        {"id": "3fb49648-49d9-4ab7-9ec9-1577dc6164d4"}
    ],
    "date_from": "2022-09-27 00:00:00",
    "date_to": "2022-09-28 00:00:00",
    "description": "Some text"
}

Пример ответа:

status - определяется автоматически: запланировано, запущено или завершено
active - true, если отключено

{
    "id": "7b58f5a0-947d-446f-ad77-3cfd4a68a956",
    "name": "Имя",
    "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
    "units": [{
        "id": "1f6fe207-31c9-4cd0-894b-7b1cb85944c9",
        "name": "Маршрутка"
    },{
        "id": "3fb49648-49d9-4ab7-9ec9-1577dc6164d4",
        "name": "Бензовоз"
     }
    ],
    "date_from": "2022-09-27 00:00:00",
    "date_to": "2022-09-28 00:00:00",
    "description": "Some text",
    "status": {
        "key": "locator_running",
        "type": "locator_type",
        "value": "Запущено"
    },
    "is_active": true
}

Для группы объектов:

{
    "name": "Имя",
    "units_groups": [{
        "id": "a707cc43-c585-4022-8584-f1b0881e7d71"
    },{
        "id": "3dee5ff9-808f-4536-bec3-9e146bca9327"
     }
    ],
    "date_from": "2025-01-08 00:00:00",
    "date_to": "2025-10-29 00:00:00",
    "description": "Сопроводительное письмо"
}
Request Body schema: application/json
date_from
string
date_to
string
description
string
object

Responses

Request samples

Content type
application/json
Example
{
  • "date_from": "2022-10-28 00:00:00",
  • "date_to": "2022-10-29 00:00:00",
  • "description": "Сопроводительное письмо",
  • "name": "Имя",
  • "units": [
    ]
}

/locator?id=:id

Получение информации о локаторе по ID


Пример запроса:

GET /locator?id=ee07b417-a85f-4fc5-a37a-416f98295ab7


Пример ответа:

Возвращаются следующие поля:

  • unit - информация об объекта: id, name, icon.
  • icon - ключ иконки объекта.
  • is_active - активность.
  • description - описание.
  • date_from - дата и время начала.
{
    "id": "ee07b417-a85f-4fc5-a37a-416f98295ab7",
    "is_active": true,
    "description": "ывфв",
    "date_from": "2025-01-03 00:00:00",
    "date_to": "2025-01-31 00:00:00",
    "unit": {
        "id": "4c99d470-d356-43d9-a35b-f30e72c501c0",
        "name": "Дрон Леталка",
        "icon": "quadrocopter_blue"
    }
}

Возвращает запись локатора, если он найден, иначе ошибка с кодом 422:

{
"code": 4220,
"message": "Неверная ссылка доступа"
}

Для группы объектов:

Вместо unit приходит units_group. В нем units - информация об объектах.

{
    "id": "11647617-3d50-42f5-94a7-e2f199e4cc4c",
    "is_active": true,
    "description": "Сопроводительное письмо",
    "date_from": "2025-01-08 00:00:00",
    "date_to": "2025-10-29 00:00:00",
    "units_group": {
        "id": "a707cc43-c585-4022-8584-f1b0881e7d71",
        "name": "Шлишуе",
        "units": [
            {
                "id": "2b7dee48-7804-4544-b0f0-e7f98ccffa24",
                "name": "Galileo2",
                "icon": "car_red"
            },
            {
                "id": "4c99d470-d356-43d9-a35b-f30e72c501c0",
                "name": "Дрон Леталка",
                "icon": "quadrocopter_blue"
            },
            {
                "id": "abe8c77e-4cbd-4d66-b1fe-723610cdfa32",
                "name": "Galileo Test",
                "icon": "autocrane_red"
            },
            {
                "id": "c6286fe0-a597-43d0-b60f-2058bafbb9e0",
                "name": "Курьер пиццерии",
                "icon": "car_red"
            },
            {
                "id": "c9f37a6a-56ff-450d-9e5b-16539f643e27",
                "name": "Galileo1",
                "icon": "car_red"
            }
        ]
    }
}
query Parameters
id
string
Example: id=

Responses

/locators/:id

Обновление данных локатора


Параметры:

см метод POST /locators


Роль: Администратор и выше.


Ответ:

Аналогичен одному объекту из ответа метода GET /locators?ids=:id

path Parameters
id
required
string
Example:

ID локатора

Request Body schema: application/json
_active
boolean
company_id
string
date_from
string
date_to
string
id
string
is_active
boolean
object
Array of objects

Responses

Request samples

Content type
application/json
{
  • "_active": true,
  • "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
  • "date_from": "2022-09-27 00:00:00",
  • "date_to": "2022-09-29 00:00:00",
  • "id": "7b58f5a0-947d-446f-ad77-3cfd4a68a956",
  • "is_active": true,
  • "status": {
    },
  • "units": [
    ]
}

/locators/:id

Удаление локатора по ID


Роль: Администратор и выше.

path Parameters
id
required
string
Example:

ID локатора

Request Body schema: application/json
count
number
from
number
value
number

Responses

Request samples

Content type
application/json
{
  • "count": 10,
  • "from": 0,
  • "value": 5
}

/locators/list

Поиск локаторов


from - начальный индекс.
count - количество записей.
conditions - условия
field - название поля, возвожные значения: unit.id, date_from, date_to.
value - значение


Роль: Читатель и выше.


Пример запроса:

{
    "from": 0,
    "count": 10,
    "conditions": [
        {"field": "unit.id", "value": "1f6fe207-31c9-4cd0-894b-7b1cb85944c9"}
    ]
}

Пример ответа:

{
    "max": 2,
    "list": [
        {
            "id": "56e539a1-5709-49b2-a3a3-5bc0710e0098",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "unit": {
                "id": "1f6fe207-31c9-4cd0-894b-7b1cb85944c9"
            },
            "date_from": "2022-09-27 00:00:00",
            "date_to": "2022-09-28 00:00:00",
            "is_active": true,
            "_active": true
        },
        {
            "id": "7b58f5a0-947d-446f-ad77-3cfd4a68a956",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "unit": {
                "id": "1f6fe207-31c9-4cd0-894b-7b1cb85944c9"
            },
            "date_from": "2022-09-27 00:00:00",
            "date_to": "2022-09-28 00:00:00",
            "is_active": true,
            "description": "Some text",
            "_active": true
        }
    ]
}
Request Body schema: application/json
Array of objects
count
number
from
number

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ],
  • "count": 10,
  • "from": 0
}

Импорт из Wialon

/loadwln/:company_id/units/analyze_terminals

Проверка терминалов при загрузке объектов из Wialon


Параметры запроса:
company_id - ID компании

В FormData в поле file необходимо отправить zip или xml файл.


Роль: Супервизор и выше.


Пример запроса:

POST /api_v1/loadwln/3aafd100-c44d-4b04-ae93-06978b908ea9/units/analyze_terminals


Пример ответа:

id - уникальный ID сеанса. В последующих запросах необходимо указать этот ID.
terminals - список предлагаемых преобразований для терминалов.
- key - названия терминала в wialon.
- value - терминал в скиф, его можно изменить. Если совпадений не найдено, тогда возвращается null.

{
    "id": "b0bdff74-6901-4366-a06a-c32dfde15e5b",
    "terminals": [
        {
            "key": "Navtelecom Signal S-2551",
            "value": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            }
        },
        {
            "key": "Teltonika FM1100",
            "value": {
                "key": "teltonica_fm1100",
                "type": "terminal_type",
                "value": "teltonica_fm1100"
            }
        },
        {
            "key": "Teltonika FM4200",
            "value": {
                "key": "teltonica_fm4200",
                "type": "terminal_type",
                "value": "teltonica_fm4200"
            }
        },
        {
            "key": "Navtelecom SMART",
            "value": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            }
        }
    ]
}
path Parameters
company_id
required
string
Example:

ID компании

Request Body schema: multipart/form-data
file
string <binary>

Responses

/loadwln/:company_id/units/analyze_params

Запрос проверки параметров при загрузке объектов из Wialon


Параметры запроса:
company_id - ID компании


Роль: Супервизор и выше.


Пример запроса:

POST /api_v1/loadwln/3aafd100-c44d-4b04-ae93-06978b908ea9/units/analyze_params

Тело запроса:
id - ID сеанса которое получено из первого запроса POST /loadwln/:company_id/units/analyze_terminals
terminals - список преобразований для терминалов
- key - названия терминала в wialon
- value - терминал в скиф

{
    "id": "b0bdff74-6901-4366-a06a-c32dfde15e5b",
    "terminals": [
        {
            "key": "Navtelecom Signal S-2551",
            "value": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            }
        },
        {
            "key": "Teltonika FM1100",
            "value": {
                "key": "teltonica_fm1100",
                "type": "terminal_type",
                "value": "teltonica_fm1100"
            }
        },
        {
            "key": "Teltonika FM4200",
            "value": {
                "key": "teltonica_fm4200",
                "type": "terminal_type",
                "value": "teltonica_fm4200"
            }
        },
        {
            "key": "Navtelecom SMART",
            "value": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            }
        }
    ]
}

Пример ответа:

id - уникальный ID сеанса. Такой же, как в запросе.
terminals_params - список предлагаемых преобразований для параметров датчиков.
terminal_type - тип терминала.
params - список предлагаемых преобразований для терминала.
- key - название параметра в wialon.
- value - название параметра в скиф, можно изменить значение. Если не найден, тогда возвращается null.

{
    "id": "b0bdff74-6901-4366-a06a-c32dfde15e5b",
    "terminals_params": [
        {
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "params": [
                {
                    "key": "engine_load",
                    "value": null
                },
                {
                    "key": "engine_coolant_temp",
                    "value": null
                },
                {
                    "key": "engine_rpm",
                    "value": null
                },
                {
                    "key": "in2",
                    "value": "in_2_st"
                },
                {
                    "key": "touch_key",
                    "value": "touch_mem_key"
                },
                {
                    "key": "in1",
                    "value": "in_1_st"
                },
                {
                    "key": "in4",
                    "value": "in_4_st"
                },
                {
                    "key": "in3",
                    "value": "in_3_st"
                },
                {
                    "key": "in5",
                    "value": "in_5_st"
                },
                {
                    "key": "can_fuel_volume",
                    "value": null
                },
                {
                    "key": "can_engine_hours",
                    "value": null
                },
                {
                    "key": "can_fuel_consumpt",
                    "value": null
                },
                {
                    "key": "out1",
                    "value": "out_1_st"
                },
                {
                    "key": "accel_pedal_pos",
                    "value": null
                }
            ]
        },
        {
            "terminal_type": {
                "key": "teltonica_fm4200",
                "type": "terminal_type",
                "value": "teltonica_fm4200"
            },
            "params": [
                {
                    "key": "in1",
                    "value": "din1"
                },
                {
                    "key": "in3",
                    "value": "din3"
                }
            ]
        }
    ]
}
path Parameters
company_id
required
string
Example:

ID компании

Request Body schema: application/json
id
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "id": "b0bdff74-6901-4366-a06a-c32dfde15e5b",
  • "terminals": [
    ]
}

/loadwln/:company_id/units/create

Запрос создания объектов при загрузке объекты из Wialon


Параметры запроса:
company_id - ID компании


Роль: Супервизор и выше.


Пример запроса:

POST /api_v1/loadwln/3aafd100-c44d-4b04-ae93-06978b908ea9/units/analyze_params

Тело запроса:
id - ID сеанса которое получено из первого запроса POST /loadwln/:company_id/units/analyze_terminals
terminals_params - список преобразований для параметров датчиков.
terminal_type - тип терминала.
params - список преобразований пераметров для терминала.
- key - название параметра в wialon.
- value - название параметра в скиф.

{
    "id": "b0bdff74-6901-4366-a06a-c32dfde15e5b",
    "terminals_params": [
        {
            "terminal_type": {
                "key": "navtelecom",
                "type": "terminal_type",
                "value": "Navtelecom"
            },
            "params": [
                {
                    "key": "engine_load",
                    "value": "can_eng_load"
                },
                {
                    "key": "engine_coolant_temp",
                    "value": "dut_temp_485_3"
                },
                {
                    "key": "engine_rpm",
                    "value": "can_rpm"
                },
                {
                    "key": "in2",
                    "value": "in_2_st"
                },
                {
                    "key": "touch_key",
                    "value": "touch_mem_key"
                },
                {
                    "key": "in1",
                    "value": "in_1_st"
                },
                {
                    "key": "in4",
                    "value": "in_4_st"
                },
                {
                    "key": "in3",
                    "value": "in_3_st"
                },
                {
                    "key": "in5",
                    "value": "in_5_st"
                },
                {
                    "key": "can_fuel_volume",
                    "value": "can_fuel_rate"
                },
                {
                    "key": "can_engine_hours",
                    "value": "can_eng_hours"
                },
                {
                    "key": "can_fuel_consumpt",
                    "value": "can_fuel_level"
                },
                {
                    "key": "out1",
                    "value": "out_1_st"
                },
                {
                    "key": "accel_pedal_pos",
                    "value": "can_accel_pos"
                }
            ]
        },
        {
            "terminal_type": {
                "key": "teltonica_fm4200",
                "type": "terminal_type",
                "value": "teltonica_fm4200"
            },
            "params": [
                {
                    "key": "in1",
                    "value": "din1"
                },
                {
                    "key": "in3",
                    "value": "din3"
                }
            ]
        }
    ]
}

Пример ответа:

{
    "result": "Добавлены 4 объекты"
}
path Parameters
company_id
required
string
Example:

ID компании

Request Body schema: application/json
id
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "id": "b0bdff74-6901-4366-a06a-c32dfde15e5b",
  • "terminals_params": [
    ]
}

/loadwln/:company_id/units/add_services

Параметры запроса:
company_id - ID компании

В теле запроса в form-data укажите zip или wlp файл в поле file


Роль: Супервизор и выше.


Пример запроса:

POST /api_v1/loadwln/3aafd100-c44d-4b04-ae93-06978b908ea9/units/add_services

{
    "result": "Обновлена ТО для объектов 1",
    "found_units": [
        "А898МТ"
    ],
    "not_found_units": []
}
path Parameters
company_id
required
string
Example:

ID компании

header Parameters
cookie
string
Example: PLAY_SESSION={{vault:json-web-token}}
Request Body schema: multipart/form-data
file
string <binary>

Responses

/loadwln/geozones/create

Загрузка геозон из форматов kml, kmz и zip


В FormData необходимо отправить следующие поля:

file - отправить файл с форматом kml, kmz и zip. ZIP-файл может содержать несколько файлов KML. Максимальный размер файла 5 Мб.

companies_ids - ID компаний, разделенные запятыми.


Роль: Супервизор и выше.


Пример запроса:

POST /api_v1/loadwln/geozones/create


Пример ответа:

В случае успеха статус ответа — 200, а тело ответа содержит информацию о количестве добавленных геозон:

{
    "result": "Добавлены геозоны: 4"
}

В случае ошибки тело ответа содержит информацию об ошибке:

{
  "error": {
    "code": 4220,
    "message": "Геозоны не найдены"
  }
}
Request Body schema: multipart/form-data
companies_ids
string
file
string <binary>

Responses

/loadwln/:units_id/data/analyze_params

Загрузка геозон из формата kml


Параметры запроса:
company_id - ID компании
В FormData в поле file необходимо отправить kml файл.


Пример запроса:

POST /api_v1/loadwln/3aafd100-c44d-4b04-ae93-06978b908ea9/geozones/create


Пример ответа:

{
    "result": "Добавлены 4 геозоны"
}
path Parameters
units_id
required
string
Example:
Request Body schema: multipart/form-data
file
string <binary>

Responses

/loadwln/:units_id/data/create

Загрузка геозон из формата kml


Параметры запроса:
company_id - ID компании
В FormData в поле file необходимо отправить kml файл.


Пример запроса:

POST /api_v1/loadwln/3aafd100-c44d-4b04-ae93-06978b908ea9/geozones/create


Пример ответа:

{
    "result": "Добавлены 4 геозоны"
}
Request Body schema: multipart/form-data
file
string <binary>

Responses

Удаление данных

/data_deletions

Удаление данных для объекта в диапазоне дат


Параметры:

"start_date": Начала интервала, в формате yyyy-MM-dd HH:mm:ss
"finish_date": Конец интервала, в формате yyyy-MM-dd HH:mm:ss
"unit": Объект, достаточно указать ID.


Роль: Администратор и выше.


Пример запроса:

{
    "start_date": "2022-08-01 12:30:09",
    "finish_date": "2022-08-02 15:31:19",
    "unit": {
        "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
    }
}

Пример ответа:

{
    "id": "62cc8ce7-da3d-4e1e-8086-4a8e165fcd1f",
    "start_date": "2022-08-01 12:30:09",
    "finish_date": "2022-08-02 15:31:19",
    "unit": {
        "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
    }
}
Request Body schema: application/json
finish_date
string
start_date
string
object

Responses

Request samples

Content type
application/json
{
  • "finish_date": "2022-08-02 15:31:19",
  • "start_date": "2022-08-01 12:30:09",
  • "unit": {
    }
}

/data_deletions/:id

Отмена удаления данных для объекта в диапазоне дат


Параметры:
id - ID записи


Пример запроса:
DELETE /data_deletions/62cc8ce7-da3d-4e1e-8086-4a8e165fcd1f

path Parameters
id
required
string
Example:

ID записи

Responses

/data_deletions/list

Получение списка удаленных интервалов


В conditions можно указать фильтры:

  • unit.id - ID объекта

  • start_date - Дата, от

  • finish_date - Дата, до


Роль: Читатель и выше.


Пример запроса:

{
    "conditions": [
        {
            "field": "unit.id",
            "value": "97fba3d2-841b-43cd-911a-073b84ad5438"
        },
        {
            "field": "start_date",
            "value": "2022-08-01 00:00:00"
        },
        {
            "field": "finish_date",
            "value": "2022-08-30 00:00:00"
        }
    ]
}

Пример ответа:

{
    "max": 4,
    "list": [
        {
            "id": "5a1e36c2-a389-4a80-8acb-ec913d54df29",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "imei": "359633107825189",
            "start_date": "2022-08-10 00:00:00",
            "finish_date": "2022-08-12 00:00:00"
        },
        {
            "id": "c2efec3c-5dda-4c53-904f-d79acce20537",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "imei": "359633107825189",
            "start_date": "2022-08-15 00:00:00",
            "finish_date": "2022-08-20 00:00:00"
        },
        {
            "id": "4877a5cc-b26b-4aca-95c6-2bd3480f9495",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "imei": "359633107825189",
            "start_date": "2022-08-18 00:00:00",
            "finish_date": "2022-08-21 00:00:00"
        },
        {
            "id": "9b0389a4-b149-4b01-9ee7-7766c58b8d4a",
            "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
            "imei": "359633107825189",
            "start_date": "2022-08-23 02:00:00",
            "finish_date": "2022-08-24 22:00:00"
        }
    ]
}
Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "conditions": [
    ]
}

Видео

/videos

Запрос на получение видео-потоков для регистратора, связанного с объектом


Параметры:

id объекта.

Сейчас обрабатывается только первый объект в списке.

{
    "units": [
        {
            "id": "d0dd6178-fd10-4f49-8627-a386ac35b8c3"
        }
    ]
}

В доп полях передаваемых объектов должны быть прописаны поля со соледующими ключами:

1. Видео устройство - video_device_name
2. ID-видео устройства - video_device_id
3. Камеры (потоки) - video_cameras (числа через запятую)


Ответ:

stream - код потока

url - url потока

[
    {
        "stream": "0",
        "url": "http://dev.skif.pro:9090/start?deviceid=019000021045&channel=1&stream=1&token=9f44b390f3a00875528d529912e535adb77aef235f8fe492661bcdcc22ae3e0a"
    },
    {
        "stream": "1",
        "url": "http://dev.skif.pro:9090/start?deviceid=019000021045&channel=2&stream=1&token=9f44b390f3a00875528d529912e535adb77aef235f8fe492661bcdcc22ae3e0a"
    }
]

Возможные виды ошибок:

{
    "code": 5000,
    "message": "Внутренняя ошибка сервера"
}

где code - внутренний код ошибки.

message - текст, который можно отобразить пользователю.

Request Body schema: application/json
Array of objects

Responses

Request samples

Content type
application/json
{
  • "units": [
    ]
}

Группы доступа

/units_groups_access?units_group_id=units_group_id

Получение списка пользователей, имеющих доступ к группе объектов


Параметры запроса:

units_group_id - ID группы


Роль: Администратор и выше.


Ответ:

Приходит JSON массив. Каждый элемент имеет:

  • id - ID действия

  • key - ключ действия

  • name - название действия

[
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            }
        ],
        "user": {
            "id": "95568a4b-9ca8-4552-95d1-d22ce5020cdc",
            "name": "User1"
        }
    },
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта",
                "role_key": "EDITOR"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            },
            {
                "id": "262b7e97-dbfa-4288-9878-ad564672796e",
                "key": "update_unit_name_icon",
                "name": "Обновление названия и иконки объекта"
            },
            {
                "id": "5f182c77-dfa7-4fb2-947a-2a1fc44ee83b",
                "key": "get_unit",
                "name": "Просмотр объекта"
            }
        ],
        "user": {
            "id": "e09239ea-b09f-4801-94c8-cc15af7606a4",
            "name": "User2"
        }
    }
]
query Parameters
units_group_id
string
Example: units_group_id=

Responses

/units_groups_access

Создание новой группы с доступом


name - имя группы

units - объекты

users - пользователи


Роль: Администратор и выше.


Пример запроса:

{
    "name": "Newgroup5",
    "units": [
        {
            "id": "1f6f6863-e202-4bbd-8186-11380e3b6476"
        }
    ],
    "users": [
        {
            "id": "844cb9af-9158-4418-95d7-de9df14ae4d7"
        }
    ]
}

Возвращает созданную группу. Указанные пользователи будут иметь доступ к этой группе

header Parameters
cookie
string
Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX1837SQcSoYSWGg1LPwUmHtV7ONZrz1BFryeqgVO6dXAKzEpKdMN3+1F"; PLAY_SESSION={{vault:json-web-token}}
Request Body schema: application/json
name
string
Array of objects
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "Newgroup5",
  • "units": [
    ],
  • "users": [
    ]
}

/units_groups_access/:company_id?units_group_id=units_group_id

Получение списка пользователей, имеющих доступ к группе объектов


Параметры запроса:

company_id - ID компании

units_group_id - ID группы


Роль: Администратор и выше.


Ответ:

Приходит JSON массив. Каждый элемент имеет:

  • id - ID действия

  • key - ключ действия

  • name - название действия

[
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            }
        ],
        "user": {
            "id": "95568a4b-9ca8-4552-95d1-d22ce5020cdc",
            "name": "User1"
        }
    },
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта",
                "role_key": "EDITOR"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            },
            {
                "id": "262b7e97-dbfa-4288-9878-ad564672796e",
                "key": "update_unit_name_icon",
                "name": "Обновление названия и иконки объекта"
            },
            {
                "id": "5f182c77-dfa7-4fb2-947a-2a1fc44ee83b",
                "key": "get_unit",
                "name": "Просмотр объекта"
            }
        ],
        "user": {
            "id": "e09239ea-b09f-4801-94c8-cc15af7606a4",
            "name": "User2"
        }
    }
]
path Parameters
company_id
required
string
Example:

ID компании

query Parameters
units_group_id
string
Example: units_group_id=

ID группы

Responses

/units_groups_access/:units_group_id

Обновление списка пользователей, имеющих доступ к группе объектов


Параметры запроса:

units_group_id - ID группы


Роль: Администратор и выше.


Ответ:

Приходит JSON массив. Каждый элемент имеет: actions и user.

[
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            }
        ],
        "user": {
            "id": "95568a4b-9ca8-4552-95d1-d22ce5020cdc",
            "name": "User1"
        }
    },
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта",
                "role_key": "EDITOR"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            },
            {
                "id": "262b7e97-dbfa-4288-9878-ad564672796e",
                "key": "update_unit_name_icon",
                "name": "Обновление названия и иконки объекта"
            },
            {
                "id": "5f182c77-dfa7-4fb2-947a-2a1fc44ee83b",
                "key": "get_unit",
                "name": "Просмотр объекта"
            }
        ],
        "user": {
            "id": "e09239ea-b09f-4801-94c8-cc15af7606a4",
            "name": "User2"
        }
    }
]

Запрос и ответ имеет структура такой же как GET /units_groups_access?units_group_id=units_group_id

path Parameters
units_group_id
required
string
Example:

ID группы

Request Body schema: application/json
Array
Array of objects
object

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

/units_groups_access/:company_id/:units_group_id

Обновление списка пользователей, имеющих доступ к группе объектов


Параметры запроса:

company_id - ID компании

units_group_id - ID группы


Роль: Администратор и выше.


Ответ:

Приходит JSON массив. Каждый элемент имеет: actions и user

[
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            }
        ],
        "user": {
            "id": "95568a4b-9ca8-4552-95d1-d22ce5020cdc",
            "name": "User1"
        }
    },
    {
        "actions": [
            {
                "id": "8a94afa3-2f4d-4cae-84ed-05197e412e56",
                "key": "update_unit",
                "name": "Редактирование объекта",
                "role_key": "EDITOR"
            },
            {
                "id": "fb369ecf-4446-45e7-9835-57bad481f161",
                "key": "delete_unit",
                "name": "Удаление объекта"
            },
            {
                "id": "415b7e76-3c57-439c-bbb9-1b1e7eb78a0f",
                "key": "update_unit_imei",
                "name": "Изменение IMEI объекта"
            },
            {
                "id": "262b7e97-dbfa-4288-9878-ad564672796e",
                "key": "update_unit_name_icon",
                "name": "Обновление названия и иконки объекта"
            },
            {
                "id": "5f182c77-dfa7-4fb2-947a-2a1fc44ee83b",
                "key": "get_unit",
                "name": "Просмотр объекта"
            }
        ],
        "user": {
            "id": "e09239ea-b09f-4801-94c8-cc15af7606a4",
            "name": "User2"
        }
    }
]

Запрос и ответ имеют такую же структуру, как GET /units_groups_access?units_group_id=units_group_id

path Parameters
company_id
required
string
Example:

ID компании

units_group_id
required
string
Example:

ID группы

Request Body schema: application/json
Array
Array of objects
available_actions_keys
Array of strings
object

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

New Request

New Request

Responses

Другое

/send_push

Отправка push-уведомлений пользователям компаний дилера


Параметры:

title - тема

body - текст уведомления


Роль: Супервизор и выше.


  1. Отправка всем пользователям компаний дилера
{
    "title": "Тест",
    "body": "Проверка пуш"
}

2. Отправка всем пользователям конкретной компании, в поле company_id указать ID компании

{
    "title": "Тест",
    "body": "Проверка пуш",
    "company_id": "5fb53281-23b1-42ac-a336-315edcd0a30e"
}

3. Отправка конкретному пользователю, указать в поле user_id ID пользователя

{
  "title": "Тест",
  "body": "Проверка пуш",
  "user_id": "1c74912a-ebcd-47e0-8828-8bcfcc7ef59d"
}
Request Body schema: application/json
body
string
title
string

Responses

Request samples

Content type
application/json
{
  • "body": "Проверка пуш",
  • "title": "Тест"
}

/terminals/columns/<iterminal_type>/<imei>


Роль: Редактор тарифа и выше.

Responses

/branding

Получение брендинга по текущему домену


Поля, необходимые для фронта:

  1. Название [Текст]: Название компании интегратора. Это название будет заменять название “SKIF.PRO” в системе. - title

  2. Логотип [Изображение]: Логотип компании интегратора, данный логотип будет отображаться в интерфейсе системы. - logo

  3. Ссылка на сайт интегратора [Текст]: Гиперссылка (интегратор может дать ссылку на свой сайт). Ссылка срабатывает при клике на Логотип или Название (в email письмах). Необязательные данные. - site

  4. Обложка для страницы входа [Изображение]: Изображение которое отображается на странице входа (логина). Необязательные данные. Если изображение от интегратора нет, то используется стандартное обложка (важно: не обложка SKIF.PRO, а стандартная обложка).- background

  5. Контакты [Текст]: Любая текстовая информация от интегратора, предполагается что это будет контактная информация техподдержки (не более 320 символов) - contacts

Для получение файлов логотипа и Обложки для страницы входа вызывать /api_v1/<значение поля logo> и /api_v1/<значение поля background>

Responses

/terminals/columns/<iterminal_type>/<imei> Copy


Роль: Редактор тарифа и выше.

Request Body schema: application/json
check_imei
string
Array of objects
terminal_type
string

Responses

Request samples

Content type
application/json
{
  • "check_imei": "xxxxxx",
  • "columns": [
    ],
  • "terminal_type": "arnavi"
}

Роли

Работа с ролями

/roles

Получение всех ролей


Структура роли :

  • id - uuid, идентификатор роли.

  • key - string, ключ роли.

  • value - string, название роли

  • is_default - boolean, true, если роль по умолчанию для всех компаний, иначе только для текущий компании.

  • actions - массив действий.

Элементы действий имеют такую структуру:

  • id - uuid, идентификатор действия.

  • key - string, ключ действия.

  • name - string, название действия.


Пример ответа:

[
    {
        "id": "3fbd6629-f854-46e9-a190-cae0eb7fb5f0",
        "is_default": true,
        "key": "NO_ACCESS",
        "value": "Без доступа",
        "actions": []
    },
    {
        "id": "808942ea-a102-47cb-889d-859b182f160c",
        "is_default": true,
        "key": "OBSERVER",
        "value": "Наблюдатель",
        "actions": [
            {
                "id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "key": "generate_report",
                "name": "Генерация отчетов",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "fd7ee65f-5fd3-46c8-ad39-ce1227816ed6",
                "key": "generate_journal",
                "name": "Смотреть Журнала",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "0fd9f710-cad6-4a8c-bd5d-59f1332b8d52",
                "key": "generate_other_reports",
                "name": "Генерация отчета(Кроме журнала)",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            }
        ]
    },
    {
        "id": "7d7292e4-e246-44e1-ac70-b1c7f23e464c",
        "is_default": true,
        "key": "READER",
        "value": "Читатель",
        "actions": [
            {
                "id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "key": "generate_report",
                "name": "Генерация отчетов",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "fd7ee65f-5fd3-46c8-ad39-ce1227816ed6",
                "key": "generate_journal",
                "name": "Смотреть Журнала",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "0fd9f710-cad6-4a8c-bd5d-59f1332b8d52",
                "key": "generate_other_reports",
                "name": "Генерация отчета(Кроме журнала)",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "fff20839-8dbc-46ad-98bf-0f01d91ff184",
                "key": "get_units",
                "name": "Просмотр всех объектов",
                "role_key": "READER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "c3be2a31-04be-4531-bf79-d67490e42453",
                "key": "get_users",
                "name": "Чтение справочника пользователей",
                "role_key": "READER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            }
        ]
    },
    {
        "id": "6592d562-e965-43bd-9d9e-8319cabd6291",
        "is_default": true,
        "key": "OPERATOR",
        "value": "Оператор",
        "actions": [
            {
                "id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "key": "generate_report",
                "name": "Генерация отчетов",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "fd7ee65f-5fd3-46c8-ad39-ce1227816ed6",
                "key": "generate_journal",
                "name": "Смотреть Журнала",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "0fd9f710-cad6-4a8c-bd5d-59f1332b8d52",
                "key": "generate_other_reports",
                "name": "Генерация отчета(Кроме журнала)",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "441a9b9f-ac5d-4f90-8c2a-98d3ac7121af",
                "key": "cud_events",
                "name": "Создание/Редактирование/Удаление Событий",
                "role_key": "OPERATOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "fff20839-8dbc-46ad-98bf-0f01d91ff184",
                "key": "get_units",
                "name": "Просмотр всех объектов",
                "role_key": "READER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "c3be2a31-04be-4531-bf79-d67490e42453",
                "key": "get_users",
                "name": "Чтение справочника пользователей",
                "role_key": "READER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "48138886-6220-41fe-adbe-72e479d8e22d",
                "key": "commands",
                "name": "Отправка Команд",
                "role_key": "OPERATOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            }
        ]
    },
    {
        "id": "8ae01b09-95dc-445a-8b92-b570cfa94a04",
        "is_default": true,
        "key": "EDITOR",
        "value": "Редактор",
        "actions": [
            {
                "id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "key": "generate_report",
                "name": "Генерация отчетов",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "fd7ee65f-5fd3-46c8-ad39-ce1227816ed6",
                "key": "generate_journal",
                "name": "Смотреть Журнала",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "0fd9f710-cad6-4a8c-bd5d-59f1332b8d52",
                "key": "generate_other_reports",
                "name": "Генерация отчета(Кроме журнала)",
                "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
                "role_key": "OBSERVER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "4132cf99-98fd-47d0-a7c5-fbd2fa167336",
                "key": "create_units",
                "name": "Создание объектов",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
                "key": "cud_geozones",
                "name": "Создание/Редактирование/Удаление Геозон",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "77d71ff0-bb6c-447c-af3c-4c0fbe17b5c9",
                "key": "cud_notifications",
                "name": "Создание/Редактирование/Удаление Шаблонов Уведомлений",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "405bb5f4-d0f0-44cc-9550-4f44f1ae9d61",
                "key": "cud_trips",
                "name": "Создание/Редактирование/Удаление Рейсов",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "aace4f55-fcf5-4aba-ba32-d3a2335b76e2",
                "key": "cud_mailings",
                "name": "Создание/Редактирование/Удаление Рассылок",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "1e79a78d-4ed6-494d-90e4-2ebbd15e80bd",
                "key": "cud_trailers",
                "name": "Создание/Редактирование/Удаление Прицепов",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "ede4829f-9ecf-474c-ba20-a2b00c687591",
                "key": "cud_units_groups",
                "name": "Создание/Редактирование/Удаление Групп",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
                "key": "cud_report_templates",
                "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "441a9b9f-ac5d-4f90-8c2a-98d3ac7121af",
                "key": "cud_events",
                "name": "Создание/Редактирование/Удаление Событий",
                "role_key": "OPERATOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "d95323ae-0b58-4e91-a7e5-1e862fa07a85",
                "key": "update_units",
                "name": "Редактирование всех объектов",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "e4de9d83-fb37-447e-855a-1ee81902490f",
                "key": "delete_units",
                "name": "Удаление всех объектов",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "fff20839-8dbc-46ad-98bf-0f01d91ff184",
                "key": "get_units",
                "name": "Просмотр всех объектов",
                "role_key": "READER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "c3be2a31-04be-4531-bf79-d67490e42453",
                "key": "get_users",
                "name": "Чтение справочника пользователей",
                "role_key": "READER",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "877ea798-f16d-490f-ab1c-218ab172a244",
                "key": "cud_locators",
                "name": "Создание/Редактирование/Удаление/Просмотр Ссылки доступа",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "48138886-6220-41fe-adbe-72e479d8e22d",
                "key": "commands",
                "name": "Отправка Команд",
                "role_key": "OPERATOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            }
        ]
    },
    {
        "id": "2c34a621-b048-494b-bc50-80ec835fed17",
        "is_default": false,
        "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
        "key": "EDITOR",
        "value": "Редактор геозон и шаблонов отчетов",
        "actions": [
            {
                "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
                "key": "cud_geozones",
                "name": "Создание/Редактирование/Удаление Геозон",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
                "key": "cud_report_templates",
                "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
                "role_key": "EDITOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            }
        ]
    },
    {
        "id": "41607791-8948-460b-8950-d60a9c57c372",
        "is_default": true,
        "key": "ADMIN",
        "value": "Администратор",
        "actions": [
            {
                "id": "6da12577-da5c-426d-8626-5ad628adcb29",
                "key": "cud_users",
                "name": "Изменение справочника пользователей",
                "role_key": "ADMIN",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            }
        ]
    },
    {
        "id": "d9566448-3518-4389-8a39-662f4d6e71ec",
        "is_default": true,
        "key": "SUPERVISOR",
        "value": "Супервизор",
        "actions": [
            {
                "id": "116e6564-2aa3-4783-9b08-e6a0bbfddec9",
                "key": "cud_terminals",
                "name": "Создание/Редактирование/Удаление Терминалов",
                "role_key": "SUPERVISOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "487de2c6-7b5e-40a1-83d7-d0f25331d9b7",
                "key": "cud_company",
                "name": "Создание/Редактирование компании",
                "role_key": "SUPERVISOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            },
            {
                "id": "9f0c1c49-7a06-4474-b051-610588317502",
                "key": "delete_company",
                "name": "Удаление компаний",
                "role_key": "SUPERVISOR",
                "is_unit_action": false,
                "_unit_action": false,
                "_delete": false
            }
        ]
    }
]
query Parameters
ids
string
Example: ids=

Responses

/roles

Создание новой роли в компании


Структура запроса:

  • value - string, название новой роли.

  • actions - массив действий, выбранный из списка действий базовой роли.

Для создания в админ панеле, необходимо указать ID компании в поле company_id


Роль: Администратор и выше.


Пример запроса:

{
    "value": "Редактор геозон и шаблонов отчетов",
    "actions": [
        {
            "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
            "key": "cud_geozones",
            "name": "Создание/Редактирование/Удаление Геозон",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        },
        {
            "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
            "key": "cud_report_templates",
            "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        }
    ]
}

Ответ:

{
    "id": "2c34a621-b048-494b-bc50-80ec835fed17",
    "is_default": false,
    "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
    "key": "EDITOR",
    "value": "Редактор геозон и шаблонов отчетов",
    "actions": [
        {
            "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
            "key": "cud_geozones",
            "name": "Создание/Редактирование/Удаление Геозон",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        },
        {
            "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
            "key": "cud_report_templates",
            "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        }
    ],
    "_default": false
}
Request Body schema: application/json
Array of objects
key
string
value
string

Responses

Request samples

Content type
application/json
{
  • "actions": [
    ],
  • "key": "EDITOR",
  • "value": "Редактор геозон и шаблонов отчетов 444"
}

/actions

Получение всех действий


Возвращается массив действий.

Элементы действий имеют такую структуру:

  • id - uuid, идентификатор действия.

  • key - string, ключ действия.

  • name - string, название действия.


Роль: Администратор и выше.


Пример ответа:

[
    {
        "id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
        "key": "generate_report",
        "name": "Генерация отчетов",
        "role_key": "OBSERVER",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "fd7ee65f-5fd3-46c8-ad39-ce1227816ed6",
        "key": "generate_journal",
        "name": "Смотреть Журнала",
        "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
        "role_key": "OBSERVER",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "0fd9f710-cad6-4a8c-bd5d-59f1332b8d52",
        "key": "generate_other_reports",
        "name": "Генерация отчета(Кроме журнала)",
        "parent_id": "3185300e-e471-4fdd-ad80-4c73288f58f4",
        "role_key": "OBSERVER",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "5a1b7d86-122a-4fe8-b364-0531db41951a",
        "key": "get_unit",
        "name": "Просмотр объекта",
        "role_key": "READER",
        "is_unit_action": true,
        "_unit_action": true,
        "_delete": false
    },
    {
        "id": "fff20839-8dbc-46ad-98bf-0f01d91ff184",
        "key": "get_units",
        "name": "Просмотр всех объектов",
        "role_key": "READER",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "c3be2a31-04be-4531-bf79-d67490e42453",
        "key": "get_users",
        "name": "Чтение справочника пользователей",
        "role_key": "READER",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "441a9b9f-ac5d-4f90-8c2a-98d3ac7121af",
        "key": "cud_events",
        "name": "Создание/Редактирование/Удаление Событий",
        "role_key": "OPERATOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "48138886-6220-41fe-adbe-72e479d8e22d",
        "key": "commands",
        "name": "Отправка Команд",
        "role_key": "OPERATOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "4132cf99-98fd-47d0-a7c5-fbd2fa167336",
        "key": "create_units",
        "name": "Создание объектов",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
        "key": "cud_geozones",
        "name": "Создание/Редактирование/Удаление Геозон",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "77d71ff0-bb6c-447c-af3c-4c0fbe17b5c9",
        "key": "cud_notifications",
        "name": "Создание/Редактирование/Удаление Шаблонов Уведомлений",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "405bb5f4-d0f0-44cc-9550-4f44f1ae9d61",
        "key": "cud_trips",
        "name": "Создание/Редактирование/Удаление Рейсов",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "aace4f55-fcf5-4aba-ba32-d3a2335b76e2",
        "key": "cud_mailings",
        "name": "Создание/Редактирование/Удаление Рассылок",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "1e79a78d-4ed6-494d-90e4-2ebbd15e80bd",
        "key": "cud_trailers",
        "name": "Создание/Редактирование/Удаление Прицепов",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "ede4829f-9ecf-474c-ba20-a2b00c687591",
        "key": "cud_units_groups",
        "name": "Создание/Редактирование/Удаление Групп",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
        "key": "cud_report_templates",
        "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "c7d844c5-ede8-41bb-8679-9a1782815c20",
        "key": "update_unit",
        "name": "Редактирование объекта",
        "role_key": "EDITOR",
        "is_unit_action": true,
        "_unit_action": true,
        "_delete": false
    },
    {
        "id": "7c20d415-6b8c-47fe-b5d4-737e55f1f7a7",
        "key": "delete_unit",
        "name": "Удаление объекта",
        "role_key": "EDITOR",
        "is_unit_action": true,
        "_unit_action": true,
        "_delete": false
    },
    {
        "id": "0e83be60-b808-4f06-b6db-e01377720d47",
        "key": "update_unit_imei",
        "name": "Изменение IMEI объекта",
        "parent_id": "c7d844c5-ede8-41bb-8679-9a1782815c20",
        "role_key": "EDITOR",
        "is_unit_action": true,
        "_unit_action": true,
        "_delete": false
    },
    {
        "id": "e5b7aa86-36c3-49db-ad93-7fcfc4f3a790",
        "key": "update_unit_name_icon",
        "name": "Обновление названия и иконки объекта",
        "parent_id": "c7d844c5-ede8-41bb-8679-9a1782815c20",
        "role_key": "EDITOR",
        "is_unit_action": true,
        "_unit_action": true,
        "_delete": false
    },
    {
        "id": "d95323ae-0b58-4e91-a7e5-1e862fa07a85",
        "key": "update_units",
        "name": "Редактирование всех объектов",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "e4de9d83-fb37-447e-855a-1ee81902490f",
        "key": "delete_units",
        "name": "Удаление всех объектов",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "877ea798-f16d-490f-ab1c-218ab172a244",
        "key": "cud_locators",
        "name": "Создание/Редактирование/Удаление/Просмотр Ссылки доступа",
        "role_key": "EDITOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "6da12577-da5c-426d-8626-5ad628adcb29",
        "key": "cud_users",
        "name": "Изменение справочника пользователей",
        "role_key": "ADMIN",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "6dddfa19-2f20-4d5e-929e-2b489430a1cb",
        "key": "finance_report",
        "name": "Доступ к финансовому отчету",
        "role_key": "ADMIN",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "f478bb8c-ad0c-4595-b9a6-a1198fc69bda",
        "key": "cud_roles",
        "name": "Изменение ролей",
        "role_key": "ADMIN",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "116e6564-2aa3-4783-9b08-e6a0bbfddec9",
        "key": "cud_terminals",
        "name": "Создание/Редактирование/Удаление Терминалов",
        "role_key": "SUPERVISOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "487de2c6-7b5e-40a1-83d7-d0f25331d9b7",
        "key": "cud_company",
        "name": "Создание/Редактирование компании",
        "role_key": "SUPERVISOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    },
    {
        "id": "9f0c1c49-7a06-4474-b051-610588317502",
        "key": "delete_company",
        "name": "Удаление компаний",
        "role_key": "SUPERVISOR",
        "is_unit_action": false,
        "_unit_action": false,
        "_delete": false
    }
]

Responses

/roles/:id

Обновление роли в компании


Параметр запроса:

ID роли

Структура тела запроса JSON, как при создании POST /roles


Роль: Администратор и выше.


Пример запроса:

{
    "id": "2c34a621-b048-494b-bc50-80ec835fed17",
    "is_default": false,
    "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
    "value": "Редактор геозон и шаблонов отчетов",
    "actions": [
        {
            "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
            "key": "cud_geozones",
            "name": "Создание/Редактирование/Удаление Геозон",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        },
        {
            "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
            "key": "cud_report_templates",
            "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        }
    ]
}

Ответ:

{
    "id": "2c34a621-b048-494b-bc50-80ec835fed17",
    "is_default": false,
    "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
    "key": "EDITOR",
    "value": "Редактор геозон и шаблонов отчетов",
    "actions": [
        {
            "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
            "key": "cud_geozones",
            "name": "Создание/Редактирование/Удаление Геозон",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        },
        {
            "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
            "key": "cud_report_templates",
            "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        }
    ]
}
path Parameters
id
required
string
Example:

ID роли

Request Body schema: application/json
_default
boolean
Array of objects
company_id
string
id
string
is_default
boolean
key
string
users_count
number
value
string

Responses

Request samples

Content type
application/json
{
  • "_default": false,
  • "actions": [
    ],
  • "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
  • "id": "0f31eeb6-f5f5-4170-a8ac-9b2ec79f1170",
  • "is_default": false,
  • "key": "EDITOR",
  • "users_count": 0,
  • "value": "Редактор геозон и шаблонов отчетов 888"
}

/roles/:id

Обновление роли в компании


Параметр запроса - ID роли

В теле запроса необходимо указать роль для замены ролей пользователей в поле replace_role, если есть пользователи для этой роли. Достаточно указать ID роли.


Роль: Администратор и выше.


Пример запроса:

https://dev5.skif.pro/api_v1/roles/1f21bbe2-797f-4d16-9667-70211ab3412c

{
   "replace_role": {
       "id": "3476edf5-d2c9-405c-9dfb-29618c47c807"
   }
}

Ответ:

{
    "id": "2c34a621-b048-494b-bc50-80ec835fed17",
    "is_default": false,
    "company_id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
    "key": "EDITOR",
    "name": "Редактор геозон и шаблонов отчетов",
    "actions": [
        {
            "id": "1c0ff6a6-e1e6-4d20-bb86-b94cd175aa91",
            "key": "cud_geozones",
            "name": "Создание/Редактирование/Удаление Геозон",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        },
        {
            "id": "f9df739b-9e3a-4feb-80c4-a3a1519d0b54",
            "key": "cud_report_templates",
            "name": "Создание/Редактирование/Удаление Шаблонов отчетов",
            "role_key": "EDITOR",
            "is_unit_action": false,
            "_unit_action": false,
            "_delete": false
        }
    ]
}
path Parameters
id
required
string
Example:

ID роли

Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "replace_role": {
    }
}

Новости

/news

Добавление новостей интегратором для своих компаний


Поля:

title - загаловок новости, текстовое.

message - текст новости, текстовое.

companies - массив выбранных компаний, достаточно указать id.

roles - массив выбранных ролей, достаточно указать key.

send_types - массив выбранных способов доставки, достаточно указать key. Выбираются из properties, где type=send_types


Роль: Супервизор и выше.


Пример запроса:

{
    "title": "Обновление функционал геозон",
    "message": "Длииное описание",
    "valid_to": "2123-12-31 22:00:00",
    "companies": [
        {"id": "3e70f167-9fad-4753-bccf-d7d47c2c648c"},
        {"id": "f08a0297-05c3-42e5-b433-66cd72e72f61"}
    ],
    "roles": [
        {"key": "EDITOR"},
        {"key": "ADMIN"}
    ],
    "send_types": [
        {"key": "send_online"},
        {"key": "send_telegram"}
    ]
}

Ответ:

{
    "id": "ddee7cdc-eee0-4db2-8430-1c9620fa543f",
    "valid_to": "2123-12-31 22:00:00",
    "title": "Обновление функционал геозон",
    "message": "Длииное описание",
    "companies": [
        {
            "id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
            "name": "0Одуванчик"
        },
        {
            "id": "f08a0297-05c3-42e5-b433-66cd72e72f61",
            "name": "ддддддддддааааа"
        }
    ],
    "send_types": [
        {
            "key": "send_online",
            "type": "send_types",
            "value": "Отобразить в интерфейсе SKIF.PRO"
        },
        {
            "key": "send_telegram",
            "type": "send_types",
            "value": "Отправить в Телеграм"
        }
    ],
    "roles": [
        {
            "key": "EDITOR",
            "value": "Редактор"
        },
        {
            "key": "ADMIN",
            "value": "Администратор"
        }
    ]
}

Пример ошибки:

{
    "code": 4220,
    "field": "valid_to",
    "message": "Актуально до должно быть позже текущего времени"
}
Request Body schema: application/json
Array of objects
message
string
Array of objects
Array of objects
title
string
valid_to
string

Responses

Request samples

Content type
application/json
{
  • "companies": [
    ],
  • "message": "Длииное описание",
  • "roles": [
    ],
  • "send_types": [
    ],
  • "title": "Обновление функционал геозон",
  • "valid_to": "2123-12-31 22:00:00"
}

/news/list

Получение новостей по страницам


Фильтр отправляется в теле запроса:

offset - номер первой строки, начинается с нуля.

max - максимальные количество строк на странице.

sortField - поле, по которoму нужно делать сортировку (используются следующие поля - created, valid_to, title).

sortDesc - тип сортировки поля, если true, тогда по убыванию.


Пример запроса:

{
    "offset": 0,
    "max": 100,
    "sortField": "created",
    "sortDesc": true
}

Пример ответа:

Возвращаются новости на указанной странице запроса.

max_rows - количество всех записей.

list - сами записи. Cтруктура записей, как в ответе на запрос POST /news, дополнительно приходит поле is_read - признак прочитанности и created - дата и время создания.

{
    "max_rows": 2,
    "list": [
        {
            "id": "c37494d6-7141-41b3-b0d9-ff3c89fd159a",
            "created": "2023-12-05 17:49:15",
            "valid_to": "2110-12-31 22:00:00",
            "title": "Война и мир. Роман, Лев Толстой. I том",
            "message": "Действия I тома описывают события войны в союзе с Австрией против Наполеона в 1805—1807 годах. 1-я часть. Июль 1805 года, назревает война с «чудовищем» Буонапарте. Санкт-Петербург. Фрейлина вдовствующей императрицы Анна Шерер устраивает светский приём. Гости обсуждают последние события — убийство герцога Энгиенского, захват Наполеоном итальянских республик Генуи и Лукки, миссию Новосильцева по посредничеству между Францией и Англией. На приёме появляются князь Андрей Болконский со своей беременной женой Лизой, молодой Пьер, незаконный сын богатейшего графа Безухова, князь Василий Курагин со своей прекрасной дочерью Элен. Курагин жалуется Шерер на своих сыновей: беспутного Анатоля и глупого Ипполита. Обедневшая княгиня Анна Друбецкая просит князя Василия похлопотать о зачислении её единственного сына Бориса в гвардию. После приёма Пьер едет к Болконскому, тот убеждает его не участвовать в кутежах Анатоля Курагина. Однако тот всё равно отправляется к Анатолю, кутёж заканчивается печально: Пьера высылают в Москву, заводила Долохов разжалован в солдаты, дело с Анатолем замял отец.Москва. 26 августа[19], день святой Натальи) в большом доме графов Ростовых на Поварской празднуют именины графини Ростовой и её младшей дочери Наташи. Сын Ростова Николай готовится к отправке на войну, он влюблён в свою троюродную сестру бесприданницу Соню. Наташа Ростова тоже хочет любить кого-то, поэтому напрашивается на откровенный разговор с Борисом Друбецким и целует его. На праздник приезжает Пьер и Марья Дмитриевна Ахросимова — влиятельная и уважаемая дама, резкая и категоричная в своих суждениях. Граф Ростов, к восторгу всех присутствующих, танцует с Марьей Дмитриевной свой любимый танец — «Данилу Купора».Отец Пьера граф Безухов находится при смерти после нескольких ударов. Он просит князя Василия, родственника жены, привести к нему Пьера, самого любимого из своих сыновей. Князь Василий и три княжны Мамонтовы опасаются, что наследство может достаться Пьеру. Разобравшись, куда дует ветер, княгиня Друбецкая привозит ничего не подозревающего Пьера в дом графа и силком вырывает у княжны Мамонтовой портфель, где находится письмо графа к государю с просьбой признать Пьера законным сыном. Неожиданно Пьер становится графом, одним из богатейших людей России.Андрей Болконский назначен адьютантом Кутузова и уезжает на войну, мечтая прославиться, оставив Лизу в имении отца Лысые Горы. Его отец, генерал-аншеф князь Николай Андреевич Болконский, много лет безвыездно живёт в своём имении. Он отличается прямотой своих суждений, суровостью и строгостью. Он заставляет дочь княжну Марью заниматься математикой, постоянно третирует и оскорбляет её. Тем не менее набожная и некрасивая княжна любит отца и знает, что он любит её. Княжна Марья получает письмо от Жюли Карагиной, которая пишет о том, что, по слухам, князь Василий хочет женить на ней своего сына Анатоля.2-я часть. Австрия. Русская армия после длительного перехода участвует в смотре в местечке Браунау. На смотр приезжает главнокомандующий Кутузов. Он недоволен бравым видом армии, не желая видеть своих солдат пушечным мясом в замыслах австрийцев. После разгрома генерала Мака под Ульмом армии Кутузова приходится отступить к Кремсу. Кутузов посылает Болконского с посланием о первой русской победе к австрийскому императору Францу. После аудиенции Болконский узнаёт, что французы неожиданно прорвались в Вену, армия Кутузова оказывается под угрозой окружения. Несмотря на предложение дипломата Билибина ехать с ним, Болконский, уверенный что пришло его время, спешит к Кутузову. Кутузов решается идти к Цнайму на соединение с российскими силами. Он посылает четырёхтысячный отряд Багратиона к деревне Шёнграбен, где в отчаянном безнадёжном бою русские задерживают продвижение армии Мюрата. На совещании у Багратиона Болконский заступается за истинного героя сражения — капитана Тушина, чья батарея подожгла деревню в тылу французов и держалась, оказавшись в окружении. Павлоградский гусарский полк тоже участвовал в сражении, где Николай Ростов получает рану.3-я часть. Князь Василий поселяет дезориентированного новой жизнью Пьера у себя, намереваясь женить его на своей дочери. Он устраивает Пьеру назначение в камер-юнкеры. Постепенно светское общество начинает воспринимать Пьера как жениха Элен. Пьер испытывает к красавице влечение, но опасается, что женитьба на глупой Элен станет для него страшным несчастьем. В решающий момент князь Василий представляет дело так, будто Пьер уже объяснился Элен в любви, Пьеру приходится подчиниться. Он поселяется с женой в своём недавно отремонтированном дворце.Закончив дело с Элен, князь Василий с сыном Анатолем едет в имение старого князя Болконского. Старик разгадывает подлинную сущность Анатоля, но предоставляет свободу выбора своей дочери. Марья очарована красавцем офицером Анатолем, но застаёт его в зимнем саду со своей компаньонкой мадемуазелью Амалией Бурьен. Она решает поспособствовать счастью Амалии и говорит князю Василию, что никогда не станет женой его сына.Стороны стягивают силы к Аустерлицу. Император Александр, его приближённые уверены в победе над слабым противником, австрийцы, уже проводившие манёвры в этой местности, составили подробную диспозицию. Тем не менее Кутузов уверен, что битва будет проиграна, а диспозиция Вейротера хороша лишь тем, что уже высочайше одобрена и изменить в ней ничего всё равно нельзя.Болконский не спит накануне сражения, мечтая о славе. Если счастливый случай вознёс Бонапарта, то завтрашнее сражение может вознести и его. Болконский просит об этом Бога, ему не жаль ни семьи, ни богатства, ни даже жизни.На следующее утро Наполеон, в день годовщины его коронования, в счастливом расположении духа, уверенный в успехе, отдаёт приказ начинать дело. Французская армия спешит занять Праценские высоты, с которых спускается союзная армия. Вскоре сражение оказывается проигранным во всех пунктах. Кутузов замечает наступающую французскую колонну, русские войска разбегаются и он требует от Болконского остановить их. Болконский решив, что наступила долгожданная минута, подбирает знамя и увлекает батальон за собой. Вдруг Болконский чувствует удар по голове и падает. Недвижимый, он видит над собой лишь бескрайнее, бесконечное небо, а всё прежнее теряет всякое значение. Сам Бонапарт смотрит на Болконского («Вот прекрасная смерть!»), но заметив, что Болконский жив, обращается к нему с вопросами. Князь Андрей даже не трудится ответить, воспринимая своего прежнего кумира Бонапарта как ничтожество. Врач Наполеона Ларрей уверен, что Болконский не выживет, его и других безнадёжных раненых, оставляют на попечение местных жителей.",
            "dealer_id": "c5e63357-6b63-4ea4-8b91-beb53f749f69",
            "is_read": false,
            "_read": false,
            "companies": [
                {
                    "id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
                    "name": "0Одуванчик"
                },
                {
                    "id": "f08a0297-05c3-42e5-b433-66cd72e72f61",
                    "name": "ддддддддддааааа"
                }
            ],
            "send_types": [
                {
                    "key": "send_online",
                    "type": "send_types",
                    "value": "Отобразить в интерфейсе SKIF.PRO"
                },
                {
                    "key": "send_telegram",
                    "type": "send_types",
                    "value": "Отправить в Телеграм"
                }
            ],
            "roles": [
                {
                    "key": "EDITOR",
                    "value": "Редактор"
                },
                {
                    "key": "ADMIN",
                    "value": "Администратор"
                }
            ]
        },
        {
            "id": "6a742db8-4c06-44bf-9f69-43a8f0f0071d",
            "created": "2023-12-05 19:19:05",
            "valid_to": "2123-12-31 22:00:00",
            "title": "Обновление функционал геозон",
            "message": "Длииное описание",
            "dealer_id": "c5e63357-6b63-4ea4-8b91-beb53f749f69",
            "is_read": true,
            "_read": true,
            "companies": [
                {
                    "id": "3e70f167-9fad-4753-bccf-d7d47c2c648c",
                    "name": "0Одуванчик"
                },
                {
                    "id": "f08a0297-05c3-42e5-b433-66cd72e72f61",
                    "name": "ддддддддддааааа"
                }
            ],
            "send_types": [
                {
                    "key": "send_online",
                    "type": "send_types",
                    "value": "Отобразить в интерфейсе SKIF.PRO"
                },
                {
                    "key": "send_telegram",
                    "type": "send_types",
                    "value": "Отправить в Телеграм"
                }
            ],
            "roles": [
                {
                    "key": "EDITOR",
                    "value": "Редактор"
                },
                {
                    "key": "ADMIN",
                    "value": "Администратор"
                }
            ]
        }
    ]
}
Request Body schema: application/json
max
number
offset
number
sortDesc
boolean
sortField
string

Responses

Request samples

Content type
application/json
{
  • "max": 20,
  • "offset": 0,
  • "sortDesc": true,
  • "sortField": "created"
}

/news/:id/mark_as_read

Отметить новость, как прочитанную


Параметры запроса:

id - идентификатор новости.


Пример запроса:

PUT https://dev5.skif.pro/api_v1/news/6a742db8-4c06-44bf-9f69-43a8f0f0071d/mark_as_read
path Parameters
id
required
string
Example:

ID новости

Responses

Датчики

/units/sensors/add_to_units

Импортирование датчиков


Поля:

units - выбранные объекты.

sensors - выбранные датчики.

sensor_copy_type - тип импортирования датчиков. Можно получить возможные типы импортирования датчиков из dictionary, где type = sensor_copy_type.


Роль: Редактор и выше.

Request Body schema: application/json
object
Array of objects
Array of objects

Responses

Request samples

Content type
application/json
{
  • "sensor_copy_type": {
    },
  • "sensors": [
    ],
  • "units": [
    ]
}

Счета

/invoices

Запрос для получения счетов


Для интеграторов для сотрудников с ролью Редактор тарифа, по которому выдаются все счета, выставленные ранее с колонками Интегратор, Дата, Сумма и ссылка на файл pdf.

Для сотрудника с ролью Контролер доступны для получения все счета, по всем Интеграторам.

Для фильтрации по дате в запросе можно указать from и to. Пример запроса:

GET /invoices?from=2024-01-01&to=2024-12-31


Роль: Редактор тарифа и выше.


Поля в ответе:

dealer - интегратор.

date - дата в формате yyyy-MM-dd

sum - сумма.

file_path - ссылка на файл, можно получить файл через ссылку /api_v1/

Пример ответа:

[
    {
        "id": "b23fc43b-0566-478e-8598-18e83c2b0a92",
        "dealer": {
            "id": "f6a2a3fa-930b-4045-8731-3592b466d48f",
            "name": "Мониторинг Плюс Москва"
        },
        "date": "2024-05-01",
        "file_path": "/files/dealers_invoice/f6a2a3fa-930b-4045-8731-3592b466d48f/2024-05-01_invoice_7032506.pdf",
        "sum": 350000
    },
    {
        "id": "21d20961-ad09-4322-abfb-7b34bce74a1e",
        "dealer": {
            "id": "f6a2a3fa-930b-4045-8731-3592b466d48f",
            "name": "Мониторинг Плюс Москва"
        },
        "date": "2024-04-01",
        "file_path": "/files/dealers_invoice/f6a2a3fa-930b-4045-8731-3592b466d48f/2024-04-01_invoice_2368165.pdf",
        "sum": 340000
    }
]

Responses

Инструменты

/tools/loadwln?table=<table>&imei=<IMEI>

Загрузка истории по объектам


Параметры запроса:

table - ключ протокола передачи данных объекта (terminal_type_key)

imei - IMEI объекта.


Пример запроса:

POST https://dev5.skif.pro/api_v1/tools/loadwln?table=navtelecom&imei=85433234354343

В теле запроса для загрузки принимаются только один файл архива в формате zip, в котором находится файл выгрузки истории из Wialon в формате wln.

В ответе возвращается 200, если загружено успешно или статус для ошибки.

Тело ответа содержит текст в формате text/plain.

query Parameters
table
string
Example: table=

Ключ протокола передачи данных объекта

imei
string
Example: imei=

IMEI объекта

header Parameters
cookie
string
Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX19i1MKLt0JXuvb8mt/6JCYaI+BDpJcnGlWTJD/DXtOrgxRHWt6raUeL"; PLAY_SESSION={{vault:json-web-token}}

Responses

Выгрузка данных

/tools/exportwln_multiple

Экспортирование множества объектов


Пример запроса:

POST https://admin-dev.skif.pro/api_v1/tools/exportwln_multiple

Возвращает zip файл с необходимыми объектами в формате .wln

Request Body schema: application/json
from
string
Array of objects
to
string

Responses

Request samples

Content type
application/json
{
  • "from": "2024-10-24",
  • "objects": [
    ],
  • "to": "2024-10-25"
}

/tools/exportwln

Метод для экспортирования объекта


Пример:

POST https://admin-dev.skif.pro/api_v1/tools/exportwln?table=novacom&imei=123&from=2024-10-24&to=2024-10-25

Возвращает .wln файл с необходимым объектом

query Parameters
table
string
Example: table=novacom
imei
string
Example: imei=123
from
string
Example: from=2024-10-24
to
string
Example: to=2024-10-25

Responses

Support

/support_key

Запрос на получение API-ключа для HelpDeskEddy.

Возвращает ответ JSON со статусом 200 или ошибкой в случае ошибки.

Поля ответа:

user_id - ID пользователя в SKIF.PRO, uuid

helpdesk_user_id - ID пользователя в HelpDeskEddy

helpdesk_api_key - API key для HelpDeskEddy

Пример ответа:

{
    "user_id": "0179f5d4-a7b0-4bb3-b499-54825ecba753",
    "helpdesk_user_id": 30,
    "helpdesk_api_key": "ee914ca2-19dc-4b99-af58-08a9863a1a31"
}

Responses

/support_hook

для получения webhook запросов от helpdesckeddy. Требуется API key отправить в хедере

Поля JSON запроса:

{
  "ticket_id": "27",
  "user_id": "5", //id клиента в helpdesck
  "ticket_name": "Тема обращения",
  "answer": "текст ответа"
}

По результату активному пользователю (подключен к нам по websocket) отправляется websocket-сообщение и всегда отправлять push уведомление в следующем формате:

{
    "thread-id": "ID company",
    "alert": {
        "title": "Title",
        "body": "message"
    },
    "type": "support",
    "ticket_id": "27",
     "ticket_name": "Тема обращения",
     "answer": "текст ответа"
} 
Request Body schema: application/json
Schema not provided

Responses

Request samples

Content type
application/json
"{\n \"ticket_id\": \"27\",\n \"user_id\": \"30\", //id клиента в helpdesck\n \"ticket_name\": \"Тема обращения\",\n \"answer\": \"текст ответа\"\n}"