Перейти к основному содержимому

Быстрый старт

Примеры обращений к основным методам API. Все запросы, кроме получения токена, требуют заголовок Authorization: Bearer <токен>, полученный на шаге Авторизация. Адрес сервера в примерах — nav.gpspos.ru; у вашей компании он может отличаться. Все методы располагаются под путём /api/ относительно адреса сервера (см. базовый путь).

В примерах ответов приведены наиболее востребованные поля; полный состав полей каждой модели указан в Swagger UI (nav.gpspos.ru/api/docs).

Профиль пользователя​

GET /api/Profile

Возвращает профиль пользователя — тот же набор данных, которым веб-интерфейс и мобильное приложение загружают сеанс работы.

curl https://nav.gpspos.ru/api/Profile \
-H "Authorization: Bearer <токен>"

Структура ответа (содержимое массивов опущено):

{
"Objects": [],
"ObjectGroups": [],
"Geozones": [],
"GeozoneGroups": [],
"Drivers": [],
"DriverGroups": [],
"DriverKeys": [],
"DriverKeysGroup": [],
"Shifts": [],
"DriverPenalty": {},
"CommandTemplates": [],
"ReportTemplates": [],
"ObjectIcons": [],
"SensorIcons": [],
"GeozoneIcons": [],
"MapLayers": [],
"Flags": "",
"GeocoderMaxRequest": 0,
"MinMapClusterObjects": 0,
"ServerTime": 1750000000000,
"AppVersion": "1.0.0.0"
}
  • Objects — объекты пользователя с датчиками (см. ниже).
  • ObjectGroups — группы объектов.
  • Geozones, GeozoneGroups — геозоны и их группы.
  • Drivers, DriverGroups — водители и их группы.
  • DriverKeys, DriverKeysGroup — ключи водителей и их группы.
  • Shifts — смены водителей.
  • DriverPenalty — настройки штрафов водителей.
  • CommandTemplates — шаблоны команд.
  • ReportTemplates — шаблоны отчётов.
  • ObjectIcons — справочник иконок объектов.
  • SensorIcons — справочник иконок датчиков.
  • GeozoneIcons — справочник иконок геозон.
  • MapLayers — слои карты.
  • Flags — флаги настроек пользователя.
  • GeocoderMaxRequest — ограничение на число запросов к геокодеру.
  • MinMapClusterObjects — минимальное число объектов для объединения в кластер на карте.
  • ServerTime — текущее время сервера в миллисекундах Unix-времени.
  • AppVersion — версия серверного приложения.

Объекты в профиле передаются в сокращённом виде:

  • удалённые и заблокированные объекты не передаются, независимо от прав пользователя;
  • калибровочные таблицы датчиков не передаются: поле CalibrationTable у каждого датчика равно null;
  • датчики топлива не передаются, если для пользователя включено их скрытие;
  • поля CompanyName, EventIds, ServiceLogs, VehicleSpecifications и CustomProperties не заполняются.

Полные данные объекта, включая калибровки, возвращает GET /api/Objects/{id}.

Список объектов​

GET /api/Objects

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

curl https://nav.gpspos.ru/api/Objects \
-H "Authorization: Bearer <токен>"

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

[
{
"Id": 123,
"CompanyId": 45,
"CompanyName": "Демо-компания",
"ClusterId": 1,
"Name": "Грузовик 01",
"IMEI": "861234567890123",
"DeviceType": "Teltonika FMB920",
"StateNumber": "А123ВС777",
"Phone": "+70000000000",
"IconId": 12,
"TrackColor": "#1E90FF",
"Status": 1,
"Timeout": 600,
"MaxSpeed": 90,
"TimeZone": "Europe/Moscow",
"CreateDate": "2025-01-15T10:00:00",
"GroupIds": [7],
"Sensors": [
{
"Id": 501,
"Name": "Зажигание",
"Source": "din1",
"Units": "",
"DataType": 1,
"OnText": "Вкл",
"OffText": "Выкл",
"CalibrationTable": []
}
]
}
]
  • Status — состояние объекта: 0 — заблокирован, 1 — активен, 10 — неисправен, 11 — на обслуживании, 15 — не установлен, 255 — удалён.
  • CreateDate — дата создания объекта строкой в формате ISO 8601; остальные поля времени передаются в миллисекундах Unix-времени.
  • Sensors — датчики объекта; Source содержит имя входа устройства, CalibrationTable — тарировочную таблицу.

Метод GET /api/Objects/lite возвращает тот же перечень в сокращённом составе полей: Id, ClusterId, Name, Comment, IMEI, Phone, Phone1, Flags, IconId, CompanyId, DeviceType, TrackColor, CreateDate, Status. Поиск объекта по IMEI выполняется методом GET /api/Objects/byimei/{imei} и возвращает одну запись в том же формате.

Статус всех объектов​

GET /api/ObjectsStatus

Возвращает текущее состояние всех доступных объектов. Для одного объекта — GET /api/ObjectsStatus/{id}.

curl https://nav.gpspos.ru/api/ObjectsStatus \
-H "Authorization: Bearer <токен>"

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

{
"Positions": [
{
"ObjectId": 123,
"Online": true,
"Lat": 55.751244,
"Lng": 37.618423,
"Alt": 156,
"Time": 1750000000000,
"Speed": 42,
"heading": 275,
"Sat": 11,
"Accuracy": 5
}
],
"SensorValues": [
{ "SensorId": 501, "Time": 1750000000000, "Value": 1 }
],
"DriverKeys": [
{ "ObjectId": 123, "Time": 1749998000000, "UId": "1A2B3C4D" }
],
"Stats": [
{
"ObjectId": 123,
"Day": 1749945600000,
"Length": 184.5,
"MoveTime": 12600,
"ParkTime": 71400,
"IdleTime": 1800,
"EngineTime": 14400,
"AvgSpeed": 53,
"MaxSpeed": 89,
"Fuel": 62.3
}
]
}
  • Positions — последняя позиция объекта. Поле направления движения называется heading — строчными буквами, в отличие от остальных полей.
  • SensorValues — последние показания датчиков; SensorId соответствует полю Id в массиве Sensors объекта.
  • DriverKeys — последний приложенный ключ водителя, UId — его идентификатор.
  • Stats — суточная статистика: Length в километрах, MoveTime, ParkTime, IdleTime и EngineTime в секундах, Day — начало суток в миллисекундах Unix-времени.

История объекта​

POST /api/ObjectsHistory

Возвращает трек, события, файлы и показания датчиков объекта за указанный интервал. Длительность интервала — не более одного месяца; при её превышении возвращается 400 Bad Request.

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

{
"ObjectId": 123,
"From": 1750000000000,
"Till": 1750086400000
}
  • ObjectId — идентификатор объекта.
  • From, Till — начало и конец интервала в миллисекундах Unix-времени.
curl -X POST https://nav.gpspos.ru/api/ObjectsHistory \
-H "Authorization: Bearer <токен>" \
-H "Content-Type: application/json" \
-d '{"ObjectId":123,"From":1750000000000,"Till":1750086400000}'

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

{
"Track": {
"Intervals": [
{
"From": 1750000000000,
"Till": 1750003600000,
"Position": { "Lat": 55.751244, "Lng": 37.618423, "Alt": 156 }
},
{
"From": 1750003600000,
"Till": 1750007200000,
"Positions": [
{
"Lat": 55.751244,
"Lng": 37.618423,
"Alt": 156,
"Time": 1750003600000,
"Speed": 0,
"heading": 275,
"Sat": 11
}
]
}
]
},
"Events": [
{
"Id": 90001,
"ObjectId": 123,
"Time": 1750004000000,
"Type": 2,
"Status": 1,
"Text": "Превышение скорости",
"ResetTime": 0,
"NotificationId": 15
}
],
"Files": [
{ "ObjectId": 123, "Time": 1750004500000, "Type": "image/jpeg", "Uid": "9f1c…" }
],
"Sensors": [
{
"SensorId": 501,
"Intervals": [
{
"From": 1750000000000,
"Till": 1750007200000,
"Values": [ { "Time": 1750000000000, "Value": 1 } ]
}
]
}
],
"Violations": {
"SpeedViolations": [],
"AccelerationViolations": [],
"BrakingViolations": [],
"TurningViolations": [],
"AccelerometerFaulty": false
}
}
  • Track.Intervals содержит интервалы двух видов. Интервал стоянки содержит поле Position с одной точкой; интервал движения — поле Positions с массивом точек. Отдельного поля-признака вида интервала нет.
  • Events — события за период; Type представляет собой битовую маску типа события, NotificationId равен нулю для системных событий и событий с удалённым правилом.
  • Files — файлы, полученные с устройства за период. Тело файла загружается методом GET /api/ObjectFiles/{id}.
  • Sensors — показания датчиков, сгруппированные по датчику и интервалу.
  • Violations — объект, а не массив: нарушения разнесены по категориям, признак AccelerometerFaulty указывает на некорректные показания акселерометра за период.

События и их квитирование​

GET /api/Events/feed
POST /api/Events/ack

GET /api/Events/feed возвращает неквитированные события для ленты оповещений — без событий из групп, отключённых пользователем. Метод GET /api/Events возвращает тот же перечень без указанной фильтрации.

curl https://nav.gpspos.ru/api/Events/feed \
-H "Authorization: Bearer <токен>"

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

[
{
"Id": 90001,
"ObjectId": 123,
"Time": 1750004000000,
"Type": 2,
"Status": 1,
"Text": "Превышение скорости",
"ResetTime": 0,
"NotificationId": 15
}
]

Обработанные события квитируются по списку идентификаторов Id; неквитированное событие возвращается в каждом последующем ответе:

curl -X POST https://nav.gpspos.ru/api/Events/ack \
-H "Authorization: Bearer <токен>" \
-H "Content-Type: application/json" \
-d '[1001,1002,1003]'

Метод возвращает пустое тело ответа.

Отправка команды на объект​

POST /api/Commands/run

Отправляет команду на список объектов — по шаблону (TemplateId, перечень шаблонов — GET /api/CommandTemplates) либо произвольной строкой (Command).

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

{
"ObjectIds": [123],
"TemplateId": 7,
"Command": ""
}
curl -X POST https://nav.gpspos.ru/api/Commands/run \
-H "Authorization: Bearer <токен>" \
-H "Content-Type: application/json" \
-d '{"ObjectIds":[123],"TemplateId":7}'

Метод возвращает пустое тело ответа. Успешный ответ означает, что команда принята и поставлена в очередь на отправку устройству; результат её выполнения отражается в событиях объекта.

Адреса по координатам​

POST /api/ReverseGeocoder

Принимает список координат и возвращает соответствующие им адреса. Порядок элементов ответа совпадает с порядком координат в запросе.

curl -X POST https://nav.gpspos.ru/api/ReverseGeocoder \
-H "Authorization: Bearer <токен>" \
-H "Content-Type: application/json" \
-d '[{"Latitude":55.751244,"Longitude":37.618423}]'

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

[
{ "Address": "Москва, Красная площадь", "Street": "Красная площадь", "Error": null }
]

Поле Error содержит описание ошибки, если адрес для координаты определить не удалось.

См. также​