Zaloguj się

API i integracje

Steruj pokojem Cliqer Timer z własnych narzędzi przez HTTP i otrzymuj podpisany webhook, gdy zmienia się przebieg wydarzenia.

Każdy pokój ma API HTTP. Uruchamiaj i zatrzymuj timery, wyświetlaj wiadomości, dodawaj czas i odczytuj harmonogram ze skryptu, systemu sterowania show lub z czegokolwiek, co potrafi wysłać żądanie HTTP. Webhook informuje Twój system, gdy timer startuje lub się kończy.

Strona kluczy API z przyciskiem Utwórz klucz, jeszcze bez żadnych kluczy
Klucze API konta w sekcji Zespół w Twoim panelu.

Pierwsze kroki

Utwórz klucz API

Otwórz Klucze API i kliknij Utwórz klucz. Skopiuj go od razu: jest wyświetlany tylko raz. Zobacz Zespół i klucze API.

Znajdź identyfikator pokoju

To część po /timer/r/ w adresie panelu sterowania, na przykład https://cliqer.io/timer/r/<room>/control.

Wykonaj wywołanie

Wysyłaj klucz z każdym żądaniem. ping sprawdza, czy pokój istnieje.

API steruje tym samym pokojem co panel sterowania: wywołanie z Twojego narzędzia pojawia się od razu na każdym ekranie.

Żądania

Każde wywołanie ma postać https://cliqer.io/api/timer/v1/<room>/<action>. Działają GET, POST, PUT i PATCH. Parametry podajesz w query stringu albo w treści JSON przy POST, PUT i PATCH; gdy parametr jest w obu miejscach, pierwszeństwo ma treść. Myślniki w nazwie akcji też działają, więc add-time to add_time. /api/timer/v0/ przyjmuje te same wywołania.

Wyślij klucz w jeden z poniższych sposobów, sprawdzanych w tej kolejności:

GdziePrzykład
Nagłówek AuthorizationAuthorization: Bearer <key>
Nagłówek x-api-keyx-api-key: <key>
Parametr zapytania api_key?api_key=<key>. Unikaj go, jeśli możesz: adresy trafiają do logów.
curl -X POST https://cliqer.io/api/timer/v1/<room>/add_time \
  -H "Authorization: Bearer $CLIQER_KEY" \
  -H "content-type: application/json" \
  -d '{"timer_id": "<timer>", "amount": "2m"}'

Klucze i uprawnienia

Klucz API Twojego konta może wszystko w pokojach, których jesteś właścicielem. Pokój może mieć też własne klucze, a każdy z nich ma wybrane spośród trzech uprawnień:

UprawnieniePozwala na
OdczytAkcje get_ i export.
Prowadzenie showSterowanie odtwarzaniem, czas, blackout, On air i wiadomości.
EdycjaUsuwanie, import, surowe intencje i webhook.

Wywołanie wymagające uprawnienia, którego klucz nie ma, otrzymuje 401. Sekret klucza pokoju jest wyświetlany tylko raz, przy jego tworzeniu. Aby w ogóle korzystać z API, Twój plan musi je obejmować, zobacz Plany i limity.

Akcje

timer_id wybiera timer po identyfikatorze; index wybiera go po pozycji, licząc od 1. Gdy wysłane są oba, wygrywa timer_id. Pomiń oba, aby działać na bieżącym timerze.

AkcjaZwraca
get_roomTytuł, datę, strefę czasową i ustawienia.
get_statusTo, co jest teraz uruchomione.
get_timersHarmonogram.
get_messagesWiadomości.
get_questionsPytania od publiczności.
get_connectionsPołączone urządzenia.
get_logsLog pokoju. limit, offset.
exportCały pokój do pobrania jako cliqer-timer-<room>.json.

Wartości czasu to 30s, 5m, 1h, 250ms lub sama liczba sekund. Zamiast amount działa też seconds, a znak minus cofa czas. Przełączniki takie jak on, autostart i replace traktują 0, false, off i no jako wyłączone, a wszystko inne jako włączone. Pomiń on w blackout, aby go przełączyć.

Odpowiedzi

Każda odpowiedź to JSON: {"ok": true, "message": "<action>", "data": ...} w razie powodzenia, {"ok": false, "message": "...", "code": "..."} w razie błędu.

StatusKomunikatPrzyczyna
400Either timer_id OR index are requiredselect bez timera.
400amount is required, like 30s, 5m or 1hBrak wartości czasu lub wartość nieczytelna.
400Refused: invalidPokój nie mógł tego zastosować.
401Access Denied: Valid API key requiredBrak klucza, błędny klucz lub brak uprawnienia.
403The API is not in this planPlan pokoju nie obejmuje API.
403Refused: forbidden, Refused: readOnly, Refused: limitReachedBrak zgody, pokój tylko do odczytu lub limit planu.
404Room not found, Unknown action <name>, Timer not foundSprawdź identyfikator pokoju, akcję lub identyfikator timera.
409Refused: staleEpochStan pokoju zmienił się w trakcie wywołania. Wyślij je ponownie.
429Too many requests. Please try again later.Limit żądań.
503Refused: authorityOfflinePokój jest w koszu. Najpierw go przywróć.

Limit żądań: 100 wywołań na minutę na klucz; wywołania bez klucza liczone są na adres. Każda odpowiedź zawiera RateLimit-Limit, RateLimit-Remaining i RateLimit-Reset (liczbę sekund do rozpoczęcia kolejnej minuty).

Webhooki

Ustaw adres

Wywołaj webhook z adresem url typu https. Odpowiedź zawiera secret zaczynający się od whsec_. Zapisz go: jest wyświetlany tylko raz.

Odbieraj zdarzenia

Cliqer Timer wysyła POST na ten adres, gdy w pokoju coś się dzieje.

Sprawdź podpis

Zweryfikuj każde żądanie, zanim mu zaufasz.

Usuń webhook

Wywołaj webhook bez url. Adres i jego sekret zostaną usunięte.

ZdarzenieKiedy
timerStartedTimer startuje.
timerEndedTimer dochodzi do zera.
wrapUpYellowTimer osiąga żółty próg zakończenia.
wrapUpRedTimer osiąga czerwony próg zakończenia.
messageShownWiadomość zostaje wyświetlona.

Treść ma postać {"event", "roomId", "timestamp", "payload"}. Nagłówek x-cliqer-timestamp zawiera czas uniksowy w sekundach, a x-cliqer-signature zawiera sha256= i szesnastkowy HMAC-SHA256 z <timestamp>.<body>, obliczony z Twoim sekretem jako kluczem.

# Recompute the signature of a saved body.
printf '%s.%s' "$TIMESTAMP" "$(cat body.json)" \
  | openssl dgst -sha256 -hmac "$WHSEC" -hex

Obliczaj podpis z surowej treści dokładnie w takiej postaci, w jakiej dotarła, przed jakimkolwiek parsowaniem JSON. Pięciominutowe okno to Twój wybór; chroni przed ponownym odtworzeniem starego żądania.

Dostarczenie to jedna próba z 5-sekundowym limitem czasu. Przekierowania nie są obsługiwane, a adres wskazujący na sieć prywatną jest odrzucany. Jeśli pominięte zdarzenie ma znaczenie, odczytaj get_status, aby nadrobić zaległości.

Krótkie linki

GET https://cliqer.io/api/timer/link/<code> zamienia kod krótkiego linku na jego pokój: {"ok": true, "data": {"roomId", "link"}} albo 404 Link not found w przypadku nieznanego, unieważnionego lub wygasłego kodu albo błędnego hasła. Hasło do linku wysyłaj w nagłówku x-link-password, nigdy w adresie.

Companion i Stream Deck

Nie ma modułu Companion ani wtyczki Stream Deck dla pokoi Cliqer Timer. Moduł Generic HTTP w Bitfocus Companion może wywoływać powyższe akcje. Własny timer aplikacji desktopowej Cliqer ma swoje REST API i obsługę Stream Deck, zobacz Timer (aplikacja desktopowa) i Timer hosta.

Najczęstsze pytania

Co dalej

Tryb offline i niezawodność

Co się dzieje, gdy sieć przestaje działać.

Plany i limity

Które plany obejmują API.