OpenAPI YAMLOpenAPI JSONproblemi YAMLPanoramica dell’API
Questo gruppo ha 12 operazioni, generate da api/openapi.yaml. Filtra per percorso, azione o autenticazione. Ogni endpoint elenca i suoi input; espandilo per vedere un modello di richiesta e i codici di risposta. I modelli richiedono i tuoi valori e un corpo valido secondo lo schema.
Sostituisci i segnaposto maiuscoli con i tuoi valori. Per una richiesta JSON, salva un corpo che corrisponde allo schema in request.json. Gli esempi di cookie usano un cookie jar locale da una sessione autenticata.
Trigger alert CAP
Elenca i trigger
Elenca i trigger del progetto (CAP e di sovrapposizione), dal più vecchio (al massimo 20), ciascuno con il suo url di ingresso, il suo username e l'ultimo avviso o stato di sovrapposizione. Qui non viene mai restituito alcun segreto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/triggers'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | I trigger del progetto. | TriggerList (application/json); intestazioni: Cache-Control |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Crea trigger
Crea un trigger di allerta CAP: un URL in ingresso a cui un sistema di notifiche di emergenza (Everbridge, Rave, Alertus, relè IPAWS e altri mittenti CAP 1.2) invia avvisi, con credenziali HTTP Basic.
La risposta è l’unico luogo in cui appare la password (con la risposta di rotazione): conservarla subito nel sistema di invio. target è un tag (ogni schermo attivo con esso all’arrivo dell’avviso) o fino a 500 screen_ids.
Un avviso prende ogni schermo target con playlist predefinita fino a <expires> dell’avviso, altrimenti per default_for_seconds (60 a 604800, default 3600); vedi POST /api/triggers/{id}/cap. Un’organizzazione ha al massimo 20 trigger in tutti i suoi progetti (trigger_limit_reached). Aggiunge trigger.created.
Un retry esatto con la stessa Idempotency-Key restituisce questa stessa risposta, password inclusa, per ventiquattro ore.
Il pull facoltativo aggiunge fonti CAP che la piattaforma legge per il trigger (vedi CapPull); l'url di ingresso continua a funzionare accanto. kind overlay crea invece il secondo tipo: un url di ingresso (POST /api/triggers/{id}/overlay) a cui qualsiasi sistema (Home Assistant, una telecamera, uno strumento di allerta) invia poche parole, mostrate sugli schermi di destinazione come fascia sopra ciò che viene riprodotto (overlay.show bar, sul bordo inferiore o superiore) o come acquisizione (overlay.show takeover) finché un avviso dura; vedi TriggerOverlay.
Con signing true la risposta porta anche il segreto di firma, una sola volta. verify fa autenticare un invio dalla firma propria di un fornitore (GitHub, Stripe, Shopify, Slack, Linear, Vercel, Asana o qualsiasi mittente HMAC) al posto della password, che continua a funzionare accanto; non può essere combinato con signing, e il suo segreto è sigillato e non viene mai restituito, solo un suggerimento. handshake indica un handshake di fornitore a cui risponde l’URL (Microsoft Graph, monday.com, Trello o Azure Event Grid; verify slack e asana rispondono al proprio).
Le durate di permanenza della sovrapposizione vanno da 10 a 604800 secondi (predefinito 600). Un trigger il cui selettore raggiunge uno schermo protetto è protected_target (409), e una lettura non riuscita della protezione degli schermi è dependency_unavailable (500, ripeti la stessa richiesta); un trigger non è disponibile per un chiamante limitato agli schermi.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| kind (opzionale, stringa) | Consentiti: "cap", "overlay" predefinito: "cap" |
| label (obbligatorio, stringa) | minLength: 1 maxLength: 80 |
| destinazione (obbligatorio, TriggerTarget) | Esattamente uno tra tag e screen_ids. |
| default_for_seconds (opzionale, intero) | Per quanto tempo un avviso senza <expires> trattiene gli schermi: da 60 a 604800, predefinito 3600, per un trigger CAP; per quanto tempo un invio senza duration trattiene il suo avviso: da 10 a 604800, predefinito 600, per un trigger di sovrapposizione. minimum: 10 maximum: 604800 |
| pull (opzionale, CapPull) | Fonti CAP lette dalla piattaforma per il trigger, con dove sono gli schermi target e quali alert contano: i parametri di un posizionamento scheda cap-alert (docs/feeds.md "CAP alerts"). Ogni URL sorgente è recuperato una volta al minuto per ogni trigger e posizionamento che lo nomina. Senza fonti, si leggono i feed pubblici della piattaforma che coprono la posizione (NWS, Canada NAAD e MeteoAlarm per una posizione con codici area). L’allerta corrispondente più grave prende il controllo degli schermi target esattamente come farebbe un messaggio push; quando le fonti non ne mostrano (una cancellazione o una scadenza), un allerta pull termina. Una sorgente obsoleta o guasta non termina mai un avviso. location è obbligatorio a meno che non siano fornite sorgenti. |
| overlay (opzionale, TriggerOverlayWrite) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/triggers'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato, con il suo URL, nome utente e password. | TriggerWithPassword (application/json); intestazioni: ETag, Cache-Control |
| 400 | invalid_request, incluso un tag malformato o sia tag che screen_ids. | Problema (application/problem+json) |
| 409 | trigger_limit_reached, idempotency_mismatch, oppure protected_target quando il selettore raggiunge uno schermo in una cartella di schermi protetta. | Problema (application/problem+json) |
| 500 | dependency_unavailable - il controllo delle cartelle di schermi protette non ha potuto essere eseguito; invia di nuovo la stessa richiesta dopo una breve attesa. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Ottieni trigger
Un trigger con il suo ultimo avviso o, per un trigger di sovrapposizione, i suoi avvisi attivi (il più recente per primo, il primo viene mostrato), i conteggi della distribuzione e se c'è lavoro in sospeso. Un avviso oltre il suo until viene letto come terminato con ended_reason expired.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/triggers/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Un trigger. | Trigger (application/json); intestazioni: ETag, Cache-Control |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Aggiorna un trigger
Modifica un trigger senza cambiare il suo URL né il suo segreto: label, target, default_for_seconds, il pull di un trigger CAP (null lo rimuove) e, per un trigger di sovrapposizione, overlay.edge, style (sostituisce l’intero stile; null lo cancella), mapping (null lo rimuove), enabled, signing, verify (null lo rimuove; senza un segreto conserva quello memorizzato quando il fornitore è lo stesso) e handshake (null lo rimuove).
Un trigger di sovrapposizione disattivato risponde al suo mittente con lo stesso 404 di un segreto errato. Attivare la firma restituisce il segreto di firma una sola volta in questa risposta. Una fascia si riposiziona sui nuovi schermi di destinazione e sul nuovo bordo; la nuova destinazione di un trigger di acquisizione vale dal prossimo avviso che inizia. Aggiunge trigger.updated con details.changed. If-Match protegge la revisione.
Ogni aggiornamento viene controllato sulla destinazione che il trigger avrà, quella nuova o altrimenti quella memorizzata: una destinazione che raggiunge uno schermo protetto è protected_target (409) qualunque membro la modifichi, e una lettura non riuscita della protezione degli schermi è dependency_unavailable (500, ripeti la stessa richiesta).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| If-Match | intestazione | opzionale | Revisione positiva opzionale della risorsa. Ometti per scrivere la risorsa corrente; una revisione obsoleta fornita è revision_conflict. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| label (opzionale, stringa) | minLength: 1 maxLength: 80 |
| target (opzionale, TriggerTarget) | Esattamente uno tra tag e screen_ids. |
| default_for_seconds (opzionale, intero) | minimum: 10 maximum: 604800 |
| pull (opzionale, inline) | Solo trigger CAP; null rimuove le fonti. |
| overlay (opzionale, object) |
Modello richiesta e risposte
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/triggers/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Il trigger, con signing_secret quando questo aggiornamento ha attivato la firma. | TriggerWithSecrets (application/json); intestazioni: ETag, Cache-Control |
| 400 | invalid_request — errors[0].field nomina il membro (overlay.edge, overlay.style.theme, overlay.mapping, pull). | Problema (application/problem+json) |
| 409 | idempotency_mismatch, oppure protected_target quando la destinazione del trigger (quella nuova, altrimenti quella memorizzata) raggiunge uno schermo in una cartella di schermi protetta. | Problema (application/problem+json) |
| 500 | dependency_unavailable - il controllo delle cartelle di schermi protette non ha potuto essere eseguito; invia di nuovo la stessa richiesta dopo una breve attesa. | Problema (application/problem+json) |
| 412 | revision_conflict. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Elimina trigger
Elimina il trigger. Il suo URL smette subito di funzionare, e la sua playlist di avvisi e i fermi immagine (o le fasce, la playlist e la scheda di un trigger di sovrapposizione) vengono eliminati. Un trigger che mostra un avviso, o ne sta ancora terminando uno, viene rifiutato con resource_conflict; terminalo prima. Aggiunge trigger.deleted. If-Match protegge la revisione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| If-Match | intestazione | opzionale | Revisione positiva opzionale della risorsa. Ometti per scrivere la risorsa corrente; una revisione obsoleta fornita è revision_conflict. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Modello richiesta e risposte
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/triggers/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 204 | Eliminato. | nessun corpo |
| 409 | resource_conflict — il trigger mostra un avviso. | Problema (application/problem+json) |
| 412 | revision_conflict. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Ruota Trigger Secret
Sostituisce la password del trigger e restituisce quella nuova, una sola volta. La vecchia password smette subito di funzionare; aggiorna il sistema mittente. Con signing true nel corpo sostituisce invece il segreto di firma di un trigger di sovrapposizione e restituisce quello, una sola volta (400 invalid_request quando il trigger non firma). Aggiunge trigger.updated con details.rotated.
If-Match protegge la revisione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| If-Match | intestazione | opzionale | Revisione positiva opzionale della risorsa. Ometti per scrivere la risorsa corrente; una revisione obsoleta fornita è revision_conflict. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| signing (opzionale, booleano) | Ruota il segreto di firma invece della password. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/triggers/RESOURCE_ID/rotate-secret'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Il trigger con la sua nuova password o il suo nuovo segreto di firma. | TriggerWithSecrets (application/json); intestazioni: ETag, Cache-Control |
| 412 | revision_conflict. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Test trigger
Mostra un avviso di esercizio di un minuto (una scheda blu con una banda gialla EXERCISE) sugli schermi del trigger, esattamente come farebbe un avviso ricevuto, così da poter verificare il targeting e gli schermi senza il sistema di invio. Rifiutato resource_conflict mentre il trigger mostra un avviso, così un test non sostituisce mai uno reale.
Un nuovo tentativo identico con la stessa Idempotency-Key risponde con outcome duplicate. Un trigger di sovrapposizione mostra l'avviso screenrig-test (label Test, title Test overlay) per un minuto e risponde con un TriggerOverlayReceipt.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/triggers/RESOURCE_ID/test'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Cosa ha fatto l’allerta di test. | inline (application/json) |
| 409 | resource_conflict — il trigger mostra un avviso. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Cancella trigger
Termina l’allerta del trigger (ended_reason cleared) e cancella i takeover impostati. Uno schermo sostituito da un altro takeover resta invariato. Un trigger senza allerta attiva risponde invariato. Aggiunge trigger.alert_received con esito ended.
Per un trigger di sovrapposizione il corpo può nominare un avviso (alert_id); senza, terminano tutti gli avvisi, e la fine dell'ultimo abbassa la fascia o termina le acquisizioni.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| alert_id (opzionale, stringa) | L'avviso di sovrapposizione da terminare. Senza, terminano tutti gli avvisi. minLength: 1 maxLength: 200 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/triggers/RESOURCE_ID/clear'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Il trigger. alert.screens.pending è true mentre i takeover vengono eliminati. | Trigger (application/json); intestazioni: ETag |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Ricevi Trigger CAP
L’URL a cui un sistema di notifiche di emergenza invia un avviso CAP 1.2 (qualsiasi tipo di contenuto XML, massimo 256 KiB). Si autentica con le credenziali HTTP Basic del trigger: username è l’id trigger, password quella restituita da create o rotate.
Un messaggio con stato Actual o Exercise e tipo msgType Alert mostra una scheda a schermo intero (titolo, evento, descrizione, istruzioni e mittente, rosso per Extreme, Severe o nessuna gravità, ambra per Moderate, blu per Minor; Exercise aggiunge un banner giallo EXERCISE) su ogni schermo target con playlist predefinita, fino a <expires>, altrimenti per default_for_seconds, massimo 7 giorni.
Un aggiornamento che fa riferimento all’avviso mostrato lo ridisegna in loco e sposta i takeover quando <expires> cambia. Un annulla che lo fa riferimento, o qualsiasi messaggio con responseType AllClear, lo termina e cancella i takeover impostati. Un trigger mostra un solo avviso: un nuovo avviso sostituisce quello mostrato.
Messaggi Test, System e Draft, Ack ed Error, un avviso già scaduto e una cancellazione di un avviso non mostrato sono ignorati; lo stesso mittente e identificatore due volte è un duplicato. La risposta è una ricevuta che indica l’esito; gli schermi sono scritti subito dopo (alert.screens.pending).
I takeover bypassano i limiti di frequenza del controllo schermo e non sono mai conteggiati o rifiutati per saldo. Aggiunge trigger.alert_received.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| id | path | obbligatorio |
Modello richiesta e risposte
curl --request POST --header 'Content-Type: application/xml' --data-binary '@request.bin' 'https://api.screenrig.ai/api/triggers/RESOURCE_ID/cap'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Cosa ha fatto il messaggio. | TriggerReceipt (application/json); intestazioni: RateLimit-Policy, RateLimit, Cache-Control |
| 400 | invalid_request — il corpo non è un alert CAP 1.2 utilizzabile, o è più grande di 256 KiB. | Problema (application/problem+json) |
| 401 | non autorizzato — credenziali mancanti o errate, o trigger sconosciuto. WWW-Authenticate indica il realm Basic. | Problema (application/problem+json) |
| 429 | Problema rate_limited stabile. Ritenta solo dopo l'intervallo Retry-After autorevole. I dinieghi a finestra fissa includono anche RateLimit-Policy e membri RateLimit applicabili; i dinieghi per concorrenza e budget byte omettono tali divulgazioni opzionali. | Problema (application/problem+json); intestazioni: Retry-After, RateLimit-Policy, RateLimit |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Ricevi un invio di trigger di sovrapposizione
L’URL a cui un sistema esterno (Home Assistant, una telecamera, un sensore di porta, uno strumento di allerta o un fornitore che firma i propri webhook) invia perché gli schermi del trigger mostrino poche parole. Si autentica con il segreto proprio del trigger nell’intestazione Authorization: Bearer <secret>, oppure con HTTP Basic usando l’id del trigger come nome utente.
Quando il trigger è stato creato con verify, una firma valida nell’intestazione propria di quel fornitore (vedi WebhookVerifyWrite) autentica l’invio al posto del segreto, che continua a funzionare accanto.
Quando il trigger firma, è richiesto anche ScreenRig-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" under the signing secret>, e t deve distare al massimo cinque minuti dall'orologio del server.
Un trigger sconosciuto, un trigger CAP, un segreto o una firma sbagliati o mancanti, un timestamp scaduto, un trigger disattivato e ogni GET ricevono lo stesso 404 not_found; il progetto vede il motivo nel registro delle consegne del trigger.
Un trigger configurato per un handshake di fornitore risponde per primo, prima che venga richiesta qualsiasi credenziale, a una richiesta che è quell’handshake: la sfida url_verification di Slack (firmata), il validationToken di Microsoft Graph, l’X-Hook-Secret di Asana (conservato sigillato come segreto di firma dei suoi eventi), la challenge di monday.com, il SubscriptionValidationEvent di Azure Event Grid e il controllo HEAD di Trello (l’operazione head di questo URL).
Un handshake non cambia alcun avviso, non viene mai fatturato e non consuma budget di frequenza, ed è registrato nel registro delle consegne con l’esito handshake.
Il corpo, al massimo 256 KiB, è JSON, application/x-www-form-urlencoded o multipart/form-data (ogni campo di testo è body.<field>, le parti di file vengono ignorate e contate nel registro delle consegne); con un mapping il modello costruisce la richiesta da body e query. alert_id indica l’avviso: un invio con un id attivo aggiorna quell’avviso invece di impilarne un altro, e viene mostrato l’avviso avviato più di recente.
Ogni attivazione o aggiornamento trattiene il suo avviso per duration da quell'invio (da 10 a 604800 secondi, oppure 10s, 5m, 2h, 1d, o until_cleared; per impostazione predefinita quello del trigger), così un sensore che continua a inviare mantiene la sovrapposizione.
Un invio con clear true, o uno state che significa che è finita (off, closed, clear, cleared, resolved, ok, normal, inactive, ended), termina l'avviso con quell'id, o tutti gli avvisi se manca. Un'attivazione o un aggiornamento è una richiesta API fatturata; una chiusura è gratuita e non viene mai rifiutata per il saldo.
Idempotency-Key (da 8 a 200 caratteri) risponde al nuovo tentativo di un mittente con la prima ricevuta per ventiquattro ore. Al massimo 120 invii al minuto per trigger.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| id | path | obbligatorio | |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
| ScreenRig-Signature | intestazione | opzionale | t=<unix seconds>,v1=<hex HMAC-SHA256 over "<t>.<raw body>">; obbligatorio quando il trigger firma. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| alert_id (opzionale, stringa) | L'id dell'avviso scelto dal mittente; assente o vuoto è default per un'attivazione, e tutti gli avvisi per una chiusura. maxLength: 200 |
| label (opzionale, stringa) | Un'etichetta breve sopra il titolo. maxLength: 40 |
| title (opzionale, stringa) | maxLength: 120 |
| message (opzionale, stringa) | maxLength: 400 |
| note (facoltativo, string) | Una riga discreta a piè di scheda. maxLength: 120 |
| duration (opzionale, inline) | Per quanto tempo questo invio trattiene l'avviso, da adesso. Senza valore si usa il predefinito del trigger. |
| clear (opzionale, inline) | True termina l'avviso (true, yes, y, 1 o x come testo). |
| state (opzionale, stringa) | Una parola di stato del mittente: off, closed, clear, cleared, resolved, ok, normal, inactive o ended (in qualsiasi caso) termina l'avviso; qualsiasi altro stato lo attiva. |
Modello richiesta e risposte
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/triggers/RESOURCE_ID/overlay'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Che cosa ha fatto l’invio, o la risposta all’handshake di un fornitore. | TriggerOverlayReceipt (application/json); intestazioni: RateLimit-Policy, RateLimit, Cache-Control |
| 400 | invalid_request — il corpo è troppo grande, vuoto, né JSON né modulo, il mapping è fallito su di esso, o un membro è errato; il registro delle consegne lo nomina. | Problema (application/problem+json) |
| 402 | payment_required — il progetto non ha più credito (solo per attivazione o aggiornamento). | Problema (application/problem+json) |
| 404 | not_found — l’unica risposta a ogni invio rifiutato e a ogni GET. | Problema (application/problem+json) |
| 409 | idempotency_mismatch. | Problema (application/problem+json) |
| 429 | Problema rate_limited stabile. Ritenta solo dopo l'intervallo Retry-After autorevole. I dinieghi a finestra fissa includono anche RateLimit-Policy e membri RateLimit applicabili; i dinieghi per concorrenza e budget byte omettono tali divulgazioni opzionali. | Problema (application/problem+json); intestazioni: Retry-After, RateLimit-Policy, RateLimit |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Head Trigger Overlay
Il controllo che Trello fa su un nuovo webhook. Risponde 200 senza corpo per un trigger il cui handshake è trello, e l’unico 404 not_found per ogni altro trigger, indirizzo e richiesta, così un’anteprima di link non apprende nulla. Non scrive nulla, non viene mai fatturato e non consuma budget di frequenza; il controllo a cui si è risposto compare nel registro delle consegne con l’esito handshake.
Ogni GET risponde il 404 e non legge nulla.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| id | path | obbligatorio |
Modello richiesta e risposte
curl --request HEAD 'https://api.screenrig.ai/api/triggers/RESOURCE_ID/overlay'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Il webhook risponde all’handshake di Trello. | nessun corpo; intestazioni: Cache-Control |
| 404 | not_found — l’unica risposta a ogni altra richiesta. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |
Elenca le consegne di un trigger
Gli invii a un trigger di sovrapposizione negli ultimi sette giorni, dal più recente (al massimo 100), con quando è arrivato ciascuno, come si è concluso ciascuno (shown, updated, unchanged, ended, ignored, refused, invalid o handshake), perché uno rifiutato o non valido lo è stato (credentials, signature, signature_missing, signature_invalid, timestamp_missing, timestamp_stale, secret_pending, handshake_invalid, disabled, body, mapping, field, rate_limited, payment_required, internal), lo stato, la dimensione, il numero di parti di file che un invio multipart portava (ignorate) e l’ID della richiesta.
Non conserva corpo, intestazione né credenziali. Un trigger CAP non ne ha.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| ScreenRig-Project | intestazione | opzionale | Deprecato per una release. Deve essere coerente con le concessioni JWT dei progetti; aggiunge intestazioni Deprecation e Warning. Nessuno scambio di token. |
| id | path | obbligatorio | |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/triggers/RESOURCE_ID/deliveries'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Le consegne del trigger. | TriggerDeliveryList (application/json) |
| 400 | invalid_request — limit non è un numero intero da 1 a 100. | Problema (application/problem+json) |
| predefinito | Risposta problema stabile RFC 9457. Un 421 server_draining ha Retry-After di 1 secondo, un 500 not_ready o dependency_unavailable ha 5, e un 500 manifest_degraded ha 60, salvo valore più specifico impostato dal gestore. | Problema (application/problem+json) |