Используется для регистрации нового пользователя в системе.
Регистрирует пользователя с указанным 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
| invite_id | string |
object | |
| name | string |
| password | string |
object | |
| type | string |
| userProviderId | string |
{- "invite_id": "c5b2edce-5a1e-47c9-a433-422e83c95dc9",
- "language": {
- "key": "ru"
}, - "name": "Миша",
- "password": "12345N",
- "timezone": {
- "key": "UTC+3"
}, - "type": "EMAIL",
- "userProviderId": "test1@ya.ru"
}Авторизация пользователя с помощью 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 с ошибкой.
| password | string |
| provider_key | string |
| userProviderId | string |
{- "password": "12345N",
- "provider_key": "TEXT",
- "userProviderId": "test1@ya.ru"
}Восстановление пароля
Метод создает временный пароль для существующего пользователя. Новый пароль отправляется на указанный 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": "Отсутствует параметр" // частный
}
| type | string |
| user_provider_id | string |
{- "type": "EMAIL",
- "user_provider_id": "test1@ya.ru"
}Вход через 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": "Отсутствует параметр" // частный
}
| user_id required | string Example: ID пользователя |
Сбросить пароль пользователя администратором (только администратор)
Установить новый временный пароль для пользователя. После чего пользователь должен изменить пароль после входа.
Параметры:
user_id - ID пользователя
newPassword - новый пароль
Роль: Администратор и выше.
Ответ: Пустой 200. Новый пароль установлен или ошибка
Пример запроса:
{
"newPassword": "12345678"
}
| user_id required | string Example: ID пользователя |
| newPassword | string |
{- "newPassword": "Aa@1234567891011121314"
}Подтверждение email. Используется для подтверждения email по ссылке полученной на почту.
Делает email подтвержденным, после чего зарегистироваться с таким email уже не возможно.
Пользователь сразу авторизуется в системе без ввода email и пароля.
Создается временный id помещенный в redis со временем жизни 30 мин
Параметры:
id - временный id связанный с email
Ответ:
Возвращает код 200 с пустым body
Возвращает код 422 в случае если id не валидно
{
"code": 4022,
"field": "id",
"message": "Ссылка устарела, повторите операцию"
}
| id required | string Example: |
Авторизация по приглашению. Используется для получения доступа к компании по ссылке, полученной на почте.
Создает пользователя, если он не был ранее зарегистрирован и дает доступ к компании из которой Администратор вызвал метод POST /invite
Пользователь сразу авторизуется в системе без ввода email и пароля под приглашенной Компанией.
Пример запроса:
Создается временный id помещенный в redis со временем жизни 30 мин.
id связан с email и компанией, в которую приглашают пользователя (оба значения можно помещать в качестве значения в redis)
Параметры:
id - временный id связанный с email и Компанией в которую приглашают пользователя
Ответ:
Возвращает код 200 с пустым body
Возвращает код 422 в случае если id не валидно
{
"code": 4022,
"field": "id",
"message": "Ссылка устарела, повторите операцию"
}
| id required | string Example: |
Авторизация по ссылке восстановления, полученной по почте. Используется для авторизации пользователя в системе для последующей смены пароля.
Пользователь сразу авторизуется в системе без ввода email и пароля. При этом если у пользователя доступ к нескольким компаниям, то предлагается выбор Компании, в которую пользователь хочет войти через метод GET switchcompany/:id
Пример запроса:
Создается временный id, помещенный в redis со временем жизни 30 мин. id связан с email
Параметры:
id - временный id связанный с email
Ответ:
Возвращает код 200 с пустым body
Возвращает код 422 в случае, если id не валидно
{
"code": 4022,
"field": "id",
"message": "Ссылка устарела, повторите операцию"
}
| id required | string Example: |
Запрос получения кода
Параметры:
provider_key: text, для подтверждения номером телефона (пока только так) provider_key = PHONE
userProviderId - text, номер телефона если provider_key = PHONE
Пример запроса:
{
"userProviderId": "+7XXXXXXXXXX",
"provider_key": "PHONE"
}
В ответ приходит 200, если запрос правильный, иначе ошибка
| provider_key | string |
| userProviderId | string |
{- "provider_key": "PHONE",
- "userProviderId": "+71111111111"
}Запрос получения кода через звонок
Параметры:
provider_key: text, для подтверждения номером телефона, provider_key = PHONE
userProviderId - text, номер телефона, если provider_key = PHONE
Пример запроса:
{
"userProviderId": "+7XXXXXXXXXX",
"provider_key": "PHONE"
}
В ответ приходит 200, если запрос правильный, иначе ошибка
| provider_key | string |
| userProviderId | string |
{- "provider_key": "PHONE",
- "userProviderId": "+71111111111"
}Подтверждение аккаунта с помощью кода
Параметры:
provider_key: text, ддля подтверждения номером телефона(пока только так) provider_key = PHONE
userProviderId - text, номер телефона если provider_key = PHONE
code: text, полученный код
Пример запроса:
{
"userProviderId": "7XXXXXXXXXX",
"provider_key": "PHONE",
"code": "27280"
}
| code | string |
| provider_key | string |
| userProviderId | string |
{- "code": "52798",
- "provider_key": "PHONE",
- "userProviderId": "+71111111111"
}Получить информацию о текущем пользователе
Метод выдает информацию по текущему пользователю
Роль: Наблюдатель и выше.
Ответ:
{
"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"
}
]
}
],
}
Обновить данные текущего пользователя
Обновляет те поля, которые содержатся в запросе. Поля отсутствующие в запросе, не обновляются.
Роль: Редактор и выше.
Пример запроса:
{
"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
| age | string |
| name | string |
object |
{- "age": "38",
- "name": "Миша",
- "town": {
- "key": "Taldykorgan"
}
}Получить информацию о текущем пользователе по его id
Возвращает данные по пользователям переданных id. Возвращаются только те пользователи, у которых есть доступ к текущей компании пользователя, который делает запрос.
Параметры:
ids - может содержать как один id пользователя, так и несколько, разделенных через запятую.
Роль: Читатель и выше.
Ответ:
Массив объектов пользователей, каждый объект которого аналогичен возвращаемому через метод GET /me
| ids | string Example: ids= |
Планирование удаления пользователей по их ID
Логика использования, как в DELETE /company/users?ids=:ids
Пользователь с ролью SUPERVISOR может удалять других пользователей.
Роль: Администратор и выше.
| ids | string Example: ids= |
| name | string |
object |
{- "name": "Вася",
- "transport": {
- "key": "Bicycle"
}
}Обновить информацию о текущем пользователе по его id.
Обновление пользователя по его id. Пользователь с ролями User, Provider, Executor может менять только себя.
Роль: Администратор и выше.
Параметры и ответ аналогичны методу POST /users
| user_id required | string Example: ID пользователя |
| name | string |
object |
{- "name": "Вася",
- "transport": {
- "key": "Bicycle"
}
}Обновить информацию о текущем пользователе по его id.
Роут для проверки уникальности строки Имя пользователя для использования в качестве логина
Роль: Администратор и выше.
Пример запроса:
{"name": "Иванов Иван Иванович"}
| user_id required | string Example: ID пользователя |
| name | string |
object |
{- "name": "Вася",
- "transport": {
- "key": "Bicycle"
}
}Создание пользователей, минуя приглашение.
Добавление пользователя с ролью Редактор
Роль: Администратор и выше.
Параметры:
{
"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
Получить пользователей по фильтру
На основании переданных параметров формирует запрос к списку пользователей.
Параметры:
"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
Если ничего не нашлось, возвращается пустой массив.
| from | number |
| limit | number |
| sort | string |
| sortDesc | boolean |
{- "from": 0,
- "limit": 100,
- "sort": "name",
- "sortDesc": true
}Добавление аватарки пользователю
Сохраняет фотографии на диске.
Первый - оригинальный с 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"
}
]
| file | string <binary> |
| id | string |
Запросить подтверждение пользователя.
Параметры:
userId - ID пользователя
Тела запроса JSON:
Для подтверждение email: { "type": "EMAIL" }
Для подтверждение номер телефона: { "type": "PHONE" }
Можно отправить запрос, если пользователь не подтвержден. Это определяется полем is_approved пользователя для email и is_approved_phone для номера телефона.
В случае успеха, в результате отправляется ответ 200 и отправляется письмо на почту или на телефон, указанную в настройке пользователя.
Иначе возвращается ошибка с кодом 422.
| userId required | string Example: ID пользователя |
| type | string |
{- "type": "PHONE"
}Удаление пользователя из выбранных компаний.
Параметры:
id - ID пользователя
В теле запроса указать список компаний (достаточно указать ID компании)
| id required | string Example: ID пользователя |
Array of objects |
{- "companies": [
- {
- "id": "2a4b08cd-6c92-4f74-93a9-2cd319caa601"
}, - {
- "id": "2f2c629a-9087-4925-8240-d6d6b90aafda"
}
]
}Изменение роли пользователя в компаниях.
Параметры:
id - ID пользователя
В теле запроса указать:
Список компаний (достаточно указать ID компании).
Новую роль в поле role.
Роль: Администратор и выше.
| id required | string Example: ID пользователя |
Array of objects | |
object |
{- "companies": [
- {
- "id": "fc83e935-9c95-4b6f-aee4-be749479a2bc"
}
], - "role": {
- "key": "EDITOR",
- "name": "Редактор"
}
}Изменение роли пользователя во всех его компаниях, доступных авторизованному пользователю.
Параметры:
id - ID пользователя
В теле запроса указать новую роль в поле role
Пример запроса:
PUT /api_v1/users/a8fa266e-3c70-44c8-933e-adb3fe17063d/change_role_all
{
"role": {
"key": "EDITOR",
"name": "Редактор"
}
}
| id required | string Example: ID пользователя |
object |
{- "role": {
- "key": "ADMIN",
- "name": "Редактор"
}
}Получение списка компаний, доступных для добавления пользователя
Параметры:
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"
}
]
| id required | string Example: ID пользователя |
| search | string Example: search= |
object |
{- "role": {
- "key": "ADMIN",
- "name": "Редактор"
}
}Запланированное удаление пользователя из системы.
Роль: Читатель и выше.
Метод запланирует удаление на 24 часа, а в ответ на метод выдается сообщение
200:
{
"msg": "Мы запланировали удаление вашего аккаунта. У вас есть 24 часа чтобы отменить удаление по ссылке, которую мы вам отправили на почту."
}
""Создание пользовательского 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}}"
}
| id required | string Example: ID пользователя |
| valid_to | string |
{- "valid_to": "2024-06-21 15:00:00"
}Получение пользовательских настроек для текущего пользователя
Параметр запроса 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
}
]
| cookie | string Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX1837SQcSoYSWGg1LPwUmHtV7ONZrz1BFryeqgVO6dXAKzEpKdMN3+1F"; PLAY_SESSION={{vault:json-web-token}} |
| key | string |
| value | string |
| version | number |
{- "key": "show_geozones_in_road_xyz",
- "value": "1",
- "version": 0
}Сохранение пользовательских настроек для текущего пользователя
Описание поля в 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
}
]
| key | string |
| value | string |
| version | number |
{- "key": "show_geozones_in_road_xyz",
- "value": "1",
- "version": 0
}Возможность переключение под пользователем без запроса пароля
Параметры запроса:
user_id - ID пользователя для переключения.
company_id - ID компании для переключения.
Роль: Администратор и выше.
Пример запроса:
В результате пользователь перенаправляется на страницу в которой пользователь авторизуется под выбранным пользователем.
Для авторизованного пользователя таким способом возвращается в GET /me поле another_user: true
| user_id required | string Example: ID пользователя |
| company_id required | string Example: ID компании |
| key | string |
| value | string |
| version | number |
{- "key": "show_geozones_in_road_xyz",
- "value": "1",
- "version": 0
}Получить все записи справочника 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 - перевод справочника на язык пользователя
В случае отсутствия записей переданного типа возвращает пустой массив []
| dicType required | string Example: |
Получить все записи справочника 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 - перевод справочника на язык пользователя
Получить все записи справочника 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 - перевод справочника на язык пользователя
В случае отсутствия записей переданного типа возвращает пустой массив []
| propertiesType required | string Example: |
Получить все записи справочника 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 - перевод справочника на язык пользователя
Получить доступ текущего пользователя к сущностям системы
Формат возвращаемых данных:
{
"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 - ключ тега, содержащий массив ключей действий, к которым имеет доступ пользователь
Доступ определяется на основании роли пользователя к текущей компании и сущностям, к которым он имеет эксклюзивный доступ (например, собственная карточка пользователя)
Запрос на получение обязательных 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"
}
]
Получение изменений по ID локатора; см. Locators
После подключения через сокет, поступает информация о местоположении связанного с локатором объекта.
Структура как в /messages, но приходят только поля unit_name, datepoint, _datepoint, address, _marker_latlon
| id | string Example: id= |
Построение маршрута, проходящего через указанные точки
Структура запроса:
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
]
]
}
]
}
| points required | string Example: |
Поиск места по адресу
Запрос:
{
"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
]
}
]
| part | string |
{- "part": "Алматы"
}Получение серверов по email пользователя
Параметр body содержит следущие поля:
email (обязательный) - email пользователя
get (необязательный) - возможные значения: "ktzh" - для получения серверов приложения КТЖ, "all" - для получения всех доступных серверов
| body | string Example: body= |
Копирует сущности из одной компании в другую (пока реализовано для 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, иначе текст ошибки.
| ids | Array of strings |
| to_company_id | string |
| type | string |
{- "ids": [
- "d20f1b59-85c3-46a2-b90e-5915fcdda7cb"
], - "to_company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
- "type": "units"
}Восстанавливает сущности (пока реализовано для 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, иначе текст ошибки.
| ids | Array of strings |
| type | string |
{- "ids": [
- "afcbb296-ce2b-403b-8e1e-f3c12e6f108c"
], - "type": "units"
}Получения сущностей по всем компаниям для 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"
},
...
| count | number |
| from | number |
| model | string |
{- "count": 100,
- "from": 0,
- "model": "companies"
}Добавление вложения, которое можно будет использовать в теге 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
Отмена запроса удаления по уникальному ID
Этот ID приходит в теле ответа на запрос удаления. см. DELETE /units?ids=:ids
Роль: Редактор и выше.
Пример запроса:
PUT /cancel_delete/80a201ea-67e5-4cd9-aea5-591128d2855a.doc
Возвращает 200 в случае успешной отмены, в противном случае - 422 с текстом ошибки.
| id required | string Example: |
Отмена запроса на удаление по уникальному ID
Этот ID приходит в теле ответа на запрос удаления. см. DELETE /company/users?ids=:ids
Роль: Администратор и выше.
Пример запроса:
PUT /auth_cancel_delete/80a201ea-67e5-4cd9-aea5-591128d2855a.doc
Возвращает 200 в случае успешной отмены, в противном случае - 422 с текстом ошибки.
| id required | string Example: |
Отмена запроса на удаление по уникальному ID.
Уникальный ID приходит в теле ответа на запрос уделения.
см. DELETE /terminals?ids=:ids или DELETE /retranslators?ids=:ids
Роль: Супервизор и выше.
Пример запроса:
PUT /mtracker_cancel_delete/80a201ea-67e5-4cd9-aea5-591128d2855a.doc
Возвращает 200 в случае успешной отмены, в противном случае - 422 с текстом ошибки.
| id required | string Example: |
Отправка письма в поддержку интегратора
Тело запроса:
{
"subject": "тема письма",
"body": "текст сообщения"
}
Сообщение отправляется всем сотрудникам интегратора с ролью "Редактор тарифа".
Отправка доступна всем пользователям Компании.
| body | string |
| subject | string |
{- "body": "Как дела? Как создать объект?",
- "subject": "Привет"
}Удаление пользователя из компании
Параметры:
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": [
"Недопустимый параметр"
]
}
| id required | string Example: ID пользователя |
Array of objects |
{- "companies": [
- {
- "id": "545c61a4-27ae-4335-a18e-e63e98b3eceb"
}, - {
- "id": "6b596675-81ba-4916-ac2d-32388da57e6d"
}, - {
- "id": "6c08dd40-950a-4d7e-86ee-aa8f12435ed7"
}
]
}Планирует удаление пользователя с доступом к текущей компании по их 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": [
"Недопустимый параметр"
]
}
| ids | string Example: ids= |
string Example: Список ID пользователей |
Выбор компании пользователем
В cookies пользователя прописывается новая сессия
Пример запроса:
В качестве id может использоваться только id доступной пользователю компании из списка companies в сущности user, см GET /me
Параметры:
id - id доступной компании пользователя.
Ответ:
Возвращает код 200:
{
"id": "75bd17cc-642f-4c7c-982e-e0e991907733"
}
Возвращает код 422 в случае если id не валидно:
{
"code": 4022,
"field": "id",
"message": "Вы не имеете доступа к выбранной компании, попробуйте перезайти."
}
| id required | string Example: 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": "Вы не имеете доступа к выбранной компании, попробуйте перезайти."
}
| id required | string Example: ID доступной пользователю компании |
| 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 |
{- "auto_kill_sessions": 0,
- "dateformat": {
- "key": "d/MM/yy",
- "type": "dateformats",
- "value": "d/MM/yy(25/01/14, 2/12/87)"
}, - "dealer": {
- "_default": false,
- "_delete": false,
- "contact_person": "",
- "email": "",
- "id": "dd11e469-f929-4087-96b2-3911335015c1",
- "inn": "",
- "is_default": false,
- "name": "Мониторинг Плюс Москва",
- "phone": "",
- "type": {
- "key": "legal_entity",
- "type": "dealer_types",
- "value": "Юридическое лицо"
}
}, - "efis_retranslate": true,
- "forbidden_layers": [
- {
- "key": "pressure_new"
}
], - "holidays": [ ],
- "id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
- "name": "Одуванчик ",
- "strong_password": false,
- "timeformat": {
- "key": "HH:mm",
- "type": "timeformats",
- "value": "HH:mm(09:45, 17:20)"
}, - "timezone": {
- "key": "UTC+3",
- "type": "timezones",
- "value": "(GMT+03:00) Москва, Санкт-Петербург, Волгоград"
}
}Приглашение пользователя в систему
Метод создает ссылку и отправляет ее на указанный 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 была выслана ссылка для восстановления."}
string | |
object |
{- "email": "mshevelevich@gmail2.com",
- "role": {
- "id": "fffaa80b-28a5-466b-a0a2-29761bfc8c80"
}
}Создание пользователем новой компании
Параметры:
"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": []
}
| company_name | string |
| imeis | Array of strings |
object |
{- "company_name": "A comapny Y",
- "imeis": [
- "121212",
- "131313"
], - "timezone": {
- "key": "UTC+3"
}
}Получение сессий пользователей компании
Роль: Администратор и выше.
Запрос данных ограничен периодом в один месяц.
{
"from":"2024-10-01 00:00:00",
"from":"2024-11-01 00:00:00", // необязательный параметр
"first":0, // необязательный параметр
"count":100 // необязательный параметр
}
| count | number |
| first | number |
| from | string |
| to | string |
{- "count": 100,
- "first": 0,
- "from": "2024-01-01 00:00:00",
- "to": "2024-01-12 00:00:00"
}Получение сессий пользователей компании из админ панели
Роль: Супервизор и выше.
Параметры запроса:
id - ID компании
{
"from":"2020-10-01 00:00:00",
"first":0,
"count":100
}
Запрос данных ограничен периодом в один месяц
| id required | string Example: ID компании |
| count | number |
| first | number |
| from | string |
{- "count": 100,
- "first": 0,
- "from": "2020-10-01 00:00:00"
}Получение истории изменения сущностей
Роль: Администратор и выше.
Пример запроса для одной сущности:
{
"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 - текст
| first_row | number |
| from | string |
| max_rows | number |
| objects | string |
| sortDesc | boolean |
| sortField | string |
| to | string |
{- "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"
}Получение истории изменения сущностей из админ панели
Роль: Супервизор и выше.
Пример запроса для одной сущности:
{
"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 - текст
| id required | string Example: ID компании |
| first_row | number |
| from | string |
| max_rows | number |
| objects | string |
| sortDesc | boolean |
| sortField | string |
| to | string |
{- "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"
}Удаление компании
Параметры:
ids - ID удалаемых компаний.
Роль: Супервизор и выше.
Пример запроса:
{
"ids": ["acce8268-e0ef-4fda-a6ea-89ed23ffae50"]
}
Пока можно удалить только одну компанию в одном запросе.
Если все ok, тогда запланируетсяудаление. Его можно отменить с помощью роут POST /company/cancel_delete
| ids | Array of strings |
{- "ids": [
- "04350fc5-8cec-4edc-bed1-7e1ee9a9e630"
]
}Отмена удаления компании
Параметры:
ids - ID удаляемых компаний.
Роль: Супервизор и выше.
Пример запроса:
{
"ids": ["acce8268-e0ef-4fda-a6ea-89ed23ffae50"]
}
Если все ok, тогда удаление отменяется.
| ids | Array of strings |
{- "ids": [
- "04350fc5-8cec-4edc-bed1-7e1ee9a9e630"
]
}Получение доступных ролей для компании
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": "Контроллер"
}
]
| id required | string Example: ID компании |
Получение списка пользователей, доступных для добавления в компанию
Параметры:
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"
}
]
}
| id required | string Example: ID компании |
| search | string Example: search= текст для поиска |
| offset | string Example: offset= индекс первого элемента в странице |
| count | string Example: count= количество в странице |
Добавление существующих доступных пользователей в компанию
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 или ошибка
| id required | string Example: ID компании |
object | |
Array of objects |
{- "role": {
- "key": "ADMIN",
- "value": "Администратор"
}, - "users": [
- {
- "id": "8d33f780-3923-463f-ab5c-500edca4219a"
}, - {
- "id": "edbb2a66-4847-4a80-a3c4-f76907ac31d5"
}
]
}Добавление существующих доступных пользователей в компанию
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 или ошибка
| id required | string Example: ID компании |
| ids | string Example: ids= ID пользователя |
object | |
Array of objects |
{- "role": {
- "key": "ADMIN",
- "value": "Администратор"
}, - "users": [
- {
- "id": "8d33f780-3923-463f-ab5c-500edca4219a"
}, - {
- "id": "edbb2a66-4847-4a80-a3c4-f76907ac31d5"
}
]
}Получение настройки для компании
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"
}
]
}
}
]
}
| id required | string Example: ID компании |
Обновление настроек компании
Параметр запроса:
id - ID компании
Тело запроса JSON:
track_gradation - цветовая градация трека
styles - массив стилей
max - максимальное значение скоорости
hex_color - шестнадцатеричный Код Цвета
monitoring_sensors_settings - настройка датчиков для мониторинга
name - название, строка
sensor_name_mask - маска датчика, строка
icon - ключ для иконки, строка
gradation - цветовая градация, такая же структура, как в track_gradation
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"
}
]
}
}
]
}
| id required | string Example: ID компании |
object |
{- "track_gradation": {
- "styles": [
- {
- "hex_color": "#51AAEB",
- "max": 41
}, - {
- "hex_color": "#623F73",
- "max": 80
}, - {
- "hex_color": "#E37A3A",
- "max": 120
}, - {
- "hex_color": "#DD1E1E",
- "max": null
}
]
}
}Обновление настроек компании
Параметр запроса:
id - ID компании, из которой необходимо скопировать свойства
Тело запроса JSON:
companies - список компаний, на которые копируются свойств, см. пример
properties - список свойств, которые копируются
возможные значения:
available_maps - Доступные карты
track_gradation - Цвет трека
monitoring_sensors_settings - Цветные индикаторы датчиков в мониторинге
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 или ошибка
Роль: Администратор и выше.
| id required | string Example: |
Array of objects | |
| properties | Array of strings |
{- "companies": [
- {
- "id": "42ee050a-f6f7-40c0-a8d8-1656e787dc0b"
}, - {
- "id": "c968398b-be00-4b4a-9e2c-7d7bdc0d43ad"
}
], - "properties": [
- "available_maps",
- "monitoring_sensors_settings",
- "track_gradation"
]
}geozones/custom_types
string Example: |
| company_id | string |
| name | string |
object |
{- "company_id": "11111111-1111-1111-1111-111111111111",
- "name": "test",
- "photo": {
- "original": {
- "height": 3456,
- "param_type": "geozones",
- "url": "/photos/geozones/0559a281-5f03-4f36-8871-2a18daa16f56_original.jpeg",
- "width": 5184
}, - "small": {
- "height": 200,
- "param_type": "geozones",
- "url": "/photos/geozones/0559a281-5f03-4f36-8871-2a18daa16f56_300.jpeg",
- "width": 300
}
}
}Получение геозон
Возвращает массив всех геозон.
Ответ:
Если запрашивается по одному 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
}"
| ids | string Example: ids= |
Создание геозоны
Добавляет новую геозону, присваивая 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. Пустые поля не возвращаются.
object | |
Array of objects | |
| geometry | Array of numbers[ items ] |
object | |
| name | string |
object | |
| width | number |
{- "color": {
- "key": "#E68A2F"
}, - "companies": [
- {
- "id": "3e70f167-9fad-4753-bccf-d7d47c2c648c"
}, - {
- "id": "42ee050a-f6f7-40c0-a8d8-1656e787dc0b"
}
], - "geometry": [
- [
- 33.1,
- 55.2
]
], - "icon": {
- "key": "hospital"
}, - "name": "POI_Z",
- "type": {
- "key": "circle"
}, - "width": 20777
}Получение геозон для отображения на карте в виде 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"
}
}
]
}
Обновление данных геозоны
Обновляет переданные параметры
Параметры:
См метод POST /geozones
Роль: Редактор и выше.
Ответ:
Аналогичен одному объекту из ответа метода GET /geozeons
| id required | string Example: ID геозоны |
object | |
| geometry | Array of numbers[ items ] |
object | |
| id | string |
| name | string |
object | |
| width | number |
{- "color": {
- "key": "#E68A2F",
- "type": "color_code",
- "value": "Оранжевый"
}, - "geometry": [
- [
- 33.1,
- 55.2
]
], - "icon": {
- "key": "hospital",
- "type": "geo_icon",
- "value": "Больница"
}, - "id": "31bb27f2-c937-4a91-8a95-e65515957411",
- "name": "POI",
- "type": {
- "key": "point",
- "type": "geozone_type",
- "value": "Точка 2"
}, - "width": 1777
}Удаление геозоны по ее id
Параметры:
id геозоны
Роль: Редактор и выше.
Ответ:
200 и удаленная геозона
Если геозона с таким id не найдена, то возвращается ошибка 400
{
"code": 4000,
"field": "id",
"message": "Недопустимый параметр"
}
| id required | string Example: ID геозоны |
Удаление геозоны по ее id во всех компаниях в админке
Параметры:
id геозоны
Ответ:
200 и удаленная геозона.
Если геозона с таким id не найдена, то возвращается ошибка 400.
{
"code": 4000,
"field": "id",
"message": "Недопустимый параметр"
}
| id required | string Example: ID геозоны |
Получение геозоны по фильтру
Аналогична запросу 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":"Больница"}
},
]
}
Array of objects | |
| count | number |
| from | number |
| sortDesc | string |
| sortField | string |
{- "conditions": [
- {
- "field": "type.key",
- "value": "point"
}
], - "count": 1,
- "from": 0,
- "sortDesc": "false",
- "sortField": "name"
}Генерация координат для линии
Параметры:
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
]
]
}
| geometry | Array of numbers[ items ] |
| width | number |
{- "geometry": [
- [
- 54.6977009532508,
- 37.35351562500001
], - [
- 54.53663764197375,
- 37.40158081054688
], - [
- 54.61405984802798,
- 37.69821166992188
], - [
- 54.67780208930051,
- 37.54714965820313
], - [
- 54.76210597936696,
- 37.62954711914063
], - [
- 54.69372196444214,
- 37.69683837890626
]
], - "width": 10
}В теле запроса укажите требуемые геозоны в 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 файл
Array of objects |
{- "geozones": [
- {
- "id": "0ca9f774-69fb-4a56-99ae-177f766fc291"
}, - {
- "id": "8b13e5d3-898a-4463-8f84-0046fc15f323"
}, - {
- "id": "d507e1ee-3e73-4ee6-a74a-3d1f6b8cbe89"
}
]
}geozones/custom_types
string Example: |
| company_id | string |
| name | string |
object |
{- "company_id": "11111111-1111-1111-1111-111111111111",
- "name": "test",
- "photo": {
- "original": {
- "height": 3456,
- "param_type": "geozones",
- "url": "/photos/geozones/0559a281-5f03-4f36-8871-2a18daa16f56_original.jpeg",
- "width": 5184
}, - "small": {
- "height": 200,
- "param_type": "geozones",
- "url": "/photos/geozones/0559a281-5f03-4f36-8871-2a18daa16f56_300.jpeg",
- "width": 300
}
}
}Cоздание групп геозон
В body необходимо указать id геозоны, которая будет в группе и ее имя.
{
"name": "geozoneName",
"geozones" : [
{
"id" : "geozoneId1"
},
{
"id" : "geozoneId2"
}
]
}
Роль: Редактор и выше.
Array of objects | |
| name | string |
{- "geozones": [
- {
- "id": "geozoneId1"
}, - {
- "id": "geozoneId2"
}
], - "name": "geozoneName"
}Получение списка групп геозон
Поля:
В fields указать нужные поля.
{"fields":["geozones.id", "geozones.name"]}
Ответ:
geozones.id - Id группы.
geozones.name - имя группы.
string Example: |
| fields | Array of strings |
{- "fields": [
- "geozones.id",
- "geozones.name"
]
}Обновление группы геозон
Запрос:
https://dev5.skif.pro/api_v1/geozonesgroup/geozonesgroup_id
{
"name": "testGroupGezone",
"geozones": [
{
"id": "286e35d1-0d2e-481a-89b7-91755aabef54"
}
]
}
Роль: Редактор и выше.
Array of objects | |
| name | string |
{- "geozones": [
- {
- "id": "286e35d1-0d2e-481a-89b7-91755aabef54"
}
], - "name": "testGroupGezone"
}Получение маршрутов
Возвращает массив всех маршрутов.
Роль: Читатель и выше.
Ответ:
Если запрашивается по одному 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]
]
}
]
}"
| ids | string Example: ids= |
Создание маршрута
Добавляет новый маршрут, присваивая 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. Пустые поля не возвращаются.
| name | string |
Array of objects |
{- "name": "RouteName",
- "points": [
- {
- "coordinates": [
- [
- 37.608734,
- 55.793154
], - [
- 37.54133,
- 55.772056
], - [
- 37.598908,
- 55.808941
]
], - "name": "point1",
- "type": {
- "key": "polygon"
}, - "width": 20
}
]
}Обновление данных маршрута
Обновляет переданные параметры
Параметры:
см метод POST /routes
Роль: Редактор и выше.
Ответ:
Аналогичен одному объекту из ответа метода GET /routes
| id required | string Example: ID маршрута |
| company_id | string |
| id | string |
| name | string |
Array of objects |
{- "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
- "id": "0d2c5867-301f-468a-aa15-1095f95cc697",
- "name": "RouteName",
- "points": [
- {
- "coordinates": [
- [
- 37.608734,
- 55.793154
], - [
- 37.54133,
- 55.772056
], - [
- 37.598908,
- 55.808941
]
], - "name": "point1",
- "type": {
- "key": "polygon",
- "type": null,
- "value": null
}, - "width": 20
}
]
}Удаление маршрута по его id
Удаляет маршрут
Параметры:
id маршрута
Роль: Редактор и выше.
Ответ:
200 Удаленный маршрут
Если маршрут с таким id не найден, то возвращается ошибка 422
{
"code": 422,
"field": "id",
"message": "Параметр не найден в базе"
}
| id required | string Example: ID маршрута |
Получение маршрутов по фильтру
Аналогично запросу 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]]
}
]
]
}
| Cookie | string Example: Cookie=supportOnlineTalkID=pNsLIBxAUhElFv6zdsJ1FAqG1IVcDhXT; PLAY_SESSION={{vault:json-web-token}} |
Array of objects | |
| count | number |
| from | number |
| sortDesc | string |
| sortField | string |
{- "conditions": [
- {
- "field": "name",
- "value": "RouteName"
}
], - "count": 1,
- "from": 0,
- "sortDesc": "false",
- "sortField": "name"
}Получить рейсы
Возвращает массив всех рейсов.
Роль: Читатель и выше.
Ответ:
Если запрашивается по одному 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
}
}
]
}
| ids | string Example: ids= |
Создание рейса
Добавляет новый рейс, присваивая 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. Пустые поля не возвращаются.
object | |
| dates | Array of strings |
| name | string |
object | |
Array of objects | |
object | |
object | |
| user_id | string |
| work_types | Array of strings |
{- "activation_type": {
- "key": "leaving_first_point"
}, - "dates": [
- "2020-09-12",
- "2020-09-13 00:00",
- "2020-10-15 00:00:00"
], - "name": "A trip with 3 points",
- "passage_order_type": {
- "key": "strict"
}, - "points": [
- {
- "coordinates": [
- [
- 37.442505,
- 55.750298
], - [
- 37.421736,
- 55.750956
], - [
- 37.422764,
- 55.750934
]
], - "departure": {
- "after_days": 0,
- "deviation_minutes": 10,
- "time": "08:00"
}, - "name": "point11",
- "type": {
- "key": "polygon",
- "type": "geozone_type",
- "value": "Полигон"
}
}, - {
- "arrival": {
- "after_days": 1,
- "deviation_minutes": 10,
- "time": "07:00"
}, - "coordinates": [
- [
- 37.492764,
- 55.770934
]
], - "departure": {
- "after_days": 2,
- "deviation_minutes": 15,
- "time": "06:00"
}, - "name": "point22",
- "type": {
- "key": "circle"
}
}, - {
- "arrival": {
- "after_days": 2,
- "deviation_minutes": 10,
- "time": "22:00"
}, - "coordinates": [
- [
- 37.442505,
- 55.750298
], - [
- 37.421736,
- 55.750956
], - [
- 37.422764,
- 55.750934
]
], - "name": "point33",
- "type": {
- "key": "polygon"
}
}
], - "trailer": {
- "id": "4e00d717-fa03-4209-8771-a6ff71a4f65d"
}, - "unit": {
- "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}, - "user_id": "e8c262f8-942b-4c61-bb25-825d886e627a",
- "work_types": [
- "work1",
- "work2"
]
}Обновление данных рейса
Обновляет переданные параметры
Роль: Редактор и выше.
Параметры:
см метод POST /trips
Ответ:
Аналогичен одному объекту из ответа метода GET /trips
| id required | string Example: ID рейса |
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 |
{- "activation_type": {
- "key": "leaving_first_point",
- "type": "trip_activation_type",
- "value": "По выходу из первой точки"
}, - "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
- "dates": [
- "2020-09-12 00:00:00",
- "2020-09-13 00:00:00",
- "2020-10-15 00:00:00"
], - "id": "db91e93d-202d-4cca-9bc9-883e237ff532",
- "name": "New new for trip",
- "passage_order_type": {
- "key": "strict",
- "type": "trip_passage_order_type",
- "value": "Строгий"
}, - "points": [
- {
- "coordinates": [
- [
- 37.442505,
- 55.750298
], - [
- 37.421736,
- 55.750956
], - [
- 37.422764,
- 55.750934
]
], - "departure": {
- "after_days": 0,
- "deviation_minutes": 10,
- "time": "08:00"
}, - "name": "point11",
- "type": {
- "key": "polygon",
- "type": "geozone_type",
- "value": "Полигон"
}
}, - {
- "arrival": {
- "after_days": 1,
- "deviation_minutes": 10,
- "time": "07:00"
}, - "coordinates": [
- [
- 37.492764,
- 55.770934
]
], - "departure": {
- "after_days": 2,
- "deviation_minutes": 15,
- "time": "06:00"
}, - "name": "point22",
- "type": {
- "key": "circle",
- "type": null,
- "value": null
}
}, - {
- "arrival": {
- "after_days": 2,
- "deviation_minutes": 10,
- "time": "22:00"
}, - "coordinates": [
- [
- 37.442505,
- 55.750298
], - [
- 37.421736,
- 55.750956
], - [
- 37.422764,
- 55.750934
]
], - "name": "point33",
- "type": {
- "key": "polygon",
- "type": null,
- "value": null
}
}
], - "unit": {
- "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}, - "user_id": "e8c262f8-942b-4c61-bb25-825d886e627a",
- "work_types": [
- "work1",
- "work2"
]
}Удаление рейса по его ID
Параметры:
id рейса
Роль: Редактор и выше.
Ответ:
200 Удаленный рейс
Если рейс с таким id не найден возвращается ошибка 422
{
"code": 422,
"field": "id",
"message": "Параметр не найден в базе"
}
| id required | string Example: ID рейса |
Получение рейсов по фильтру
Аналогично запросу 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
}
}
]
}
]
}
Array of objects | |
| sortField | string |
{- "conditions": [
- {
- "field": "activation_type.key",
- "value": "leaving_first_point"
}, - {
- "field": "passage_order_type.key",
- "value": "strict"
}
], - "sortField": "name"
}Поиск объектов по 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}
]
}
]
| ids | string Example: ids= |
Создание объекта
Параметры:
"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
}]
}]
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 |
{- "custom_fields": [
- {
- "group": "cf_custom",
- "key": "S-2551",
- "name": "S-2551",
- "sort": 0,
- "value": "#31"
}, - {
- "group": "cf_trips",
- "key": "tripdetector_minparktime",
- "name": "Мин. время стоянки (сек)",
- "sort": 1,
- "value": "600"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minfilling",
- "name": "Мин. объем заправки",
- "sort": 1,
- "value": "20"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_summerconsump",
- "name": "Расход летом (л/100км.)",
- "sort": 1,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "analyst",
- "name": "Аналитик",
- "sort": 1,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "advanced_mileagecoeff",
- "name": "Коэф. пробега",
- "sort": 2,
- "value": "1.0"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_msgignorestart",
- "name": "Игнор-ть сообщ-я после начала движения",
- "sort": 2,
- "value": "60"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterconsump",
- "name": "Расход зимой (л/100км.)",
- "sort": 2,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "installer",
- "name": "Установщик",
- "sort": 2,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_minmovespeed",
- "name": "Мин. скорость движ-я (км/ч)",
- "sort": 3,
- "value": "1"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minstaytheft",
- "name": "Мин. время остановки для опр-ия слива",
- "sort": 3,
- "value": "60"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_idlingsummer",
- "name": "На холостом ходу летом (л./час.)",
- "sort": 3,
- "value": "0"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minitheft",
- "name": "Мин. объем слива",
- "sort": 4,
- "value": "25"
}, - {
- "group": "cf_etc",
- "key": "install_date",
- "name": "Дата установки",
- "sort": 4,
- "value": "16.07.2019"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_idlingwinter",
- "name": "На холостом ходу зимой (л./час.)",
- "sort": 4,
- "value": "0"
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mintripdist",
- "name": "Мин. расст-ие поездки (м)",
- "sort": 4,
- "value": "100"
}, - {
- "group": "cf_trips",
- "key": "advanced_maxintervalmsg",
- "name": "Макс. интервал между сообщ-ми (сек)",
- "sort": 5,
- "value": "3600"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_coeffunderload",
- "name": "Коэф. при движении под нагрузкой",
- "sort": 5,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "install_place",
- "name": "Место установки в ТС",
- "sort": 5,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_maxdistancemsg",
- "name": "Макс. расст-ие между сообщ-ми (м)",
- "sort": 6,
- "value": "1000"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterfrom",
- "name": "Первый месяц зимы (январь-1)",
- "sort": 6,
- "value": "11"
}, - {
- "group": "cf_etc",
- "key": "serial_number",
- "name": "Серийный номер терминала",
- "sort": 6,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mintriptime",
- "name": "Мин. время поездки (сек)",
- "sort": 7,
- "value": "300"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterto",
- "name": "Последний месяц зимы (январь-1)",
- "sort": 7,
- "value": "3"
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut",
- "name": "Серийный номер ДУТ",
- "sort": 7,
- "value": ""
}, - {
- "group": "cf_fuel",
- "key": "fuel_price",
- "name": "Стоимость (1 л.)",
- "sort": 8,
- "value": "45"
}, - {
- "group": "cf_trips",
- "key": "key_tripdetector_movedetect",
- "name": "Опр-ие движ-я",
- "sort": 8,
- "value": "speedkph"
}, - {
- "group": "cf_etc",
- "key": "dut_seal_serial_number",
- "name": "Серийный номер пломбы ДУТ",
- "sort": 8,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mileagedetect",
- "name": "Определение пробега",
- "sort": 9,
- "value": "mileage_GPS"
}, - {
- "group": "cf_etc",
- "key": "license_plate_number",
- "name": "Гос номер",
- "sort": 9,
- "value": ""
}, - {
- "group": "cf_motohours",
- "key": "key_motohourdetector",
- "name": "Определение моточасов",
- "sort": 10,
- "value": "ignition"
}, - {
- "group": "cf_etc",
- "key": "hours_rate",
- "name": "Норма часов в день",
- "sort": 10,
- "value": "8"
}, - {
- "group": "cf_etc",
- "key": "block_date",
- "name": "Дата блокировки(yyyy-MM-dd)",
- "sort": 11,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "kp",
- "name": "КП",
- "sort": 12,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "dut",
- "name": "ДУТ",
- "sort": 13,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "second_sim",
- "name": "Вторая sim",
- "sort": 14,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut_1",
- "name": "Серийный номер ДУТ 1",
- "sort": 15,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut_2",
- "name": "Серийный номер ДУТ 2",
- "sort": 16,
- "value": ""
}, - {
- "group": "cf_hidden",
- "key": "counters_mileagekey",
- "name": "translate.custom_fields.name.counters_mileagekey",
- "sort": 1000,
- "value": "gps_mileage"
}, - {
- "group": "cf_hidden",
- "key": "counters_mileagecurr",
- "name": "translate.custom_fields.name.counters_mileagecurr",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "counters_mileageauto",
- "name": "translate.custom_fields.name.counters_mileageauto",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "counters_engienecurr",
- "name": "translate.custom_fields.name.counters_engienecurr",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "counters_gprscurr",
- "name": "translate.custom_fields.name.counters_gprscurr",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "counters_gprsauto",
- "name": "translate.custom_fields.name.counters_gprsauto",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "advanced_speedlimit",
- "name": "translate.custom_fields.name.advanced_speedlimit",
- "sort": 1000,
- "value": "130"
}, - {
- "group": "cf_hidden",
- "key": "advanced_urbspeedlimit",
- "name": "translate.custom_fields.name.advanced_urbspeedlimit",
- "sort": 1000,
- "value": "60"
}, - {
- "group": "cf_hidden",
- "key": "advanced_dailyengine",
- "name": "translate.custom_fields.name.advanced_dailyengine",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_movedetectkey",
- "name": "translate.custom_fields.name.tripdetector_movedetectkey",
- "sort": 1000,
- "value": "speed"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_gpscorrect",
- "name": "translate.custom_fields.name.tripdetector_gpscorrect",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_minsatellites",
- "name": "translate.custom_fields.name.tripdetector_minsatellites",
- "sort": 1000,
- "value": "3"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_mintipdist",
- "name": "translate.custom_fields.name.tripdetector_mintipdist",
- "sort": 1000,
- "value": "100"
}, - {
- "group": "cf_hidden",
- "key": "fuel_fillings_fillingstop",
- "name": "translate.custom_fields.name.fuel_fillings_fillingstop",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_fillings_ignorefiltration",
- "name": "translate.custom_fields.name.fuel_fillings_ignorefiltration",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_mergenameslevel",
- "name": "translate.custom_fields.name.fuel_sensors_mergenameslevel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_mergenamesconsum",
- "name": "translate.custom_fields.name.fuel_sensors_mergenamesconsum",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_timelevel",
- "name": "translate.custom_fields.name.fuel_sensors_timelevel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_filtervalues",
- "name": "translate.custom_fields.name.fuel_sensors_filtervalues",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_math_idling",
- "name": "translate.custom_fields.name.fuel_math_idling",
- "sort": 1000,
- "value": "2"
}, - {
- "group": "cf_hidden",
- "key": "fuel_math_urbcycle",
- "name": "translate.custom_fields.name.fuel_math_urbcycle",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "fuel_math_suburbcycle",
- "name": "translate.custom_fields.name.fuel_math_suburbcycle",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_levelsensors",
- "name": "translate.custom_fields.name.fuel_level_levelsensors",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_repivalid",
- "name": "translate.custom_fields.name.fuel_level_repivalid",
- "sort": 1000,
- "value": "true"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_impulsefuel",
- "name": "translate.custom_fields.name.fuel_level_impulsefuel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_maximpulse",
- "name": "translate.custom_fields.name.fuel_level_maximpulse",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_skipfirstzero",
- "name": "translate.custom_fields.name.fuel_level_skipfirstzero",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_absolutefuel",
- "name": "translate.custom_fields.name.fuel_level_absolutefuel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_instantfuel",
- "name": "translate.custom_fields.name.fuel_level_instantfuel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_diagnostic",
- "key": "battery_charge_level_diagnostic",
- "name": "translate.custom_fields.name.battery_charge_level_diagnostic",
- "sort": 1,
- "value": "diagnostic_ten_min"
}
], - "drivers": [
- {
- "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",
- "user": {
- "id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
}
}
], - "icon": {
- "key": "excavator_green",
- "type": "unit_icon",
- "value": "Иконка"
}, - "imei": "12345",
- "name": "Hitachi XXXX",
- "phonenumber": "+71232131231",
- "phonenumber2": "+21312123231",
- "sensors": [
- {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "ДУТ-1",
- "param1": {
- "calibrationABlist": [
- {
- "a": 0.087,
- "b": 0,
- "fromValue": 0
}, - {
- "a": 0.0282,
- "b": 6.7606,
- "fromValue": 115
}, - {
- "a": 0.0312,
- "b": 5.3583,
- "fromValue": 470
}, - {
- "a": 0.0332,
- "b": 3.7209,
- "fromValue": 791
}, - {
- "a": 0.0383,
- "b": -1.8391,
- "fromValue": 1092
}, - {
- "a": 0.0394,
- "b": -3.2677,
- "fromValue": 1353
}, - {
- "a": 0.0413,
- "b": -6.405,
- "fromValue": 1607
}, - {
- "a": 0.0412,
- "b": -6.0905,
- "fromValue": 1849
}, - {
- "a": 0.0403,
- "b": -4.3548,
- "fromValue": 2092
}, - {
- "a": 0.0403,
- "b": -4.3548,
- "fromValue": 2216
}, - {
- "a": 0.042,
- "b": -8.3193,
- "fromValue": 2340
}, - {
- "a": 0.0403,
- "b": -4.1532,
- "fromValue": 2459
}, - {
- "a": 0.0389,
- "b": -0.5058,
- "fromValue": 2583
}, - {
- "a": 0.045,
- "b": -17.9279,
- "fromValue": 2840
}, - {
- "a": 0.0398,
- "b": -1.992,
- "fromValue": 3062
}, - {
- "a": 0.0405,
- "b": -4.1295,
- "fromValue": 3313
}, - {
- "a": 0.0426,
- "b": -11.4893,
- "fromValue": 3560
}, - {
- "a": 0.0625,
- "b": -90.9375,
- "fromValue": 3983
}, - {
- "a": 0.0625,
- "b": -90.9375,
- "fromValue": 4095
}
], - "calibrationXYlist": [
- {
- "x": 0,
- "y": 0
}, - {
- "x": 115,
- "y": 10
}, - {
- "x": 470,
- "y": 20
}, - {
- "x": 791,
- "y": 30
}, - {
- "x": 1092,
- "y": 40
}, - {
- "x": 1353,
- "y": 50
}, - {
- "x": 1607,
- "y": 60
}, - {
- "x": 1849,
- "y": 70
}, - {
- "x": 2092,
- "y": 80
}, - {
- "x": 2216,
- "y": 85
}, - {
- "x": 2340,
- "y": 90
}, - {
- "x": 2459,
- "y": 95
}, - {
- "x": 2583,
- "y": 100
}, - {
- "x": 2840,
- "y": 110
}, - {
- "x": 3062,
- "y": 120
}, - {
- "x": 3313,
- "y": 130
}, - {
- "x": 3560,
- "y": 140
}, - {
- "x": 3983,
- "y": 158
}, - {
- "x": 4095,
- "y": 165
}
], - "max_valid": 4096,
- "min_valid": 1,
- "param_key": "dut_485_1",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "fuelsensor",
- "type": "sensor_type",
- "value": "Датчик топлива"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "Зажигание",
- "param1": {
- "calibrationABlist": [
- {
- "a": 0,
- "b": 1,
- "fromValue": 26500
}
], - "calibrationXYlist": [
- {
- "x": 26500,
- "y": 1
}
], - "param_key": "voltage_main",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "ignition",
- "type": "sensor_type",
- "value": "Датчик зажигания"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "Пробег",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "mileage_cur",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "mileage",
- "type": "sensor_type",
- "value": "Датчик пробега"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "Напряжение [mV]",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "voltage_main",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "power",
- "type": "sensor_type",
- "value": "Датчик напряжения"
}
}
], - "services": [ ],
- "terminal_type": {
- "key": "navtelecom",
- "type": "terminal_type",
- "value": "Navtelecom"
}, - "trailers": [
- {
- "date_from": "2022-10-03 00:00:00",
- "date_to": "2022-10-04 00:00:00",
- "trailer": {
- "id": "fcaf9265-5a5b-4d35-8b00-ee146b8dc8f6"
}
}, - {
- "date_from": "2022-10-05 00:00:00",
- "date_to": "2022-10-10 00:00:00",
- "trailer": {
- "id": "d0bc0903-702b-4d96-826a-e26860681356"
}
}
], - "type": {
- "key": "special_equipment",
- "type": "unit_type",
- "value": "Спецтехника"
}
}Планирование удаления объектов
Планирование удаления нескольких объектов, в ids указать список идентификаторов удаляемых объектов.
Роль: Редактор и выше.
Пример запроса:
DELETE /units?ids=eece8fbc-0bad-4a2d-ac24-62573860dda0,fd848416-bf81-4a92-9c01-922b2da4dd5a
Пример ответа:
В случае успеха - ответ '200', в теле ответа ID задачи удаления, с помощью которого можно отменить удаление.
В случае ошибки - ответ 422, в теле текст ошибки.
{
"id": "ace239ee-b7ab-42ee-9d57-d749a23987c6"
}
| ids | string Example: ids= |
| ids | Array of strings |
{- "ids": [
- "30d19f34-2f60-406c-897f-2083ba44e993"
]
}Обновление объекта
Дерево объекта должно быть полным (с обновленными полями). Поля, которые будут отсутствовать в запросе, затрутся на null.
Роль: Редактор и выше.
Ответ:
Тот же, что и при GET /units - возвращает обновленное дерево объекта.
| unit_id required | string Example: ID объекта |
| 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 |
{- "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
- "custom_fields": [
- {
- "group": "cf_custom",
- "key": "S-2551",
- "name": "S-2551",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "#31"
}, - {
- "group": "cf_custom",
- "key": "counters_mileagekey",
- "name": "translate.custom_fields.name.counters_mileagekey",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "gps_mileage"
}, - {
- "group": "cf_custom",
- "key": "counters_mileagecurr",
- "name": "translate.custom_fields.name.counters_mileagecurr",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "0"
}, - {
- "group": "cf_custom",
- "key": "counters_mileageauto",
- "name": "translate.custom_fields.name.counters_mileageauto",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "counters_engienecurr",
- "name": "translate.custom_fields.name.counters_engienecurr",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "0"
}, - {
- "group": "cf_custom",
- "key": "counters_gprscurr",
- "name": "translate.custom_fields.name.counters_gprscurr",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "0"
}, - {
- "group": "cf_custom",
- "key": "counters_gprsauto",
- "name": "translate.custom_fields.name.counters_gprsauto",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "advanced_speedlimit",
- "name": "translate.custom_fields.name.advanced_speedlimit",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "130"
}, - {
- "group": "cf_custom",
- "key": "advanced_urbspeedlimit",
- "name": "translate.custom_fields.name.advanced_urbspeedlimit",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "60"
}, - {
- "group": "cf_custom",
- "key": "advanced_dailyengine",
- "name": "translate.custom_fields.name.advanced_dailyengine",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "0"
}, - {
- "group": "cf_custom",
- "key": "tripdetector_movedetectkey",
- "name": "translate.custom_fields.name.tripdetector_movedetectkey",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "speed"
}, - {
- "group": "cf_custom",
- "key": "tripdetector_gpscorrect",
- "name": "translate.custom_fields.name.tripdetector_gpscorrect",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "tripdetector_minsatellites",
- "name": "translate.custom_fields.name.tripdetector_minsatellites",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "3"
}, - {
- "group": "cf_custom",
- "key": "tripdetector_mintipdist",
- "name": "translate.custom_fields.name.tripdetector_mintipdist",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "100"
}, - {
- "group": "cf_custom",
- "key": "fuel_fillings_fillingstop",
- "name": "translate.custom_fields.name.fuel_fillings_fillingstop",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_fillings_ignorefiltration",
- "name": "translate.custom_fields.name.fuel_fillings_ignorefiltration",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_sensors_mergenameslevel",
- "name": "translate.custom_fields.name.fuel_sensors_mergenameslevel",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_sensors_mergenamesconsum",
- "name": "translate.custom_fields.name.fuel_sensors_mergenamesconsum",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_sensors_timelevel",
- "name": "translate.custom_fields.name.fuel_sensors_timelevel",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_sensors_filtervalues",
- "name": "translate.custom_fields.name.fuel_sensors_filtervalues",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_math_idling",
- "name": "translate.custom_fields.name.fuel_math_idling",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "2"
}, - {
- "group": "cf_custom",
- "key": "fuel_math_urbcycle",
- "name": "translate.custom_fields.name.fuel_math_urbcycle",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "0"
}, - {
- "group": "cf_custom",
- "key": "fuel_math_suburbcycle",
- "name": "translate.custom_fields.name.fuel_math_suburbcycle",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "0"
}, - {
- "group": "cf_custom",
- "key": "fuel_level_levelsensors",
- "name": "translate.custom_fields.name.fuel_level_levelsensors",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_level_repivalid",
- "name": "translate.custom_fields.name.fuel_level_repivalid",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "true"
}, - {
- "group": "cf_custom",
- "key": "fuel_level_impulsefuel",
- "name": "translate.custom_fields.name.fuel_level_impulsefuel",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_level_maximpulse",
- "name": "translate.custom_fields.name.fuel_level_maximpulse",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "0"
}, - {
- "group": "cf_custom",
- "key": "fuel_level_skipfirstzero",
- "name": "translate.custom_fields.name.fuel_level_skipfirstzero",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_level_absolutefuel",
- "name": "translate.custom_fields.name.fuel_level_absolutefuel",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_custom",
- "key": "fuel_level_instantfuel",
- "name": "translate.custom_fields.name.fuel_level_instantfuel",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "false"
}, - {
- "group": "cf_trips",
- "key": "tripdetector_minparktime",
- "name": "Мин. время стоянки (сек)",
- "show_in_monitoring": false,
- "sort": 1,
- "value": "600"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minfilling",
- "name": "Мин. объем заправки",
- "show_in_monitoring": false,
- "sort": 1,
- "value": "20"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_summerconsump",
- "name": "Расход летом (л/100км.)",
- "show_in_monitoring": false,
- "sort": 1,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "analyst",
- "name": "Аналитик",
- "show_in_monitoring": false,
- "sort": 1,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "advanced_mileagecoeff",
- "name": "Коэф. пробега",
- "show_in_monitoring": false,
- "sort": 2,
- "value": "1.0"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_msgignorestart",
- "name": "Игнор-ть сообщ-я после начала движения",
- "show_in_monitoring": false,
- "sort": 2,
- "value": "60"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterconsump",
- "name": "Расход зимой (л/100км.)",
- "show_in_monitoring": false,
- "sort": 2,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "installer",
- "name": "Установщик",
- "show_in_monitoring": false,
- "sort": 2,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_minmovespeed",
- "name": "Мин. скорость движ-я (км/ч)",
- "show_in_monitoring": false,
- "sort": 3,
- "value": "1"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minstaytheft",
- "name": "Мин. время остановки для опр-ия слива",
- "show_in_monitoring": false,
- "sort": 3,
- "value": "60"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_idlingsummer",
- "name": "На холостом ходу летом (л./час.)",
- "show_in_monitoring": false,
- "sort": 3,
- "value": "0"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minitheft",
- "name": "Мин. объем слива",
- "show_in_monitoring": false,
- "sort": 4,
- "value": "25"
}, - {
- "group": "cf_etc",
- "key": "install_date",
- "name": "Дата установки(формат год-месяц-день, например 2019-03-07)",
- "show_in_monitoring": false,
- "sort": 4,
- "value": "16.07.2019"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_idlingwinter",
- "name": "На холостом ходу зимой (л./час.)",
- "show_in_monitoring": false,
- "sort": 4,
- "value": "0"
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mintripdist",
- "name": "Мин. расст-ие поездки (м)",
- "show_in_monitoring": false,
- "sort": 4,
- "value": "100"
}, - {
- "group": "cf_trips",
- "key": "advanced_maxintervalmsg",
- "name": "Макс. интервал между сообщ-ми (сек)",
- "show_in_monitoring": false,
- "sort": 5,
- "value": "3600"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_coeffunderload",
- "name": "Коэф. при движении под нагрузкой",
- "show_in_monitoring": false,
- "sort": 5,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "install_place",
- "name": "Место установки в ТС",
- "show_in_monitoring": false,
- "sort": 5,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_maxdistancemsg",
- "name": "Макс. расст-ие между сообщ-ми (м)",
- "show_in_monitoring": false,
- "sort": 6,
- "value": "1000"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterfrom",
- "name": "Первый месяц зимы (январь-1)",
- "show_in_monitoring": false,
- "sort": 6,
- "value": "11"
}, - {
- "group": "cf_etc",
- "key": "serial_number",
- "name": "Серийный номер терминала",
- "show_in_monitoring": false,
- "sort": 6,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mintriptime",
- "name": "Мин. время поездки (сек)",
- "show_in_monitoring": false,
- "sort": 7,
- "value": "300"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterto",
- "name": "Последний месяц зимы (январь-1)",
- "show_in_monitoring": false,
- "sort": 7,
- "value": "3"
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut",
- "name": "Серийный номер ДУТ",
- "show_in_monitoring": false,
- "sort": 7,
- "value": ""
}, - {
- "group": "cf_fuel",
- "key": "fuel_price",
- "name": "Стоимость (1 л.)",
- "show_in_monitoring": false,
- "sort": 8,
- "value": "45"
}, - {
- "group": "cf_trips",
- "key": "key_tripdetector_movedetect",
- "name": "Опр-ие движ-я",
- "show_in_monitoring": false,
- "sort": 8,
- "value": "speedkph"
}, - {
- "group": "cf_etc",
- "key": "dut_seal_serial_number",
- "name": "Серийный номер пломбы ДУТ",
- "show_in_monitoring": false,
- "sort": 8,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mileagedetect",
- "name": "Определение пробега",
- "show_in_monitoring": false,
- "sort": 9,
- "value": "mileage_GPS"
}, - {
- "group": "cf_etc",
- "key": "license_plate_number",
- "name": "Гос номер",
- "show_in_monitoring": false,
- "sort": 9,
- "value": ""
}, - {
- "group": "cf_motohours",
- "key": "key_motohourdetector",
- "name": "Определение моточасов",
- "show_in_monitoring": false,
- "sort": 10,
- "value": "ignition"
}, - {
- "group": "cf_etc",
- "key": "hours_rate",
- "name": "Норма часов в день",
- "show_in_monitoring": false,
- "sort": 10,
- "value": "8"
}, - {
- "group": "cf_etc",
- "key": "block_date",
- "name": "Дата блокировки(формат год-месяц-день, например 2019-03-07)",
- "show_in_monitoring": false,
- "sort": 11,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "kp",
- "name": "КП",
- "show_in_monitoring": false,
- "sort": 12,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "dut",
- "name": "ДУТ",
- "show_in_monitoring": false,
- "sort": 13,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "second_sim",
- "name": "Вторая sim",
- "show_in_monitoring": false,
- "sort": 14,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut_1",
- "name": "Серийный номер ДУТ 1",
- "show_in_monitoring": false,
- "sort": 15,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut_2",
- "name": "Серийный номер ДУТ 2",
- "show_in_monitoring": false,
- "sort": 16,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "brand_name",
- "name": "Марка машины",
- "show_in_monitoring": false,
- "sort": 17,
- "value": ""
}, - {
- "group": "cf_fuel",
- "key": "fuel_type",
- "name": "Вид топлива (бенз., д/т)",
- "show_in_monitoring": false,
- "sort": 18,
- "value": ""
}, - {
- "group": "cf_fuel",
- "key": "fuel_mark",
- "name": "Марка горючего",
- "show_in_monitoring": false,
- "sort": 19,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "brand_code",
- "name": "Код марки",
- "show_in_monitoring": false,
- "sort": 20,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "video_device_name",
- "name": "Видео устройство",
- "show_in_monitoring": false,
- "sort": 21,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "video_device_id",
- "name": "ID-видео устройства",
- "show_in_monitoring": false,
- "sort": 22,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "video_cameras",
- "name": "Камеры",
- "show_in_monitoring": false,
- "sort": 23,
- "value": ""
}
], - "drivers": [
- {
- "custom_fields": [ ],
- "date_from": "2022-10-03 03:00:00",
- "date_to": "2022-10-04 03:00:00",
- "id": "1e5e4b2e-8fc6-405f-bed4-db5742327d4b",
- "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b",
- "name": "Hitachi XXXX"
}, - "user": {
- "id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
}, - "user_id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
}, - {
- "custom_fields": [ ],
- "date_from": "2022-10-05 03:00:00",
- "date_to": "2022-10-10 03:00:00",
- "id": "292a5e8d-970c-4dd5-97fb-c436f4767adb",
- "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b",
- "name": "Hitachi XXXX"
}, - "user": {
- "id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
}, - "user_id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
}
], - "icon": {
- "key": "excavator_green",
- "type": "unit_icon",
- "value": "Иконка"
}, - "id": "1058bb08-618d-493e-95bd-862dfe36989b",
- "imei": "12121212",
- "name": "Hitachi XXXX",
- "phonenumber": "+71231231212",
- "phonenumber2": "+73453435343",
- "sensors": [
- {
- "formula": "S1",
- "hide_in_reports": false,
- "id": "3e40dece-4d43-42f9-a997-16a8352e5e6a",
- "invalid": false,
- "name": "ДУТ-1",
- "param1": {
- "calibrationABlist": [
- {
- "a": 0.087,
- "b": 0,
- "fromValue": 0
}, - {
- "a": 0.0282,
- "b": 6.7606,
- "fromValue": 115
}, - {
- "a": 0.0312,
- "b": 5.3583,
- "fromValue": 470
}, - {
- "a": 0.0332,
- "b": 3.7209,
- "fromValue": 791
}, - {
- "a": 0.0383,
- "b": -1.8391,
- "fromValue": 1092
}, - {
- "a": 0.0394,
- "b": -3.2677,
- "fromValue": 1353
}, - {
- "a": 0.0413,
- "b": -6.405,
- "fromValue": 1607
}, - {
- "a": 0.0412,
- "b": -6.0905,
- "fromValue": 1849
}, - {
- "a": 0.0403,
- "b": -4.3548,
- "fromValue": 2092
}, - {
- "a": 0.0403,
- "b": -4.3548,
- "fromValue": 2216
}, - {
- "a": 0.042,
- "b": -8.3193,
- "fromValue": 2340
}, - {
- "a": 0.0403,
- "b": -4.1532,
- "fromValue": 2459
}, - {
- "a": 0.0389,
- "b": -0.5058,
- "fromValue": 2583
}, - {
- "a": 0.045,
- "b": -17.9279,
- "fromValue": 2840
}, - {
- "a": 0.0398,
- "b": -1.992,
- "fromValue": 3062
}, - {
- "a": 0.0405,
- "b": -4.1295,
- "fromValue": 3313
}, - {
- "a": 0.0426,
- "b": -11.4893,
- "fromValue": 3560
}, - {
- "a": 0.0625,
- "b": -90.9375,
- "fromValue": 3983
}, - {
- "a": 0.0625,
- "b": -90.9375,
- "fromValue": 4095
}
], - "calibrationXYlist": [
- {
- "x": 0,
- "y": 0
}, - {
- "x": 115,
- "y": 10
}, - {
- "x": 470,
- "y": 20
}, - {
- "x": 791,
- "y": 30
}, - {
- "x": 1092,
- "y": 40
}, - {
- "x": 1353,
- "y": 50
}, - {
- "x": 1607,
- "y": 60
}, - {
- "x": 1849,
- "y": 70
}, - {
- "x": 2092,
- "y": 80
}, - {
- "x": 2216,
- "y": 85
}, - {
- "x": 2340,
- "y": 90
}, - {
- "x": 2459,
- "y": 95
}, - {
- "x": 2583,
- "y": 100
}, - {
- "x": 2840,
- "y": 110
}, - {
- "x": 3062,
- "y": 120
}, - {
- "x": 3313,
- "y": 130
}, - {
- "x": 3560,
- "y": 140
}, - {
- "x": 3983,
- "y": 158
}, - {
- "x": 4095,
- "y": 165
}
], - "max_valid": 4096,
- "min_valid": 1,
- "param_key": "dut_485_1",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "fuelsensor",
- "type": "sensor_type",
- "value": "Датчик топлива"
}, - "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "id": "cb49b8d4-b8c1-42f8-9764-4d09f7ebc7fc",
- "invalid": false,
- "name": "Зажигание",
- "param1": {
- "calibrationABlist": [
- {
- "a": 0,
- "b": 1,
- "fromValue": 26500
}
], - "calibrationXYlist": [
- {
- "x": 26500,
- "y": 1
}
], - "param_key": "voltage_main",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "ignition",
- "type": "sensor_type",
- "value": "Датчик зажигания"
}, - "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "id": "c73c964e-2f94-4568-8bde-ea577b00791f",
- "invalid": false,
- "name": "Пробег",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "mileage_cur",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "mileage",
- "type": "sensor_type",
- "value": "Датчик пробега"
}, - "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "id": "791d40fd-9d1e-463c-93a3-e602729c3ef1",
- "invalid": false,
- "name": "Напряжение [mV]",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "voltage_main",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "power",
- "type": "sensor_type",
- "value": "Датчик напряжения"
}, - "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b"
}
}
], - "services": [ ],
- "terminal_type": {
- "key": "navtelecom",
- "type": "terminal_type",
- "value": "Navtelecom"
}, - "trailers": [
- {
- "date_from": "2022-10-03 03:00:00",
- "date_to": "2022-10-04 03:00:00",
- "id": "4a6ed58d-ac43-4cfa-918a-8a9e2959e728",
- "trailer": {
- "code": "tas",
- "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
- "custom_fields": [
- {
- "group": "custom",
- "key": "1",
- "name": "1",
- "show_in_monitoring": false,
- "sort": 0,
- "value": "1"
}
], - "description": "Сеялка",
- "id": "fcaf9265-5a5b-4d35-8b00-ee146b8dc8f6",
- "name": "Прицеп123",
- "width": 200
}, - "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b"
}
}, - {
- "date_from": "2022-10-05 03:00:00",
- "date_to": "2022-10-10 03:00:00",
- "id": "b3b3731c-c1dd-40b4-9812-0658b4b4429b",
- "trailer": {
- "code": "1",
- "company_id": "3aafd100-c44d-4b04-ae93-06978b908ea9",
- "custom_fields": [ ],
- "description": "1111",
- "id": "d0bc0903-702b-4d96-826a-e26860681356",
- "name": "Прицеп567",
- "width": 1
}, - "unit": {
- "id": "1058bb08-618d-493e-95bd-862dfe36989b"
}
}
], - "type": {
- "key": "special_equipment",
- "type": "unit_type",
- "value": "Спецтехника"
}, - "units_groups_ids": "92223530-e77c-4b51-aeac-0534de0276a5",
- "units_groups_names": "1"
}Обновление указанных полей объекта
Пока можно указать только 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 - возвращает обновленное дерево объекта.
| id required | string Example: ID объекта |
Array of objects |
{- "custom_fields": [
- {
- "key": "video_device_name",
- "value": "CARVIS"
}, - {
- "key": "brand_code",
- "value": "123432"
}, - {
- "key": "tripdetector_mintriptime",
- "value": 70
}
]
}Поиск сервисов по 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
},
{...}
]
Роль: Читатель и выше.
| ids | string Example: ids= |
Отдельное создание сервиса (без привязки к юниту)
То же самое, что и метод (POST /units/:unit_id/services), но без привязки к какому-то конкретному объекту.
Ответ будет аналогичен методу выше (POST /units/:unit_id/services), но поле 'unit_id' будет пустым.
Роль: Редактор и выше.
Поиск всех сервисов юнита
Возвращает все привязанные к юниту сервисы.
Ответ аналогичный GET /units/services?ids=:ids
Роль: Читатель и выше.
| unit_id required | string Example: ID объекта |
Отдельное создание сервиса (с привязкой к юниту)
Данный вариант создания сервиса позволяет создать сервис для юнита через отдельный функционал и привязать их друг к другу, используя 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"
}
| unit_id required | string Example: ID объекта |
| description | string |
| intervalKm | string |
| intervaldays | string |
| isActiveDays | string |
| isActiveKm | string |
| lastKm | string |
| lastdays | string |
| name | string |
{- "description": "dumb service for test",
- "intervalKm": "10000",
- "intervaldays": "300",
- "isActiveDays": "true",
- "isActiveKm": "true",
- "lastKm": "45000",
- "lastdays": "2019-06-13",
- "name": "testService"
}Поиск датчиков по 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"
},
{...}
]
| ids | string Example: ids= |
Отдельное создание датчика (без привязки к объекту)
Аналогично POST /units/services
Роль: Редактор и выше.
Поиск всех датчиков объекта
То же самое, что и в Сервисах GET /units/:unit_id/services
Ответ аналогичный методу выше GET /units/sensors?ids=:ids
Роль: Читатель и выше.
| unit_id required | string Example: ID объекта |
Отдельное создание датчика (с привязкой к объекту)
Аналогично 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"
}
| unit_id required | string Example: ID объекта |
Пересчет 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.
| x | number |
| y | number |
[- {
- "x": 11,
- "y": 22
}, - {
- "x": 33,
- "y": 5
}, - {
- "x": 55,
- "y": 77
}, - {
- "x": 1011,
- "y": 2022
}
]Валидация списка датчиков
В запросе отправляется массив датчиков .
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
}
]
| terminal_type | string Example: terminal_type= |
| expression | string |
| formula | string |
| hide_in_reports | boolean |
| invalid | boolean |
| name | string |
object | |
object | |
object |
[- {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "dasd",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "acc_x",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "",
- "smoothing": 0
}, - "type": {
- "key": "abs_motohours",
- "type": "sensor_type",
- "value": "Абсолютные моточасы"
}
}, - {
- "expression": "$param1 + #fdsfdsf",
- "formula": "EXPR",
- "hide_in_reports": false,
- "name": "XXXX",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "acc_y",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "ewqeqwewqe",
- "smoothing": 0
}, - "type": {
- "key": "abs_motohours",
- "type": "sensor_type",
- "value": "Абсолютные моточасы"
}
}
]Получение списка параметров датчика по каждой марке терминала
Роль: Читатель и выше.
Ответ:
"[{
"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,
"}]"
Получение объектов по фильтру
Аналогично запросу 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
}
]
},
...
]
}
Array of objects | |
| fields | Array of strings |
{- "conditions": [
- {
- "field": "name",
- "value": "НОДГП"
}
], - "fields": [
- "name",
- "custom_fields.fuel_fillings_minfilling",
- "custom_fields.serial_number",
- "custom_fields.tripdetector_minparktime",
- "custom_fields.tripdetector_minmovespeed"
]
}Валидация всех полей объекта
API для валидации всех полей объекта, без сохранения. При этом ошибка может быть в разных полях\сущностях объекта.
Тело запроса, как при создании POST /units, и при обновлении PUT /units/:id
Роль: Читатель и выше.
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 |
{- "custom_fields": [
- {
- "group": "cf_custom",
- "key": "S-2551",
- "name": "S-2551",
- "sort": 0,
- "value": "#31"
}, - {
- "group": "cf_trips",
- "key": "tripdetector_minparktime",
- "name": "Мин. время стоянки (сек)",
- "sort": 1,
- "value": "600"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minfilling",
- "name": "Мин. объем заправки",
- "sort": 1,
- "value": "20"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_summerconsump",
- "name": "Расход летом (л/100км.)",
- "sort": 1,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "analyst",
- "name": "Аналитик",
- "sort": 1,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "advanced_mileagecoeff",
- "name": "Коэф. пробега",
- "sort": 2,
- "value": "1.0"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_msgignorestart",
- "name": "Игнор-ть сообщ-я после начала движения",
- "sort": 2,
- "value": "60"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterconsump",
- "name": "Расход зимой (л/100км.)",
- "sort": 2,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "installer",
- "name": "Установщик",
- "sort": 2,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_minmovespeed",
- "name": "Мин. скорость движ-я (км/ч)",
- "sort": 3,
- "value": "1"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minstaytheft",
- "name": "Мин. время остановки для опр-ия слива",
- "sort": 3,
- "value": "60"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_idlingsummer",
- "name": "На холостом ходу летом (л./час.)",
- "sort": 3,
- "value": "0"
}, - {
- "group": "cf_fuel",
- "key": "fuel_fillings_minitheft",
- "name": "Мин. объем слива",
- "sort": 4,
- "value": "25"
}, - {
- "group": "cf_etc",
- "key": "install_date",
- "name": "Дата установки",
- "sort": 4,
- "value": "16.07.2019"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_idlingwinter",
- "name": "На холостом ходу зимой (л./час.)",
- "sort": 4,
- "value": "0"
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mintripdist",
- "name": "Мин. расст-ие поездки (м)",
- "sort": 4,
- "value": "100"
}, - {
- "group": "cf_trips",
- "key": "advanced_maxintervalmsg",
- "name": "Макс. интервал между сообщ-ми (сек)",
- "sort": 5,
- "value": "3600"
}, - {
- "group": "cf_fuel",
- "key": "fuel_math_coeffunderload",
- "name": "Коэф. при движении под нагрузкой",
- "sort": 5,
- "value": "0"
}, - {
- "group": "cf_etc",
- "key": "install_place",
- "name": "Место установки в ТС",
- "sort": 5,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_maxdistancemsg",
- "name": "Макс. расст-ие между сообщ-ми (м)",
- "sort": 6,
- "value": "1000"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterfrom",
- "name": "Первый месяц зимы (январь-1)",
- "sort": 6,
- "value": "11"
}, - {
- "group": "cf_etc",
- "key": "serial_number",
- "name": "Серийный номер терминала",
- "sort": 6,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mintriptime",
- "name": "Мин. время поездки (сек)",
- "sort": 7,
- "value": "300"
}, - {
- "group": "cf_fuel",
- "key": "fuel_consumption_winterto",
- "name": "Последний месяц зимы (январь-1)",
- "sort": 7,
- "value": "3"
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut",
- "name": "Серийный номер ДУТ",
- "sort": 7,
- "value": ""
}, - {
- "group": "cf_fuel",
- "key": "fuel_price",
- "name": "Стоимость (1 л.)",
- "sort": 8,
- "value": "45"
}, - {
- "group": "cf_trips",
- "key": "key_tripdetector_movedetect",
- "name": "Опр-ие движ-я",
- "sort": 8,
- "value": "speedkph"
}, - {
- "group": "cf_etc",
- "key": "dut_seal_serial_number",
- "name": "Серийный номер пломбы ДУТ",
- "sort": 8,
- "value": ""
}, - {
- "group": "cf_trips",
- "key": "tripdetector_mileagedetect",
- "name": "Определение пробега",
- "sort": 9,
- "value": "mileage_GPS"
}, - {
- "group": "cf_etc",
- "key": "license_plate_number",
- "name": "Гос номер",
- "sort": 9,
- "value": ""
}, - {
- "group": "cf_motohours",
- "key": "key_motohourdetector",
- "name": "Определение моточасов",
- "sort": 10,
- "value": "ignition"
}, - {
- "group": "cf_etc",
- "key": "hours_rate",
- "name": "Норма часов в день",
- "sort": 10,
- "value": "8"
}, - {
- "group": "cf_etc",
- "key": "block_date",
- "name": "Дата блокировки(yyyy-MM-dd)",
- "sort": 11,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "kp",
- "name": "КП",
- "sort": 12,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "dut",
- "name": "ДУТ",
- "sort": 13,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "second_sim",
- "name": "Вторая sim",
- "sort": 14,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut_1",
- "name": "Серийный номер ДУТ 1",
- "sort": 15,
- "value": ""
}, - {
- "group": "cf_etc",
- "key": "serial_number_dut_2",
- "name": "Серийный номер ДУТ 2",
- "sort": 16,
- "value": ""
}, - {
- "group": "cf_hidden",
- "key": "counters_mileagekey",
- "name": "translate.custom_fields.name.counters_mileagekey",
- "sort": 1000,
- "value": "gps_mileage"
}, - {
- "group": "cf_hidden",
- "key": "counters_mileagecurr",
- "name": "translate.custom_fields.name.counters_mileagecurr",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "counters_mileageauto",
- "name": "translate.custom_fields.name.counters_mileageauto",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "counters_engienecurr",
- "name": "translate.custom_fields.name.counters_engienecurr",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "counters_gprscurr",
- "name": "translate.custom_fields.name.counters_gprscurr",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "counters_gprsauto",
- "name": "translate.custom_fields.name.counters_gprsauto",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "advanced_speedlimit",
- "name": "translate.custom_fields.name.advanced_speedlimit",
- "sort": 1000,
- "value": "130"
}, - {
- "group": "cf_hidden",
- "key": "advanced_urbspeedlimit",
- "name": "translate.custom_fields.name.advanced_urbspeedlimit",
- "sort": 1000,
- "value": "60"
}, - {
- "group": "cf_hidden",
- "key": "advanced_dailyengine",
- "name": "translate.custom_fields.name.advanced_dailyengine",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_movedetectkey",
- "name": "translate.custom_fields.name.tripdetector_movedetectkey",
- "sort": 1000,
- "value": "speed"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_gpscorrect",
- "name": "translate.custom_fields.name.tripdetector_gpscorrect",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_minsatellites",
- "name": "translate.custom_fields.name.tripdetector_minsatellites",
- "sort": 1000,
- "value": "3"
}, - {
- "group": "cf_hidden",
- "key": "tripdetector_mintipdist",
- "name": "translate.custom_fields.name.tripdetector_mintipdist",
- "sort": 1000,
- "value": "100"
}, - {
- "group": "cf_hidden",
- "key": "fuel_fillings_fillingstop",
- "name": "translate.custom_fields.name.fuel_fillings_fillingstop",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_fillings_ignorefiltration",
- "name": "translate.custom_fields.name.fuel_fillings_ignorefiltration",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_mergenameslevel",
- "name": "translate.custom_fields.name.fuel_sensors_mergenameslevel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_mergenamesconsum",
- "name": "translate.custom_fields.name.fuel_sensors_mergenamesconsum",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_timelevel",
- "name": "translate.custom_fields.name.fuel_sensors_timelevel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_sensors_filtervalues",
- "name": "translate.custom_fields.name.fuel_sensors_filtervalues",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_math_idling",
- "name": "translate.custom_fields.name.fuel_math_idling",
- "sort": 1000,
- "value": "2"
}, - {
- "group": "cf_hidden",
- "key": "fuel_math_urbcycle",
- "name": "translate.custom_fields.name.fuel_math_urbcycle",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "fuel_math_suburbcycle",
- "name": "translate.custom_fields.name.fuel_math_suburbcycle",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_levelsensors",
- "name": "translate.custom_fields.name.fuel_level_levelsensors",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_repivalid",
- "name": "translate.custom_fields.name.fuel_level_repivalid",
- "sort": 1000,
- "value": "true"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_impulsefuel",
- "name": "translate.custom_fields.name.fuel_level_impulsefuel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_maximpulse",
- "name": "translate.custom_fields.name.fuel_level_maximpulse",
- "sort": 1000,
- "value": "0"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_skipfirstzero",
- "name": "translate.custom_fields.name.fuel_level_skipfirstzero",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_absolutefuel",
- "name": "translate.custom_fields.name.fuel_level_absolutefuel",
- "sort": 1000,
- "value": "false"
}, - {
- "group": "cf_hidden",
- "key": "fuel_level_instantfuel",
- "name": "translate.custom_fields.name.fuel_level_instantfuel",
- "sort": 1000,
- "value": "false"
}
], - "drivers": [
- {
- "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",
- "user": {
- "id": "bd3b26b7-506d-4cc6-8ab6-bf4cd1b9a39c"
}
}
], - "icon": {
- "key": "excavator_green",
- "type": "unit_icon",
- "value": "Иконка"
}, - "imei": "123412312",
- "name": "Hitachi XXXX",
- "phonenumber": "+71231231223",
- "phonenumber2": "+34324343443",
- "sensors": [
- {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "ДУТ-1",
- "param1": {
- "calibrationABlist": [
- {
- "a": 0.087,
- "b": 0,
- "fromValue": 0
}, - {
- "a": 0.0282,
- "b": 6.7606,
- "fromValue": 115
}, - {
- "a": 0.0312,
- "b": 5.3583,
- "fromValue": 470
}, - {
- "a": 0.0332,
- "b": 3.7209,
- "fromValue": 791
}, - {
- "a": 0.0383,
- "b": -1.8391,
- "fromValue": 1092
}, - {
- "a": 0.0394,
- "b": -3.2677,
- "fromValue": 1353
}, - {
- "a": 0.0413,
- "b": -6.405,
- "fromValue": 1607
}, - {
- "a": 0.0412,
- "b": -6.0905,
- "fromValue": 1849
}, - {
- "a": 0.0403,
- "b": -4.3548,
- "fromValue": 2092
}, - {
- "a": 0.0403,
- "b": -4.3548,
- "fromValue": 2216
}, - {
- "a": 0.042,
- "b": -8.3193,
- "fromValue": 2340
}, - {
- "a": 0.0403,
- "b": -4.1532,
- "fromValue": 2459
}, - {
- "a": 0.0389,
- "b": -0.5058,
- "fromValue": 2583
}, - {
- "a": 0.045,
- "b": -17.9279,
- "fromValue": 2840
}, - {
- "a": 0.0398,
- "b": -1.992,
- "fromValue": 3062
}, - {
- "a": 0.0405,
- "b": -4.1295,
- "fromValue": 3313
}, - {
- "a": 0.0426,
- "b": -11.4893,
- "fromValue": 3560
}, - {
- "a": 0.0625,
- "b": -90.9375,
- "fromValue": 3983
}, - {
- "a": 0.0625,
- "b": -90.9375,
- "fromValue": 4095
}
], - "calibrationXYlist": [
- {
- "x": 0,
- "y": 0
}, - {
- "x": 115,
- "y": 10
}, - {
- "x": 470,
- "y": 20
}, - {
- "x": 791,
- "y": 30
}, - {
- "x": 1092,
- "y": 40
}, - {
- "x": 1353,
- "y": 50
}, - {
- "x": 1607,
- "y": 60
}, - {
- "x": 1849,
- "y": 70
}, - {
- "x": 2092,
- "y": 80
}, - {
- "x": 2216,
- "y": 85
}, - {
- "x": 2340,
- "y": 90
}, - {
- "x": 2459,
- "y": 95
}, - {
- "x": 2583,
- "y": 100
}, - {
- "x": 2840,
- "y": 110
}, - {
- "x": 3062,
- "y": 120
}, - {
- "x": 3313,
- "y": 130
}, - {
- "x": 3560,
- "y": 140
}, - {
- "x": 3983,
- "y": 158
}, - {
- "x": 4095,
- "y": 165
}
], - "max_valid": 4096,
- "min_valid": 1,
- "param_key": "dut_485_1",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "fuelsensor",
- "type": "sensor_type",
- "value": "Датчик топлива"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "Зажигание",
- "param1": {
- "calibrationABlist": [
- {
- "a": 0,
- "b": 1,
- "fromValue": 26500
}
], - "calibrationXYlist": [
- {
- "x": 26500,
- "y": 1
}
], - "param_key": "voltage_main",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "ignition",
- "type": "sensor_type",
- "value": "Датчик зажигания"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "Пробег",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "mileage_cur",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "mileage",
- "type": "sensor_type",
- "value": "Датчик пробега"
}
}, - {
- "formula": "S1",
- "hide_in_reports": false,
- "invalid": false,
- "name": "Напряжение [mV]",
- "param1": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "voltage_main",
- "smoothing": 0
}, - "param2": {
- "calibrationABlist": [ ],
- "calibrationXYlist": [ ],
- "param_key": "skif_text",
- "smoothing": 0
}, - "type": {
- "key": "power",
- "type": "sensor_type",
- "value": "Датчик напряжения"
}
}
], - "services": [ ],
- "terminal_type": {
- "key": "navtelecom",
- "type": "terminal_type",
- "value": "Navtelecom"
}, - "trailers": [
- {
- "date_from": "2022-10-03 00:00:00",
- "date_to": "2022-10-04 00:00:00",
- "trailer": {
- "id": "fcaf9265-5a5b-4d35-8b00-ee146b8dc8f6"
}
}, - {
- "date_from": "2022-10-05 00:00:00",
- "date_to": "2022-10-10 00:00:00",
- "trailer": {
- "id": "d0bc0903-702b-4d96-826a-e26860681356"
}
}
], - "type": {
- "key": "special_equipment",
- "type": "unit_type",
- "value": "Спецтехника"
}
}Получение групп объектов
Параметр '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"
}
]
}
]
}
]
| ids | string Example: ids= |
Создание группы
Параметры:
"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"
}
],
}
| name | string |
Array of objects |
{- "name": "testGroup",
- "units": [
- {
- "id": "286e35d1-0d2e-481a-89b7-91755aabef54"
}, - {
- "id": "abdb4866-1128-489d-8a2f-179533fd5971"
}
]
}Получение списка групп
Аналогично запросу 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"
}
]
}
]
}
| name | string |
Array of objects |
{- "name": "testGroup",
- "units": [
- {
- "id": "286e35d1-0d2e-481a-89b7-91755aabef54"
}, - {
- "id": "abdb4866-1128-489d-8a2f-179533fd5971"
}
]
}Изменение группы
Cписок units заменяется полностью.
Роль: Редактор и выше.
| unitsgroup_id required | string Example: |
| name | string |
Array of objects |
{- "name": "testGroup",
- "units": [
- {
- "id": "286e35d1-0d2e-481a-89b7-91755aabef54"
}
]
}Поиск смен по 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"
}
| ids | string Example: ids= |
Создание смены
Параметры:
"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 т"}
]
}
| date_from | string |
| date_to | string |
object | |
object |
{- "date_from": "2020-10-01 10:00:00",
- "date_to": "2020-11-01 18:00:00",
- "unit": {
- "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}, - "user": {
- "id": "d88cb614-7d0e-48d5-ba95-0001825d68a8"
}
}Создание нескольких смен
Параметры:
"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 т"}
]
}
]
| date_from | string |
| date_to | string |
object | |
object |
{- "date_from": "2020-10-01 10:00:00",
- "date_to": "2020-11-01 18:00:00",
- "unit": {
- "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}, - "user": {
- "id": "d88cb614-7d0e-48d5-ba95-0001825d68a8"
}
}Обновить данные смены
Обновляет переданные параметры
Параметры:
см метод POST /units_drivers
Роль: Редактор и выше.
Ответ:
Аналогичен одному объекту из ответа метода GET /units_drivers?ids=:id
| id required | string Example: ID смены |
| company_id | string |
| date_from | string |
| date_to | string |
| id | string |
object | |
object |
{- "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": {
- "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}, - "user": {
- "id": "d88cb614-7d0e-48d5-ba95-0001825d68a8"
}
}Получить смены по фильтру
Аналогично запросу 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"
}
]
}
Array of objects | |
| count | number |
| from | number |
| sortDesc | string |
| sortField | string |
{- "conditions": [
- {
- "field": "unit.id",
- "value": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}
], - "count": 10,
- "from": 0,
- "sortDesc": "false",
- "sortField": "date_from"
}Связать объект и прицеп на определенный период
Параметры:
"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": "Обработка поля"
}
| date_from | string |
| date_to | string |
object | |
object |
{- "date_from": "2020-10-01 10:00:00",
- "date_to": "2020-11-01 18:00:00",
- "trailer": {
- "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
}, - "unit": {
- "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}
}Поиск связей по 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": "Обработка поля"
}
| ids | string Example: ids= |
Обновить данные связи
Обновляет переданные параметры
Параметры:
см метод POST /units_trailers
Роль: Редактор и выше.
Ответ:
Аналогичен одному объекту из ответа метода GET /units_trailers?ids=:id
| id required | string Example: ID связи |
| company_id | string |
| date_from | string |
| date_to | string |
| id | string |
object | |
object |
{- "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": {
- "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4"
}, - "unit": {
- "id": "7e1aaba2-625a-4a4c-b765-9934bec5a096"
}
}Получить связи объектов и прицепов по фильтру
Аналогично запросу 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"
}
]
}
Array of objects | |
| count | number |
| from | number |
| sortDesc | string |
| sortField | string |
{- "conditions": [
- {
- "field": "unit.id",
- "value": "7e1aaba2-625a-4a4c-b765-9934bec5a097"
}
], - "count": 11,
- "from": 0,
- "sortDesc": "false",
- "sortField": "date_from"
}Получение состояний объекта
Параметр запроса 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"
}
}
]
| unit_id required | string Example: 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"
}
}
]
| unit_id required | string Example: 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"
}
}
]
| id required | string Example: ID состояния |
| date_from | string |
| id | string |
| name | string |
{- "date_from": "2022-10-10",
- "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
- "name": "Терминал Gelileo"
}Удаление состояния объекта
Параметр запроса 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"
}
}
]
| id required | string Example: ID состояния |
| date_from | string |
| id | string |
| name | string |
{- "date_from": "2022-10-10",
- "id": "fab2f033-15de-46a4-ad7b-5ae422c0c9a2",
- "name": "Терминал Gelileo"
}Копирование состояния объекта
Параметр запроса 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"
}
}
]
| id required | string Example: ID состояния |
""Получение количества состояний объектов в группе на интервале
Тела запроса 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
}
]
| from | string |
Array of objects | |
| to | string |
{- "from": "2022-10-10 00:00:00",
- "groups": [
- {
- "id": "6c39623d-9d91-45c6-8754-aba1de05ea5e"
}
], - "to": "2024-11-10 00:00:00"
}Поиск прицепов по 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"
}
]
}
| ids | string Example: ids= |
Создание прицепа
Параметры:
"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"
}
]
}
| code | string |
Array of objects | |
| description | string |
| name | string |
{- "code": "XYZ111222333",
- "custom_fields": [
- {
- "key": "масса",
- "name": "масса",
- "value": "20 т"
}, - {
- "key": "цвет",
- "name": "цвет",
- "value": "синый"
}
], - "description": "Описания прецепа2",
- "name": "Прецеп2"
}Обновление данных прицепа
Обновляет переданные параметры
Роль: Редактор и выше.
Параметры:
см метод POST /trailers
Ответ:
Аналогичен одному объекту из ответа метода GET /trailers?ids=:trailer_id
| trailer_id required | string Example: ID прицепа |
| code | string |
| company_id | string |
Array of objects | |
| description | string |
| id | string |
| name | string |
{- "code": "XYZ111222333",
- "company_id": "d88cb614-7d0e-48d5-ba95-0001825d68a8",
- "custom_fields": [
- {
- "group": "custom",
- "key": "масса",
- "name": "масса",
- "value": "19 т"
}, - {
- "group": "custom",
- "key": "цвет",
- "name": "цвет",
- "value": "красный"
}, - {
- "group": "custom",
- "key": "123",
- "name": "123",
- "value": "456"
}
], - "description": "новая описания прецепа1",
- "id": "7c4253d5-4bc6-4885-bf25-985a75919fb4",
- "name": "Прецеп1 новая названия"
}Удаление прицепа по его id
Параметры:
id прицепа
Роль: Редактор и выше.
Ответ: 200
Если прицеп с таким id не найден возвращается ошибка 422
{
"code": 422,
"field": "id",
"message": "Параметр не найден в базе"
}
| trailer_id required | string Example: ID прицепа |
Получить прицепы по фильтру
Аналогично запросу 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"
}
]
}
]
}
Array of objects | |
| count | number |
| from | number |
| sortDesc | string |
| sortField | string |
{- "conditions": [
- {
- "field": "name",
- "value": "Прецеп1 новая названия"
}
], - "count": 10,
- "from": 0,
- "sortDesc": "false",
- "sortField": "name"
}Поиск событий по 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
}
| ids | string Example: ids= |
Создание события для объекта
Параметры:
"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"
}
}
]
}
| datetime | string |
| deviation_minutes | number |
| filled | number |
object | |
object |
{- "datetime": "2020-01-02 12:30:00",
- "deviation_minutes": 20,
- "filled": 101.5,
- "type": {
- "key": "filling"
}, - "unit": {
- "id": "58acca5a-1f17-4418-9143-3e4c8a320f3a"
}
}Обновление данных события
Обновляет переданные параметры
Параметры:
см метод POST /events
Роль: Оператор и выше.
Ответ:
Аналогичен одному событию из ответа метода GET /events?ids=:id
| id required | string Example: ID события |
| company_id | string |
| datetime | string |
| deviation_minutes | number |
| filled | number |
| id | string |
object | |
object |
{- "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": {
- "key": "filling",
- "type": "event_type",
- "value": "Заправка"
}, - "unit": {
- "id": "58acca5a-1f17-4418-9143-3e4c8a320f3a"
}
}Получить события по фильтру
Аналогично запросу 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
}
]
}
Array of objects | |
| count | number |
| from | number |
{- "conditions": [
- {
- "field": "unit.id",
- "value": "58acca5a-1f17-4418-9143-3e4c8a320f3a"
}
], - "count": 10,
- "from": 0
}Получение всех названий ТО при создании события
Воозврашает Осмотр, Замена терминала, Установка ДУТ, Замена ДУТ, Калибровка ДУТ и новые введенные сервисы внутри компании
Пример ответа:
[
"Осмотр",
"Замена терминала",
"Установка ДУТ",
"Замена ДУТ",
"Калибровка ДУТ",
"21",
"Terminal replacement",
"Замена ремня ГРМ",
"Новый сервмс",
"Пищевая заправка",
"Предыдущий сервис",
]
""Получение изменений в справочниках
Используется один вебсокет для получения следующих данных:
Последнего сообщения от объекта
Уведомлений за последние сутки
Новых уведомлений
Изменения справочников
Если сервер использует протокол HTTP, то вебсокет должен работать по протоколу WS. Аналогично, если сервер использует HTTPS, то вебсокет должен работать по протоколу WSS.
Можно также передать параметр ?from_time=1628259485000, где значение — это метка времени в формате Unix (в часовом поясе пользователя). Это нужно, если вы хотите получить данные, начиная с определённого момента времени. Например, если у вас уже есть закэшированные данные на клиенте, и вы хотите получить только новые сообщения, начиная с этого времени.
Примеры:
[
{
"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"
}
| monitoring_filter | string Example: monitoring_filter={"conditions":[{"field":"name","value": "Бензовоз"},{"field":"sensors.type.key","value": "ignition"}]} |
Получение дополнительной информации по объекту в мониторинге
В теле запроса в 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": []
}
]
Array of objects |
{- "units": [
- {
- "id": "1478c4b7-464e-4f85-b962-afcc124755a2"
}
]
}Запрос отчета
Запрос отчета содержит следующие параметры:
Ограничения:
- '_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:
Пример:
{
"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"
]
]
}
]
| from | string |
Array of objects | |
| max | number |
| offset | number |
Array of objects | |
| to | string |
{- "from": "2022-05-04 10:03:00",
- "groups": [
- {
- "id": "a0c5076d-6f22-4326-86fb-89aa837a9ab5"
}
], - "max": 100,
- "offset": 0,
- "template_tables": [
- {
- "id": "800c0795-5b79-40cd-bdeb-ab309228534b"
}
], - "to": "2022-07-03 11:00:11"
}Получение данных для графика
После получения отчета (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
}
]
}
}
| from | string |
Array of objects | |
Array of objects | |
| to | string |
{- "from": "2022-09-01 00:00:00",
- "groups": [
- {
- "id": "ae3f9037-9fcc-492c-9ba4-8063e737cf95"
}
], - "template_tables": [
- {
- "id": "a5dc0870-78cd-4fa9-9522-eb658bb5806b"
}
], - "to": "2022-10-01 00:00:00"
}Запрос отчета в формате Excel
Запрос отчета в формате excel. Параметры аналогичны /report.
Результат - массив байт файла excel.
| from | string |
Array of objects | |
Array of objects | |
| to | string |
{- "from": "2022-03-05 00:00:00",
- "groups": [
- {
- "id": "5b5483dc-99bd-4577-820f-f1e4340cbd60"
}
], - "template_tables": [
- {
- "id": "800c0795-5b79-40cd-bdeb-ab309228534b"
}
], - "to": "2022-03-06 00:00:00"
}Запрос генерации 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=="
]
}
| files | Array of strings |
| from | string |
Array of objects | |
| to | string |
Array of objects |
{- "files": [
- "c29tZV9maWxl"
], - "from": "2022-04-28 00:00:00",
- "template_tables": [
- {
- "id": "800c0795-5b79-40cd-bdeb-ab309228534b"
}
], - "to": "2022-06-29 00:00:00",
- "units": [
- {
- "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
}
]
}Запрос генерации 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=="
]
}
| files | Array of strings |
| from | string |
Array of objects | |
| to | string |
Array of objects |
{- "files": [
- "c29tZV9maWxl"
], - "from": "2022-04-28 00:00:00",
- "template_tables": [
- {
- "id": "800c0795-5b79-40cd-bdeb-ab309228534b"
}
], - "to": "2022-06-29 00:00:00",
- "units": [
- {
- "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
}
]
}Запрос создания отчета по ключу отчета
Параметры аналогичные 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
}
| files | Array of strings |
| from | string |
Array of objects | |
| to | string |
Array of objects |
{- "files": [
- "c29tZV9maWxlXzE="
], - "from": "2022-04-28 00:00:00",
- "template_tables": [
- {
- "id": "800c0795-5b79-40cd-bdeb-ab309228534b"
}
], - "to": "2022-06-29 00:00:00",
- "units": [
- {
- "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
}
]
}Выдача данных для отображения тепловых карт
Выдача данных для отображения тепловых картах в виде
[{
"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
}
]
| max_radius | number |
{- "max_radius": 1000
}Получение последних данных по объектам
В запросе можно указать объекты или одну группу
Роль: Читатель и выше.
Пример запроса и объектами:
{
"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"
}
}
]
Array of objects |
{- "units": [
- {
- "id": "2bd74bab-8173-4c06-8fd8-ad923d3ad7d3"
}
]
}Получить все шаблоны отчетов по компании
Каждый Шаблон по сути это именнованая группа Таблиц Шаблонов отчетов.
Таблица Шаблона - это набор Колонок Таблицы Шаблона + параметры.
В самих Таблицах Шаблона задаются параметры для отображения отчета, например имя таблицы, группировка по определенной колонке, и т.д.
Любой запрос шаблонов, помимо пользовательских шаблонов, также выводит Базовный шаблон (с таблицами и колонками по умолчанию), у которого параметр '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"
},
]
}]
}]
| ids | string Example: ids= |
Создает свой шаблон отчетов
По правилам, таблица шаблона должна строиться на основании дефолтного шаблона таблиц, т.е. путем копирования полей дефолтного шаблона и заполнения их пользовательскими значениями
(кроме поля '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"
}
]
}]
}]
string Example: = |
| _default | boolean |
| is_default | boolean |
| name | string |
Array of objects |
{- "_default": false,
- "is_default": false,
- "name": "Шаблон123",
- "template_tables": [
- {
- "_default": false,
- "geozones": [ ],
- "id": "eea0df8a-206c-418e-955d-ec1b7b418cde",
- "is_default": false,
- "key": "trips",
- "name": "Поездки",
- "reportTemplate": {
- "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
}, - "sensors": [ ],
- "show_itog": true,
- "template_columns": [
- {
- "_visible": false,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "ffc923bc-32a8-4097-8c94-44ea994dfe64",
- "is_visible": false,
- "key": "_end_latlon_trips",
- "name": "service column",
- "sort": 1,
- "type": "array"
}
], - "time_group": "no_grouping"
}, - {
- "_default": false,
- "geozones": [ ],
- "id": "6f5a645e-ad5a-4465-91dc-1a90ffbc4d3e",
- "is_default": false,
- "key": "geozones",
- "name": "Геозоны",
- "reportTemplate": {
- "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
}, - "sensors": [ ],
- "show_itog": true,
- "template_columns": [
- {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "bb878209-c1ad-408e-953e-02e8ddef1a0e",
- "is_visible": true,
- "key": "driver",
- "name": "Водитель",
- "sort": 9,
- "type": "string"
}, - {
- "_visible": false,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "1d75b7d7-172c-401d-8bab-95d91a5076a0",
- "is_visible": false,
- "key": "_start_time_geozones",
- "name": "service column",
- "sort": 1,
- "type": "date"
}, - {
- "_visible": false,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "7908d344-b5df-40df-a52a-879f1e9a3b2c",
- "is_visible": false,
- "key": "_end_time_geozones",
- "name": "service column",
- "sort": 1,
- "type": "date"
}, - {
- "_visible": false,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "5615c1a0-3714-4793-a38c-04144676da4a",
- "is_visible": false,
- "key": "_start_latlon_geozones",
- "name": "service column",
- "sort": 1,
- "type": "array"
}, - {
- "_visible": false,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "9d08ba81-9a1d-4394-ad40-ce5c1f7098fb",
- "is_visible": false,
- "key": "_end_latlon_geozones",
- "name": "service column",
- "sort": 1,
- "type": "array"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "0087503f-4c36-40c9-bc5e-a3a4742beb5c",
- "is_visible": true,
- "key": "unit_name",
- "name": "Имя",
- "sort": 1,
- "type": "string"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "e0d5dfb5-9c73-440e-b0ff-c85d26aecc42",
- "is_visible": true,
- "key": "first_datepoint",
- "name": "Начало",
- "sort": 3,
- "type": "date"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "3d72fc84-8298-422c-beb5-bf643dcae1a9",
- "is_visible": true,
- "key": "last_datepoint",
- "name": "Конец",
- "sort": 4,
- "type": "date"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "c303f29b-c0a4-4b00-acb0-42c12d33c208",
- "is_visible": true,
- "key": "sum_datepoint",
- "name": "Длит-сть",
- "sort": 5,
- "type": "date"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "9e673b50-b269-46be-95f6-2cc7bf5aecc2",
- "is_visible": true,
- "key": "first_address",
- "name": "Нач. адрес",
- "sort": 6,
- "type": "string"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "8e597d69-45b6-4211-817c-0dfa13cedead",
- "is_visible": true,
- "key": "first_fillings",
- "name": "Нач. знач. топл.",
- "sort": 10,
- "type": "number"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "9b30d12f-6f9b-4da8-8f38-e0a23ed76964",
- "is_visible": true,
- "key": "finish_fillings",
- "name": "Кон. знач. топл.",
- "sort": 11,
- "type": "number"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "cd9e4983-c1ee-467e-9559-65563195ca5b",
- "is_visible": true,
- "key": "last_address",
- "name": "Кон. адрес",
- "sort": 12,
- "type": "string"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "4bbbc5ad-d404-4917-acc0-2920deaf9cce",
- "is_visible": true,
- "key": "avg_speedkph",
- "name": "Ср-яя скор-ть",
- "sort": 13,
- "type": "number"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "7ddec502-8421-4f55-baa7-bceb10841d89",
- "is_visible": true,
- "key": "geo_name",
- "name": "Имя геозоны",
- "sort": 14,
- "type": "string"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "372aee63-1746-4d14-aaa6-945425058be9",
- "is_visible": true,
- "key": "sum_fillings",
- "name": "Израсх-но топл.",
- "sort": 15,
- "type": "number"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "30870ece-3e91-4b42-be2b-94dd78055606",
- "is_visible": true,
- "key": "sum_distance",
- "name": "Пробег",
- "sort": 16,
- "type": "number"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "8ca0720d-9bf9-4b0b-9647-fb2442a7cbb9",
- "is_visible": true,
- "key": "max_speedkph",
- "name": "Макс. скор-ть",
- "sort": 17,
- "type": "number"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "c1b21477-69bd-49cd-8d83-b658b941ce46",
- "is_visible": true,
- "key": "sum_counter",
- "name": "Счетчик (сум)",
- "sort": 18,
- "type": "number"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "bfb31794-8638-4462-8f77-b4b73f55529f",
- "is_visible": true,
- "key": "count_point",
- "name": "Кол-во сообщ-й",
- "sort": 19,
- "type": "number"
}, - {
- "_visible": false,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "143e031c-2145-4bf9-9a14-113388504c85",
- "is_visible": false,
- "key": "_unit_id",
- "name": "service column",
- "sort": 1,
- "type": "string"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "28ffa63d-880f-4d40-a8a6-a6ace12d5ada",
- "is_visible": true,
- "key": "trailer",
- "name": "Прицеп",
- "sort": 2100,
- "type": "string"
}, - {
- "_visible": true,
- "filter_max": 1000,
- "filter_min": 0,
- "id": "6d68a50a-a146-4d49-9af3-f16047532819",
- "is_visible": true,
- "key": "work_types",
- "name": "Вид работ",
- "sort": 2200,
- "type": "string"
}
], - "time_group": "no_grouping"
}
]
}Получение возможных ссылок на значения для формулы в колонке отчета
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": "Колонки отчета/Группы"
}
Роль: Читатель и выше.
| table_key | string Example: 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": "Колонки отчета/Группы"
}
]
Роль: Читатель и выше.
| table_key | string Example: table_key= |
| table_id | string Example: table_id= |
Проверка формулы в колонке отчета
"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": "Неправильная формула в таблице "Поездки""
}
| formula | string |
| table_key | string |
{- "formula": "xyz",
- "table_key": "trips"
}Валидация отдельной таблицы
В теле запроса указать все поля таблицы.
Возвращает 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->Тестовая колонка"
}
| column_group | string |
| key | string |
| name | string |
| show_itog | string |
Array of objects | |
Array of objects | |
| time_group | string |
{- "column_group": "",
- "key": "trips",
- "name": "Поездки",
- "show_itog": "true",
- "template_columns": [
- {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "false",
- "key": "_unit_id",
- "meta": "total",
- "name": "translate.reports.default_template.columns._unit_id",
- "sort": "1",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "unit_name",
- "meta": "total",
- "name": "translate.reports.default_template.columns.unit_name",
- "sort": "2",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "first_datepoint",
- "meta": "total",
- "name": "translate.reports.default_template.columns.first_datepoint",
- "sort": "3",
- "type": "date",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "last_datepoint",
- "meta": "total",
- "name": "translate.reports.default_template.columns.last_datepoint",
- "sort": "4",
- "type": "date",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "count_point",
- "meta": "total",
- "name": "translate.reports.default_template.columns.count_point",
- "sort": "5",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_distance",
- "meta": "trips",
- "name": "translate.reports.default_template.columns.sum_distance",
- "sort": "6",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "avg_speedkph",
- "meta": "trips",
- "name": "translate.reports.default_template.columns.avg_speedkph",
- "sort": "7",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "100000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "drained_fillings",
- "meta": "total",
- "name": "translate.reports.default_template.columns.drained_fillings",
- "sort": "7",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "100000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "stucked_fillings",
- "meta": "total",
- "name": "translate.reports.default_template.columns.stucked_fillings",
- "sort": "7",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_idling_plan",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_idling_plan",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_idling",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_idling",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_plan",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_plan",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_distance_absolute_error",
- "meta": "trips",
- "name": "translate.reports.default_template.columns.sum_distance_absolute_error",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_distance_absolute",
- "meta": "trips",
- "name": "translate.reports.default_template.columns.sum_distance_absolute",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "max_speedkph",
- "meta": "trips",
- "name": "translate.reports.default_template.columns.max_speedkph",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_idling_deviation",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_idling_deviation",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "fuel_price_plan",
- "meta": "total",
- "name": "translate.reports.default_template.columns.fuel_price_plan",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "fuel_price",
- "meta": "total",
- "name": "translate.reports.default_template.columns.fuel_price",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_absolute",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_absolute",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_instant",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_instant",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_deviation",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_deviation",
- "sort": "8",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "sum_fillings_absolute_error",
- "meta": "total",
- "name": "translate.reports.default_template.columns.sum_fillings_absolute_error",
- "sort": "9",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "first_fillings",
- "meta": "total",
- "name": "translate.reports.default_template.columns.first_fillings",
- "sort": "9",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "finish_fillings",
- "meta": "total",
- "name": "translate.reports.default_template.columns.finish_fillings",
- "sort": "10",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "fuel_consumption_rates",
- "meta": "total",
- "name": "translate.reports.default_template.columns.fuel_consumption_rates",
- "sort": "11",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "motohours",
- "meta": "motohour",
- "name": "translate.reports.default_template.columns.motohours",
- "sort": "12",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "motohour_idling",
- "meta": "motohour",
- "name": "translate.reports.default_template.columns.motohour_idling",
- "sort": "12",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "fuel_consumption_rates_absolut",
- "meta": "total",
- "name": "translate.reports.default_template.columns.fuel_consumption_rates_absolut",
- "sort": "12",
- "type": "number",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "motohour_moving",
- "meta": "motohour",
- "name": "translate.reports.default_template.columns.motohour_moving",
- "sort": "13",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "driver",
- "meta": "total",
- "name": "translate.reports.default_template.columns.driver",
- "sort": "2000",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "trailer",
- "meta": "total",
- "name": "translate.reports.default_template.columns.trailer",
- "sort": "2100",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "work_types",
- "meta": "total",
- "name": "translate.reports.default_template.columns.work_types",
- "sort": "2200",
- "type": "string",
- "use_filter": null
}, - {
- "filter_max": "1000",
- "filter_min": "0",
- "is_visible": "true",
- "key": "groups_of_unit",
- "meta": "total",
- "name": "translate.reports.default_template.columns.groups_of_unit",
- "sort": "3000",
- "type": "string",
- "use_filter": null
}
], - "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.Тестовая колонка}"
}
], - "time_group": "week"
}Создает свой шаблон отчетов
По правилам, таблица шаблона должна строится на основании дефолтного шаблона таблиц, т.е. путем копирования полей дефолтного шаблона и заполнения их пользовательскими значениями
(кроме поля '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 //видима ли колонка в отчете
}]
}]
}]
| template_id required | string Example: ID шаблона |
Получение списка группировок для таблицы отчета
Пример запроса:
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": "По сменам"
}
]
| table_key | string Example: table_key= |
Изменение порядка шаблонов отчетов
В теле запроса в поле 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 без тела в случае успеха или ошибку с текстом.
| order | Array of strings |
{- "order": [
- "9f91f39f-dc51-48f5-be2f-0d331b81a486",
- "d98b5767-0676-447a-8e38-d85c7b2599b6",
- "07f94639-d051-4dea-a4a4-7d6b2eb02441",
- "b2f61ae3-28fc-4482-bd18-e02866720cf6",
- "3ea6e26a-105a-48c9-882c-c24656abe10a"
]
}Получение точек с информацией о вхождении в геозоны
Роль: Администратор и выше.
Пример запроса:
{
"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"
}]
}
| from | string |
Array of objects | |
| max | number |
| offset | number |
| to | string |
Array of objects |
{- "from": "2021-05-30 00:00:00",
- "geozones": [
- {
- "id": "5b26edba-c04a-4db7-be99-548d67ec11dd"
}, - {
- "id": "c4714f7e-5c5e-4c85-982c-68ecef05fe8c"
}, - {
- "id": "d5f3cbfb-bfb6-4553-acb7-0a460327250c"
}, - {
- "id": "7c75f26e-c71a-4c0a-b289-106a9c466d91"
}, - {
- "id": "8ac9812f-4c5c-4047-a4e5-f8c7fa2ee187"
}, - {
- "id": "3397300d-186a-4a5e-a177-92158582cd06"
}, - {
- "id": "300c81d6-93fb-46f3-8722-7c00ab8c71b3"
}, - {
- "id": "0fb64256-197d-4ab0-902d-024261180fd8"
}, - {
- "id": "74ebea2b-5416-4f78-a009-1c0742882e44"
}, - {
- "id": "4b6d7108-20e4-4e5b-a6c3-ab1d39b6d2d0"
}, - {
- "id": "439feae2-ae51-497c-ac44-2e0fcfe21090"
}, - {
- "id": "506c5c93-c4ea-46ca-a562-45930b89cd8a"
}, - {
- "id": "50f8b4a9-9492-4a5d-b3c6-e9fdeb3f7a9a"
}, - {
- "id": "bc0fa345-099c-4e92-bbb1-7ff0cbec167c"
}, - {
- "id": "f1ce4edb-c5e1-48c7-849d-d0ee490eb6dc"
}, - {
- "id": "d2b8c61e-5237-4485-b0ae-da5463dbde7b"
}, - {
- "id": "a1e4c098-a94d-450a-8604-126c8bd8b342"
}, - {
- "id": "85db06e5-5d46-4029-a098-5128c9e129a5"
}, - {
- "id": "718ff4cf-23c9-4999-998a-9b051b0fbe4c"
}, - {
- "id": "8a2e9513-c121-4cdb-a66e-36fe85ae1789"
}, - {
- "id": "549b6340-8141-433f-af0e-304f806ed3ab"
}, - {
- "id": "775ea2bb-caae-48fa-a1ca-6a458a92d266"
}, - {
- "id": "1abf8dd0-67b5-454a-b3ee-4d5afcc916e9"
}, - {
- "id": "653fe0f2-0c30-456e-b3e1-b5ed0c4e6538"
}, - {
- "id": "4d605595-d4fc-4783-97fe-048d6cf43c68"
}, - {
- "id": "a553e2b7-9630-494e-ab86-cacbd58f049d"
}, - {
- "id": "ebab751d-85be-4ee4-9236-5446f94b75bc"
}, - {
- "id": "bf750153-5c8b-46fb-8117-7e6abb62af28"
}, - {
- "id": "470e8c3b-591b-418c-ba95-048bf4c9a0de"
}, - {
- "id": "14513bce-cb1a-4f11-9cd6-13c0e251e1e7"
}, - {
- "id": "764f6b18-a4b7-4d0d-a0fc-bd21209b8ad7"
}, - {
- "id": "860567e4-cafc-452f-96e8-75379090dc68"
}, - {
- "id": "937b98a9-b1c5-44cd-bfc5-b2a3c221d719"
}, - {
- "id": "5015cb6d-7ced-44d6-b2e6-8f1e42b6e274"
}, - {
- "id": "dd9aba62-2052-4314-858b-f7af64f55241"
}, - {
- "id": "96e8c566-a44c-4d25-8a3b-92129ca9e769"
}, - {
- "id": "22e6f850-74a5-41ec-9240-4801b56cb2c5"
}, - {
- "id": "bdaaeb4e-e7f6-4f7e-bdb6-a3abd85346da"
}, - {
- "id": "08c92a7a-518a-4d1f-a1d6-dbc9e9779477"
}, - {
- "id": "e8c7372f-d25d-4c81-bc18-6dc3dbccfbef"
}, - {
- "id": "bc2211b9-b5bb-4fff-be2c-6ff3cb6063f3"
}, - {
- "id": "0152ea99-a517-4351-be98-17a6ed4a41b0"
}, - {
- "id": "d950714a-7423-4567-b956-8562f2727823"
}, - {
- "id": "fe95b2b2-d5f8-4a6b-a8d7-f9ec6143f2d0"
}, - {
- "id": "e97e9b9c-4379-4905-a55c-e694302f69e9"
}, - {
- "id": "cd286c0f-3364-416d-8597-c221b0990be0"
}, - {
- "id": "71b4aab2-9e2c-4c2a-9865-665987b8b56c"
}, - {
- "id": "23ff5308-8159-48cb-9e02-9e9cd3ac2917"
}, - {
- "id": "94ba7820-cdb7-4e05-9968-34e97cf05951"
}, - {
- "id": "b8e4bca0-c867-47b2-a522-120913841003"
}, - {
- "id": "fcd04d6e-d523-4c18-8ee3-9ee6811ef94d"
}, - {
- "id": "9bf492fc-a261-429d-9021-03e27f7d6b70"
}, - {
- "id": "405dd1d9-6d0d-4346-8e02-03902a2fbdd9"
}, - {
- "id": "ea6246cc-569f-4185-b4e2-24811508caff"
}, - {
- "id": "0cecc132-39bb-4113-96b5-7e665d5f6177"
}, - {
- "id": "ff6619ba-2ea8-49dc-81d5-6dac1487eaff"
}, - {
- "id": "338eecfe-d989-4f7c-93e2-e2b370e3acfe"
}, - {
- "id": "898174d5-2f04-4b91-84d2-0034190da4a0"
}, - {
- "id": "679f5b9d-0cf6-41fe-837e-8781911f61de"
}, - {
- "id": "e4ef3cd8-7630-4df4-aead-8a2c7fe6b6e4"
}, - {
- "id": "b35247b4-a48c-4fcb-81e9-033d7230e19e"
}, - {
- "id": "f33f7b79-ef6c-4e40-acff-68407a8502b2"
}, - {
- "id": "22d7ed4c-ea97-4641-9977-b27d5f87bdc5"
}, - {
- "id": "79c99061-ea1a-49be-a027-c661bb326f42"
}, - {
- "id": "07356380-ba8d-4653-9847-30d6effa2948"
}, - {
- "id": "d4bf36b5-3480-42ff-83fe-73807c5e3aa3"
}, - {
- "id": "74ebea2b-5416-4f78-a009-1c0742882e44"
}
], - "max": 100,
- "offset": 0,
- "to": "2021-05-30 10:00:00",
- "units": [
- {
- "id": "03d98e39-0942-4c70-983b-405ad077ebbb"
}, - {
- "id": "3d70f0f0-b3cc-4250-a688-8fd9a8018763"
}
]
}Метод возвращает информацию о конкретной точке объекта (аннотация точки).
Аннотация содержит в себе краткую информацию о точке:
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
}
]
}
| from | string |
Array of objects |
{- "from": "2020-04-07 07:41:35",
- "units": [
- {
- "id": "31e92253-1e70-4bb2-9b6f-385e9eed9ba4"
}
]
}Запрос на получение трека юнита
Запрос состоит из 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
]
]
}
| from | string |
| to | string |
Array of objects | |
| zoom | number |
{- "from": "2021-05-03 00:00:00",
- "to": "2021-05-24 00:00:00",
- "units": [
- {
- "id": "350d511c-ed5f-424f-91f2-2b9259271ba6"
}
], - "zoom": 14
}Запрос на получение трека в прямоугольной области карты
Запрос состоит из 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
]
]
}
| box | Array of numbers |
| process_id | string |
{- "box": [
- 55.775519,
- 37.934139,
- 55.956245,
- 38.34249
], - "process_id": "fed93e82-6c86-4cfd-bcf2-637bd3dfecaa"
}Запрос на получение трека юнита
Запрос состоит из 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
]
]
}
]
| from | string |
Array of objects | |
| to | string |
| zoom | number |
{- "from": "2021-05-01 00:00:00",
- "groups": [
- {
- "id": "211bf822-d861-4d39-9413-bdcf2da3bd3f"
}
], - "to": "2021-05-31 00:00:00",
- "zoom": 14
}Получение номера записи в журнале по искомой дате
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
}
| datepoint | string |
| from | string |
Array of objects |
{- "datepoint": "2022-12-16 12:40:36",
- "from": "2022-12-16 00:00:00",
- "units": [
- {
- "id": "97fba3d2-841b-43cd-911a-073b84ad5438"
}
]
}Создание геозоны на основе трека объекта
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
]
]
}
| from | string |
object | |
| to | string |
Array of objects |
{- "from": "2022-05-01 00:00:00",
- "geozone": {
- "color": {
- "key": "#E68A2F",
- "type": "color_code",
- "value": "Оранжевый"
}, - "icon": {
- "key": "territory",
- "type": "geo_icon",
- "value": "Территория"
}, - "name": "Геозона",
- "type": {
- "key": "polygon",
- "type": "geozone_type",
- "value": "Полигон"
}, - "width": 1
}, - "to": "2022-05-08 00:00:00",
- "units": [
- {
- "id": "194659d6-b51c-4da7-b3e0-a9fd0c08bd08"
}
]
}Запрос для получения трека
Тело запроса 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"
}
| cookie | string Example: __ddg1_=iXH59Du4QaAkZvHblGsa; rl_user_id="RudderEncrypt:U2FsdGVkX1837SQcSoYSWGg1LPwUmHtV7ONZrz1BFryeqgVO6dXAKzEpKdMN3+1F"; PLAY_SESSION={{vault:json-web-token}} |
| from | string |
| max_lat | number |
| max_lon | number |
| min_lat | number |
| min_lon | number |
| process_id | string |
| to | string |
| unit_id | string |
| zoom | number |
{- "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
}Создание нового шаблона уведомлений
Модель шаблона:
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 - Значение таймаута проверки условия.
Роль: Оператор и выше.
string Example: |
"{\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}"Изменение активности уведомлений
Параметры:
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
Роль: Оператор и выше.
| notification_id required | string Example: ID уведомления |
| is_active | string |
{- "is_active": "false"
}Получение уведомлений
Используется один вебсокет для получения следующих данных:
последнего сообщения от объекта
уведомлений за последние сутки
новых уведомлений
изменения справочников
После открытия сокета сервер будет присылать уведомления вида:
[{
"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
}]
Получение рассылок по их 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
}
| ids | string Example: ids= |
| cookie | string Example: PLAY_LANG=ru; PLAY_SESSION={{vault:json-web-token}} |
Создание новой рассылки
Модель рассылки:
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
}
| cookie | string Example: PLAY_LANG=ru; PLAY_SESSION={{vault:json-web-token}} |
| delivery_emails | Array of strings |
| is_active | boolean |
| last_run | string |
| msg | string |
| periodic | number |
object | |
object | |
object | |
Array of objects |
{- "delivery_emails": [
- "test@mail.ru",
- "xyz@gmail.com"
], - "is_active": true,
- "last_run": "2020-10-05 10:25:45",
- "msg": "Some message",
- "periodic": 2,
- "periodic_type": {
- "key": "periodic_days",
- "type": "periodic_type"
}, - "report_template": {
- "id": "76c4d2a4-5c89-494d-9c26-fbfcfa144601"
}, - "units_group": {
- "id": "09581d93-a351-44de-9f33-1d4b0a1b0b48"
}, - "weekdays": [
- {
- "key": "monday",
- "type": "weekdays_type"
}, - {
- "key": "friday",
- "type": "weekdays_type"
}
]
}Изменение активности рассылки
Параметры:
id - ID рассылки
Чтобы сделать активным, необходимо отправить запрос с таким телом:
{
"is_active": true
}
или
{
"is_active": "true"
}
или
{
"is_active": 1
}
Чтобы сделать неактивным, необходимо отправить запрос с таким телом:
{
"is_active": false
}
или
{
"is_active": "false"
}
или
{
"is_active": 0
}
В ответе возвращается обновленный объект mailing как в PUT /mailings/:id
| id required | string Example: ID рассылки |
| cookie | string Example: PLAY_LANG=ru; PLAY_SESSION={{vault:json-web-token}} |
| is_active | string |
{- "is_active": "false"
}Получить рассылки по фильтру
Аналогичнао запросу 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"
}
]
}
Array of objects | |
| count | number |
| from | number |
{- "conditions": [
- {
- "field": "unit.id",
- "value": "b8b1f330-52cf-46c6-a41e-ab0f70a0cce5"
}
], - "count": 10,
- "from": 0
}Запрос на получение данных для оплаты текущей компании на сумму, указанную в теле запроса
Пример запроса:
{
"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"
}
| amount | number |
| skip_init_payment | boolean |
| start_recurrent | number |
{- "amount": 3000,
- "skip_init_payment": true,
- "start_recurrent": 1
}Запрос который вызывается банковским сервисом, должен проходить по 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"}'
| 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 |
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¤cy=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
Роль: Редактор тарифа и выше.
{ // "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 // } }
Получение списка транзакций в текущей компании
Роль: Читатель и выше.
Пример запроса:
{
"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
}
]
}
| first_row | number |
| from | string |
| max_rows | number |
| to | string |
{- "first_row": 5,
- "from": "2021-08-25 00:00:00",
- "max_rows": 15,
- "to": "2021-08-26 00:00:00"
}Запрос для получения списка истории изменений тарифов текущей компании
Роль: Читатель и выше.
Пример запроса:
{
"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
}
}
]
| first_row | number |
| from | string |
| max_rows | number |
| to | string |
{- "first_row": 0,
- "from": "2021-07-01 00:00:00",
- "max_rows": 100,
- "to": "2021-08-31 00:00:00"
}Создает тариф для текущей компании
Роль: Читатель и выше.
Пример запроса:
{
"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
}
}
object |
{- "tariff": {
- "units": 1
}
}Добавляет дилером транзакцию в компанию со статусом оплаты CASH.
Используется для того, чтобы учитывать оплаты произведенные наличными.
Роль: Редактор тарифа и выше.
Пример запроса:
{
"amount": 2500,
"company_id": "0f90e21b-a5a9-4929-8d83-67951440df61",
"custom_order_id": "12344"
}
| amount | number |
| company_id | string |
{- "amount": 2501,
- "company_id": "0f90e21b-a5a9-4929-8d83-67951440df61"
}Изменение тарифа для компании
Роль: Редактор тарифа и выше.
Пример запроса:
{
"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"
}
"{\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}"Возвращает информацию о тарифе для списка компаний
Запрос без списка компаний возвращает транзакции по всем компаниям.
Роль: Редактор тарифа и выше.
Пример запроса:
{
"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"
}
]
Array of objects |
{- "companies": [
- {
- "id": "7bcba823-3aa4-455d-be8a-db04c39e9409"
}, - {
- "id": "fe371bd9-bba3-4c4a-b54b-b05fb77690c9"
}
]
}Получение списка всех транзакций для списка компаний с пагинацией
Роль: Администратор и выше.
Пример запроса:
{
"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"
}
}
]
}
Array of objects | |
| first_row | number |
| from | string |
| max_rows | number |
| to | string |
{- "companies": [
- {
- "id": "7bcba823-3aa4-455d-be8a-db04c39e9409"
}, - {
- "id": "fe371bd9-bba3-4c4a-b54b-b05fb77690c9"
}
], - "first_row": 5,
- "from": "2021-08-25 00:00:00",
- "max_rows": 15,
- "to": "2021-08-26 00:00:00"
}Экспорт транзакций для списка компаний с пагинацией
Роль: Администратор и выше.
Пример запроса:
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 - окончания периода
В ответе возвращается эксель файл
Array of objects | |
object | |
| first_row | number |
| from | string |
| max_rows | number |
| timezone_key | string |
| to | string |
{- "conditions": [
- {
- "key": "payment_type",
- "values": [
- "CARD_DEPOSIT",
- "CASH_DEPOSIT"
]
}
], - "dealer": {
- "id": "c5e63357-6b63-4ea4-8b91-beb53f749f69"
}, - "first_row": 0,
- "from": "2024-04-01 00:00:00",
- "max_rows": 100,
- "timezone_key": "UTC+3",
- "to": "2024-05-01 00:00:00"
}PK-