Σύνδεση

API και ενσωματώσεις

Χειριστείτε ένα δωμάτιο του Cliqer Timer από τα δικά σας εργαλεία μέσω HTTP και λάβετε ένα υπογεγραμμένο webhook όταν προχωρά η ροή της εκδήλωσης.

Κάθε δωμάτιο διαθέτει HTTP API. Ξεκινήστε και σταματήστε χρονόμετρα, εμφανίστε μηνύματα, προσθέστε χρόνο και διαβάστε το rundown από ένα script, ένα σύστημα show control ή οτιδήποτε μπορεί να στείλει ένα web request. Ένα webhook ενημερώνει το σύστημά σας όταν ένα χρονόμετρο ξεκινά ή τελειώνει.

Η σελίδα κλειδιών API με το κουμπί Δημιουργία κλειδιού και χωρίς κλειδιά ακόμη
Κλειδιά API του λογαριασμού, στην ενότητα Ομάδα του πίνακα ελέγχου σας.

Ξεκινήστε

Δημιουργήστε ένα κλειδί API

Ανοίξτε τα Κλειδιά API και κάντε κλικ στο Δημιουργία κλειδιού. Αντιγράψτε το αμέσως: εμφανίζεται μόνο μία φορά. Δείτε Ομάδα και κλειδιά API.

Βρείτε το id του δωματίου

Είναι το τμήμα μετά το /timer/r/ στη διεύθυνση του δωματίου ελέγχου, για παράδειγμα https://cliqer.io/timer/r/<room>/control.

Κάντε μια κλήση

Στείλτε το κλειδί με κάθε αίτημα. Το ping ελέγχει ότι το δωμάτιο υπάρχει.

Το API χειρίζεται το ίδιο δωμάτιο με το δωμάτιο ελέγχου: μια κλήση από το εργαλείο σας εμφανίζεται σε κάθε οθόνη ταυτόχρονα.

Αιτήματα

Κάθε κλήση έχει τη μορφή https://cliqer.io/api/timer/v1/<room>/<action>. Λειτουργούν τα GET, POST, PUT και PATCH. Οι παράμετροι μπαίνουν στο query string ή σε σώμα JSON στα POST, PUT και PATCH· όταν υπάρχουν και στα δύο, υπερισχύει το σώμα. Λειτουργούν και οι παύλες στο όνομα της ενέργειας, οπότε το add-time ισοδυναμεί με add_time. Το /api/timer/v0/ δέχεται τις ίδιες κλήσεις.

Στείλτε το κλειδί με έναν από τους παρακάτω τρόπους, οι οποίοι ελέγχονται με αυτή τη σειρά:

ΠούΠαράδειγμα
Κεφαλίδα AuthorizationAuthorization: Bearer <key>
Κεφαλίδα x-api-keyx-api-key: <key>
Παράμετρος query api_key?api_key=<key>. Αποφύγετέ το όπου μπορείτε: οι διευθύνσεις καταλήγουν σε αρχεία καταγραφής.
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"}'

Κλειδιά και δικαιώματα

Το κλειδί API του λογαριασμού σας μπορεί να κάνει τα πάντα στα δωμάτια που σας ανήκουν. Ένα δωμάτιο μπορεί επίσης να έχει δικά του κλειδιά, το καθένα με κάποια από τα τρία δικαιώματα:

ΔικαίωμαΕπιτρέπει
Ανάγνωση (Read)Τις ενέργειες get_ και το export.
Χειρισμός show (Show call)Χειρισμό αναπαραγωγής, χρόνο, blackout, on air και μηνύματα.
Επεξεργασία (Edit)Διαγραφή, εισαγωγή, raw intents και το webhook.

Μια κλήση που χρειάζεται δικαίωμα το οποίο δεν έχει το κλειδί λαμβάνει 401. Το μυστικό ενός κλειδιού δωματίου εμφανίζεται μία φορά, όταν δημιουργείται. Για να χρησιμοποιήσετε το API, το πρόγραμμά σας πρέπει να περιλαμβάνει το API, δείτε Προγράμματα και όρια.

Ενέργειες

Το timer_id επιλέγει ένα χρονόμετρο με βάση το id του· το index το επιλέγει με βάση τη θέση του, μετρώντας από το 1. Όταν στέλνονται και τα δύο, υπερισχύει το timer_id. Αν παραλείψετε και τα δύο, η ενέργεια εφαρμόζεται στο τρέχον χρονόμετρο.

ΕνέργειαΕπιστρέφει
get_roomΤίτλο, ημερομηνία, ζώνη ώρας και ρυθμίσεις.
get_statusΤι εκτελείται αυτή τη στιγμή.
get_timersΤο rundown.
get_messagesΤα μηνύματα.
get_questionsΤις ερωτήσεις του κοινού.
get_connectionsΤις συνδεδεμένες συσκευές.
get_logsΤο αρχείο καταγραφής του δωματίου. limit, offset.
exportΟλόκληρο το δωμάτιο ως αρχείο cliqer-timer-<room>.json για λήψη.

Οι τιμές χρόνου είναι 30s, 5m, 1h, 250ms ή ένας σκέτος αριθμός δευτερολέπτων. Το seconds λειτουργεί στη θέση του amount και ένα πρόσημο μείον μετακινεί προς τα πίσω. Οι διακόπτες όπως τα on, autostart και replace ερμηνεύουν τα 0, false, off και no ως απενεργοποίηση και οτιδήποτε άλλο ως ενεργοποίηση. Παραλείψτε το on στο blackout για εναλλαγή.

Αποκρίσεις

Κάθε απάντηση είναι JSON: {"ok": true, "message": "<action>", "data": ...} σε επιτυχία, {"ok": false, "message": "...", "code": "..."} σε αποτυχία.

ΚατάστασηΜήνυμαΑιτία
400Either timer_id OR index are requiredselect χωρίς χρονόμετρο.
400amount is required, like 30s, 5m or 1hΗ τιμή χρόνου λείπει ή δεν μπορεί να διαβαστεί.
400Refused: invalidΤο δωμάτιο δεν μπόρεσε να την εφαρμόσει.
401Access Denied: Valid API key requiredΔεν υπάρχει κλειδί, το κλειδί είναι λάθος ή λείπει κάποιο δικαίωμα.
403The API is not in this planΤο πρόγραμμα του δωματίου δεν περιλαμβάνει API.
403Refused: forbidden, Refused: readOnly, Refused: limitReachedΔεν επιτρέπεται, το δωμάτιο είναι μόνο για ανάγνωση ή έχει εξαντληθεί ένα όριο του προγράμματος.
404Room not found, Unknown action <name>, Timer not foundΕλέγξτε το id του δωματίου, την ενέργεια ή το id του χρονομέτρου.
409Refused: staleEpochΗ κατάσταση του δωματίου άλλαξε κατά τη διάρκεια της κλήσης. Στείλτε την ξανά.
429Too many requests. Please try again later.Όριο ρυθμού αιτημάτων.
503Refused: authorityOfflineΤο δωμάτιο βρίσκεται στον κάδο. Επαναφέρετέ το πρώτα.

Όριο ρυθμού: 100 κλήσεις το λεπτό ανά κλειδί· οι κλήσεις χωρίς κλειδί μετρώνται ανά διεύθυνση. Κάθε απάντηση περιέχει τα RateLimit-Limit, RateLimit-Remaining και RateLimit-Reset (δευτερόλεπτα μέχρι να ξεκινήσει ξανά το λεπτό).

Webhooks

Ορίστε τη διεύθυνση

Καλέστε το webhook με ένα url τύπου https. Η απάντηση περιέχει ένα secret που ξεκινά με whsec_. Αποθηκεύστε το: εμφανίζεται μία φορά.

Λάβετε συμβάντα

Το Cliqer Timer στέλνει ένα POST σε αυτή τη διεύθυνση όταν συμβαίνει κάτι στο δωμάτιο.

Ελέγξτε την υπογραφή

Επαληθεύστε κάθε αίτημα πριν το εμπιστευτείτε.

Καταργήστε το

Καλέστε το webhook χωρίς url. Διαγράφονται τόσο η διεύθυνση όσο και το μυστικό της.

ΣυμβάνΠότε
timerStartedΈνα χρονόμετρο ξεκινά.
timerEndedΈνα χρονόμετρο φτάνει στο μηδέν.
wrapUpYellowΈνα χρονόμετρο φτάνει στο κίτρινο σημείο ολοκλήρωσης.
wrapUpRedΈνα χρονόμετρο φτάνει στο κόκκινο σημείο ολοκλήρωσης.
messageShownΕμφανίζεται ένα μήνυμα.

Το σώμα είναι {"event", "roomId", "timestamp", "payload"}. Η κεφαλίδα x-cliqer-timestamp περιέχει τον χρόνο Unix σε δευτερόλεπτα και η x-cliqer-signature περιέχει το sha256= ακολουθούμενο από το δεκαεξαδικό HMAC-SHA256 του <timestamp>.<body> με κλειδί το μυστικό σας.

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

Υπολογίστε την υπογραφή πάνω στο ακατέργαστο σώμα ακριβώς όπως έφτασε, πριν από οποιαδήποτε ανάλυση JSON. Το παράθυρο των πέντε λεπτών είναι δική σας επιλογή· εμποδίζει την επανάληψη (replay) ενός παλιού αιτήματος.

Η παράδοση γίνεται με μία μόνο προσπάθεια και χρονικό όριο 5 δευτερολέπτων. Οι ανακατευθύνσεις δεν ακολουθούνται και μια διεύθυνση που αντιστοιχεί σε ιδιωτικό δίκτυο απορρίπτεται. Αν ένα χαμένο συμβάν έχει σημασία, διαβάστε το get_status για να ενημερωθείτε.

Σύντομοι σύνδεσμοι

Το GET https://cliqer.io/api/timer/link/<code> μετατρέπει τον κωδικό ενός σύντομου συνδέσμου στο δωμάτιό του: {"ok": true, "data": {"roomId", "link"}} ή 404 Link not found για άγνωστο, ανακληθέντα ή ληγμένο κωδικό συνδέσμου ή για λάθος κωδικό πρόσβασης. Για σύνδεσμο με κωδικό πρόσβασης, στείλτε τον στην κεφαλίδα x-link-password, ποτέ στη διεύθυνση.

Companion και Stream Deck

Δεν υπάρχει module Companion ούτε plugin Stream Deck για τα δωμάτια του Cliqer Timer. Το module Generic HTTP του Bitfocus Companion μπορεί να καλέσει τις παραπάνω ενέργειες. Το χρονόμετρο της εφαρμογής υπολογιστή Cliqer διαθέτει δικό του REST API και υποστήριξη Stream Deck, δείτε Timer (υπολογιστής) και Χρονόμετρο Host.

Συχνές ερωτήσεις

Επόμενα βήματα

Λειτουργία εκτός σύνδεσης και αξιοπιστία

Τι συμβαίνει όταν πέφτει το δίκτυο.

Προγράμματα και όρια

Ποια προγράμματα περιλαμβάνουν το API.