Для разработчиков

Ваш продукт.
Телематика через API.

Забирайте координаты и другие данные в своё приложение через HTTP API. Хаб примет трансляцию от трекеров или сервера и сохранит сообщения.

Кабинет и API уже работают на тестовом стенде. Пока доступна демонстрация по договорённости.

Кабинет и API работают в тестовой версии RC2.
Пока показываем на демо. Открытая регистрация ещё не запущена.

Клиентский API

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

Кабинет использует те же клиентские методы: вход, создание и пауза каналов, добавление устройств, выпуск и отзыв токенов. Для внешнего приложения можно выдать отдельный токен, который разрешает только чтение данных.

Каналы

Создать канал EGTS, Wialon IPS или Retranslator, дать ему имя, приостановить приём или отправить канал в архив.

Устройства

Добавить ID источника, назвать устройство и управлять приёмом его данных. Для устройства Wialon IPS можно сменить пароль.

Доступ

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

Управление требует пользовательской сессии. Read-токен внешнего скрипта не позволяет создавать каналы, менять устройства или выдавать другие токены.

Открыть справочник всех 22 методов ↗
Пример подключения

От входа до первых данных

Это пример формы запросов, а не действующий публичный сервис. Замените адрес и все заглушки значениями из согласованного демо. Условные UUID здесь нужны для показа формата; для каждого нового ресурсного действия используйте новый request_id UUID.

# Все значения ниже — заглушки. Пример не выполняется этой страницей.
BASE_URL='https://api.example.invalid'
COOKIE_JAR='./tracker-hub-demo.cookies'
CSRF_TOKEN='CSRF_FROM_LOGIN_OR_ME'
CHANNEL_ID='UUID_FROM_CHANNEL_RESPONSE'
DEVICE_ID='UUID_FROM_DEVICE_RESPONSE'
READ_TOKEN='TOKEN_FROM_CREATION_RESPONSE'
OLD_TOKEN_ID='TOKEN_ID_TO_REVOKE'

1. Войти в подтверждённый аккаунт

Пример начинается с аккаунта, у которого уже подтверждён email. Регистрация, повтор письма и действия по ссылкам описаны в справочнике. В ответе login получите cookie hub_customer и csrf_token; GET /api/v1/me позволяет проверить verified и получить текущий CSRF.

curl --fail-with-body \
  --cookie-jar "$COOKIE_JAR" \
  -H "Origin: $BASE_URL" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  "$BASE_URL/api/v1/auth/login" <<JSON
{
  "email": "you@example.invalid",
  "password": "YOUR_PASSWORD_AT_LEAST_15_CHARS"
}
JSON

curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  "$BASE_URL/api/v1/me"

2. Создать канал и проверить готовность

В примере создаётся EGTS1 TCP. Ответ содержит id, host, port и state=provisioning. Сохраните id как CHANNEL_ID и проверьте список каналов. Настраивать передачу на полученный host/port можно после state=ready; сохранённый порт ещё не означает работающий приём.

curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  -H "Origin: $BASE_URL" \
  -H "X-CSRF-Token: $CSRF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  "$BASE_URL/api/v1/me/channels" <<JSON
{
  "request_id": "00000000-0000-4000-8000-000000000001",
  "name": "Пример EGTS",
  "protocol": "egts",
  "version": "1",
  "transport": "tcp"
}
JSON

curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  "$BASE_URL/api/v1/me/channels"

3. Добавить устройство

channel_id — UUID созданного канала, source_ident — ID, который передаёт источник. Имя вы выбираете сами. Полученный внутренний id сохраните как DEVICE_ID: именно этот UUID используется в API. У IPS-устройства пароль показывается при первоначальном создании.

curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  -H "Origin: $BASE_URL" \
  -H "X-CSRF-Token: $CSRF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  "$BASE_URL/api/v1/me/devices" <<JSON
{
  "request_id": "00000000-0000-4000-8000-000000000005",
  "name": "Пример устройства",
  "channel_id": "$CHANNEL_ID",
  "source_ident": "DEVICE_SOURCE_ID"
}
JSON

4. Выпустить токен для приложения

Выберите свои устройства и срок, не более 365 суток. role в теле нет: созданный токен всегда read. Сохраните token как READ_TOKEN и token_id для последующего отзыва. Сам секрет показывается только один раз.

curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  -H "Origin: $BASE_URL" \
  -H "X-CSRF-Token: $CSRF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  "$BASE_URL/api/v1/me/tokens" <<JSON
{
  "request_id": "00000000-0000-4000-8000-000000000008",
  "name": "Пример доступа скрипта",
  "device_ids": [
    "$DEVICE_ID"
  ],
  "expires_at": "2026-10-25T12:00:00Z"
}
JSON

5. Получить данные отдельным Bearer-запросом

Эти запросы не используют cookie или CSRF. Приложение видит только устройства, которые разрешены токеном. Получите последние значения и историю; для параметров периода и пагинации смотрите справочник.

curl --fail-with-body \
  -H "Authorization: Bearer $READ_TOKEN" \
  "$BASE_URL/api/v1/devices/$DEVICE_ID/telemetry"

curl --fail-with-body \
  -H "Authorization: Bearer $READ_TOKEN" \
  "$BASE_URL/api/v1/devices/$DEVICE_ID/messages?limit=100"

6. Заменить и отозвать токен

Выпустите новый токен с новым request_id, переведите приложение на него, затем отзовите прежний по OLD_TOKEN_ID. Для управления снова нужна пользовательская сессия. Отдельного метода regenerate/rotate для API-токена нет, а старый секрет восстановить нельзя.

curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  -H "Origin: $BASE_URL" \
  -H "X-CSRF-Token: $CSRF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  "$BASE_URL/api/v1/me/tokens" <<JSON
{
  "request_id": "00000000-0000-4000-8000-000000000020",
  "name": "Замена токена скрипта",
  "device_ids": [
    "$DEVICE_ID"
  ],
  "expires_at": "2026-10-25T12:00:00Z"
}
JSON

curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  -H "Origin: $BASE_URL" \
  -H "X-CSRF-Token: $CSRF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  "$BASE_URL/api/v1/me/tokens/$OLD_TOKEN_ID/revoke" <<JSON
{
  "request_id": "00000000-0000-4000-8000-000000000009"
}
JSON

Отдельно: смена IPS-пароля

Это другая операция. Она применяется к устройству в канале Wialon IPS, а не к EGTS из примера выше. Новый ips_password показывается один раз; прежний пароль перестаёт действовать.

IPS_DEVICE_ID='UUID_OF_IPS_DEVICE'
curl --fail-with-body \
  --cookie "$COOKIE_JAR" \
  -H "Origin: $BASE_URL" \
  -H "X-CSRF-Token: $CSRF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  "$BASE_URL/api/v1/me/devices/$IPS_DEVICE_ID/password" <<JSON
{
  "request_id": "00000000-0000-4000-8000-000000000007"
}
JSON

Не передавайте owner/account_id в телах управления: аккаунт определяется сессией. Повтор запроса с прежним request_id возвращает прежний результат, но не показывает секрет ещё раз. Cookie-файл и полученные секреты остаются у вас; не публикуйте их.

Read API / JSON

Четыре метода чтения

GET/api/v1/devices

Список устройств

Устройства, которые вы выбрали для токена. В ответе — items и next_cursor для следующей страницы.

GET/api/v1/devices/{id}

Карточка устройства

Имя, метаданные и идентификаторы источника. В URL нужно передать UUID из списка устройств, а не IMEI трекера.

GET/api/v1/devices/{id}/telemetry

Последние значения

Последние значения параметров и время последнего поступления данных. У каждого значения есть своё время измерения, message_id и device_seq.

GET/api/v1/devices/{id}/messages

История сообщений

Сообщения за период или новые сообщения после after_seq. В ответе — items, next_cursor и next_after_seq.

Доступ в руках клиента

Токен для вашего скрипта.

Выберите в кабинете устройства и срок действия токена. Ваш скрипт сможет читать только эти устройства. Скопировать токен можно один раз, при создании.

Кто проверяет доступ

Сервер проверяет права при каждом запросе: ваши ли это устройства, есть ли они в токене и действует ли сам токен. Данные другого аккаунта недоступны.

Можно отозвать

Если токен больше не нужен, отзовите его в кабинете. Следующий запрос с ним будет отклонён. Потерянный токен замените новым и отзовите старый. Передавайте его в заголовке Authorization: Bearer, а не в URL.

Форма запроса

Начните с чтения.

Ниже пример формы запросов. Адрес api.example.invalid не работает: замените его адресом, который получите для демо. Вместо YOUR_READ_TOKEN и UUID_FROM_DEVICES подставьте свой токен и UUID устройства.

# Условный адрес: замените адресом согласованного демо.
BASE_URL='https://api.example.invalid'
TOKEN='YOUR_READ_TOKEN'
DEVICE_ID='UUID_FROM_DEVICES'

curl --fail-with-body -H "Authorization: Bearer $TOKEN" \
  "$BASE_URL/api/v1/devices?limit=100"

curl --fail-with-body -H "Authorization: Bearer $TOKEN" \
  "$BASE_URL/api/v1/devices/$DEVICE_ID"

curl --fail-with-body -H "Authorization: Bearer $TOKEN" \
  "$BASE_URL/api/v1/devices/$DEVICE_ID/telemetry"

curl --fail-with-body --get -H "Authorization: Bearer $TOKEN" \
  --data-urlencode 'from=2026-10-18T00:00:00Z' \
  --data-urlencode 'to=2026-10-18T12:00:00Z' \
  --data-urlencode 'limit=100' \
  "$BASE_URL/api/v1/devices/$DEVICE_ID/messages"
Скачать пример запросов

from/to фильтруют время поступления received_at в UTC. limit — от 1 до 500, по умолчанию 100. Историю продолжают через next_cursor; новые сообщения читают в отдельном режиме after_seq. Конкретные поля JSON и ошибки описаны в техническом разделе.

Перед интеграцией

Что нужно знать

Нужно подключаться к MySQL?

Нет, для интеграции достаточно API. Вы не получаете пароль от базы или доступ к управлению сервером.

Можно управлять каналами Bearer-токеном?

Read-токен позволяет только читать данные. Управление каналами, устройствами и токенами доступно через клиентский API с пользовательской сессией, Origin и CSRF. Эти же методы использует личный кабинет.

Есть готовый SDK или публичная регистрация?

Готового SDK пока нет, но API можно вызывать обычным HTTP-клиентом — например, curl. Открытая регистрация ещё не запущена; можем показать работу на демо.

Следующий шаг

Покажем, как это работает.

Расскажите, какой трекер или сервер будет передавать данные и где вы хотите их использовать. Мы покажем, как подключить канал, создать токен и получить данные из своего скрипта.

Напишите тому, кто прислал вам ссылку на проект. Для начала хватит нескольких строк об источнике и вашей системе.

Подготовить запрос на демо
ping@tracker-hub.ruАдрес для будущих обращений.
Пока связываемся в текущей переписке.