Changelog

Release notes for the SmartElektroHub REST API, JavaScript SDK, and Python client. Versions follow Semantic Versioning. Dates are in UTC.

v2.4.1 Latest
March 15, 2026
Bug fixes
  • Fixed intermittent latency spikes (>2 s) on the EU (eu-west-1) ingestion cluster under sustained high load.
  • Python SDK: resolved asyncio event loop conflict when initialising sehub.Client inside an already-running loop (Python 3.12).
  • REST API: PATCH /streams/{id} now correctly updates metadata fields with null values (previously silently ignored).
  • JavaScript SDK: fixed a memory leak in the internal reconnect scheduler triggered after 50+ reconnect cycles.
New features
  • Added JSON format support at 2 kHz — set format: 'json' with quality: 'high'.
  • REST API: all responses now include an X-Request-ID header for easier debugging and support escalations.
  • Dashboard: stream preview player now supports picture-in-picture mode on supported browsers.
v2.4.0
February 3, 2026
New features
  • Stream metadata now supports multi-language fields: provide title_en, title_ru, title_de, title_fr alongside the default title.
  • Added Adaptive Rate (AR) streaming for HTTP subscribers — the player automatically selects the optimal rate layer.
  • New GET /streams/{id}/stats endpoint returning real-time subscriber count, geographic distribution, and average listen duration.
  • Webhook delivery log now visible in Dashboard with per-event retry history and raw request/response inspection.
Improvements
  • Webhook delivery reliability improved: reduced duplicate delivery rate from ~0.8% to <0.1% via idempotency keys.
  • Ingestion handshake latency in ap-southeast-1 region reduced by 340 ms on average.
  • SDK: client.streams.list() now accepts an AsyncIterable-based auto-pagination helper.
Deprecations
  • quality: 'ultra_low' is deprecated. Use quality: 'low' instead. ultra_low will be removed in v2.5.0.
  • The GET /streams/{id}/viewer_count alias is deprecated in favour of GET /streams/{id}/stats.
v2.3.2 Security
January 20, 2026
Security
  • Fixed a token validation edge case in the OAuth 2.0 flow where a crafted state parameter could bypass CSRF protection in certain redirect configurations. CVE pending assignment. Upgrade strongly recommended.
Bug fixes
  • JavaScript SDK: fixed a race condition in the reconnect logic that could cause two concurrent MQTT connections on unstable networks.
  • Dashboard: stream preview now correctly loads on Safari 17+ (broken since v2.3.0 due to a WebSocket client compatibility issue).
  • REST API: pagination cursor was incorrect when combining status filter with limit=1.
v2.3.0
December 8, 2025
New features
  • Subscriber analytics: real-time subscriber count and geographic distribution (country-level) now available on all plans.
  • New GET /streams/{id}/stats endpoint (note: promoted to stable in v2.4.0 after beta period).
  • Python SDK: full async/await support — all client methods are now coroutines when called on an async client instance.
  • Report data feed now includes <eh:*> extension tags required by industry readers.
Changes
  • Rate limit on paid plans increased from 100 to 500 requests per minute.
  • Subscriber tokens now expire after 24 hours (previously 6 hours) to reduce re-authentication friction in long sessions.
v2.2.0
October 14, 2025
New features
  • Initial release of the official Python client library (pip install sehub).
  • EU ingestion region launched: eu-west-1 (Frankfurt).
  • Report record scheduling: set a future publishAt timestamp when calling POST /reports/{id}/publish.
  • New device.error webhook event for ingestion-side errors.
Bug fixes
  • Fixed stream metadata not reflecting PATCH changes in some edge cases involving simultaneous writes from multiple API keys.
  • Corrected incorrect Content-Length header on large WebSocket segment responses.
v2.1.0
August 22, 2025
New features
  • OAuth 2.0 Authorization Code flow — build integrations on behalf of other SmartElektroHub accounts. See the Authentication guide.
  • Webhook signature verification via HMAC-SHA256. See the Webhooks guide.
  • Improved CDN routing: global average WebSocket start latency reduced from 4.2 s to 1.8 s.
Changes
  • JavaScript SDK migrated from CommonJS to ESM. CommonJS is still supported via the require() interop build (@sehub/sdk/cjs).
  • Publishable key prefix changed from eh_pub_ to eh_pk_ for clarity. Old keys continue to work until December 2025.

История изменений

Описание выпусков REST API, JavaScript SDK и Python-клиента SmartElektroHub. Версии следуют Семантическому версионированию. Даты указаны в UTC.

v2.4.1 Актуальная
15 марта 2026
Исправления
  • Исправлены периодические скачки задержки (>2 с) на инgest-кластере региона EU (eu-west-1) под устойчивой высокой нагрузкой.
  • Python SDK: устранён конфликт с event loop asyncio при инициализации sehub.Client внутри уже запущенного цикла (Python 3.12).
  • REST API: PATCH /streams/{id} теперь корректно обновляет поля metadata со значением null (ранее игнорировалось).
  • JavaScript SDK: исправлена утечка памяти во внутреннем планировщике переподключений, возникавшая после 50+ циклов reconnect.
Новые возможности
  • Поддержка протокола JSON при 2 кГц — используйте format: 'json' с quality: 'high'.
  • REST API: все ответы теперь содержат заголовок X-Request-ID для удобства отладки и обращений в поддержку.
  • Dashboard: предпросмотр потока поддерживает режим «картинка в картинке» в совместимых браузерах.
v2.4.0
3 февраля 2026
Новые возможности
  • Метаданные потока теперь поддерживают несколько языков: укажите title_en, title_ru, title_de, title_fr наряду с основным полем title.
  • Адаптивная частота (AF) для HTTP-подписчиков — плеер автоматически выбирает оптимальное качество.
  • Новый эндпоинт GET /streams/{id}/stats: количество подписчиков в реальном времени, географическое распределение, средняя продолжительность прослушивания.
  • В Dashboard появился журнал доставки вебхуков с историей повторов и инспекцией запросов/ответов.
Улучшения
  • Надёжность доставки вебхуков улучшена: частота дублирований снижена с ~0,8% до <0,1% благодаря ключам идемпотентности.
  • Задержка установки соединения (handshake) в регионе ap-southeast-1 уменьшена в среднем на 340 мс.
  • SDK: client.streams.list() теперь поддерживает автопагинацию через AsyncIterable.
Устаревшее
  • quality: 'ultra_low' устарело. Используйте quality: 'low'. Параметр будет удалён в v2.5.0.
  • Алиас GET /streams/{id}/viewer_count устарел в пользу GET /streams/{id}/stats.
v2.3.2 Безопасность
20 января 2026
Безопасность
  • Исправлен граничный случай в валидации токена OAuth 2.0: специально сформированный параметр state мог обойти защиту CSRF в определённых конфигурациях редиректа. CVE присваивается. Обновление настоятельно рекомендуется.
Исправления
  • JavaScript SDK: исправлено состояние гонки в логике переподключения, допускавшее два одновременных MQTT-соединения на нестабильных сетях.
  • Dashboard: предпросмотр потока теперь корректно работает в Safari 17+ (сломался в v2.3.0 из-за несовместимости с WebSocket client).
  • REST API: курсор пагинации работал неверно при совместном использовании фильтра status и limit=1.
v2.3.0
8 декабря 2025
Новые возможности
  • Аналитика подписчиков: количество в реальном времени и географическое распределение (на уровне страны) доступны на всех тарифах.
  • Новый эндпоинт GET /streams/{id}/stats (переведён в статус stable в v2.4.0 по итогам бета-периода).
  • Python SDK: полная поддержка async/await — все методы клиента теперь являются корутинами при использовании асинхронного экземпляра.
  • фид данных отчётов теперь включает теги расширения <eh:*>, необходимые для industry readers.
Изменения
  • Лимит запросов на платных тарифах увеличен со 100 до 500 запросов в минуту.
  • Срок действия токенов подписчиков увеличен с 6 до 24 часов для снижения частоты повторной аутентификации в длительных сессиях.
v2.2.0
14 октября 2025
Новые возможности
  • Первый выпуск официального Python-клиента (pip install sehub).
  • Запуск инgest-региона EU: eu-west-1 (Франкфурт).
  • Отложенная публикация записей отчёта: укажите publishAt с будущей временной меткой при вызове POST /reports/{id}/publish.
  • Новое событие вебхука device.error для ошибок на стороне ингеста.
Исправления
  • Исправлено: метаданные потока не обновлялись после PATCH в ряде граничных случаев при одновременных запросах с нескольких API-ключей.
  • Исправлен некорректный заголовок Content-Length в ответах с большими WebSocket-сегментами.
v2.1.0
22 августа 2025
Новые возможности
  • OAuth 2.0 (Authorization Code flow) — создавайте интеграции от имени других аккаунтов SmartElektroHub. См. руководство по аутентификации.
  • Верификация подписи вебхуков через HMAC-SHA256. См. руководство по вебхукам.
  • Улучшена маршрутизация CDN: среднемировая задержка старта WebSocket-соединений снижена с 4,2 с до 1,8 с.
Изменения
  • JavaScript SDK перешёл с CommonJS на ESM. CommonJS по-прежнему поддерживается через @sehub/sdk/cjs.
  • Префикс публичного ключа изменён с eh_pub_ на eh_pk_. Старые ключи продолжают работать до декабря 2025.