Каналы
Создать канал EGTS, Wialon IPS или Retranslator, дать ему имя, приостановить приём или отправить канал в архив.
Забирайте координаты и другие данные в своё приложение через HTTP API. Хаб примет трансляцию от трекеров или сервера и сохранит сообщения.
Кабинет и API уже работают на тестовом стенде. Пока доступна демонстрация по договорённости.
Кабинет и API работают в тестовой версии RC2.
Пока показываем на демо. Открытая регистрация ещё не запущена.
Кабинет использует те же клиентские методы: вход, создание и пауза каналов, добавление устройств, выпуск и отзыв токенов. Для внешнего приложения можно выдать отдельный токен, который разрешает только чтение данных.
Создать канал EGTS, Wialon IPS или Retranslator, дать ему имя, приостановить приём или отправить канал в архив.
Добавить ID источника, назвать устройство и управлять приёмом его данных. Для устройства Wialon IPS можно сменить пароль.
Выпустить токен для выбранных устройств, установить срок и отозвать доступ. Для замены токена создают новый и отзывают прежний.
Управление требует пользовательской сессии. Read-токен внешнего скрипта не позволяет создавать каналы, менять устройства или выдавать другие токены.
Это пример формы запросов, а не действующий публичный сервис. Замените адрес и все заглушки значениями из согласованного демо. Условные 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'Пример начинается с аккаунта, у которого уже подтверждён 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"В примере создаётся 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"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Выберите свои устройства и срок, не более 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Эти запросы не используют 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"Выпустите новый токен с новым 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Это другая операция. Она применяется к устройству в канале 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-файл и полученные секреты остаются у вас; не публикуйте их.
/api/v1/devicesУстройства, которые вы выбрали для токена. В ответе — items и next_cursor для следующей страницы.
/api/v1/devices/{id}Имя, метаданные и идентификаторы источника. В URL нужно передать UUID из списка устройств, а не IMEI трекера.
/api/v1/devices/{id}/telemetryПоследние значения параметров и время последнего поступления данных. У каждого значения есть своё время измерения, message_id и device_seq.
/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 и ошибки описаны в техническом разделе.
Нет, для интеграции достаточно API. Вы не получаете пароль от базы или доступ к управлению сервером.
Read-токен позволяет только читать данные. Управление каналами, устройствами и токенами доступно через клиентский API с пользовательской сессией, Origin и CSRF. Эти же методы использует личный кабинет.
Готового SDK пока нет, но API можно вызывать обычным HTTP-клиентом — например, curl. Открытая регистрация ещё не запущена; можем показать работу на демо.
Расскажите, какой трекер или сервер будет передавать данные и где вы хотите их использовать. Мы покажем, как подключить канал, создать токен и получить данные из своего скрипта.
Напишите тому, кто прислал вам ссылку на проект. Для начала хватит нескольких строк об источнике и вашей системе.
Подготовить запрос на демо