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

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

Примеры обращений к основным методам 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": [],
"Geozones": [],
"ObjectIcons": [],
"ServerTime": 1750000000000
}
  • Objects — объекты пользователя с датчиками; состав элемента совпадает с ответом GET /api/Objects.
  • Geozones — геозоны пользователя.
  • ObjectIcons — справочник иконок объектов.
  • ServerTime — текущее время сервера в миллисекундах Unix-времени.

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

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 содержит описание ошибки, если адрес для координаты определить не удалось.

См. также