Публікація та релізи
Репозиторій і ID аддона
Розміщуйте аддон у публічному GitHub-репозиторії. Поле id у маніфесті має збігатися з шляхом репозиторію на GitHub:
| GitHub-репозиторій | id у manifest |
|---|---|
https://github.com/MyOrg/my-stream-addon |
"MyOrg/my-stream-addon" |
https://github.com/jane/widget-panel |
"jane/widget-panel" |
Формат: ORG/REPO — організація або користувач GitHub, слеш, назва репозиторію.
id не змінюється між релізами. Він використовується в:
- HTTP-маршрутах (
/addon/{id}/…,/addon_static/{id}/…) - посиланнях
depends_onміж аддонами - перевірці оновлень (catalog API і GitHub releases)
Не змінюйте id після першого публічного релізу, якщо лише не публікуєте новий аддон.
Структура GitHub-релізу
Кожну версію публікуйте як GitHub Release. До релізу мають бути додані файли:
| Файл релізу | Обов'язковий | Опис |
|---|---|---|
main.zip |
Так | Архів зі всіма файлами аддона |
manifest.json |
Так | Окрема копія маніфесту (також всередині main.zip) |
logo.png або logo.svg |
Так | Іконка з поля icon маніфесту (також всередині main.zip) |
Рекомендований вміст main.zip:
main.zip
├── manifest.json
├── index.js # якщо є worker
├── logo.png # або logo.svg
├── index.html # якщо використовується web UI
└── ... # інші ресурси
Бекенд каталогу StreamKit+ і перевірка оновлень у застосунку читають manifest.json з assets релізу, щоб визначити опубліковану версію. Поле version має збігатися з тегом релізу (наприклад тег v1.2.0 → "version": "1.2.0"). Файл у assets має бути ідентичним manifest.json всередині main.zip (обов'язково для синхронізації з каталогом).
Чеклист перед публікацією
idуmanifest.jsonдорівнюєORG/REPOвашого GitHub-репозиторію.versionзбігається з тегом GitHub-релізу.- У релізі є
main.zip,manifest.jsonіlogo.png/logo.svg. - У
main.zipє всі файли, необхідні для роботи аддона (включно зmanifest.jsonі іконкою). - Дозволи в маніфесті відповідають реальній поведінці аддона.
- Після публікації релізу запустіть синхронізацію з каталогом (на сайті або через API синхронізації), щоб користувачі отримали нові файли.
Кешування файлів у каталозі
Коли аддон додають до каталогу, сайт завантажує файли релізу (manifest.json, logo.png / logo.svg, main.zip) і кешує їх постійно.
- Кешовані файли роздаються всім користувачам і не підтягуються знову автоматично.
- Вони оновлюються лише під час синхронізації версії — вручну на сайті (Оновити версію) або через API синхронізації.
Після модерації та схвалення аддона користувачі завантажують саме ті файли, що були перевірені. Зміна файлів у GitHub-релізі без синхронізації не змінює те, що отримують користувачі. Це зроблено навмисно й захищає від тихої підміни файлів після модерації.
Щоб випустити нову версію, опублікуйте новий GitHub-реліз і запустіть синхронізацію.
Перевірки під час синхронізації з каталогом
Під час додавання або синхронізації аддона каталог перевіряє:
- У релізі є
manifest.json,logo.png(абоlogo.svg) іmain.zip. - Поле
idуmanifest.jsonвідповідає репозиторію за тими ж правилами, що в manifest.json:ORG/REPOдля сторонніх репозиторіїв абоREPO(лише назва репозиторію) для аддонів організаціїRocketMan-StreamKit. - Файл
manifest.jsonу assets релізу ідентичнийmanifest.jsonвсерединіmain.zip.
Якщо перевірка не пройдена, додавання або синхронізацію відхиляють із поясненням.
Автоматична синхронізація версії в каталозі
Використовуйте API синхронізації для розробників, щоб оновлювати каталог після кожного GitHub-релізу без ручного натискання Оновити версію на сайті.
Базовий URL у прикладах:
https://rocketman-streams.com. Використовуйте домен сайту, на якому опубліковано ваш аддон.
Токен розробника
- Відкрийте сторінку Аддони на сайті.
- Натисніть кнопку API key зверху.
- Скопіюйте токен розробника з модального вікна.
Токен можна перегенерувати в тому ж вікні (з підтвердженням). Перегенерація одразу анулює старий токен — оновіть його всюди, де він використовується.
Тримайте токен у секреті. Будь-хто, хто має його, може запускати оновлення версій ваших аддонів. Зберігайте його як секрет CI/CD (наприклад GitHub Actions secret ROCKETMAN_ADDON_TOKEN) і не комітьте в репозиторій.
API синхронізації
POST https://rocketman-streams.com/api/extensions/dev/sync
Content-Type: application/json
| Параметр | Обов'язковий | Опис |
|---|---|---|
repo |
так | Репозиторій аддона у форматі OWNER/NAME (як github.repository у GitHub Actions). Має збігатися з аддоном вашої власності в каталозі. |
token |
так | Токен розробника з модального вікна API key. |
Параметри можна передати також як application/x-www-form-urlencoded або query-параметри URL; рекомендується JSON.
У разі успіху ендпоінт знову читає останній GitHub-реліз, перезавантажує й оновлює кешовані файли та зберігає нову версію й метадані, якщо реліз змінився.
Приклад:
curl -X POST "https://rocketman-streams.com/api/extensions/dev/sync" \
-H "Content-Type: application/json" \
-d '{"repo":"OWNER/REPO","token":"YOUR_TOKEN"}'
Успішна відповідь:
{
"status": true,
"repo": "OWNER/REPO",
"updated": true,
"version": "1.2.3"
}
updated—true, якщо версія або метадані змінилися відносно збережених;false, якщо реліз перечитано, але нічого не змінилося.version— версія після синхронізації.
Помилки (HTTP-статус і поле error):
| HTTP | error |
Значення |
|---|---|---|
| 400 | token_required |
Параметр token не передано. |
| 400 | invalid_repo |
Параметр repo не передано або некоректний. |
| 401 | invalid_token |
Токен не належить жодному розробнику аддонів. |
| 403 | not_owner |
Аддон є в каталозі, але не належить власнику токена. |
| 404 | addon_not_found |
У каталозі немає аддона з таким repo. |
| 429 | rate_limited_token |
Забагато запитів для цього токена. Див. retryAfter (секунди). |
| 429 | rate_limited_repo |
Забагато запитів для цього репозиторію. Див. retryAfter (секунди). |
| 502 | sync_failed |
Не вдалося отримати або розібрати GitHub-реліз (див. message). |
| 500 | internal_error |
Непередбачена помилка сервера. |
Ліміти запитів
- 1 запит за 30 секунд на токен розробника.
- 1 запит за 60 секунд на репозиторій.
При перевищенні ліміту у відповіді є поле retryAfter (у секундах).
Приклад GitHub Actions
Workflow запускається при кожній публікації релізу й сповіщає каталог. Збережіть як .github/workflows/rocketman-sync.yml у репозиторії аддона й додайте secret ROCKETMAN_ADDON_TOKEN із токеном розробника.
name: Sync addon to RocketMan catalog
on:
release:
types: [published]
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Notify catalog about the new release
run: |
curl -sS -X POST "https://rocketman-streams.com/api/extensions/dev/sync" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"${{ github.repository }}\",\"token\":\"${{ secrets.ROCKETMAN_ADDON_TOKEN }}\"}"
Пов'язані матеріали
- manifest.json — опис полів
- Початок роботи — структура проєкту під час розробки