OpenAPI YAMLOpenAPI JSONproblemi YAMLPanoramica dell’API
Questo gruppo ha 147 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.
Progetti, inviti e accesso
Anteprima agente eliminazione progetto
Restituisce i dettagli di conferma correnti, i blocchi di eliminazione e i dispositivi archiviati che verranno disconnessi. allowed è false, con una motivazione, quando il chiamante non può eliminare il progetto (solo il proprietario o un amministratore della sua organizzazione può; per un agente, la persona responsabile) o rimane un blocco.
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. |
| project_id | query | opzionale | ID progetto previsto; una selezione modificata è rifiutata. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/deletion-preview'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | Anteprima eliminazione progetto (application/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) |
Trasferisci agente proprietario progetto
Il proprietario trasferisce la proprietà a un membro esistente e verificato del progetto; questo non concede alcuna nuova appartenenza. L’appartenenza del nuovo proprietario esce da qualsiasi screen_scope e upload_scope, così il nuovo proprietario raggiunge l’intero progetto.
Una sessione dashboard di un amministratore dell’organizzazione del progetto che è membro del progetto trasferisce la proprietà allo stesso modo, da chiunque possieda il progetto; un amministratore dell’organizzazione che non è membro del progetto usa PUT /api/organizations/{org_id}/projects/{project_id}/owner.
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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| user_id (obbligatorio, stringa) | minLength: 1 maxLength: 200 |
Modello richiesta e risposte
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/owner'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | ProjectContext (application/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) |
Sposta agente progetto
Lo spostamento autorizzato dal proprietario trasferisce atomica occupazione dello schermo e nuovo utilizzo al pagatore di destinazione; gli addebiti storici mantengono il loro pagatore. Una destinazione che ha già tanti progetti attivi quanti ne consente il suo piano è project_limit_reached, il cui required_plan indica il piano con spazio, assente per Enterprise.
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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| organization_id (obbligatorio, stringa) | 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://screenrig.ai/api/project/move'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | ProjectContext (application/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) |
Progetto consentito sposta agente
Elenca le destinazioni amministrate dal proprietario o il cui dominio verificato corrisponde alla loro email verificata
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. |
| project_id | query | opzionale | ID progetto previsto; una selezione modificata è rifiutata. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/moves'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | Destinazioni spostamento progetto (application/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 progetti agente
Elenca ogni appartenenza attiva dell’identità, con contesto di organizzazione e proprietario, incluse quelle escluse da questo token o dal consenso della sua concessione. Ogni voce indica in_token; discovery non aggiunge autorità e non ha limite di 64 progetti
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 --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/projects'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | ProjectContextList (application/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) |
Crea progetto agente
Crea un progetto nominato di proprietà della persona responsabile verificata. Se non è specificata un’organizzazione, il progetto va all’organizzazione del dominio verificato della persona, altrimenti all’organizzazione del progetto corrente, altrimenti all’organizzazione usata più recentemente tra quelle amministrate o gratuite della persona, altrimenti a una nuova organizzazione.
Un nome organizzazione seleziona esattamente una corrispondenza visibile, altrimenti crea una nuova organizzazione. Una persona possiede un’organizzazione Standard gratuita; una nuova organizzazione oltre quella è free_organization_limit, nominando quella che possiede.
Un’organizzazione ha al massimo tanti progetti attivi quanti ne consente il suo piano (Standard 1, Plus 3, Premium 10, Education 50, Enterprise 100, ampliato dai suoi featureset); uno in più è project_limit_reached, il cui required_plan indica il piano con spazio, assente per Enterprise (contatta l’assistenza).
Un retry idempotente esatto ridistribuisce la credenziale di appartenenza sigillata per dieci minuti. L’iscrizione è esente dal limite.
Con un JWT di accesso agente (ambito identità, access:manage, un grant con accesso identità Manage) non viene consegnato alcun token progetto; il progetto si unisce al grant con Manage e tutte le capacità, e un refresh con project_id restituisce un token per esso.
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 | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
| organization_id (opzionale, stringa) | minLength: 1 maxLength: 200 |
| organization_name (opzionale, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modello richiesta e risposte
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/projects'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Risultato del ciclo di vita del progetto | ProgettoCreato (application/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 inviti
Elenca i record del ciclo di vita degli inviti per il progetto corrente, escludendo i reset di accesso. Gli indirizzi dei destinatari sono visibili al progetto proprietario che li ha forniti. Token e URL delle credenziali non sono mai elencati
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. |
| kind | query | opzionale | |
| stato | query | opzionale | |
| cursore | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Elenca i record del ciclo di vita degli inviti per il progetto corrente, escludendo i reset di accesso | InvitationList (application/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) |
Crea inviti
Crea inviti per membri o acquirenti di annunci. La consegna via email non restituisce mai una credenziale. La consegna tramite link è solo per membri e restituisce un URL, anche in caso di replay idempotente esatto entro 24 ore. Gli inviti email scadono dopo sette giorni; i link dopo 24 ore. Gli inviti email in sospeso dello stesso tipo, indirizzo e progetto sono riutilizzati.
Un membro limitato agli schermi non invita persone (outside_screen_scope).
Un invito email project_member a una persona che sarebbe un ospite esterno dell’organizzazione del progetto (non è la sua organizzazione di appartenenza) è soggetto alla policy per gli ospiti di quell’organizzazione, e risponde guest_not_allowed (403) quando la policy (allow, domains o none) non ammette l’indirizzo. L’accettazione dell’invito la controlla di nuovo.
Lo staff e gli amministratori dell’organizzazione stessa sono esenti. Uno screen_scope su un invito rientra nell’ambito degli schermi, che il piano Enterprise include; un progetto il cui piano ne è privo viene rifiutato con feature_not_in_plan (402).
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 | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| kind (obbligatorio, stringa) | Consentito: "project_member", "ad_buyer" |
| consegna (opzionale, stringa) | Consentito: "email", "link" predefinito: "email" |
| email (opzionale, array) | |
| advertising (opzionale, InvitationAdvertising) | Ambito di proprietà del venditore: almeno uno schermo o slot. Accettati solo schermi, solo slot o entrambi. |
| upload_scope (opzionale, UploadScope) | Ciò che un uploader può usare (docs/uploaders.md): le playlist di cui modifica le pagine e le cartelle media in cui carica. Le cartelle sono esattamente quelle elencate, mai le loro sottocartelle. Un id che al momento della scrittura non indica alcun oggetto attivo del progetto è invalid_request alla sua posizione; una successiva eliminazione lascia un id morto, che non concede nulla. L’ambito viene letto a ogni richiesta, quindi una modifica si applica alla successiva. |
| screen_scope (opzionale, ScreenScope) | Su che cosa può agire un membro o un agente con ambito (docs/screen-scope.md): gli schermi nelle cartelle di schermi elencate e in ogni cartella al loro interno, e gli schermi elencati. Almeno un id in tutto. Un id che al momento della scrittura non indica alcuna cartella o schermo live del progetto è invalid_request nella sua posizione; un’eliminazione successiva lascia un id morto, che non concede nulla. L’ambito viene letto a ogni richiesta, quindi una modifica si applica alla successiva. I tag non sono mai ambito. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/invitations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Crea inviti per membri o acquirenti di annunci. | InvitationCreated (application/json); headers: RateLimit-Policy, RateLimit |
| 402 | feature_not_in_plan — un ambito degli schermi richiede Enterprise, e un ambito di upload (un uploader) richiede Plus; il problema indica la funzione, il piano dell’account e required_plan. Restringere un ambito di upload e rimuovere uno dei due ambiti sono sempre consentiti. | Problema (application/problem+json) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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) |
| 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 |
Revoca invito
Revoca un invito in sospeso. Un invito accettato restituisce invitation_consumed. Un membro limitato agli schermi non revoca inviti (outside_screen_scope).
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 POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations/RESOURCE_ID/revoke'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 204 | Revoca un invito in sospeso. | nessun corpo |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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) |
Richiedi reset accesso
Accetta una richiesta di reset dell’accesso senza rivelare se una persona possiede l’indirizzo.
Viene trovata anche una persona con un indirizzo non verificato, ad esempio una registrazione in autonomia, e completare quel reset, che il suo proprietario deve confermare con replace_unverified_account, dà al proprietario della casella di posta un nuovo account (una nuova persona con la credenziale del reset, una nuova organizzazione e un nuovo progetto) ed elimina la persona non verificata, della quale nessuno aveva dimostrato che l’indirizzo le appartenesse.
Un link di reimpostazione scade un'ora dopo l'ultima richiesta. Finché il link di una persona è attivo e ha meno di un giorno, un'altra richiesta reinvia lo stesso link (al massimo una volta ogni dieci minuti) e sposta la scadenza a un'ora dalla richiesta, così una richiesta non invalida mai il link già nella casella; altrimenti un nuovo link lo sostituisce. Non c'è limite per indirizzo.
Completare una reimpostazione rimuove le altre passkey della persona (tutte le passkey per una reimpostazione della password), rimuove la password quando la nuova credenziale è una passkey, scarta un cambio di email in sospeso e chiude ogni sessione. Con o senza persona, la richiesta reinvia anche al massimo dieci inviti indirizzati all'email, e ciascun invito al massimo una volta all'ora.
Tra i dieci progetti non eliminati più recenti con indirizzo di contatto corrispondente, ogni progetto attivo con un piano del catalogo e la cui proprietà sia ancora in attesa dalla registrazione riceve nuovamente il proprio invito di registrazione, anche se è scaduto o il destinatario è già entrato come membro ordinario.
Accettare questo invito di registrazione con l’accesso esistente completa l’assegnazione della proprietà; la sola richiesta di recupero non modifica la proprietà né le credenziali. Gli inviti via email in sospeso per membri e acquirenti pubblicitari di progetti attivi con un piano del catalogo, e gli inviti in sospeso per amministratori di organizzazioni attive, occupano i posti rimanenti, dai più recenti.
Un invito reinviato mantiene il proprio ID e riceve un nuovo link e una nuova scadenza; il vecchio link smette di funzionare e il numero di inviti in sospeso del progetto non cambia. Un invito di registrazione scaduto viene ricreato come nuovo invito e occupa di nuovo un posto, quindi il conteggio aumenta di uno; viene ignorato se il progetto è pieno.
Gli altri inviti scaduti, revocati, accettati o condivisi tramite link non vengono reinviati.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| email (obbligatorio, stringa) | minLength: 3 maxLength: 254 formato: "email" |
Modello richiesta e risposte
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/sign-in-resets'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 202 | Accetta una richiesta di reset dell’accesso senza rivelare se una persona possiede l’indirizzo. | SignInResetAccepted (application/json); intestazioni: 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) |
| 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 |
Iscrivi CLI
Crea un nuovo progetto e il suo primo agente tramite iscrizione esplicita CLI inclusa, anche se l’indirizzo di contatto appartiene già a una persona o progetto. L’email di contatto resta non verificata e non concede autorità; indirizzi malformati restituiscono invalid_request.
Mette in coda un invito all’iscrizione nella stessa transazione. project_name è opzionale; se omesso si usa un nome leggibile di due parole. La ripetizione idempotente esatta precede i limiti di frequenza. Conserva la credenziale permanente prima di segnalare il successo; la sua busta di replay scade a issuance_expires_at e i tentativi successivi restituiscono credential_issuance_expired.
Il record di idempotenza dura 24 ore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| credential_format (opzionale, stringa) | Deve essere oauth, che risponde con l’accoppiamento JWT agente (CLIEnrollmentOAuth). legacy, o omettendolo, risponde 410 client_update_required, perché i bearer permanenti legacy sono ritirati. Un server che non emette JWT agente risponde not_ready. Consentiti: "oauth", "legacy" |
| intent (opzionale, stringa) | Scopo di iscrizione opzionale. Ometti o signage mantiene screens=true, advertiser=false. advertising imposta advertiser=true, screens=false e non cambia mai l’assegnazione del piano di fatturazione. Consentiti: "signage", "advertising" |
| client_id (obbligatorio, stringa) | Identità di installazione anonima stabile generata da 32 byte CSPRNG e persistita prima della prima richiesta. È materiale per limitazione di velocità, non una credenziale progetto. pattern: "^cli_[A-Za-z0-9_-]{43}$" |
| email (opzionale, stringa) | Indirizzo di contatto progetto non verificato. È richiesto esattamente uno tra email o agentid_claim. L’iscrizione crea sempre un nuovo progetto e mette in coda il suo invito; un indirizzo da solo non concede alcuna autorità. minLength: 3 maxLength: 254 format: "email" |
| agentid_claim (opzionale, stringa) | Codice di richiesta AgentID monouso dalla pagina di accesso AgentID. Esattamente uno tra email o agentid_claim è richiesto. L’indirizzo del proprietario AgentID verificato diventa il contatto del progetto e il destinatario dell’invito. pattern: "^agid_[A-Za-z0-9_-]{43}$" |
| beta_key (opzionale, stringa) | Obbligatorio quando il server ha una chiave beta iscrizione configurata. Omettere se il server non limita l’iscrizione. |
| nome (opzionale, stringa) | predefinito: "Agente" minLength: 1 maxLength: 80 |
| agent_type (opzionale, stringa) | predefinito: "cli" pattern: "^[A-Za-z0-9][A-Za-z0-9._-]{0,31}$" |
| piattaforma (opzionale, stringa) | maxLength: 80 |
| version (opzionale, stringa) | maxLength: 40 |
| install_source (opzionale, stringa) | Opzionale. Da dove è stata installata l’integrazione: l’host e, dopo una barra, il marketplace (claude/screenrig, codex/screenrig, grok/screenrig), oppure un semplice host come npm. Lo riporta il software, non una persona, quindi un valore mancante o di forma errata viene ignorato e non fa mai fallire l’iscrizione. Conta soltanto da dove provengono le installazioni e non concede nulla. pattern: "^[a-z][a-z0-9-]{0,31}(/[a-z0-9][a-z0-9._-]{0,63})?$" |
| project_name (opzionale, NomeProgetto) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
| setup_code (opzionale, stringa) | Codice di configurazione facoltativo che la persona ha copiato dal sito con il prompt di configurazione (due gruppi di quattro lettere e cifre, maiuscole e trattino ignorati). Collega il nuovo progetto a quella visita al sito; un codice sconosciuto o scaduto viene ignorato e non fa mai fallire la registrazione. Non concede nulla. pattern: "^[0-9A-Za-z]{4}-?[0-9A-Za-z]{4}$" |
| organizzazione (opzionale, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modello richiesta e risposte
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/enrollments'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Nuovo progetto e credenziale bearer permanente. Il progetto porta l’indirizzo di contatto non verificato nella sua forma fornita e ridotta. Conserva e verifica il token prima di segnalare successo iscrizione. La credenziale non ha scadenza programmata ma la sua busta di consegna crittografata exact-retry esiste solo fino a issuance_expires_at. | CLIEnrollmentOAuth (application/json); intestazioni: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | 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) |
| 409 | 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) |
| 410 | 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) |
| 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 |
| 500 | 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) |
| 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) |
Avvia ID agente Accedi
Avvia un accesso browser AgentID (OIDC) sull’host API derivato dall’origine pubblica di runtime (https://play.<domain> -> https://api.<domain>). Imposta un cookie di binding a uso singolo e reindirizza al punto di autorizzazione AgentID con PKCE S256. Risponde solo sull’host API.
Mentre il relying party non ha client id e secret, la rotta mostra una pagina semplice non disponibile con 503.
Modello richiesta e risposte
curl --request GET 'https://api.screenrig.ai/agentid/start'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 302 | Reindirizza al punto di autorizzazione AgentID. | nessun corpo |
| 503 | Accesso AgentID non disponibile. | stringa (text/html) |
| 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) |
Completa accesso Agent IDSign
Completa un accesso browser AgentID sull’host API. Richiede iss uguale all’emittente configurato, il cookie di binding e una transazione monouso non scaduta.
Scambia il codice con client_secret_basic e PKCE, verifica l’id_token ES256 (iss, aud, exp con sfasamento 60 s, nonce) contro JWKS in cache, chiama userinfo e applica le regole proprietario, quindi rende una pagina codice-claim monouso. Un soggetto già associato a un agente rende la pagina già registrata.
Questa rotta non crea mai un progetto, identità o invito.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| codice | query | opzionale | |
| stato | query | opzionale | |
| iss | query | opzionale | |
| errore | query | opzionale |
Modello richiesta e risposte
curl --request GET 'https://api.screenrig.ai/agentid/callback'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Pagina codice di richiesta AgentID monouso con passaggi per installare il plugin. | stringa (text/html) |
| 409 | Il soggetto AgentID è già registrato. | stringa (text/html) |
| 503 | Accesso AgentID non disponibile. | stringa (text/html) |
| 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 progetto
Il progetto chiamante. Non addebita il contatore API da 1 credito, quindi un progetto con zero rimanenti può ancora leggere i rimanenti e recuperare. Dopo un principale progetto riuscito, le risposte JSON /api autenticate e problemi includono ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset e ScreenRig-Credits-Included come crediti interi.
SSE, runtime, contenuto e risposte non autenticate li omettono.
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://screenrig.ai/api/project'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Progetto | Progetto (application/json); intestazioni: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low |
| 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 progetto
Rinomina il progetto corrente. I nomi contengono da 1 a 60 caratteri stampabili e nessun testo simile a un URL.
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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| nome (obbligatorio, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
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://screenrig.ai/api/project'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Rinomina il progetto corrente. | Progetto (application/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 agente progetto
Solo il proprietario del progetto o un amministratore della sua organizzazione può eliminarlo; ogni altro chiamante è rifiutato con forbidden. Una persona deve anche essere membro del progetto.
Un agente necessita della capacità membership target del progetto e elimina per la persona responsabile, che deve essere il proprietario o un amministratore dell’organizzazione; un agente senza persona responsabile non può eliminare, tranne l’agente che ha iscritto il progetto mentre nessuna persona ha accettato l’iscrizione.
Richiede anche il nome e la revisione correnti, zero schermi non archiviati, nessun credito, prenotazioni o debito nel proprio wallet e nessuna pubblicità attiva. Un saldo negativo accumulato sotto termini gratuiti o di lancio non blocca; l’eliminazione lo azzera con una voce di registro project_delete_writeoff. Mette in coda le notifiche ai membri e usa la lapide irreversibile.
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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| empty_only (opzionale, booleano) | Richiede un progetto Screens vuoto nella transazione di eliminazione, inclusi contenuti, altri agenti o membri, lavoro e corrispondenza. Il CLI richiede inoltre la sua provenienza di iscrizione salvata prima di usare questa protezione di pulizia. L’omissione mantiene l’eliminazione esplicita del membro. |
| nome (obbligatorio, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
| revisione (obbligatoria, intero) | minimo: 1 |
Modello richiesta e risposte
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | Progetto eliminato (application/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 capacità progetto
Il piano del progetto chiamante, flag indipendenti inserzionista/schermi con la loro revisione, il set di capacità effettive derivate, le funzioni del piano che ha (plan_features) e i suoi limiti (limits). Non riflette mai una rivendicazione client; un piano sconosciuto fallisce chiuso come proibito.
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://screenrig.ai/api/project/capabilities'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Capacità del progetto. | ProjectCapabilities (application/json); intestazioni: Cache-Control |
| 403 | vietato - il piano del progetto non è nel catalogo. | 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 l’audit dell’organizzazione
Il registro di audit proprio dell’organizzazione: le modifiche ai suoi amministratori, domini e impostazioni di fatturazione, con le stesse voci, gli stessi filtri e formati di GET /api/audit. Richiede un amministratore dell’organizzazione. Fa parte del registro di audit, che il piano Enterprise include; un’organizzazione il cui piano ne è privo viene rifiutata con feature_not_in_plan (402).
Ogni piano registra le proprie modifiche.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| attore | query | opzionale | |
| actor_kind | query | opzionale | |
| origine | query | opzionale | |
| azione | query | opzionale | |
| da | query | opzionale | |
| fino a | query | opzionale | |
| cursore | query | opzionale | |
| limite | query | opzionale | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/audit'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di voci, o il registro filtrato come file. | AuditList (application/json), string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet), string (application/pdf) |
| 400 | 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) |
| 402 | feature_not_in_plan — Il registro di audit fa parte del piano Enterprise; il problema indica la funzione, il piano dell’account e required_plan. | Problema (application/problem+json) |
| 404 | 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) |
| 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 notifiche dell’organizzazione
Le notifiche dell’organizzazione, di ogni canale, dalla meno recente (al massimo 50).
Una notifica appartiene all’organizzazione e copre tutti i suoi progetti, compresi quelli aggiunti dopo (project_ids assente), oppure i progetti scelti (project_ids); agisce sugli schermi, le origini, le campagne e le schede di quei progetti esattamente come una notifica di progetto. status è failing finché lo sono le consegne di un progetto coperto, e failing_since, last_success_at e last_failure_at riassumono quelli dei progetti coperti (l’inizio di errore più antico, l’ultimo successo e l’ultimo errore).
Il segreto di firma di un webhook non viene mai restituito qui. Richiede un amministratore dell’organizzazione; per chiunque altro la risposta è not_found.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Le notifiche dell’organizzazione. | OrganizationNotificationList (application/json) |
| 404 | 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) |
| 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 notifica dell’organizzazione
Crea una notifica dell’organizzazione, con i membri di POST /api/notifications e i progetti che copre: project_ids assente o null copre ogni progetto dell’organizzazione (quelli che ha e quelli che avrà), un elenco copre esattamente quelli, ciascuno un progetto live di questa organizzazione (altrimenti invalid_request).
I destinatari di una notifica e-mail sono owner (il proprietario di ciascun progetto coperto) oppure gli user_ids di persone dell’organizzazione (i suoi amministratori e i suoi membri dell’organizzazione) o di membri di un progetto coperto; ogni progetto invia comunque e-mail solo alle persone che ne sono membri.
Un’organizzazione ha al massimo 50 notifiche, escluse quelle predefinite create dal sistema (notification_limit_reached). Le stesse funzionalità del piano regolano canali, regole e condizioni come nelle rotte del progetto, valutate sul piano dell’organizzazione. Ogni progetto coperto riceve notification.created, e la modifica viene registrata nel registro di audit dell’organizzazione.
Il segreto di firma di un webhook viene restituito solo in questa risposta e in rotate-secret; un unico segreto firma le consegne di ogni progetto coperto. Un nuovo tentativo identico con la stessa Idempotency-Key restituisce questa stessa risposta, segreto incluso, per ventiquattro ore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| channel (obbligatorio, string) | Consentiti: "email", "webhook", "slack", "teams", "pagerduty", "telegram" |
| descrizione (opzionale, stringa) | Un nome per le persone. maxLength: 200 |
| conditions (facoltativo, NotificationConditions) | |
| screen_tags (facoltativo, ScreenTags) | Tag selettore flotta, da 0 a 16 tag unici esatti, ciascuno conforme alla grammatica dei tag media. Su ScreenPatch l’array sostituisce l’intero set e un array vuoto lo cancella; un tag duplicato o malformato è invalid_request. Cambiare i tag aggiorna la revisione dello schermo (protetta da If-Match) e aggiunge screen.updated con details.tags; non modifica mai la revisione del manifesto. I tag non sono mai nel manifesto di runtime e mai nell’autorizzazione. |
| audience (opzionale, CampaignAudience) | Quali schermi una campagna prende di mira: esattamente uno tra all (ogni regola corrisponde), any (almeno una corrisponde), tag (lo schermo ha il tag), screen_id (quello schermo) o folder (gli schermi in quella cartella schermi e in ogni cartella al suo interno, GET /api/screen-folders; la cartella deve esistere). Le regole si annidano al massimo su 3 livelli e un’audience ha al massimo 500 regole. {"all": []} è ogni schermo del progetto; altrove all e any elencano almeno una regola. |
| min_severity (opzionale, NotificationSeverity) | La gravità di un avviso, dalla meno grave. Un avviso aperto ha la gravità della sua condizione: error per screen_offline e warning per ogni altra condizione, salvo diversa indicazione della severity della notifica. Un avviso risolto e un test sono info. Consentiti: "info", "warning", "error" |
| severity (opzionale, NotificationSeverityOverrides) | Da condizione a gravità per questa notifica, ad esempio {"not_playing": "error"}. Conta per min_severity ed è la gravità che Teams e PagerDuty mostrano per la condizione. Una condizione non elencata mantiene il valore predefinito. In una patch un oggetto vuoto, come null, azzera ogni override. |
| active_hours (opzionale, NotificationActiveHours) | Quando partono gli avvisi aperti: le finestre (screenrig.schedule/v1), lette in timezone. Un avviso in scadenza mentre sono chiuse attende la successiva apertura (outside hold, il valore predefinito) e parte allora se la sua condizione persiste, quindi una condizione che rientra prima non invia nulla, oppure viene saltato (outside drop; last_error outside_hours). Un avviso di risoluzione per un avviso aperto che è stato inviato parte sempre, dentro gli orari o no, e un test li ignora. crashing viene trattenuto o scartato come qualsiasi altra condizione. Gli orari giudicano un avviso quando parte la prima volta; uno fallito viene ritentato con la cadenza consueta a prescindere dagli orari. Aggiungere, modificare o rimuovere gli orari fa rigiudicare subito gli avvisi trattenuti per i vecchi. |
| reach_drop (opzionale, NotificationReachDrop) | Il calo più piccolo della copertura di una campagna per cui viene inviato un avviso reach_dropped: screens è il minor numero di schermi persi (default 1) e percent, se impostato, la quota più piccola degli schermi che la campagna raggiungeva quando è stata pubblicata; un calo deve soddisfare entrambi. Un calo più piccolo non mette in coda alcun avviso, e un avviso in coda il cui calo si è ridotto al di sotto della soglia alla scadenza viene saltato (condition_cleared). Solo con la condizione reach_dropped; su una notifica senza di essa, invalid_request. |
| hold_minutes (facoltativo, integer) | Quanto deve durare una condizione prima di inviare un avviso. crashing non ha mai un periodo di attesa. default: 10 minimum: 0 maximum: 1440 |
| recipients (facoltativo, NotificationRecipients) | Solo e-mail. owner (chi possiede il progetto nel momento in cui viene inviato un avviso) oppure lo user_id di una persona che è membro del progetto; uno user_id che non appartiene a un membro restituisce invalid_request. A ciascuno viene inviata un'e-mail al suo indirizzo verificato. Chi nel frattempo ha lasciato il progetto o non ha un indirizzo verificato viene saltato. |
| url (opzionale, stringa) | Solo webhook: URL https su un host Internet pubblico, porta 443 (predefinita) oppure 8443. Nessun userinfo né frammento. maxLength: 2048 format: "uri" |
| event_types (facoltativo, NotificationEventTypes) | Solo webhook. Eventi di progetto inviati inoltre con POST man mano che si verificano, esattamente come li invia un webhook: tipi esatti come screen.online, oppure prefissi che terminano con .* come screen.*. notification.test non viene mai distribuito. |
| destination (opzionale, NotificationDestination) | Solo Slack, Teams, PagerDuty e Telegram; obbligatorio per essi. La credenziale nella forma in cui il servizio la emette: slack, l’URL del webhook in entrata (hooks.slack.com); teams, l’URL del webhook Workflows (logic.azure.com o powerplatform.com; gli URL dei connettori Office 365 sono dismessi); pagerduty, la chiave di instradamento Events API v2 di 32 caratteri; telegram, il token del bot. Un’altra forma dà notification_destination_rejected. Viene sigillato, non viene mai restituito e in lettura compare solo come destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opzionale, NotificationTelegramChat) | Solo Telegram; obbligatorio per esso. La chat in cui pubblicare: il suo id numerico (negativo per un gruppo o canale) oppure @channelname. Non è una credenziale. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| abilitato (opzionale, booleano) | predefinito: true |
| project_ids (opzionale, in linea) | I progetti coperti dalla notifica; null o assente copre ogni progetto dell’organizzazione. |
Modello richiesta e risposte
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/notifications'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creata. Il segreto di un webhook viene mostrato solo qui e in rotate-secret. | Notification (application/json); intestazioni: Cache-Control |
| 400 | invalid_request, webhook_url_rejected o notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — come per POST /api/notifications, rispetto al piano dell’organizzazione. | Problema (application/problem+json) |
| 404 | 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) |
| 409 | notification_limit_reached o idempotency_mismatch. | 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 notifica dell’organizzazione
Una notifica dell’organizzazione, come la mostra GET /api/organizations/{org_id}/notifications.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una notifica. | Notification (application/json); intestazioni: ETag |
| 404 | 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) |
| 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 notifica dell’organizzazione
Cambia gli stessi membri di PATCH /api/notifications/{id}, nella notifica e in ogni progetto coperto, più project_ids: se assente lascia invariati i progetti, null copre ogni progetto, un elenco copre esattamente quelli. Un progetto che acquisisce la notifica parte dal suo evento corrente (non viene inviato nulla di precedente); da un progetto che la perde la notifica viene eliminata.
Ogni progetto coperto riceve notification.updated, e la modifica viene registrata nel registro di audit dell’organizzazione.
Una modifica che fa coprire alla notifica un progetto che ora non copre è soggetta agli stessi controlli di piano della creazione della notifica quale diventerà (il suo canale, le sue regole e le condizioni sullo schermo, secondo il piano dell’organizzazione); coprire meno progetti non è mai soggetto a controlli, e passare da un elenco a ogni progetto copre sempre di più. If-Match protegge la revisione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| 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 |
|---|---|
| descrizione (opzionale, stringa) | Una stringa vuota cancella la descrizione. maxLength: 200 |
| conditions (facoltativo, NotificationConditions) | |
| screen_tags (facoltativo, ScreenTags) | Tag selettore flotta, da 0 a 16 tag unici esatti, ciascuno conforme alla grammatica dei tag media. Su ScreenPatch l’array sostituisce l’intero set e un array vuoto lo cancella; un tag duplicato o malformato è invalid_request. Cambiare i tag aggiorna la revisione dello schermo (protetta da If-Match) e aggiunge screen.updated con details.tags; non modifica mai la revisione del manifesto. I tag non sono mai nel manifesto di runtime e mai nell’autorizzazione. |
| audience (opzionale, in linea) | Come su NotificationPatch. |
| min_severity (opzionale, in linea) | Come su NotificationPatch. |
| severity (opzionale, in linea) | Sostituisce ogni override; null o un oggetto vuoto li azzera. |
| active_hours (opzionale, in linea) | Sostituisce gli orari; null li azzera. |
| reach_drop (opzionale, inline) | Sostituisce la soglia; null la cancella. |
| hold_minutes (facoltativo, integer) | minimum: 0 maximum: 1440 |
| recipients (facoltativo, NotificationRecipients) | Solo e-mail. owner (chi possiede il progetto nel momento in cui viene inviato un avviso) oppure lo user_id di una persona che è membro del progetto; uno user_id che non appartiene a un membro restituisce invalid_request. A ciascuno viene inviata un'e-mail al suo indirizzo verificato. Chi nel frattempo ha lasciato il progetto o non ha un indirizzo verificato viene saltato. |
| url (opzionale, stringa) | maxLength: 2048 format: "uri" |
| event_types (facoltativo, NotificationEventTypes) | Solo webhook. Eventi di progetto inviati inoltre con POST man mano che si verificano, esattamente come li invia un webhook: tipi esatti come screen.online, oppure prefissi che terminano con .* come screen.*. notification.test non viene mai distribuito. |
| destination (opzionale, NotificationDestination) | Solo Slack, Teams, PagerDuty e Telegram; obbligatorio per essi. La credenziale nella forma in cui il servizio la emette: slack, l’URL del webhook in entrata (hooks.slack.com); teams, l’URL del webhook Workflows (logic.azure.com o powerplatform.com; gli URL dei connettori Office 365 sono dismessi); pagerduty, la chiave di instradamento Events API v2 di 32 caratteri; telegram, il token del bot. Un’altra forma dà notification_destination_rejected. Viene sigillato, non viene mai restituito e in lettura compare solo come destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opzionale, NotificationTelegramChat) | Solo Telegram; obbligatorio per esso. La chat in cui pubblicare: il suo id numerico (negativo per un gruppo o canale) oppure @channelname. Non è una credenziale. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| abilitato (opzionale, booleano) | |
| snoozed_until (facoltativo, inline) | Non inviare nulla fino a questo istante, al massimo 30 giorni da adesso; null termina la sospensione. |
| project_ids (opzionale, in linea) | Se assente, lascia invariati i progetti coperti dalla notifica; null copre ogni progetto dell’organizzazione; un elenco copre esattamente quei progetti. |
Modello richiesta e risposte
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Notifica aggiornata. | Notification (application/json); intestazioni: ETag |
| 400 | invalid_request, webhook_url_rejected o notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — come per PATCH /api/notifications/{id}, rispetto al piano dell’organizzazione. | Problema (application/problem+json) |
| 404 | 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) |
| 412 | revision_conflict — If-Match è obsoleto; current_revision dell’errore riporta la revisione corrente. | 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 notifica dell’organizzazione
Elimina la notifica da ogni progetto che copre, con notification.deleted in ciascuno, e la registra nel registro di audit dell’organizzazione. Gli avvisi in sospeso vengono contrassegnati come falliti con webhook_deleted.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| 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 --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 204 | Eliminato. | nessun corpo; intestazioni: Cache-Control |
| 404 | 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) |
| 412 | revision_conflict — If-Match è obsoleto; current_revision dell’errore riporta la revisione corrente. | 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 segreto della notifica dell’organizzazione
Solo notifiche webhook (qualsiasi altro canale è invalid_request). Sostituisce il segreto di firma in ogni progetto coperto contemporaneamente, così un solo ricevitore continua a verificare un solo segreto, e restituisce la notifica con quello nuovo in secret.
Come per POST /api/notifications/{id}/rotate-secret, al massimo un tentativo per progetto già in corso può ancora arrivare firmato con il vecchio segreto. Un nuovo tentativo identico con la stessa Idempotency-Key restituisce lo stesso nuovo segreto per ventiquattro ore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| 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 POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/rotate-secret'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | La notifica e il suo nuovo segreto. | Notification (application/json); intestazioni: Cache-Control |
| 400 | invalid_request: la notifica non è un webhook. | Problema (application/problem+json) |
| 404 | 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) |
| 412 | revision_conflict — If-Match è obsoleto; current_revision dell’errore riporta la revisione corrente. | 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) |
Testa notifica dell’organizzazione
Invia un notification.test attraverso il primo progetto coperto dalla notifica (per id progetto), come POST /api/notifications/{id}/test ne invia uno attraverso il proprio progetto: una consegna, il cui esito è mostrato dall’elenco delle consegne, tentata una sola volta.
Ogni progetto coperto ha lo stesso ricevitore, la stessa destinazione e lo stesso segreto, quindi un solo test dimostra il canale; l’e-mail di un test va ai destinatari di quel progetto. Una notifica che non copre nessun progetto è invalid_request.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| 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 --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/test'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 202 | La consegna di test in coda. | NotificationDelivery (application/json); intestazioni: RateLimit-Policy, RateLimit |
| 404 | 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) |
| 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) |
Elenca consegne della notifica dell’organizzazione
I registri delle consegne di ogni progetto coperto dalla notifica, in un unico elenco, dal più recente in base a quando ogni riga è stata accodata. Ogni riga nomina il proprio progetto (project_id), e il suo id apre GET .../deliveries/{delivery_id}/attempts. Restituisci next_cursor come prima per la pagina successiva.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| id | path | obbligatorio | |
| before | query | opzionale | next_cursor della pagina precedente delle consegne. |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di consegne. | NotificationDeliveryList (application/json) |
| 404 | 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) |
| 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 tentativi di consegna della notifica dell’organizzazione
I tentativi di una consegna, dal più recente, gli ultimi 20. Una consegna che non appartiene a questa notifica è not_found.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| id | path | obbligatorio | |
| delivery_id | path | obbligatorio | L’id di una delle consegne del webhook. |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries/DELIVERY_ID/attempts'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | I tentativi mantenuti della consegna. | NotificationDeliveryAttemptList (application/json) |
| 404 | 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) |
| 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) |
Reiscrivere una persona a una notifica dell’organizzazione
Riattiva l’invio delle e-mail di una notifica e-mail a una persona che l’aveva interrotto con il link di annullamento dell’iscrizione contenuto nell’e-mail, in ogni progetto coperto dalla notifica (il link lo interrompe in tutti). Idempotente: se la persona non aveva interrotto nulla, non cambia niente e la risposta è la notifica così com’è.
Una modifica aumenta la revisione e aggiunge notification.updated con i dettagli change resubscribed, user_id e via api a ogni progetto coperto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| id | path | obbligatorio | |
| user_id | path | obbligatorio | Lo user_id di una persona nell’elenco unsubscribed della notifica. |
Modello richiesta e risposte
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/unsubscribed/USER_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | La notifica, senza la persona in unsubscribed. | Notification (application/json); intestazioni: ETag |
| 404 | 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) |
| 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 i tipi di report in un progetto
Elenca i tipi di report che GET /api/reports/{kind} costruisce, con i filtri di ciascuno, e i formati in cui un report viene scritto. Richiede la capacità dei report.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reports'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | I tipi di report. | ReportCatalog (application/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 gli abbonamenti ai report in un progetto
Elenca i report programmati del progetto, dal più vecchio (al massimo 50), ciascuno con il prossimo invio e l'esito dell'ultimo. Richiede la capacità del progetto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/report-subscriptions'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Gli abbonamenti ai report del progetto. | ReportSubscriptionList (application/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) |
Crea abbonamento a un report in un progetto
Programma l'invio di un report via email, come allegato PDF, XLSX o CSV, ogni giorno, settimana o mese a un'ora in un fuso orario.
Ogni invio copre il periodo precedente, in giorni UTC: il giorno prima, i sette giorni precedenti o il mese scorso. recipients sono membri del progetto, indicati con user_id o con l'indirizzo email del membro; chiunque altro viene rifiutato, quindi un abbonamento non è mai un modo per scrivere a un estraneo, e un membro che se ne va smette di riceverlo.
Un’esecuzione che fallisce viene ripetuta e compare con last_status failed e last_error. Al massimo 50 per organizzazione in tutti i suoi progetti (report_subscription_limit_reached).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 100 |
| kind (obbligatorio, stringa) | Valori ammessi: "fleet_health", "uptime", "publishing", "alerts", "alert_log", "proof_of_play" |
| filters (opzionale, oggetto) | I filtri del report diversi dai giorni (GET /api/reports li elenca). |
| schedule (obbligatorio, ReportSchedule) | |
| format (obbligatorio, stringa) | Valori ammessi: "pdf", "xlsx", "csv" |
| recipients (obbligatorio, array) | user_id o indirizzo email di membri del progetto. |
| abilitato (opzionale, booleano) | predefinito: true |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/report-subscriptions'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato. | ReportSubscription (application/json); intestazioni: ETag |
| 400 | 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) |
| 402 | feature_not_in_plan — I report fanno parte di Plus. Il problema indica la funzione, il piano del progetto e required_plan. | Problema (application/problem+json) |
| 409 | report_subscription_limit_reached. | 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 carte nel progetto
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| progetto | query | opzionale | |
| dopo | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/cards'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risorsa della card | oggetto (application/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) |
Crea scheda progetto
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| tipo (obbligatorio, stringa) | |
| major (opzionale, intero) | minimo: 1 |
| params (obbligatorio, oggetto) | |
| dati (opzionale, oggetto) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/cards'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Risorsa della card | CardInstance (application/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) |
Crea portale dell’organizzazione
Richiede un amministratore designato di un’organizzazione attiva, l’autenticazione tramite cookie della stessa origine (corrispondenza esatta) e il CSRF JWT. L’attore e l’URL di ritorno sono definiti dal server. La risposta è privata e no-store. Aperto anche a un’organizzazione delegata a un reseller, per la sua carta e le fatture passate.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio |
Modello richiesta e risposte
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/portal-sessions'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Risultato della gestione della fatturazione. | BillingPortalSession (application/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) |
Imposta ricarica automatica dell’organizzazione
Richiede un amministratore designato di un’organizzazione attiva, l’autenticazione tramite cookie della stessa origine (corrispondenza esatta) e il CSRF JWT. L’attore è definito dal server. La disattivazione conserva gli importi salvati e la spesa mensile; se è disattivata, i campi importo vengono ignorati. La risposta è privata e no-store. La modifica delle impostazioni rimuove una pausa recuperabile solo dopo che ogni fattura pagabile con pagamento non riuscito è stata annullata in modo sicuro.
Attivarlo per un’organizzazione delegata a un reseller risponde con 409 billed_by_reseller; la disattivazione resta consentita.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio |
Modello richiesta e risposte
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/auto-top-up'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato della gestione della fatturazione. | AutoTopUpView (application/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) |
Ottenere i pagamenti di un’organizzazione
Viste dei pagamenti di un’organizzazione attiva. Richiede il cookie del suo amministratore designato; la sola visibilità del personale non concede accesso agli acquisti. I pagamenti non configurati restituiscono available false. Il ritorno del browser non assegna mai crediti.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/payments'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Disponibilità dei pagamenti e acquisti recenti. | OrganizationPayments (application/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) |
Creare un pagamento per un’organizzazione
Avviare un acquisto prepagato per l’amministratore designato di un’organizzazione attiva. Richiede l’autenticazione tramite cookie della stessa origine e, per le sessioni JWT, un’intestazione CSRF corrispondente. Organizzazione, cliente, attore e URL di ritorno sono definiti dal server. I crediti vengono applicati solo dopo la conferma del pagamento da parte del servizio di fatturazione. In caso di risposte ambigue, riprovare con la stessa Idempotency-Key e lo stesso importo.
Un’organizzazione delegata a un reseller risponde con 409 billed_by_reseller.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| amount_cents (obbligatorio, intero) | minimo: 10000 massimo: 1000000 formato: "int64" |
Modello richiesta e risposte
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/credit-checkouts'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Acquisto creato o ripetuto. L’URL di pagamento è assente dopo il completamento. Le risposte sono private e no-store. | CreditPurchase (application/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 saldo fatturazione organizzazione
Il portafoglio dell’organizzazione. Richiede un amministratore designato dell’organizzazione, un amministratore del reseller a cui l’organizzazione è delegata o una sessione staff. Non concede alcuna appartenenza al progetto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/balance'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Saldo fatturazione organizzazione. | Saldo fatturazione (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) |
Ottieni estratto conto fatturazione organizzazione
Voci di diario attribuite a questa organizzazione al momento dell’addebito, con identità progetto e pagatore. I trasferimenti non spostano l’accesso storico. Le voci antecedenti al contesto organizzazione registrato restano nei loro estratti conto progetto. Lette dalle stesse persone che leggono il saldo (getOrganizationBillingBalance).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| cursore | query | opzionale | |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/statement'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Estratto conto fatturazione organizzazione. | Estratto conto fatturazione (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) |
Ottieni utilizzo fatturazione organizzazione
Il pool di utilizzo dell’organizzazione e la quota di ciascun progetto per un mese UTC. Copre l’utilizzo pagato da questa organizzazione; gli altri costi del pagante sono nell’estratto conto dell’organizzazione. Letto dalle stesse persone che leggono il saldo (getOrganizationBillingBalance).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio | |
| cursore | query | opzionale | |
| limite | query | opzionale | |
| periodo | query | opzionale | Mese UTC in formato YYYY-MM; predefinito al mese corrente. |
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/usage'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Utilizzo fatturazione organizzazione. | OrganizationBillingUsage (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) |
Elenco organizzazioni agente
Organizzazioni visibili, comprese quelle vuote per i loro amministratori. I nomi non sono univoci.
Modello richiesta e risposte
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/organizations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato organizzazione. | OrganizationList (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) |
Rinomina organizzazioni agente
Gli amministratori designati e gli agenti il cui responsabile verificato è un amministratore possono rinominare un’organizzazione. Non viene concessa alcuna autorizzazione o iscrizione al progetto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| org_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modello richiesta e risposte
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/organizations/ORG_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato organizzazione. | OrganizationView (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) |
Imposta la politica di revisione del progetto
Attiva o disattiva Richiedi revisione per modifiche agent. Se attivo, ogni agente e client di servizio nel progetto ha accesso Proponi a ogni richiesta, qualunque siano le sue credenziali. Solo il proprietario del progetto o un amministratore dell’organizzazione del progetto (altrimenti vietato); le sessioni shadow dello staff non possono modificarlo.
If-Match trasporta review_policy_revision (0 consentito) ed è obbligatorio; un valore obsoleto è revision_conflict. Disattivarlo richiede una prova, la prova passkey o password che l’approvazione della connessione agente usa; attivarlo no. Le revisioni aperte restano decidibili in entrambi i casi. Aggiunge project.review_policy_changed.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| If-Match | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| agent_changes_require_review (obbligatorio, booleano) | |
| proof (opzionale, DashboardProof) |
Modello richiesta e risposte
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/review-policy'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | La policy attualmente in vigore. | ReviewPolicy (application/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) |
Anteprima agente eliminazione progetto nel progetto
Restituisce i dettagli di conferma correnti, i blocchi di eliminazione e i dispositivi archiviati che verranno disconnessi. allowed è false, con una motivazione, quando il chiamante non può eliminare il progetto (solo il proprietario o un amministratore della sua organizzazione può; per un agente, la persona responsabile) o rimane un blocco.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| project_id | query | opzionale | ID progetto previsto; una selezione modificata è rifiutata. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/deletion-preview'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | Anteprima eliminazione progetto (application/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) |
Trasferisci agente proprietario progetto nel progetto
Il proprietario trasferisce la proprietà a un membro esistente e verificato del progetto; questo non concede alcuna nuova appartenenza. L’appartenenza del nuovo proprietario esce da qualsiasi screen_scope e upload_scope, così il nuovo proprietario raggiunge l’intero progetto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| user_id (obbligatorio, stringa) | minLength: 1 maxLength: 200 |
Modello richiesta e risposte
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/owner'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | ProjectContext (application/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) |
Sposta agente progetto nel progetto
Lo spostamento autorizzato dal proprietario trasferisce atomica occupazione dello schermo e nuovo utilizzo al pagatore di destinazione; gli addebiti storici mantengono il loro pagatore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| organization_id (obbligatorio, stringa) | minLength: 1 maxLength: 200 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/move'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | ProjectContext (application/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) |
Progetto consentito sposta agente nel progetto
Elenca le destinazioni amministrate dal proprietario o il cui dominio verificato corrisponde alla loro email verificata
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| project_id | query | opzionale | ID progetto previsto; una selezione modificata è rifiutata. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/moves'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | Destinazioni spostamento progetto (application/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 inviti nel progetto
Elenca i record del ciclo di vita degli inviti per il progetto corrente, escludendo i reset di accesso. Gli indirizzi dei destinatari sono visibili al progetto proprietario che li ha forniti. Token e URL delle credenziali non sono mai elencati
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| kind | query | opzionale | |
| stato | query | opzionale | |
| cursore | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/invitations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Elenca i record del ciclo di vita degli inviti per il progetto corrente, escludendo i reset di accesso | InvitationList (application/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) |
Crea inviti nel progetto
Crea inviti per membri o acquirenti di annunci. La consegna via email non restituisce mai una credenziale. La consegna tramite link è solo per membri e restituisce un URL, anche in caso di replay idempotente esatto entro 24 ore. Gli inviti email scadono dopo sette giorni; i link dopo 24 ore. Gli inviti email in sospeso dello stesso tipo, indirizzo e progetto sono riutilizzati.
Un membro limitato agli schermi non invita persone (outside_screen_scope).
Un invito email project_member a una persona che sarebbe un ospite esterno dell’organizzazione del progetto (non è la sua organizzazione di appartenenza) è soggetto alla policy per gli ospiti di quell’organizzazione, e risponde guest_not_allowed (403) quando la policy (allow, domains o none) non ammette l’indirizzo. L’accettazione dell’invito la controlla di nuovo.
Lo staff e gli amministratori dell’organizzazione stessa sono esenti. Uno screen_scope su un invito rientra nell’ambito degli schermi, che il piano Enterprise include; un progetto il cui piano ne è privo viene rifiutato con feature_not_in_plan (402).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| kind (obbligatorio, stringa) | Consentito: "project_member", "ad_buyer" |
| consegna (opzionale, stringa) | Consentito: "email", "link" predefinito: "email" |
| email (opzionale, array) | |
| advertising (opzionale, InvitationAdvertising) | Ambito di proprietà del venditore: almeno uno schermo o slot. Accettati solo schermi, solo slot o entrambi. |
| upload_scope (opzionale, UploadScope) | Ciò che un uploader può usare (docs/uploaders.md): le playlist di cui modifica le pagine e le cartelle media in cui carica. Le cartelle sono esattamente quelle elencate, mai le loro sottocartelle. Un id che al momento della scrittura non indica alcun oggetto attivo del progetto è invalid_request alla sua posizione; una successiva eliminazione lascia un id morto, che non concede nulla. L’ambito viene letto a ogni richiesta, quindi una modifica si applica alla successiva. |
| screen_scope (opzionale, ScreenScope) | Su che cosa può agire un membro o un agente con ambito (docs/screen-scope.md): gli schermi nelle cartelle di schermi elencate e in ogni cartella al loro interno, e gli schermi elencati. Almeno un id in tutto. Un id che al momento della scrittura non indica alcuna cartella o schermo live del progetto è invalid_request nella sua posizione; un’eliminazione successiva lascia un id morto, che non concede nulla. L’ambito viene letto a ogni richiesta, quindi una modifica si applica alla successiva. I tag non sono mai ambito. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/invitations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Crea inviti per membri o acquirenti di annunci. | InvitationCreated (application/json); headers: RateLimit-Policy, RateLimit |
| 402 | feature_not_in_plan — un ambito degli schermi richiede Enterprise, e un ambito di upload (un uploader) richiede Plus; il problema indica la funzione, il piano dell’account e required_plan. Restringere un ambito di upload e rimuovere uno dei due ambiti sono sempre consentiti. | Problema (application/problem+json) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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) |
| 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 |
Ottieni progetto nel progetto
Il progetto chiamante. Non addebita il contatore API da 1 credito, quindi un progetto con zero rimanenti può ancora leggere i rimanenti e recuperare. Dopo un principale progetto riuscito, le risposte JSON /api autenticate e problemi includono ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset e ScreenRig-Credits-Included come crediti interi.
SSE, runtime, contenuto e risposte non autenticate li omettono.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Progetto | Progetto (application/json); intestazioni: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low |
| 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 progetto in progetto
Rinomina il progetto corrente. I nomi contengono da 1 a 60 caratteri stampabili e nessun testo simile a un URL.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| nome (obbligatorio, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
Modello richiesta e risposte
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Rinomina il progetto corrente. | Progetto (application/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 agente progetto nel progetto
Solo il proprietario del progetto o un amministratore della sua organizzazione può eliminarlo; ogni altro chiamante è rifiutato con forbidden. Una persona deve anche essere membro del progetto.
Un agente necessita della capacità membership target del progetto e elimina per la persona responsabile, che deve essere il proprietario o un amministratore dell’organizzazione; un agente senza persona responsabile non può eliminare, tranne l’agente che ha iscritto il progetto mentre nessuna persona ha accettato l’iscrizione.
Richiede anche il nome e la revisione correnti, zero schermi non archiviati, nessun credito, prenotazioni o debito nel proprio wallet e nessuna pubblicità attiva. Un saldo negativo accumulato sotto termini gratuiti o di lancio non blocca; l’eliminazione lo azzera con una voce di registro project_delete_writeoff. Mette in coda le notifiche ai membri e usa la lapide irreversibile.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | ID progetto previsto. Il server rifiuta l’azione se la credenziale corrente o la sessione cookie punta a un altro progetto; i client browser inviano l’ID progetto della pagina. minLength: 1 maxLength: 200 |
| empty_only (opzionale, booleano) | Richiede un progetto Screens vuoto nella transazione di eliminazione, inclusi contenuti, altri agenti o membri, lavoro e corrispondenza. Il CLI richiede inoltre la sua provenienza di iscrizione salvata prima di usare questa protezione di pulizia. L’omissione mantiene l’eliminazione esplicita del membro. |
| nome (obbligatorio, ProjectName) | Nome progetto stampabile e rifilato. Rifiuta controlli, testo simile a URL, @, www. e ://. minLength: 1 maxLength: 60 |
| revisione (obbligatoria, intero) | minimo: 1 |
Modello richiesta e risposte
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato del ciclo di vita del progetto | Progetto eliminato (application/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 applicazioni nel progetto
Elenca le applicazioni dalla più recente, massimo 500 per pagina. I nomi sono etichette e non devono essere unici; indirizza un’applicazione per ID. next_cursor è la posizione dell’ultima riga restituita mentre ci sono altre righe; passalo come after, con gli stessi filtri, per la pagina successiva. next_cursor è null nell’ultima pagina
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| dopo | query | opzionale | next_cursor della pagina precedente della stessa lista, con gli stessi filtri. Omettere inizia dalla riga più recente. Un valore che non è tale cursore è invalid_request. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Applicazioni | ApplicationList (application/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) |
Carica applicazione in progetto
Flussi un tar.gz prodotto da CLI direttamente in staging durevole limitato. I metadati sono negli header così l’archivio non è mai codificato base64 o materializzato come JSON dal server.
Il proxy davanti all’API termina una richiesta a cui non ha risposto entro circa 100 s, quindi un archivio grande su un uplink lento fallisce qui; POST /api/applications/uploads invia invece l’archivio direttamente all’archivio oggetti.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio | |
| ScreenRig-Archive-SHA256 | intestazione | obbligatorio | |
| ScreenRig-Expanded-Bytes | intestazione | obbligatorio | |
| ScreenRig-File-Count | intestazione | obbligatorio | |
| ScreenRig-SDK-Version | intestazione | opzionale | |
| ScreenRig-Application-Name | intestazione | opzionale | Nome applicazione ASCII; mutuamente esclusivo con ScreenRig-Application-Name*. Spazi iniziali e finali sono rimossi. Controlli e valori header duplicati sono rifiutati. Il nome decodificato è limitato a 120 valori scalari Unicode. |
| ScreenRig-Application-Name* | intestazione | opzionale | Nome applicazione Unicode codificato come RFC 8187 UTF-8'' seguito da byte UTF-8 percent-encoded (lingua vuota, charset UTF-8 esatto). Esclusivo con ScreenRig-Application-Name. Escape non validi, UTF-8 non valido, controlli e valori duplicati nell’intestazione sono rifiutati. Gli spazi bianchi iniziali e finali vengono rimossi; il nome decodificato è limitato a 120 valori scalari Unicode. Nessuna intestazione nome può rinominare un aggiornamento di rilascio. Questo evita Unicode grezzo nei valori delle intestazioni HTTP. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'ScreenRig-Archive-SHA256: VALUE' --header 'ScreenRig-Expanded-Bytes: VALUE' --header 'ScreenRig-File-Count: VALUE' --header 'Content-Type: application/gzip' --data-binary '@request.bin' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 202 | Caricamento accettato | Operazione accettata (application/json); intestazioni: 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) |
Crea caricamento applicazione nel progetto
Dichiara un caricamento diretto di un tar.gz prodotto dalla CLI che crea una nuova applicazione. La risposta è un’autorizzazione firmata per esattamente un PUT di oggetto dell’archivio, quindi i byte vanno direttamente all’archivio oggetti e mai attraverso l’API, il cui proxy termina una richiesta a cui non ha risposto entro circa 100 s.
Invia l’archivio con PUT a upload_url, poi conferma con POST /api/applications/uploads/{id}/commit e attendi l’operazione. L’applicazione, la sua versione e l’operazione ricevente esistono da questa risposta, come dopo POST /api/applications. Un caricamento non confermato entro 24 ore fallisce, e un’applicazione che non ha mai pubblicato una versione viene rimossa.
La stessa Idempotency-Key e lo stesso corpo restituiscono lo stesso caricamento con un URL appena firmato. GET /api/capabilities imposta features.application_direct_uploads dove queste route sono servite.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (opzionale, stringa) | Nome di una nuova applicazione, tagliato; al massimo 120 caratteri Unicode e nessun controllo. Omesso o vuoto seleziona un nome generato. Una dichiarazione di versione (POST /api/applications/{id}/uploads) non deve portarne uno. maxLength: 120 |
| sha256 (obbligatorio, stringa) | SHA-256 dei byte dell’archivio. pattern: "^[0-9a-f]{64}$" |
| compressed_bytes (obbligatorio, intero) | Dimensione dell’archivio in byte. minimo: 1 massimo: 104857600 |
| expanded_bytes (obbligatorio, intero) | minimo: 1 massimo: 262144000 |
| file_count (obbligatorio, intero) | minimo: 1 massimo: 5000 |
| sdk_version (opzionale, stringa) | maxLength: 64 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications/uploads'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Autorizzazione firmata per esattamente un PUT di oggetto dell’archivio. Invia il metodo restituito e ogni intestazione restituita testualmente; il PUT deve iniziare prima di expires_at, due ore dopo la dichiarazione. | ApplicationUploadSession (application/json); intestazioni: Cache-Control, 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) |
Elenca le playlist V2 nel progetto
Lista playlist versionata che può esporre pagine adslot. La lista v1 rifiuta una pagina che contiene un documento con pubblicità con version_required invece di filtrarla.
Pagine come listPlaylists, le più recenti per prime, massimo 200 per pagina e meno una volta che una pagina contiene 8 MiB di playlist memorizzate. next_cursor è la posizione dell’ultima riga restituita mentre ci sono altre righe; passalo come after, con gli stessi filtri, per la pagina successiva. next_cursor è null nell’ultima pagina. library=true elenca invece le playlist della Libreria dell’organizzazione (sola lettura; programmale oppure creane dai loro modelli).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| library | query | opzionale | true elenca il progetto Libreria dell’organizzazione invece di questo progetto: i suoi elementi qui sono in sola lettura e riportano library true. Un’organizzazione senza Libreria, o il progetto Libreria stesso, con true non elenca nulla. |
| dopo | query | opzionale | next_cursor della pagina precedente della stessa lista, con gli stessi filtri. Omettere inizia dalla riga più recente. Un valore che non è tale cursore è invalid_request. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playlists'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Playlist con l’unione della pagina adslot. | PlaylistV2List (application/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) |
Crea playlist V2 nel progetto
Voce di creazione per l’unione delle pagine adslot. Al massimo 16 pagine adslot, almeno una pagina ordinaria senza visibilità, e il riutilizzo di una definizione slot su pagine diverse restano controlli server. La risoluzione dei riferimenti e il DNS restano controlli server.
Una scrittura che contiene una pagina iframe non inquadrabile dal Player web viene comunque salvata; la risposta contiene avvisi (PlaylistWarning) e il registro del progetto riceve un evento playlist.iframe_framing_refused per ogni pagina.
Una scrittura il cui src iframe, fallback_src o parametri dell'applicazione leggono un token dello schermo ({screen.field.NAME} e gli altri degli schemi delle primitive) che manca a uno schermo che mostra la playlist risponde anche con un'avvertenza screen_fact_missing che nomina i primi 20 di tali schermi; i manifest di quegli schermi omettono quella primitiva.
Un src o fallback_src di iframe che è un link di Google Presentazioni, Documenti o Fogli (condivisione, pubblicazione sul web o incorporamento) o un link di incorporamento di Microsoft 365 OneDrive o SharePoint viene memorizzato ricostruito per lo schermo, dove le presentazioni vanno in ciclo e avanzano con il delayms del link limitato alla durata della pagina, mentre Documenti, Fogli, Word ed Excel si ricaricano ogni 5 minuti.
Un codice di incorporamento <iframe> incollato in src o fallback_src viene letto per il suo src. Un file che chiede agli spettatori di accedere viene rifiutato con document_not_shared (400), il cui errors[0].field è quel src o fallback_src e il cui dettaglio indica l’impostazione di condivisione da cambiare.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Screenrig-Review-Note | intestazione | opzionale | Nota opzionale del proponente su scrittura di classe review, inviata come UTF-8 percent-encoded (come scrive encodeURIComponent di JavaScript). Il server la percent-decodifica (un escape non valido è 400 invalid_request); la nota decodificata è testo semplice, massimo 280 caratteri dopo il trim, senza caratteri di controllo (altrimenti 400 invalid_request). Archiviato alla revisione quando la scrittura diventa una; ignorato se applicato in tempo reale. |
| 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]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playlists'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 202 | La scrittura è diventata una revisione e attende l’approvazione di una persona (docs/reviews.md), con accesso Proponi, oppure a qualsiasi livello di accesso quando raggiunge uno schermo in una cartella di schermi protetta, dove la decide un secondo approvatore (docs/screen-scope.md). Una persona approva, rifiuta o richiede modifiche nel dashboard a review.url. Una ripetizione con Idempotency-Key risponde con lo stesso corpo. | ReviewPending (application/json) |
| 201 | Playlist con le sue pagine adslot. | PlaylistV2 (application/json) |
| 402 | feature_not_in_plan — Dichiarare campi, bloccare un primitivo o modificare una playlist che dichiara campi rientra nei modelli di playlist, e il piano del progetto non li include; required_plan indica il piano che li include. Creare una playlist da un modello è sempre consentito. Un formato di 2 o più display (un video wall) fa parte di Plus; un formato di regione e una playlist senza formato sono in ogni piano. Il problema indica la funzione, il piano del progetto e required_plan. | 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 gli schermi nel progetto
La lista predefinita restituisce schermi pairing_pending e attivi. Passare state=archived per elencare solo gli schermi archiviati. Passare tag per elencare solo gli schermi i cui tag contengono esattamente quel tag; gli schermi senza tag sono omessi quando il filtro è presente.
Passa field, una volta per campo, come NAME:VALUE per elencare solo gli schermi i cui campi contengono ogni valore, e near come LAT,LON,KM per elencare solo gli schermi situati entro KM chilometri dal punto; gli schermi senza posizione vengono omessi e ogni filtro si combina con state e tag.
Passa folder come ID di una cartella schermi per elencare solo gli schermi direttamente dentro di essa (non quelli delle sue sottocartelle), oppure root per gli schermi fuori da ogni cartella.
Gli schermi sono dal più recente, al massimo 500 per pagina. next_cursor è la posizione dell’ultima riga restituita finché restano altre righe; passalo di nuovo come after, con gli stessi filtri, per la pagina successiva. next_cursor è null nell’ultima pagina. Un chiamante limitato agli schermi (docs/screen-scope.md) elenca solo gli schermi nel suo ambito.
Una richiesta che non nomina alcun progetto esclude ogni progetto in cui il chiamante è limitato agli schermi; nomina il progetto per elencarlo.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| stato | query | opzionale | Ometti per pairing_pending e active. Passa archived per elencare solo gli schermi archiviati. |
| tag | query | opzionale | Tag schermo esatto. Gli schermi senza tag sono esclusi quando questo filtro è presente. |
| field | query | opzionale | NAME:VALUE, diviso al primo segno di due punti: solo gli schermi il cui campo NAME contiene esattamente VALUE. Ripeti il parametro per più campi; ognuno deve corrispondere e un nome può essere indicato una sola volta. Un valore malformato o un nome ripetuto restituisce invalid_request indicando field. |
| near | query | opzionale | LAT,LON,KM in gradi decimali e chilometri, ad esempio 47.6062,-122.3321,25: solo gli schermi la cui posizione si trova entro KM chilometri dal punto. La latitudine va da -90 a 90, la longitudine da -180 a 180 e KM è maggiore di 0 e al massimo 20038. Gli schermi senza posizione vengono omessi. Un valore malformato restituisce invalid_request indicando near. |
| cartella | query | opzionale | Un ID cartella schermi conserva solo gli schermi direttamente dentro quella cartella, non quelli delle sue sottocartelle; root conserva solo gli schermi fuori da ogni cartella. Omettere elenca ogni schermo. |
| dopo | query | opzionale | next_cursor della pagina precedente della stessa lista, con gli stessi filtri. Omettere inizia dalla riga più recente. Un valore che non è tale cursore è invalid_request. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Schermi | ScreenList (application/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 cartelle schermi nel progetto
Elenca tutte le cartelle schermi nel progetto, massimo 1000, ordinate per nome.
Le cartelle organizzano gli schermi e permettono di sceglierli come destinazione: una foglia di audience di campagna {"folder": ID} corrisponde agli schermi in quella cartella e in ogni cartella al suo interno, un selettore di azione di flotta by:folder agisce sugli stessi schermi, e il default_playlist_id di una cartella è ciò che mostrano i suoi schermi senza una playlist propria. parent_id è null nella radice del progetto; costruisci l’albero da parent_id. screens conta gli schermi attivi direttamente dentro ogni cartella.
La cartella di uno schermo è Screen.folder_id. Un chiamante limitato agli schermi (docs/screen-scope.md) elenca le cartelle dentro il suo ambito e quelle sopra di esse, che sono di sola lettura così il suo albero ha una radice; le cartelle sopra non riportano il numero di schermi e le cartelle sorelle sono nascoste. Una richiesta che non nomina alcun progetto esclude ogni progetto in cui il chiamante è limitato agli schermi.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screen-folders'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Cartelle schermi | ScreenFolderList (application/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) |
Crea cartella schermi nel progetto
Crea una cartella schermi nella radice del progetto (parent_id nullo o assente) o dentro parent_id. I nomi sono privati di spazi, contengono da 1 a 100 caratteri Unicode senza controlli, non sono "." o ".." e sono univoci tra le cartelle dello stesso livello (resource_conflict).
Un’organizzazione contiene al massimo 1000 cartelle in tutti i suoi progetti (quota_exceeded) annidate al massimo 10 livelli (invalid_request). default_playlist_id, se impostato, deve indicare una playlist approvata (playlist_not_approved). Emette screen.folder_created.
Un chiamante limitato agli schermi (docs/screen-scope.md) crea una cartella solo dentro una cartella del suo ambito; la radice del progetto o qualsiasi altro genitore è outside_screen_scope. Creare una cartella dentro una cartella protetta è una revisione protected_change (202 pending_review) decisa da un secondo approvatore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | Senza spazi iniziali e finali; da 1 a 100 caratteri Unicode, senza controlli, non . o .., univoco tra le cartelle dello stesso livello. minLength: 1 maxLength: 100 |
| parent_id (opzionale, inline) | La cartella in cui crearla; null o assente per la radice del progetto. |
| default_playlist_id (opzionale, stringa) | Una playlist approvata per gli schermi della cartella che non ne hanno una propria. minLength: 1 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screen-folders'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Cartella creata. | ScreenFolder (application/json); intestazioni: ETag |
| 202 | La scrittura è diventata una revisione e attende l’approvazione di una persona (docs/reviews.md), con accesso Proponi, oppure a qualsiasi livello di accesso quando raggiunge uno schermo in una cartella di schermi protetta, dove la decide un secondo approvatore (docs/screen-scope.md). Una persona approva, rifiuta o richiede modifiche nel dashboard a review.url. Una ripetizione con Idempotency-Key risponde con lo stesso corpo. | ReviewPending (application/json) |
| 403 | outside_screen_scope come su OutsideScreenScope, oppure approver_required - un membro limitato agli schermi che non può approvare le revisioni non cambia ciò che uno schermo riproduce né quando (docs/screen-scope.md). | 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) |
Sposta schermi nel progetto
Sposta schermi (screen_ids) e cartelle (folder_ids) in una cartella (folder_id), o nella radice del progetto se folder_id è null, in una singola richiesta tutto o niente di massimo 1000 ID. Ogni ID deve esistere (not_found). Una cartella non può spostarsi in se stessa o in una cartella al suo interno, e lo spostamento deve mantenere ogni cartella entro 10 livelli (invalid_request).
Gli elementi già nella destinazione restano come sono; ogni schermo e ogni cartella spostati aggiornano la propria revisione. Gli schermi spostati risolvono di nuovo la loro playlist entro circa 15 secondi: levels nomina le campagne nella cui audience di cartella gli schermi entrano o dalla quale escono, e le playlist predefinite di cartella che acquisiscono o perdono. Emette screen.moved.
Un chiamante limitato agli schermi (docs/screen-scope.md) sposta schermi e cartelle dentro il suo ambito in una cartella del suo ambito; qualsiasi id o destinazione fuori dall’ambito, e la radice del progetto, fanno rifiutare l’intero spostamento (outside_screen_scope), anche quando uno schermo esce dall’ambito tra il controllo e la scrittura.
Uno spostamento dentro o fuori da una cartella protetta è una revisione protected_change (202 pending_review) decisa da un secondo approvatore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| folder_id (obbligatorio, inline) | Cartella di destinazione; null per la radice del progetto. |
| screen_ids (opzionale, array) | |
| folder_ids (opzionale, array) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/move'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Quanti schermi e cartelle sono stati spostati, e i levels che gli schermi spostati acquisiscono o perdono. | ScreenMoveResult (application/json) |
| 202 | La scrittura è diventata una revisione e attende l’approvazione di una persona (docs/reviews.md), con accesso Proponi, oppure a qualsiasi livello di accesso quando raggiunge uno schermo in una cartella di schermi protetta, dove la decide un secondo approvatore (docs/screen-scope.md). Una persona approva, rifiuta o richiede modifiche nel dashboard a review.url. Una ripetizione con Idempotency-Key risponde con lo stesso corpo. | ReviewPending (application/json) |
| 403 | outside_screen_scope come su OutsideScreenScope, oppure approver_required - un membro limitato agli schermi che non può approvare le revisioni non cambia ciò che uno schermo riproduce né quando (docs/screen-scope.md). | 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 calendario programmazione nel progetto
Risponde a cosa riproducono gli schermi di un soggetto in [from, to) e perché, per il calendario della Programmazione del dashboard: esattamente uno tra screen_id, folder_id (gli schermi nella cartella e in ogni cartella al suo interno), tag o campaign_id (gli schermi del suo pubblico).
Gli schermi i cui stack hanno input identici (stessi livelli, predefinito, fuso orario e numero di display) condividono un unico gruppo con un’unica timeline, quindi un soggetto grande costa decine di timeline; un gruppo elenca fino a 500 dei suoi schermi e una risposta al massimo 200 gruppi (truncated).
Ogni gruppo riporta il proprio stack, dal più alto (takeover, campagne che raggiungono gli schermi, le voci di programmazione proprie, poi la playlist predefinita o quella della cartella più vicina), gli spans di ogni livello (riproduce su ogni display di destinazione, parziale con i display su cui riproduce, superato, oppure condizionale finché attende un’interazione o una condizione sui dati che solo un Player osserva), ciò che ogni display mostra (on_screen; la regione principale di una pagina intera) e i conflitti (due campagne con la stessa priorità in vigore insieme; un livello che è in vigore ma non riproduce mai). from e to sono istanti RFC 3339, to successivo a from, distanti al massimo 93 giorni; vengono troncati al minuto.
Le regole vengono lette nel fuso orario di ciascun gruppo come le leggono la sweep e ogni Player; ogni livello è considerato riproducibile. Un chiamante limitato agli schermi (docs/screen-scope.md) deve inviare uno screen_id o un folder_id dentro il suo ambito; un tag, un campaign_id o nessun soggetto è outside_screen_scope.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| da | query | obbligatorio | |
| a | query | obbligatorio | |
| screen_id | query | opzionale | |
| folder_id | query | opzionale | |
| tag | query | opzionale | |
| campaign_id | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/calendar?from=FROM&to=TO'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Il calendario del soggetto. | ScheduleCalendar (application/json) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 modello importazione programmazione nel progetto
Risponde con un foglio con le colonne lette da un’importazione di programmazione e tre righe di esempio (un codice schermo, una cartella di schermi e un tag), come CSV oppure, con format=xlsx, come cartella di lavoro XLSX.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports/template'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Il foglio del modello. | string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) |
| 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) |
Anteprima importazione programmazione nel progetto
Legge un foglio di righe di programmazione rispetto al progetto e risponde con ciò che farebbe il commit, senza scrivere nulla.
Ogni riga indica una destinazione (uno schermo per id, per valore di un campo dello schermo come un codice stanza, o per nome; folder:NAME; tag:NAME; più destinazioni separate da ; o |), un contenuto (il nome di un file multimediale, oppure playlist:NAME o un id di playlist), un inizio e una fine (una sola data come fine chiude quel giorno) e, facoltativamente, timezone, days (Mon-Fri), una finestra giornaliera (daily_start, daily_end), priority da 0 a 100, un nome e i numeri dei display.
Gli orari sono letti sull’orologio di ciascuno schermo; una colonna timezone li converte da un altro fuso.
Ogni riga viene controllata e segnala i suoi errori per colonna: schermo, cartella o tag sconosciuto o ambiguo, file mancante o ambiguo, un file che non può riempire uno schermo, orari non validi o invertiti, una fine nel passato, nessuna indicazione di tempo, uno schermo senza fuso orario o playlist predefinita, due righe valide insieme su uno schermo con la stessa priorità, e più livelli di quelli che uno schermo può contenere (32), o più campagne di quelle che la sua organizzazione può avere in tutti i suoi progetti (100; ogni livello condiviso ne è una).
Le righe che coincidono per contenuto, orari, priorità e nome diventano un solo livello: uno schermo è una voce della sua programmazione propria; più schermi, una cartella o un tag sono un unico livello condiviso (una campagna), che prevale sui livelli propri di uno schermo.
La risposta elenca i livelli con ciò che un commit fa a ciascuno (create, update, unchanged), i livelli creati da un’esecuzione precedente della stessa importazione che il foglio non ha più (removals), gli stack degli schermi come sarebbero (calendar) e un fingerprint da inviare al commit. Il foglio è composto da righe JSON, CSV o XLSX, al massimo 5.000 righe.
Non disponibile per un chiamante limitato agli schermi (outside_screen_scope). L’importazione programmazione fa parte del piano Enterprise; un progetto il cui piano ne è privo viene rifiutato con feature_not_in_plan (402). Il modello è disponibile in ogni piano.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| name | query | opzionale | Il nome dell’importazione; importare di nuovo con lo stesso nome aggiorna i livelli che ha creato (default import). Inviato con un corpo file. |
| fuso orario | query | opzionale | Il fuso IANA in cui sono scritti gli orari quando una riga non ha timezone. Senza di esso, gli orari sono letti sull’orologio di ciascuno schermo. |
| origine | query | opzionale | Il nome del file, registrato con l’importazione. |
| code_field | query | opzionale | Leggi un codice schermo solo da questo campo dello schermo (per esempio code o room_id); altrimenti un codice corrisponde a qualsiasi campo. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (opzionale, stringa) | Identifica l’importazione; lo stesso nome aggiorna i livelli che ha creato (default import). minLength: 1 maxLength: 80 |
| source (facoltativo, string) | Il file da cui provengono le righe. maxLength: 200 |
| fuso orario (opzionale, stringa) | Il fuso IANA in cui sono scritti gli orari quando una riga non ha timezone. |
| code_field (facoltativo, string) | Leggi un codice schermo solo da questo campo dello schermo. |
| fingerprint (facoltativo, string) | Il fingerprint dell’anteprima; obbligatorio per il commit. |
| rows (obbligatorio, array) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports/preview'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | L’anteprima. valid è false finché una riga ha un errore. | ScheduleImportPreview (application/json) |
| 402 | feature_not_in_plan — L’importazione programmazione fa parte del piano Enterprise; il problema indica la funzione, il piano dell’account e required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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) |
Commit importazione programmazione nel progetto
Esegue il commit di un’importazione in anteprima: lo stesso foglio e il fingerprint restituito dalla sua anteprima. Ogni livello viene creato, aggiornato o rimosso, le programmazioni degli schermi e i livelli condivisi vengono scritti in un’unica transazione e l’evento di importazione schedule.imported viene aggiunto: tutte le righe vengono applicate, oppure nessuna.
Le playlist di un solo file necessarie ai file del foglio vengono create per prime (non cambiano nulla su alcuno schermo). Un foglio con righe con errori viene rifiutato (schedule_import_invalid); un progetto cambiato dopo l’anteprima, o righe lette in modo diverso, viene rifiutato (schedule_import_stale) e il client visualizza di nuovo l’anteprima.
Importare di nuovo lo stesso foglio con lo stesso nome non cambia nulla; una riga modificata aggiorna il suo livello e una riga rimossa rimuove il suo livello. Serve una persona che possa approvare nella dashboard e, per un agente, una credenziale con accesso in scrittura.
Un commit che aggiornerebbe o eliminerebbe una campagna riservata risponde con reserved_item (403) e non scrive nulla, a meno che non lo esegua una persona che può approvare.
Un commit che raggiunge uno schermo protetto viene rifiutato per intero con protected_target, anche quando l’importazione non ha livelli ma rimuove voci importate di uno schermo protetto o elimina una campagna importata il cui pubblico ne raggiunge uno.
In un progetto con cartelle di schermi protette un commit la cui anteprima fallisce a causa di un servizio, non del foglio, risponde con dependency_unavailable e non scrive nulla: invia di nuovo la stessa richiesta dopo una breve attesa. Un errore di convalida del foglio, della campagna o dello schermo risponde come risponderebbe il commit (invalid_request e gli altri problemi sopra).
Non disponibile per un chiamante limitato agli schermi. L’importazione programmazione fa parte del piano Enterprise; un progetto il cui piano ne è privo viene rifiutato con feature_not_in_plan (402). Il modello è disponibile in ogni piano.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
| fingerprint | query | opzionale | Il fingerprint dell’anteprima, per un corpo CSV o XLSX; un corpo JSON lo porta come membro. |
| name | query | opzionale | Il nome dell’importazione; importare di nuovo con lo stesso nome aggiorna i livelli che ha creato (default import). Inviato con un corpo file. |
| fuso orario | query | opzionale | Il fuso IANA in cui sono scritti gli orari quando una riga non ha timezone. Senza di esso, gli orari sono letti sull’orologio di ciascuno schermo. |
| origine | query | opzionale | Il nome del file, registrato con l’importazione. |
| code_field | query | opzionale | Leggi un codice schermo solo da questo campo dello schermo (per esempio code o room_id); altrimenti un codice corrisponde a qualsiasi campo. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (opzionale, stringa) | Identifica l’importazione; lo stesso nome aggiorna i livelli che ha creato (default import). minLength: 1 maxLength: 80 |
| source (facoltativo, string) | Il file da cui provengono le righe. maxLength: 200 |
| fuso orario (opzionale, stringa) | Il fuso IANA in cui sono scritti gli orari quando una riga non ha timezone. |
| code_field (facoltativo, string) | Leggi un codice schermo solo da questo campo dello schermo. |
| fingerprint (facoltativo, string) | Il fingerprint dell’anteprima; obbligatorio per il commit. |
| rows (obbligatorio, array) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Cosa ha applicato il commit. | ScheduleImportCommitted (application/json) |
| 402 | feature_not_in_plan — L’importazione programmazione fa parte del piano Enterprise; il problema indica la funzione, il piano dell’account e required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | Problema (application/problem+json) |
| 409 | protected_target - la modifica raggiunge uno schermo in una cartella di schermi protetta e non ha una forma di revisione (docs/screen-scope.md). Rimuovi la protezione della cartella tramite una revisione, fai la modifica e proteggi di nuovo la cartella. | 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) |
Richiedi link browser nel progetto
Richiede un codice link browser per il progetto autenticato e crea atomica esattamente uno schermo pairing_pending iniziale più la sua concessione di provisioning browser esistente. L’iscrizione resta solo progetto. La risposta è solo metadati sicuri e non contiene mai token di provisioning, URL frammento, cookie o prova.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| codice (obbligatorio, stringa) | pattern: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}-?[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}$" |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/browser-links/claim'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Dichiarazione di collegamento browser senza frammenti e sicura per la riproduzione esatta. | BrowserLinkClaim (application/json); intestazioni: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | 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) |
| 403 | 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) |
| 404 | 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) |
| 409 | 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) |
| 410 | 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) |
| 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 |
| 500 | 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) |
| 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) |
Associa schermo al progetto
Richiede una sessione di associazione Player globale a flotta di sei caratteri. I retry con Idempotency-Key esatti restituiscono il risultato originale duraturo senza consumare nuovamente la quota.
La sessione dashboard esegue il claim nel suo progetto corrente con lo stesso corpo, la stessa Idempotency-Key, gli stessi budget e gli stessi problemi, tranne che il suo not_found per un codice sconosciuto o già riscattato non nomina alcun comando CLI; è un cambio di stato, quindi segue le regole di mutazione del dashboard, una sessione shadow senza modalità di scrittura dello staff viene rifiutata, e gli eventi che il claim aggiunge nominano l’utente del dashboard. folder_id indica la cartella in cui finisce lo schermo.
Un chiamante limitato agli schermi (docs/screen-scope.md) deve inviare una cartella dentro il suo ambito e associa solo come persona che può approvare (outside_screen_scope, approver_required).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| codice (obbligatorio, stringa) | pattern: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{6}$" |
| label (opzionale, stringa) | minLength: 1 maxLength: 120 |
| folder_id (opzionale, stringa) | La cartella di schermi in cui finisce lo schermo; se omessa, lo schermo finisce nella radice del progetto. Un chiamante limitato agli schermi deve inviare una cartella dentro il suo ambito (altrimenti outside_screen_scope). Una cartella che il progetto non contiene è invalid_request per un chiamante dell’intero progetto. Parte della richiesta idempotente: un altro folder_id con la stessa Idempotency-Key è idempotency_mismatch. minLength: 1 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/pair'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Richiesta durevole pairing_pending dello schermo. | PairingClaim (application/json); intestazioni: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | 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) |
| 401 | 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) |
| 404 | 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) |
| 409 | 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) |
| 413 | 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) |
| 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 |
| 500 | 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) |
| 403 | outside_screen_scope come su OutsideScreenScope, oppure approver_required - un membro limitato agli schermi che non può approvare le revisioni non cambia ciò che uno schermo riproduce né quando (docs/screen-scope.md). | 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) |
Provisiona schermo nel progetto
Provisioning facoltativo di un nuovo schermo, solo da browser. Crea sempre un nuovo schermo pairing_pending; al massimo cinque attendono l’associazione contemporaneamente (quota_exceeded). I nuovi tentativi esatti ricevono di nuovo lo stesso token di frammento per dieci minuti. L’associazione a sei caratteri resta il flusso predefinito e l’unico flusso di recupero. folder_id indica la cartella in cui finisce lo schermo.
Un chiamante limitato agli schermi (docs/screen-scope.md) deve inviare una cartella dentro il suo ambito (altrimenti outside_screen_scope).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| label (opzionale, stringa) | minLength: 1 maxLength: 120 |
| folder_id (opzionale, stringa) | La cartella di schermi in cui finisce lo schermo, come su PairScreen. minLength: 1 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/provision'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Nuovo link provisioning browser. | ScreenProvisioning (application/json); intestazioni: Cache-Control, RateLimit-Policy, RateLimit |
| 400 | 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) |
| 401 | 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) |
| 409 | 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) |
| 410 | 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) |
| 413 | 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) |
| 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 |
| 500 | 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) |
| 403 | outside_screen_scope come su OutsideScreenScope, oppure approver_required - un membro limitato agli schermi che non può approvare le revisioni non cambia ciò che uno schermo riproduce né quando (docs/screen-scope.md). | 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) |
Applica azioni schermo nel progetto
Applica un’azione a una flotta selezionata senza limite di schermi. Seleziona un screen_ids unico o un tag corrispondente agli schermi attivi in ordine di creazione. La selezione risolta è fissata prima di qualsiasi mutazione, archiviata in blocchi limitati e conservata per ventiquattro ore sotto Idempotency-Key.
Ogni passaggio usa il proprio percorso di modifica a schermo singolo, mantenendo revisioni, eventi, segnali runtime e limiti per schermo. Una risposta contiene una pagina limitata di risultati; matched, succeeded e failed descrivono quella pagina. HTTP 202 include total, offset e next_cursor. Continua con lo stesso selettore, azione e Idempotency-Key, passando next_cursor come after.
Rispetta Retry-After se presente, inclusa una pagina con zero risultati. La risposta ripete Idempotency-Key, inclusa una chiave generata se il chiamante l’ha omessa; conserva questa chiave per le continuazioni. HTTP 200 termina la selezione. Le pagine risposte si riproducono esattamente, inclusi i fallimenti per schermo; i passaggi interrotti si riproducono senza ripetere i loro effetti.
Le azioni grandi sono limitate dai budget organizzazione esistenti di 600 al minuto per ricarica, toast, takeover, programmazioni playlist, riavvio, monitor e programmazioni monitor; l’esaurimento del budget dell’organizzazione mette in pausa l’azione invece di rifiutare la flotta. L’esaurimento per schermo fallisce solo quello schermo.
Un passo assign, takeover o set_playlist_schedule che associa una playlist con un formato a uno schermo il cui muro ha un'altra forma fa fallire solo quello schermo con 409 playlist_format_mismatch. Le modifiche di assegnazione e tag non hanno budget di messaggi.
Un'assegnazione la cui playlist ha un src iframe o parametri dell'applicazione che leggono un token dello schermo che manca a qualche schermo della pagina aggiunge un'avvertenza screen_fact_missing a quella pagina (warnings, PlaylistWarning). Il fallimento parziale è un risultato normale. Tutte le pagine e i tentativi con una stessa chiave sono un'unica azione conteggiata.
Le richieste usano un payload di byte limitato; usa un tag per una selezione più grande del payload di trasporto. Un selettore o un’azione malformati vengono rifiutati prima che venga toccato qualsiasi schermo. selector o action viene rifiutato prima che venga toccato qualsiasi schermo.
Un chiamante limitato agli schermi (docs/screen-scope.md) seleziona per screen_ids o per cartella, ogni schermo dentro il suo ambito; un selettore tag, uno schermo fuori dall’ambito o uno sconosciuto fa rifiutare l’intera azione (outside_screen_scope) prima che qualcosa venga fissato o proposto.
Assign, takeover, takeover_clear, set_playlist_schedule e clear_playlist_schedule che raggiungono uno schermo protetto diventano una revisione decisa da un secondo approvatore (202 pending_review) a ogni livello di accesso; set_tags, add_tags e remove_tags su uno schermo protetto sono protected_target (409).
Un’azione set_playlist_schedule con una voce in pausa (una bozza) rientra nel controllo delle modifiche alla programmazione, che il piano Enterprise include; un progetto il cui piano ne è privo viene rifiutato con feature_not_in_plan (402).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Screenrig-Review-Note | intestazione | opzionale | Nota opzionale del proponente su scrittura di classe review, inviata come UTF-8 percent-encoded (come scrive encodeURIComponent di JavaScript). Il server la percent-decodifica (un escape non valido è 400 invalid_request); la nota decodificata è testo semplice, massimo 280 caratteri dopo il trim, senza caratteri di controllo (altrimenti 400 invalid_request). Archiviato alla revisione quando la scrittura diventa una; ignorato se applicato in tempo reale. |
| Idempotency-Key | intestazione | opzionale | Ometti per un’operazione fresca. Fornisci e riutilizza una chiave per deduplicare i retry; la CLI gestisce automaticamente le chiavi. |
| dopo | query | opzionale | next_cursor dalla pagina di risultati precedente. Riutilizza l’Idempotency-Key originale e il corpo della richiesta. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| selettore (obbligatorio, ScreenActionSelector) | |
| azione (obbligatoria, ScreenAction) | Una azione di flotta, discriminata per tipo. Ogni membro porta solo i propri parametri; un membro di altro tipo è un campo sconosciuto e invalid_request. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/actions'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultati per schermo. Il successo parziale è una risposta normale. | ScreenActionResult (application/json); intestazioni: Idempotency-Key, Cache-Control, RateLimit-Policy, RateLimit |
| 202 | Restano altri schermi (continua con next_cursor e la stessa Idempotency-Key e lo stesso corpo, rispettando Retry-After), oppure, con stato pending_review, l’azione è diventata una revisione con accesso Proponi (docs/reviews.md), o a qualsiasi livello di accesso perché raggiunge uno schermo in una cartella di schermi protetta (docs/screen-scope.md). Solo assign, takeover, takeover_clear, set_playlist_schedule e clear_playlist_schedule diventano revisioni; ogni altra azione è insufficient_access per Propose. | inline (application/json); intestazioni: Idempotency-Key, Retry-After, Cache-Control, RateLimit-Policy, RateLimit |
| 400 | 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) |
| 401 | 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) |
| 402 | feature_not_in_plan — set_reboot_schedule con enabled true (riavvii programmati) e set_playlist_schedule con un blocco displays (video wall) fanno parte di Plus; le azioni di cancellazione e i comandi una tantum sono disponibili. payment_required — il progetto non ha più credito. Il problema indica la funzione, il piano del progetto e required_plan. | Problema (application/problem+json) |
| 403 | insufficient_access, outside_screen_scope quando un chiamante limitato agli schermi seleziona fuori dal suo ambito, oppure approver_required per un membro limitato agli schermi che non può approvare. | Problema (application/problem+json) |
| 409 | playlist_format_mismatch e gli altri conflitti dell’azione, oppure protected_target quando set_tags, add_tags, remove_tags, toast, display, display_clear, set_display_schedule o clear_display_schedule raggiunge uno schermo in una cartella di schermi protetta. | 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) |
Avvia condivisione schede nel progetto
Mostra schede del browser sugli schermi del progetto indicato; richiesta, risposta, accesso e limiti sono quelli di POST /api/tab-shares.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| screen_ids (opzionale, array) | Schermi per id. I duplicati vengono unificati. |
| folder_ids (opzionale, array) | Cartelle di schermi; ognuna include tutte le sottocartelle. |
| tags (opzionale, array) | Uno schermo con almeno uno dei tag. |
| tabs (obbligatorio, array) | |
| cookies (opzionale, array) | Cookie del mittente per le pagine, al massimo 64 KiB codificati. Segreti; vedi POST /api/tab-shares. |
| reload_s (opzionale, integer) | 0 (mai, il valore predefinito) oppure da 60 a 86400: frequenza di ricaricamento dell’iframe di ogni pagina. |
| until (opzionale, string) | Strettamente nel futuro e al massimo tra 24 ore; 24 ore da ora se omesso. Termine del controllo di ogni destinazione e scadenza della playlist temporanea. format: "date-time" |
| qr (opzionale, boolean) | Con true ogni pagina mostra un codice QR del suo indirizzo in basso a destra. Valore predefinito false. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/tab-shares'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | La condivisione. Almeno uno schermo è stato preso in controllo. | TabShare (application/json); intestazioni: RateLimit-Policy, RateLimit |
| 400 | 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) |
| 401 | 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) |
| 404 | 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) |
| 409 | 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) |
| 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 |
| 403 | outside_screen_scope come su OutsideScreenScope, oppure approver_required - un membro limitato agli schermi che non può approvare le revisioni non cambia ciò che uno schermo riproduce né quando (docs/screen-scope.md). | 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 campagne nel progetto
Elenca le campagne del progetto in ordine di precedenza (al massimo 100), l’ordine in cui la risoluzione le legge. reserved è presente su ogni campagna.
Un chiamante limitato agli schermi (docs/screen-scope.md) vede ogni campagna, con editable true solo quando l’intero pubblico è dentro il suo ambito (una foglia tag e la regola radice per ogni schermo non lo sono mai; una regola all richiede un figlio contenuto, una regola any ogni figlio) e il chiamante può cambiare ciò che viene riprodotto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/campaigns'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Le campagne del progetto. | CampaignList (application/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) |
Crea campagna nel progetto
createCampaign per il progetto indicato nel percorso. reserved true riserva la campagna, e solo una persona che può approvare lo imposta (reserved_item per un agente, un client di servizio o chiunque altro), aggiungendo campaign.reserved_changed.
Un chiamante limitato agli schermi (docs/screen-scope.md) crea una campagna solo per un pubblico dentro il suo ambito (foglie folder e screen_id; nessun tag, nessuna regola per ogni schermo), altrimenti outside_screen_scope, e solo come persona che può approvare (approver_required).
Una campagna il cui pubblico raggiunge uno schermo protetto è una revisione protected_change decisa da un secondo approvatore (202 pending_review) a ogni livello di accesso. reserved true rientra nelle cartelle protette e paused true su una nuova campagna (una bozza) nel controllo delle modifiche alla programmazione, entrambi parte del piano Enterprise; un progetto il cui piano ne è privo viene rifiutato con feature_not_in_plan (402).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 120 |
| playlist_id (obbligatorio, stringa) | minLength: 1 |
| audience (obbligatorio, CampaignAudience) | Quali schermi una campagna prende di mira: esattamente uno tra all (ogni regola corrisponde), any (almeno una corrisponde), tag (lo schermo ha il tag), screen_id (quello schermo) o folder (gli schermi in quella cartella schermi e in ogni cartella al suo interno, GET /api/screen-folders; la cartella deve esistere). Le regole si annidano al massimo su 3 livelli e un’audience ha al massimo 500 regole. {"all": []} è ogni schermo del progetto; altrove all e any elencano almeno una regola. |
| from (opzionale, string) | pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T([01][0-9]|2[0-3]):[0-5][0-9]$" |
| until (opzionale, string) | Successivo a from. pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T([01][0-9]|2[0-3]):[0-5][0-9]$" |
| windows (opzionale, array) | |
| monthly (opzionale, array) | |
| dates (opzionale, array) | |
| except (opzionale, array) | Date civili, memorizzate in ordine crescente e una sola volta ciascuna. Un’eccezione rimuove ogni occorrenza che inizia nella sua data, code notturne incluse; cade tra from e until. |
| data (opzionale, PageDataCondition) | Un predicato card-data, valutato prima del tempo civile. Dati mancanti o scaduti non corrispondono mai. La pagina rispetta anche i suoi normali limiti temporali. Richiede la capacità host page.conditions; host più vecchi ricevono la pagina disabilitata. |
| interaction (opzionale, LevelInteraction) | Il livello è in vigore mentre qualcuno sta usando lo schermo: da un tocco, un clic o un tasto fino a quando trascorrono idle_s secondi senza input. Uso tipico: una pagina interattiva sopra un ciclo di attrazione. idle_s viene memorizzato e restituito (60 se omesso). |
| covers (opzionale, stringa) | Dove viene riprodotto il livello: la pagina intera (predefinito, memorizzato come assente) o main, la pagina stessa, per una playlist ordinaria; header, footer o side, una fascia disegnata sopra la pagina, solo per una playlist di regione di quella regione (PlaylistRegionFormat). Una playlist di regione viene rifiutata con full o main, e una fascia richiede una playlist di regione disposta su un display di destinazione. Consentiti: "full", "main", "header", "footer", "side" |
| displays (opzionale, array) | Le uscite di un video wall su cui viene riprodotto; se assente, viene riprodotto su ogni uscita. |
| start (opzionale, stringa) | on_time cambia al limite, interrompendo l’elemento corrente; next_item (predefinito, memorizzato come assente) attende che termini. Consentiti: "next_item", "on_time" |
| priority (opzionale, integer) | predefinito: 0 minimo: 0 massimo: 100 |
| paused (opzionale, boolean) | predefinito: false |
| reserved (opzionale, booleano) | Solo una persona che può approvare riserva una campagna (altrimenti reserved_item). predefinito: false |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/campaigns'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato. | Campaign (application/json); intestazioni: ETag |
| 202 | La scrittura è diventata una revisione e attende l’approvazione di una persona (docs/reviews.md), con accesso Proponi, oppure a qualsiasi livello di accesso quando raggiunge uno schermo in una cartella di schermi protetta, dove la decide un secondo approvatore (docs/screen-scope.md). Una persona approva, rifiuta o richiede modifiche nel dashboard a review.url. Una ripetizione con Idempotency-Key risponde con lo stesso corpo. | ReviewPending (application/json) |
| 402 | feature_not_in_plan — Le cartelle protette e il controllo delle modifiche alla programmazione fanno parte del piano Enterprise; il problema indica la funzione, il piano dell’account e required_plan. Una campagna che blocca una playlist sul display 2 o oltre di un video wall (displays) fa parte di Plus. Il problema indica la funzione, il piano del progetto e required_plan. | Problema (application/problem+json) |
| 403 | outside_screen_scope o approver_required come su ScreenScopePlays, oppure reserved_item - una campagna riservata viene modificata, messa in pausa, eliminata o resa non riservata solo da una persona che può approvare le revisioni, mai da un agente o da un client di servizio (docs/screen-scope.md). | 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) |
Elencare le connessioni di un progetto
Elenca le connessioni del progetto, le più recenti per prime, al massimo 200 per pagina; restituisci next_cursor come after per la successiva. Un segreto, una chiave o un token di aggiornamento non viene mai restituito: secret indica se ne è conservato uno e un indizio che non è segreto. Una lettura non porta mai un link di consenso.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| dopo | query | opzionale | next_cursor della pagina precedente della stessa lista, con gli stessi filtri. Omettere inizia dalla riga più recente. Un valore che non è tale cursore è invalid_request. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/connections'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di connessioni. | ConnectionList (application/json); intestazioni: Cache-Control |
| 400 | invalid_request, compreso un cursore malformato. | 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) |
Creare una connessione in un progetto
Crea in questo progetto una connessione a Microsoft o a Google: modalità own_app con le credenziali proprie del cliente, oppure modalità screenrig_app, che risponde consent_url, un link monouso per la persona che lo completa (vedi createConnection). Aggiunge connection.created. Un nuovo tentativo identico con la stessa Idempotency-Key restituisce la stessa connessione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| provider (obbligatorio, stringa) | Consentito: "microsoft", "google" |
| mode (obbligatorio, stringa) | Consentito: "own_app", "screenrig_app" |
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 80 |
| config (opzionale, ConnectionConfigWrite) | Microsoft, modalità own_app: entrambi i membri. Non accettato per una connessione Google né per la modalità screenrig_app. |
| secret (opzionale, stringa) | Modalità own_app. Microsoft: il valore di uno dei segreti client dell’app (non il suo ID; al massimo 1024 caratteri), con config.tenant_id e config.client_id. Google: il file di chiave JSON dell’account di servizio, per intero (al massimo 16384 byte). Sigillato all’arrivo e mai restituito; la CLI lo legge da un file o da stdin, mai da un argomento. Non accettato in modalità screenrig_app. minLength: 1 maxLength: 16384 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/connections'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creata. Una connessione in modalità screenrig_app porta consent_url e consent_expires_at. | ConnectionConsent (application/json); intestazioni: ETag, Location, Cache-Control |
| 400 | invalid_request, che indica il campo non valido. | Problema (application/problem+json) |
| 409 | connection_app_not_configured, connection_limit_reached o idempotency_mismatch. | 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) |
Elencare le connessioni BI nel progetto
Elenca le connessioni BI del progetto, dalla meno recente, 200 per pagina; restituisci next_cursor come cursor per la successiva. Un segreto non viene mai restituito: secret indica se è impostato e i suoi ultimi 4 caratteri.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| cursore | query | opzionale | next_cursor della pagina precedente. |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-connections'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di connessioni. | BIConnectionList (application/json); intestazioni: Cache-Control |
| 400 | invalid_request, compreso un cursore malformato. | 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) |
Creare una connessione BI nel progetto
Aggiunge una connessione a un sistema BI di proprietà del progetto. Per Grafana: il suo indirizzo (http o https su un host pubblico, con un prefisso di percorso facoltativo) e un token di account di servizio con il ruolo Viewer. Il token viene sigillato e non viene mai restituito.
Grafana renders dashboards for screens through its Image Renderer plugin or remote rendering service, so the customer installs one; run POST /api/bi-connections/{id}/test to check. For Power BI (kind powerbi): config.tenant_id and config.client_id of a Microsoft Entra app registration and its client secret value as secret.
Un amministratore Power BI deve attivare le impostazioni sviluppatore Embed content in apps e Service principals can call Fabric public APIs per l’app (portale di amministrazione, impostazioni del tenant), l’app deve essere Membro o Amministratore di ogni area di lavoro che mostra, e i report richiedono una capacità Embedded, Fabric o Premium in produzione.
For Tableau (kind tableau): config.url (the https address of Tableau Server, or of your Tableau Cloud pod such as https://10ay.online.tableau.com), config.site (the site content URL, empty for the default site), config.client_id and config.secret_id of a connected app with direct trust, config.username (the Tableau user the screens views are shown as) and the secret value as secret.
Aggiungi embed_origin della risposta all’elenco dei domini consentiti dell’app collegata e abilita il segreto. Chiunque abbia un ticket di schermo può incorporare qualsiasi vista che quell’utente possa vedere, quindi usa un utente che veda solo le dashboard degli schermi. Tableau Cloud, o Tableau Server 2023.3 o successivo.
Per una pagina web con accesso (kind web): l’account di servizio di un sito che mostra la sua dashboard dietro un accesso. config.login_mode è auto (config.login_url, config.username e la password come secret: il renderer apre la pagina di accesso e compila il modulo), steps (config.login_url e config.steps, uno script di passaggi goto, fill, click, press, wait_for e wait_ms i cui valori possono contenere {{username}}, {{password}} e {{otp}}) oppure none (nessun accesso: la connessione mostra pagine con i cookie che le dai). totp_secret è la chiave base32, o l’indirizzo otpauth://, dell’app di autenticazione dell’account: il server calcola il codice monouso (RFC 6238) e invia al renderer solo il codice. cookies è un set di cookie esportato da un browser connesso, per un sito il cui accesso non si può automatizzare (single sign-on approvato su un telefono, un controllo del dispositivo); il server conserva il set e lo rinnova con i cookie che ogni acquisizione restituisce, quindi un accesso è raro.
La password, il seed e i cookie sono sigillati e mai restituiti. Usa un account di servizio in sola lettura. La password viene digitata solo in config.login_url e nei passaggi goto, quindi spostarli su un altro origin richiede di nuovo secret. Dopo cinque accessi rifiutati di fila la connessione smette di accedere finché le sue credenziali non cambiano.
Un server senza renderer di pagine risponde bi_web_unavailable. Aggiunge bi_connection.created. Un nuovo tentativo identico con la stessa Idempotency-Key restituisce questa stessa risposta.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 80 |
| kind (obbligatorio, stringa) | Consentito: "grafana", "powerbi", "tableau", "web" |
| config (obbligatorio, BIConnectionConfig) | |
| secret (opzionale, stringa) | Richiesto tranne che per web, e per una connessione Power BI che indica connection_id. Il token dell’account di servizio (Grafana), il valore del segreto client dell’app (Power BI), il valore del segreto dell’app collegata (Tableau) o la password dell’account di servizio (web: richiesta da login_mode auto, non usata da none). Sigillato all’arrivo; la CLI lo legge da un file o da stdin, mai da un argomento. minLength: 1 maxLength: 4096 |
| totp_secret (opzionale, stringa) | Web: la chiave base32 dell’app di autenticazione dell’account (da 16 a 128 caratteri, spazi ammessi), o il suo indirizzo otpauth://totp, che può impostare l’algoritmo (SHA1, SHA256, SHA512), le cifre (da 6 a 8) e il periodo. Sigillato; solo il codice calcolato lascia il server. maxLength: 1024 |
| cookies (opzionale, array) | Web: un set di cookie esportato da un browser connesso. Sigillato; rinnovato a ogni acquisizione. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-connections'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato. | BIConnection (application/json); intestazioni: ETag, Cache-Control |
| 400 | invalid_request, compreso un indirizzo che non è un host pubblico di Internet. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — il piano del progetto non include i dashboard BI; required_plan indica il piano che li include. | Problema (application/problem+json) |
| 409 | idempotency_mismatch. | 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) |
Elencare le viste BI nel progetto
Lists the project's BI views, oldest first, 200 to a page; pass next_cursor back as cursor for the next. Each carries embed_url, the address an iframe primitive shows (content_fit fill); it is null where this server has no embed host.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| cursore | query | opzionale | next_cursor della pagina precedente. |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-views'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di viste. | BIViewList (application/json); intestazioni: Cache-Control |
| 400 | invalid_request, compreso un cursore malformato. | 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) |
Creare una vista BI nel progetto
Aggiunge una vista di una dashboard Grafana della connessione o di un solo suo pannello (url: un indirizzo /d/{uid}/... sull’host della connessione, oppure target), o di un link di dashboard pubblica Grafana (kind grafana e target.public_url, senza connessione).
Put the answer's embed_url in an iframe primitive: the server renders the dashboard as a PNG through Grafana's /render API, refreshed every refresh_s (30 to 86400, default 300) and shared by every screen of the same size; the screen never talks to Grafana. A public dashboard plays live from Grafana, which must allow embedding.
La pagina di incorporamento mostra solo un ticket che il manifest dello schermo contiene, quindi una vista viene riprodotta solo sugli schermi del proprio progetto.
For Power BI (kind powerbi): a report of a workspace the connection's app is a member of (url: an app.powerbi.com /groups/{workspace}/reports/{report} address, or target with workspace_id and report_id), with pages to show and rotate_s to rotate through them (pages listing two or more, or rotate_all_pages, need rotate_s of 10 to 3600; one report page needs none), and refresh_s of 0 (no refresh) or 60 to 86400 (default 300).
The page asks the server for a short-lived view-only embed token (GenerateToken, App owns data) and renews it before it expires; the screen never holds the client secret. A Power BI Publish to web link is a view without a connection (kind powerbi, target.public_url https://app.powerbi.com/view?r=...), framed as it is.
For Tableau (kind tableau): a view of the connection site (url: an address copied from Tableau, such as https://HOST/t/SITE/views/WORKBOOK/VIEW or Tableau Cloud https://HOST/#/site/SITE/views/WORKBOOK/VIEW, or Workbook/View; or target.view), optionally with target.rotate_sheets and rotate_s of 10 to 3600 to turn the workbook published sheets (rotate_s and rotate_sheets go together; rotate_sheets may be given as the whole target beside url), and refresh_s of 0 (no refresh) or 60 to 86400 (default 300).
The page asks the server for a five minute JWT with only the embed scope, signed with the connected app secret, and builds the Embedding API v3 tableau-viz from the Tableau host; the screen never holds the secret.
Una visualizzazione Tableau Public è una vista senza connessione (kind tableau, target.public_url, ricostruita come https://public.tableau.com/views/WORKBOOK/VIEW) e accetta anche rotate_sheets. Per una pagina web (kind web): una pagina del sito della connessione web (url: un indirizzo https su un host pubblico, senza target).
Il browser sul bordo la apre già connesso, attende l’elemento wait_for se impostato e wait_ms millisecondi (fino a 10000), e disegna clip, un selettore CSS, se impostato, altrimenti l’intera pagina.
L’immagine viene ridisegnata ogni refresh_s (da 60 a 86400, 300 per impostazione predefinita) e condivisa da tutti gli schermi della stessa dimensione, e solo mentre uno schermo mostra la vista; quando un’acquisizione fallisce, l’ultima immagine resta sullo schermo. Imposta wait_for su un elemento che esiste solo quando la pagina è connessa, così una pagina di accesso non viene mai mostrata. Aggiunge bi_view.created.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| connection_id (opzionale, stringa) | |
| kind (opzionale, stringa) | Richiesto senza connection_id; altrimenti deve corrispondere alla connessione. Consentito: "grafana", "powerbi", "tableau", "web" |
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 80 |
| url (opzionale, stringa) | Un indirizzo di dashboard /d/{uid}/... sull’host della connessione. Il server ne legge orgId, viewPanel (N o panel-N) o panelId, from, to, var-* e theme. Tableau: un indirizzo di vista sull’host della connessione (/views/W/V, /t/SITE/views/W/V, #/site/SITE/views/W/V) o Workbook/View. Web: l’indirizzo https della pagina su un host pubblico. maxLength: 2048 |
| target (opzionale, BITarget) | Cosa mostra una vista. Grafana con una connessione: dashboard_uid (e facoltativamente un pannello). Power BI con una connessione: workspace_id e report_id, con pages o rotate_all_pages. Tableau con una connessione: view (Workbook/View), con rotate_sheets. Web con una connessione: url. Senza una connessione: solo public_url (e rotate_sheets per Tableau). |
| refresh_s (opzionale, intero) | Grafana da 30 a 86400; Power BI e Tableau 0 o da 60 a 86400; web da 60 a 86400. default: 300 minimum: 0 maximum: 86400 |
| rotate_s (opzionale, intero) | Power BI e Tableau: 0 oppure da 10 a 3600; obbligatorio per una destinazione che ruota pagine o fogli. default: 0 minimum: 0 maximum: 3600 |
| fit (opzionale, stringa) | Consentiti: "contain", "cover", "fill" predefinito: "contain" |
| wait_for (opzionale, stringa) | Web: un selettore CSS di un elemento che compare quando la pagina è pronta, e solo quando è connessa. maxLength: 512 |
| wait_ms (opzionale, intero) | Web: i millisecondi da attendere dopo che la pagina è pronta. minimum: 0 maximum: 10000 |
| clip (opzionale, stringa) | Web: un selettore CSS della parte della pagina da disegnare. maxLength: 512 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-views'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato. | BIView (application/json); intestazioni: ETag, Cache-Control |
| 400 | invalid_request, compreso un url che non è un indirizzo di dashboard della connessione. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — il piano del progetto non include i dashboard BI; required_plan indica il piano che li include. | Problema (application/problem+json) |
| 404 | not_found: la connessione non è in questo progetto. | Problema (application/problem+json) |
| 409 | idempotency_mismatch. | 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 i trigger nel progetto
Elenca i trigger di allerta CAP del progetto, dal più vecchio al più recente (al massimo 20), ciascuno con la sua URL di ingestione, nome utente e ultima allerta. La password non viene mai restituita qui.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/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 nel progetto
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 nuovo tentativo identico con la stessa Idempotency-Key restituisce questa stessa risposta, password compresa, per ventiquattro ore. 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 |
|---|---|---|---|
| project_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. |
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]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/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) |
Elenca eventi nel progetto
Elenca gli eventi duraturi del progetto in ordine crescente di sequenza
La paginazione è contigua: passa il next_cursor restituito come after per continuare esattamente da dove la pagina si è fermata. next_cursor è il cursore dell’ultimo evento restituito mentre eventi più recenti esistono già, e null alla fine della cronologia. Il limite predefinito è 50 e accetta 1-200; un valore fuori da questo intervallo è rifiutato con invalid_request e un membro errors[] che nomina limit.
L’impaginazione offset non è supportata. source=log elenca invece il log del Player: i report di condizione inviati dai Player (runtime.reported) in ordine crescente di ricezione, filtrati per screen_id e severità in una finestra da a (default ultime 24 ore, massimo 31 giorni).
I suoi cursori sono opachi: lg1_ o ev1_ a seconda di dove il server tiene il log Player, quindi restituisci quello che una pagina ha restituito; un cursore dell’altro tipo è rifiutato con invalid_request che nomina il campo. I record log Player non hanno sequenza, non sono su GET /stream/project e non sono consegnati ai webhook.
Un record è riconosciuto quando la coda del log del lettore lo accetta ed è conservato per la conservazione eventi del progetto. Segue un sondaggio con l’ultimo cursore e la finestra predefinita. I record del log del lettore non sono nella lista predefinita (source=project). from e to sono rifiutati con invalid_request a meno che source non sia log.
La lista dei progetti prende screen_id, playlist_id e application_id per leggere gli eventi di uno schermo, playlist o app, tutti limitati al progetto della credenziale (un id indica quali eventi leggere, mai di chi): screen_id mantiene gli eventi la cui risorsa è quello schermo; playlist_id gli eventi la cui risorsa è quella playlist più gli eventi che la nominano come details.playlist_id (uno schermo che la usa); application_id gli eventi la cui risorsa è quell’app più quelli la cui risorsa la porta come application_id (i suoi rilasci e voci chiave/valore).
Un valore che non è un ID del suo tipo è rifiutato con invalid_request che nomina il campo; playlist_id e application_id sono rifiutati con source=log, i cui record appartengono solo a uno schermo.
Entrambe le fonti utilizzano resource_id, tipo e gravità (minimo), combinati tra loro, con i filtri id e con la paginazione; un record di log del Player è un record runtime.reported il cui resource è il suo schermo, quindi un resource_id che non è quello schermo o un tipo che esclude runtime.reported restituisce una pagina vuota. Le pagine before (o order=desc) mostrano prima le più recenti: next_cursor è quindi il cursore dell’elemento più vecchio restituito e viene passato indietro come before per continuare con elementi più vecchi.
Senza from, una pagina source=log newest-first supera le 24 ore predefinite fino al record più vecchio conservato dal progetto, al massimo 31 giorni sotto il limite superiore della pagina per richiesta. Una pagina source=log newest-first può contenere meno di limit record, anche nessuno, con next_cursor; null la termina comunque, alla fine del log conservato.
Un chiamante limitato agli schermi (docs/screen-scope.md) legge un feed filtrato: eventi degli schermi dentro il suo ambito, delle cartelle di schermi che può vedere (le proprie, quelle sopra e quelle al loro interno; screen.moved solo quando la destinazione è dentro il suo ambito), di campagne, playlist, contenuti multimediali, applicazioni e schede, e delle revisioni playlist_change.
Ogni altro evento viene escluso, quindi una pagina può contenere meno eventi di limit, anche nessuno, con un next_cursor; continua a paginare con esso. source=log richiede uno screen_id dentro il suo ambito. Gli eventi sul progetto stesso non vengono inviati.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| dopo | query | opzionale | Un cursore da una risposta precedente: ev1_ per eventi di progetto (e i flussi di eventi). Il registro Player (source=log) scorre con cursori lg1_ o ev1_ in base a dove il server lo conserva; trattali come opachi e restituisci quello che una pagina ha restituito. Un cursore di altro tipo è rifiutato con invalid_request. |
| before | query | opzionale | Pagine più recenti per prime, strettamente più vecchie di questo cursore: un next_cursor di una pagina più recente per prima, o qualsiasi cursore elemento (ev1_ per eventi progetto; per source=log il cursore opaco che i suoi elementi portano). Vuoto o assente con order=desc inizia dall’elemento più recente. |
| ordine | query | opzionale | asc pagine dalla più vecchia con after; desc pagine dalla più nuova con before. before implica desc; order=asc con before è rifiutato. |
| limite | query | opzionale | Dimensione pagina. Un valore fuori da 1-200 è rifiutato con invalid_request e un membro errors[] il cui campo è limit. |
| origine | query | opzionale | project elenca gli eventi sequenziati del progetto. log elenca il registro del Player: rapporti sulle condizioni del Player (runtime.reported), in ordine crescente per tempo di ricezione. |
| resource_id | query | opzionale | Solo elementi il cui resource.id è questo id (uno schermo, playlist, media, webhook, agente o applicazione). Con source=log è lo schermo del record. |
| tipo | query | opzionale | Un tipo evento esatto come playlist.updated, o un prefisso famiglia che termina con un punto come playlist. per ogni tipo playlist.*. |
| screen_id | query | opzionale | Solo gli eventi di questo schermo: con source=project quelli il cui resource è lo schermo, con source=log i suoi record di log Player. Un altro tipo di id è rifiutato con invalid_request. |
| playlist_id | query | opzionale | Con source=project, solo gli eventi di questa playlist: quelli la cui risorsa è la playlist e quelli che la nominano come details.playlist_id. Rifiutato con source=log. |
| application_id | query | opzionale | Con source=project, solo gli eventi di questa applicazione: quelli la cui risorsa è l’applicazione e quelli la cui risorsa la porta come application_id (le sue release e voci chiave/valore). Rifiutato con source=log. |
| gravità | query | opzionale | Gravità minima: info include ogni elemento, warning mantiene avvisi ed errori, error mantiene errori. Entrambe le fonti. |
| da | query | opzionale | Con source=log, l’inizio della finestra (inclusivo). Predefinito 24 ore prima di to; una pagina newest-first senza from risale invece alla conservazione eventi del progetto. |
| a | query | opzionale | Con source=log, la fine della finestra (esclusiva). Predefinito ora. La finestra è al massimo di 31 giorni. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/events'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Eventi durevoli (source=project) o record log Player (source=log) | EventList (application/json) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 capacità progetto nel progetto
Il piano del progetto chiamante, flag indipendenti inserzionista/schermi con la loro revisione, il set di capacità effettive derivate, le funzioni del piano che ha (plan_features) e i suoi limiti (limits). Non riflette mai una rivendicazione client; un piano sconosciuto fallisce chiuso come proibito.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/capabilities'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Capacità del progetto. | ProjectCapabilities (application/json); intestazioni: Cache-Control |
| 403 | vietato - il piano del progetto non è nel catalogo. | 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 saldo fatturazione nel progetto
L’istantanea del saldo consapevole della sorgente del progetto chiamante. Tutti gli importi millicredito sono stringhe decimali canoniche. È un’istantanea, non un’autorità di pagamento; rails_available è falso mentre carta, tasse e rail cash-out non sono disponibili.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/balance'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Istante del saldo. | Saldo fatturazione (application/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 estratto conto nel progetto
Paginazione cursore stabile su voci di diario immutabili pubblicate per il progetto chiamante. Le hold non sono voci pubblicate. Le correzioni collegano all'evento originale invece di riscriverlo. Non ci sono mutazioni arbitrarie di concessione o pagamento su questa superficie.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| cursore | query | opzionale | |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/statement'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Pagina estratto conto. | Estratto conto fatturazione (application/json) |
| 400 | invalid_request - limite fuori intervallo. | 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 utilizzo fatturazione nel progetto
L’uso del progetto chiamante per un mese UTC, con i byte serviti e ricevuti (mai addebitati), l’archiviazione addebitata oltre quella gratuita del piano del pagante (allowance.storage_bytes) e le richieste API, gli eventi di flusso del progetto fatturati e i tentativi di consegna webhook conteggiati rispetto ai 10.000 gratuiti al mese. Un progetto che paga per sé legge il proprio pool.
Un progetto pagato da un altro pagatore condivide il pool di quel pagatore con gli altri progetti di quel pagatore; legge la propria quota, e payer nomina il pagatore. Il totale del pool del pagatore resta nelle letture di fatturazione del pagatore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| periodo | query | opzionale | Mese UTC in formato YYYY-MM; predefinito al mese corrente. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/usage'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Utilizzo del progetto. | ProjectBillingUsage (application/json); intestazioni: Cache-Control |
| 400 | invalid_request - il periodo non è un mese UTC nel formato YYYY-MM. | 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 rete pubblicitaria nel progetto
La rete di un solo venditore chiamante, inclusa la sua commissione di servizio ScreenRig risolta. I venditori non possono modificare tale commissione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Rete. | AdvertisingNetwork (application/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) |
Crea rete pubblicitaria nel progetto
Crea la rete di un venditore chiamante se assente. Richiede screens=true. Idempotente; ripetere restituisce la stessa rete.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | maxLength: 120 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Rete. | AdvertisingNetwork (application/json) |
| 403 | vietato - il progetto non dispone della capacità schermo o ha un piano sconosciuto. | 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) |
Imposta la tariffa pubblicitaria predefinita nel progetto
Imposta la tariffa predefinita del progetto del venditore per ogni 15 secondi di riproduzione completata. Una modifica che altera la tariffa effettiva di una campagna accettata mette in pausa l’intera campagna con price_change_pending; una modifica mascherata o senza effetto no. If-Match riporta la revisione della rete.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| If-Match | intestazione | opzionale | Revisione positiva opzionale della risorsa. Ometti per scrivere la risorsa corrente; una revisione obsoleta fornita è revision_conflict. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| rate_mcr_per_15s (obbligatorio, McrString) | Importo esatto in millicrediti come stringa decimale canonica. 1 credito è 1000 mcr. pattern: "^-?[0-9]+$" |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network/rate'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Rete aggiornata. | AdvertisingNetwork (application/json) |
| 412 | revision_conflict - If-Match è obsoleto. | 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 inventario pubblicitario nel progetto
L’inventario a cui il venditore chiamante ha aderito.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/inventory'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Inventario. | AdvertisingInventoryList (application/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 slot pubblicitari nel progetto
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/slots'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Slot. | AdvertisingSlotList (application/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) |
Crea slot pubblicitario nel progetto
Crea uno slot venditore riutilizzabile. Le immagini durano da 5 a 30 secondi e i video al massimo il limite della piattaforma di 120 secondi. Gli annunci sono sempre silenziati.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 120 |
| abilitato (opzionale, booleano) | |
| accepted_media (obbligatorio, array) | |
| max_image_duration_ms (obbligatorio, intero) | minimo: 5000 massimo: 30000 |
| max_video_duration_ms (obbligatorio, intero) | minimo: 1000 massimo: 120000 |
| rate_override_mcr_per_15s (opzionale, inline) | |
| vast_tag_url (opzionale, inline) | Il tag pubblicitario VAST 2-4 del venditore, provato quando nessuna campagna invitata riempie questo slot sugli schermi del venditore. Solo HTTPS su porta 443 o 8443 verso un host pubblico. Il backend lo recupera, segue fino a cinque Wrapper, importa il MediaFile MP4 o WebM progressivo scelto nei media del progetto e attiva Impression, creativeView e start su inizio accettato, complete su completamento accettato ed Error su errore. I tracker quartile non vengono attivati. Le macro [CACHEBUSTING], [TIMESTAMP], [SCREENRIG_SCREEN_ID], [SCREENRIG_SLOT_ID] e [SCREENRIG_PAGE_ID] vengono espanse. Lo slot deve accettare video. Null, assente o vuoto cancella il tag. I compratori non lo vedono mai. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/slots'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Slotslot. | AdvertisingSlot (application/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 iscrizioni pubblicitarie nel progetto
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/memberships'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Membri. | AdvertisingMembershipList (application/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 reti pubblicitarie unite nel progetto
Reti a cui l’inserzionista chiamante appartiene attualmente, con l’ambito e la politica di revisione concessi. Il conteggio schermi non garantisce il conteggio impression.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/networks'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Reti unite. | AdvertisingJoinedNetworkList (application/json) |
| 403 | vietato - il progetto non ha il flag inserzionista. | 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 creatività pubblicitarie nel progetto
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/creatives'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Creatività. | AdvertisingCreativeList (application/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) |
Crea creatività pubblicitaria nel progetto
Associa una revisione media pronta e di proprietà a una creatività immutabile. Non copia byte, non ricarica né rigenera. Media sconosciuti o non pronti sono rifiutati.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| media_id (obbligatorio, stringa) | |
| copy (opzionale, stringa) | maxLength: 500 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/creatives'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creatività. | AdvertisingCreative (application/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 campagne pubblicitarie nel progetto
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/campaigns'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Campagne. | AdvertisingCampaignList (application/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) |
Crea campagna pubblicitaria nel progetto
Crea una campagna bozza. Le bozze non trattengono denaro, non riservano nulla e non autorizzano alcuna consegna. L’attivazione richiede un preventivo esplicitamente accettato.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 120 |
| category (opzionale, AdvertisingCategory) | La categoria dell’inserzionista. Due annunci della stessa categoria non vanno mai in onda nella stessa pausa pubblicitaria su uno schermo; un annuncio senza categoria non viene mai separato. Consentito: "alcohol", "apparel", "automotive", "beauty", "cannabis", "consumer_electronics", "education", "entertainment", "financial_services", "food_and_beverage", "gambling", "government", "grocery", "health_and_pharma", "home_and_garden", "insurance", "jobs", "legal", "media", "political", "quick_service_restaurants", "real_estate", "restaurants", "retail", "sports_and_fitness", "technology", "telecom", "tobacco_and_vaping", "travel", "utilities" |
| daily_cap_mcr (obbligatorio, McrString) | Importo esatto in millicrediti come stringa decimale canonica. 1 credito è 1000 mcr. pattern: "^-?[0-9]+$" |
| lifetime_cap_mcr (obbligatorio, McrString) | Importo esatto in millicrediti come stringa decimale canonica. 1 credito è 1000 mcr. pattern: "^-?[0-9]+$" |
| image_duration_ms (opzionale, intero) | Durata di visualizzazione immagine per tutta la campagna. I video mantengono la loro durata verificata dal server. predefinito: 10000 minimo: 5000 massimo: 30000 |
| max_play_price_mcr (opzionale, inline) | Prezzo massimo positivo per riproduzione completata. Ometti per nessun tetto aggiuntivo. |
| flight_start (obbligatorio, stringa) | formato: "date-time" |
| flight_end (obbligatorio, stringa) | formato: "date-time" |
| reti (obbligatorio, array) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/campaigns'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Bozza campagna. | AdvertisingCampaign (application/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 recensioni pubblicitarie nel progetto
Versioni creatività inviate al venditore chiamante per revisione. Un venditore vede solo la creatività esatta inviata, mai la libreria dell’acquirente.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reviews'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Revisioni. | AdvertisingReviewList (application/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 spesa pubblicitaria nel progetto
Spesa e conteggi di consegna per acquirente in una campagna. Gli importi sono stringhe decimali mcr. Non espone mai il reddito del venditore, lo stato bancario o l’uso a livello di progetto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
| campaign_id | query | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/spend?campaign_id=CAMPAIGN_ID'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Rapporto spese. | AdvertisingSpendReport (application/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 consegna pubblicitaria nel progetto
Lordo, commissione di servizio e netto per una finestra del venditore, con la propria prova di consegna. Non espone mai il portafoglio dell’acquirente o altre reti. Solo prove di consegna completate e autorizzate stabiliscono la fatturazione. La finestra è al massimo di 92 giorni; una finestra più ampia è invalid_request.
Quando contiene più di 5000 saldi la risposta imposta truncated, totali e conteggi coprono ancora tutti e le righe elencano solo i primi 5000.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
| da | query | obbligatorio | |
| a | query | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/delivery?from=FROM&to=TO'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Rapporto di consegna. | AdvertisingDeliveryReport (application/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 gli aggregati di riproduzione nel progetto
Aggregati giornalieri di riproduzione.
JSON restituisce al massimo 200 righe e non è limitato da rate. format=csv (o Accept text/csv senza application/json) trasmette ogni riga corrispondente dentro day_from a day_to (giorni UTC inclusi; default day_to oggi e day_from 30 giorni prima; massimo 366 giorni, altrimenti invalid_request) come CSV con riga intestazione fissa (PlaybackAggregateCsv); solo la forma CSV consuma i budget playback-export-org (30 al minuto) e playback-export-ip (60 al minuto).
Entrambe le forme sono una richiesta API conteggiata. Le risposte includono Vary Accept. Un chiamante limitato agli schermi (docs/screen-scope.md) deve inviare screen_id, che deve essere uno schermo dentro il suo ambito (altrimenti outside_screen_scope); le forme CSV seguono la stessa regola.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| screen_id | query | opzionale | |
| media_id | query | opzionale | |
| giorno | query | opzionale | Giorno del calendario UTC dell’aggregato. |
| day_from | query | opzionale | Primo giorno UTC, incluso. Esclude day. Con day_to copre al massimo 366 giorni. CSV lo predefinisce a 30 giorni prima di day_to. |
| day_to | query | opzionale | Ultimo giorno UTC, incluso. Esclude il giorno. CSV lo predefinisce a oggi (UTC). |
| formato | query | opzionale | json (predefinito), csv, xlsx o pdf. Se omesso, un'intestazione Accept che nomina text/csv ma non application/json seleziona csv. xlsx e pdf scrivono le prime 50000 righe dello stesso elenco. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Aggregati giornalieri di riproduzione per il progetto chiamante, immagini e video inclusi. Una riga per schermo, contenuto multimediale e giorno UTC. I giorni più recenti per primi. Gli identificatori filtrano solo le righe del chiamante e non sono mai una ricerca cross-progetto. | PlaybackAggregateList (application/json), PlaybackAggregateCsv (text/csv); intestazioni: Vary, RateLimit-Policy, RateLimit |
| 400 | 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) |
| 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 |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 riproduzioni di playback nel progetto
Record per riproduzione: una riga per ogni playback.media_started accettato (o playback.video_started legacy) e una riga per ogni playback.application_started accettato (release_id impostato, campi media vuoti) del progetto chiamante, dal più vecchio per received_at, in caso di parità per inserimento. Da (incluso) e a (escluso) limite received_at; a predefinito ora, da a 24 ore prima di a, e l’intervallo è al massimo 31 giorni (invalid_request altrimenti).
Gli ultimi 5 secondi non sono ancora restituiti: il to effettivo è al massimo ora meno 5 secondi (settle lag), quindi una coda live non salta mai una riga che si impegna dietro il suo cursore. Filtrano screen_id, media_id, playlist_id (la playlist da cui è stato mostrato l’inizio) e tag (un tag schermo che lo schermo aveva quando è stato ricevuto il play).
Una pagina playlist_id può contenere meno di limit righe, anche nessuna, con next_cursor quando è stata scansionata una lunga serie di riproduzioni di altre playlist; null indica comunque la fine dell’intervallo.
JSON è una pagina di al massimo limit righe (default 200, massimo 1000) con next_cursor, null alla fine dell’intervallo; restituiscilo come cursor con gli stessi filtri. order=desc (o before) pagina i più recenti per primi nello stesso intervallo: next_cursor è allora il cursore della riga più vecchia restituita, null all’inizio dell’intervallo, e viene restituito come before (esclusivo) con gli stessi filtri; order=asc con before è rifiutato con invalid_request che nomina order, e cursor con una pagina newest-first che nomina cursor.
Una pagina più recente può contenere meno di limit righe, anche nessuna, con next_cursor; null indica comunque la fine.
Una pagina successiva non salta mai una riga esistente quando la pagina precedente è stata letta e non ne ripete una, tranne che un avvio che il Player ha reinviato dopo un report non riconosciuto (lo stesso play_id, ricevuto poco dopo) può apparire di nuovo in una pagina successiva; il flusso CSV lo elenca una volta. format=csv (o Accept text/csv senza application/json) trasmette ogni riproduzione dal cursore alla fine dell’intervallo come CSV (PlaybackPlayCsv), più recente prima sotto con order=desc; limit è rifiutato con CSV.
La misurazione è per richiesta: ogni pagina JSON costa un credito richiesta API, mentre un flusso CSV dell’intervallo completo costa uno. Ogni richiesta plays (pagina o flusso) consuma i budget playback-export-org (30 al minuto) e playback-export-ip (60 al minuto).
Uno stream limita ogni scrittura (15 secondi) e termina quando il client si disconnette; se fallisce dopo l’header 200 la connessione è abortita, quindi un export che legge fino a una fine pulita è completo. Le risposte portano Vary Accept. Le riproduzioni sono conservate per la durata di conservazione eventi del piano (30 giorni è il minimo fornito; la conservazione basata sul piano usa la finestra di 7 o 90 giorni del piano).
Un chiamante limitato agli schermi (docs/screen-scope.md) deve inviare screen_id, che deve essere uno schermo dentro il suo ambito (altrimenti outside_screen_scope); le forme CSV seguono la stessa regola.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| da | query | opzionale | Limite inferiore inclusivo su received_at. Predefinito a 24 ore prima di to. |
| a | query | opzionale | Limite superiore esclusivo su received_at. Predefinito ora. to - from è al massimo 31 giorni. |
| screen_id | query | opzionale | |
| media_id | query | opzionale | |
| playlist_id | query | opzionale | Solo riproduzioni mostrate da questa playlist. |
| tag | query | opzionale | Un tag dello schermo che lo schermo portava quando è stata ricevuta la riproduzione. |
| cursore | query | opzionale | next_cursor della pagina precedente, con gli stessi filtri. Opaco. |
| ordine | query | opzionale | asc pagine dalla più vecchia con cursore; desc pagine dalla più nuova con before. before implica desc; order=asc con before è rifiutato. |
| before | query | opzionale | Pagine più recenti per prime, strettamente più vecchie di questa posizione: il next_cursor di una pagina più recente per prima, con gli stessi filtri. Opaco. |
| limite | query | opzionale | Dimensione pagina JSON. Rifiutato con CSV. |
| formato | query | opzionale | json (predefinito), csv, xlsx o pdf. Se omesso, un'intestazione Accept che nomina text/csv ma non application/json seleziona csv. xlsx e pdf scrivono le prime 50000 righe dello stesso elenco. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/plays'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di riproduzioni, o il flusso CSV. | PlaybackPlayList (application/json), PlaybackPlayCsv (text/csv); intestazioni: Cache-Control, Vary, RateLimit-Policy, RateLimit |
| 400 | 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) |
| 401 | 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) |
| 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 |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 totali riproduzione nel progetto
Totali di riproduzione del progetto chiamante su giorni UTC inclusivi, letti dai rollup giornalieri: by=day restituisce una riga per giorno con riproduzioni (screen_id o media_id limita a uno schermo o media), by=screen e by=media classificano gli schermi o media più attivi (top, massimo 100), e by=screen_day restituisce la serie giornaliera degli schermi top (top massimo 10). day_to predefinito oggi (UTC) e day_from 29 giorni prima.
Una serie di giorni copre al massimo 366 giorni (92 se limitata a uno schermo o media); un ranking al massimo 92. I conteggi includono ogni inizio registrato dal progetto, inclusi quelli memorizzati prima che esistessero i rollup di riproduzione.
I rollup seguono l’ingestione fino a circa 21 minuti. truncated è true quando un ranking è stato costruito da fette di una finestra troppo grande per una lettura: copre le migliori chiavi di ogni fetta. Non è limitato da rate limit. Una richiesta API conteggiata.
Un chiamante limitato agli schermi (docs/screen-scope.md) deve inviare screen_id, che deve essere uno schermo dentro il suo ambito (altrimenti outside_screen_scope); le forme CSV seguono la stessa regola.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
| da | query | opzionale | giorno: riproduzioni per giorno; schermo, contenuti multimediali: le chiavi più intense; screen_day: la serie giornaliera degli schermi principali. |
| day_from | query | opzionale | Primo giorno UTC, incluso. Predefinito a 29 giorni prima di day_to. Una serie di giorni copre al massimo 366 giorni (92 se limitata a uno schermo o contenuto multimediale), una classifica al massimo 92. |
| day_to | query | opzionale | Ultimo giorno UTC, incluso. Predefinito a oggi (UTC). |
| screen_id | query | opzionale | |
| media_id | query | opzionale | |
| top | query | opzionale | Quanti schermi o contenuti multimediali restituisce una classifica (al massimo 10 per by=screen_day). Rifiutato con by=day. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/totals'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Totali del raggruppamento richiesto. | PlaybackTotals (application/json); intestazioni: Cache-Control |
| 400 | 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) |
| 401 | 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) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 completezza della riproduzione nel progetto
Quante delle riproduzioni effettuate dagli schermi sono arrivate al backend e dove si trovavano quelle mancanti. I Player numerano gli avvii dei contenuti multimediali, quindi un avvio che non è mai arrivato lascia un buco nella numerazione, ad esempio quando uno schermo resta offline oltre la sua coda di report di 24 ore o la coda scarta dei report.
Nei giorni UTC da day_from a day_to inclusi (day_to è per impostazione predefinita oggi, in UTC, e day_from 29 giorni prima; la finestra copre al massimo 92 giorni) la risposta contiene measured_plays, le riproduzioni numerate arrivate; missing_plays, i numeri saltati dai Player; completeness, il rapporto tra measured_plays e la loro somma, null quando entrambi sono 0; days, gli stessi tre valori per ogni giorno che ne ha, dal più vecchio, con un buco contato nel giorno UTC della riproduzione successiva; e gaps, i buchi dal più recente, ciascuno con screen_id, day, from e to (gli orari di avvio delle riproduzioni ai due lati del buco) e missing_plays. screen_id restringe days e gaps a un solo schermo; limit (predefinito 100, al massimo 500) limita gaps, e truncated è true quando ne esistono altri.
Uno schermo spento non genera riproduzioni e non lascia lacune. Le riproduzioni senza numero (Player meno recenti, avvii memorizzati prima dei numeri di riproduzione) non vengono misurate: rientrano in play_count di GET /api/playback/totals e in nessuno di questi valori. Senza limiti di frequenza. Una richiesta API conteggiata.
Un chiamante limitato agli schermi (docs/screen-scope.md) deve inviare screen_id, che deve essere uno schermo dentro il suo ambito (altrimenti outside_screen_scope); le forme CSV seguono la stessa regola.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
| day_from | query | opzionale | Primo giorno UTC, incluso. Predefinito: 29 giorni prima di day_to. Con day_to, l'intervallo copre al massimo 92 giorni. |
| day_to | query | opzionale | Ultimo giorno UTC, incluso. Predefinito a oggi (UTC). |
| screen_id | query | opzionale | |
| limite | query | opzionale | Il numero massimo di lacune da elencare, dalla più recente. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/completeness'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | La completezza della finestra e le sue lacune. | PlaybackCompleteness (application/json); intestazioni: Cache-Control |
| 400 | 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) |
| 401 | 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) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 Health Trend nel progetto
La salute della flotta del progetto per ora UTC: quanti schermi hanno segnalato, e quanti di essi erano caldi (a 80 °C o più), avevano un display disconnesso o andavano in crash (3 o più crash in 24 ore). from (inclusivo) e to (esclusivo) di default sono le ultime 24 ore, massimo 93 giorni; una pagina contiene al massimo limit righe (default 100, massimo 500) con next_cursor, nullo alla fine.
Le ore seguono i report con un ritardo fino a circa 5 minuti. Rifiutato a un chiamante limitato agli schermi (outside_screen_scope); GET /api/screens/{id}/health/history è la forma per singolo schermo.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
| da | query | opzionale | Limite inferiore inclusivo sull’ora del report. Predefinito a 24 ore prima di to. |
| a | query | opzionale | Limite superiore esclusivo sull’ora del report. Predefinito ora. |
| limite | query | opzionale | Dimensione pagina. |
| cursore | query | opzionale | next_cursor della pagina precedente, con gli stessi filtri. Opaco. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/health/trend'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina della salute oraria della flotta. | HealthTrend (application/json); intestazioni: Cache-Control |
| 400 | 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) |
| 401 | 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) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 uptime progetto nel progetto
Disponibilità giornaliera degli schermi del progetto su giorni UTC inclusivi (predefiniti e intervallo come GET /api/screens/{id}/uptime). Ogni riga somma i secondi online e offline degli schermi con stato registrato quel giorno; la copertura è la quota del giorno di quegli schermi con stato registrato.
Gli intervalli vengono contati quando terminano, quindi la riga di oggi copre gli intervalli terminati finora; il conteggio online live è nel riepilogo del dashboard. Rifiutato a un chiamante limitato agli schermi (outside_screen_scope); GET /api/screens/{id}/uptime è la forma per singolo schermo.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
| day_from | query | opzionale | Primo giorno UTC, incluso. Predefinito a 29 giorni prima di day_to. Con day_to copre al massimo 366 giorni. |
| day_to | query | opzionale | Ultimo giorno UTC, incluso. Predefinito a oggi (UTC). |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/uptime/daily'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Righe di uptime giornaliere, le più vecchie per prime. | ProjectUptime (application/json); intestazioni: Cache-Control |
| 400 | 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) |
| 401 | 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) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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 tipi di carta nel progetto
Scopri le schede integrate dal catalogo pubblicato di questo ambiente, unito al floor fornito. Aggiornamenti e verifica dello schema avvengono in background; questa rotta non chiama mai il bucket edge. Ogni voce elenca la copia corrente, il livello e i layout consentiti da quel livello, e ogni major servito.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-types'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Catalogo schede integrato, ordinato per id | CardCatalogue (application/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 dati carta nel progetto
Elenca i documenti dati delle schede del progetto, al massimo 200 in ordine crescente di chiave. next_cursor è l’ultima chiave restituita; va passato come after per la pagina successiva, null se non ce ne sono altre. I documenti dati delle schede contengono le proprietà dinamiche delle posizioni delle schede (sezioni menu, elementi ticker, riquadri KPI); la chiave dati della posizione ne indica una.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| dopo | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Documenti dati scheda | CardDataList (application/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 i contenuti multimediali nel progetto
Elenca i contenuti multimediali pronti dalla più recente, massimo 1000 per pagina. folder mantiene solo i file direttamente dentro una cartella multimediale (il suo ID), o con root solo quelli nella radice della libreria; un ID cartella ben formato che non nomina nessuna cartella non elenca nulla. next_cursor è la posizione dell’ultima riga restituita mentre ci sono altre righe; passalo come after, con gli stessi filtri, per la pagina successiva. next_cursor è null nell’ultima pagina
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| tag | query | opzionale | Tag media esatto. Gli oggetti non taggati sono omessi quando questo filtro è presente. |
| primitivo | query | opzionale | |
| cartella | query | opzionale | Un ID cartella media conserva solo i file direttamente dentro quella cartella, non quelli delle sue sottocartelle; la root conserva solo i file nella root della libreria. Omettere elenca ogni file. |
| ids | query | opzionale | ID dei media separati da virgola, al massimo 200 distinti; un numero maggiore è invalid_request su ids. Mantiene solo quei file: un ID che non indica alcun file pronto è assente, e gli altri filtri e la paginazione continuano ad applicarsi. Un valore vuoto non elenca nulla. |
| library | query | opzionale | true elenca il progetto Libreria dell’organizzazione invece di questo progetto: i suoi elementi qui sono in sola lettura e riportano library true. Un’organizzazione senza Libreria, o il progetto Libreria stesso, con true non elenca nulla. |
| dopo | query | opzionale | next_cursor della pagina precedente della stessa lista, con gli stessi filtri. Omettere inizia dalla riga più recente. Un valore che non è tale cursore è invalid_request. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Contenuti multimediali | MediaList (application/json) |
Crea generazione contenuti multimediali nel progetto
Genera un’immagine statica da un prompt, memorizzala come contenuto multimediale privato pronto del progetto e fatturane l’utilizzo. La POST risponde subito 202 con Operation, con o senza Prefer: respond-async, perché un proxy davanti all’API elimina una richiesta che non invia alcun byte per 100 s e un’immagine statica di alta qualità può richiedere più tempo.
Interroga GET /api/operations/{id} finché Operation non è succeeded, quando il suo result è {media_id, usage: {quality, credits, usd}} (MediaGenerationUsage), o failed, quando il suo error è il problema. Un rifiuto deciso prima di qualsiasi lavoro del fornitore (payment_required, reseller_generation_limit, rate_limited, not_ready, invalid_request) risponde comunque alla POST.
Non include mai byte immagine, b64_json, chiavi oggetto, URL firmati, URL vendor, costo vendor, token vendor o nome modello deployment. Il prompt è byte cliente e non viene ripetuto.
Prima che il prompt raggiunga il fornitore di immagini, il server aggiunge requisiti fissi di inquadratura: l’opera deve riempire il bordo del quadro, e non possono essere raffigurati televisori, monitor, schermi, display, cornici, bordi, montaggi, supporti, pareti, stanze, mockup di dispositivi, ombre o fotografie di insegne installate, e qualsiasi parola nel prompt del chiamante che descriva dove l’insegna sarà appesa o quale dispositivo la mostrerà è trattata come metadati di posizionamento e non come soggetto.
Le regole decorative e i bordi all’interno del design stesso restano disponibili. Il prompt del chiamante non viene mai riscritto o rimosso e viene memorizzato invariato. Idempotency-Key riproduce la stessa Operation, mai un secondo tentativo fatturato. I client non eseguono PUT né confermano i byte generati.
La resa memorizzata è WebP lossy (qualità 90) alla dimensione esatta di aspetto con un lato corto di 1080 px (16:9 è 1920x1080, 9:16 1080x1920, 1:1 1080x1080, 4:3 1440x1080, 3:4 1080x1440, 3:2 1620x1080, 2:3 1080x1620); la tela del fornitore è ritagliata al centro e riscalata a quella dimensione.
Il nome file è distintivo per generazione, generated-16x9-1a2b3c4d.webp, con il suffisso preso dall’id del contenuto multimediale. Recupera i byte con GET /api/media/{id}/content. Own-gen-then-upload rimane valido.
Su Standard, la rimanenza che non copre il doppio del costo fornitore dell’immagine fissa, arrotondato ai crediti interi, dopo il livello minimo introduttivo (meno 1.000.000 crediti fino al 2027-01-01, poi zero) restituisce payment_required, tranne che per SCREENRIG__ENVIRONMENT=development, e l’ammissione prima della chiamata al fornitore richiede una rimanenza sopra quel livello del minimo per qualità: 200 crediti per basso, 800 per medio, 2000 per alto.
Gli altri piani non vengono mai rifiutati per il saldo.
Un’organizzazione fatturata tramite un reseller viene rifiutata con reseller_generation_limit (402) non appena ai clienti delegati del suo reseller è stato fatturato il limite mensile di generazione di immagini ($100 a prezzo di listino mentre il reseller attende la revisione, $1,000 dopo, conteggiato per mese UTC), a meno che il credito proprio dell’organizzazione non copra l’immagine; una generazione già ammessa viene completata.
Una configurazione vuota del fornitore selezionato restituisce not_ready. Solo token di progetto. Una generazione in corso per organizzazione; ulteriore parallelismo è rate_limited.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio | |
| Prefer | intestazione | opzionale | Facoltativo. La route risponde subito 202 con Operation, con o senza questa intestazione; interroga Operation. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| prompt (obbligatorio, stringa) | minLength: 1 maxLength: 4000 |
| aspect_ratio (opzionale, stringa) | Consentito: "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3" predefinito: "16:9" |
| qualità (opzionale, stringa) | Consentito: "low", "medium", "high" predefinito: "medium" |
| tag (opzionale, stringa) | pattern: "^[A-Za-z0-9]{1,32}$" |
| riferimenti (opzionale, array) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/generations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 202 | La generazione è stata accettata e continua; interroga GET /api/operations/{id} finché Operation non è succeeded (result media_id e usage) o failed (error). Lo stesso Idempotency-Key risponde con la stessa Operation. | Operazione (application/json); intestazioni: Preference-Applied, RateLimit-Policy, RateLimit |
| 402 | 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) |
| 404 | 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) |
| 500 | 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) |
| 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 cartelle contenuti multimediali nel progetto
Elenca tutte le cartelle multimediali nel progetto, massimo 1000, ordinate per nome. Le cartelle organizzano la libreria multimediale, e un selettore playlist by:folder riproduce i file direttamente dentro una cartella. Il parent_id di una cartella è null nella radice della libreria.
Costruisci l’albero da parent_id; la cartella di un file è Media.folder_id. library=true elenca invece le cartelle della Libreria dell’organizzazione (sola lettura; un selettore by:folder può indicarne una).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| library | query | opzionale | true elenca il progetto Libreria dell’organizzazione invece di questo progetto: i suoi elementi qui sono in sola lettura e riportano library true. Un’organizzazione senza Libreria, o il progetto Libreria stesso, con true non elenca nulla. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-folders'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Cartelle media | MediaFolderList (application/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) |
Crea cartella contenuti multimediali nel progetto
Crea una cartella media nella radice della libreria (parent_id nullo o assente) o dentro parent_id. I nomi sono privati di spazi, contengono da 1 a 100 caratteri Unicode senza controlli, non sono "." o ".." e possono ripetersi. Un’organizzazione contiene al massimo 1000 cartelle in tutti i suoi progetti (quota_exceeded) annidate al massimo 10 livelli (invalid_request). Emette media.folder_created.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome (obbligatorio, stringa) | Rifilato; da 1 a 100 caratteri Unicode, senza controlli, non . o .. minLength: 1 maxLength: 100 |
| parent_id (opzionale, inline) | La cartella in cui crearla; null o assente per la radice della libreria. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-folders'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Cartella creata. | MediaFolder (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) |
Sposta contenuti multimediali nel progetto
Sposta file (media_ids) e cartelle (folder_ids) in una cartella (folder_id), o nella radice della libreria se folder_id è null, in una singola richiesta tutto o niente di massimo 1000 ID. Ogni ID deve esistere (not_found). Una cartella non può spostarsi in se stessa o in una cartella al suo interno, e lo spostamento deve mantenere ogni cartella entro 10 livelli (invalid_request).
Gli elementi già nella destinazione restano come sono; ogni file e cartella spostati avanzano la loro revisione. Spostare file cambia cosa riproducono i selettori by:folder delle loro vecchie e nuove cartelle, dalla risoluzione del selettore successivo di ogni schermo; spostare una cartella non cambia i file propri di nessuna cartella. Emette media.moved.
Lo spostamento di una credenziale Propose rende ogni file spostato in sospeso e mette in coda la sua revisione media, e i selettori delle playlist approvate la risolvono con la cartella con cui è stata approvata fino all’approvazione della modifica da parte di una persona (docs/reviews.md).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| folder_id (obbligatorio, inline) | Cartella di destinazione; null per la radice della libreria. |
| media_ids (opzionale, array) | |
| folder_ids (opzionale, array) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/move'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Quanti file e cartelle sono stati spostati. | MediaMoveResult (application/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) |
Crea caricamento contenuti multimediali nel progetto
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio | |
| project_id | query | opzionale | Obbligatorio con dashboardSession: il progetto dove il file è stato messo in coda. Deve corrispondere al progetto selezionato dalla sessione, altrimenti resource_conflict. Questo vincola l’ammissione upload tra schede. L’id upload restituito resta limitato al progetto per upload byte e commit. Omissibile con un bearer progetto. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| nome_file (obbligatorio, stringa) | Nome dei byte caricati, come saranno inviati: un semplice nome file di al massimo 255 byte UTF-8, senza directory, barra rovesciata o caratteri di controllo. minLength: 1 maxLength: 255 |
| source_filename (opzionale, stringa) | Nome originale del file del chiamante prima di qualsiasi transcodifica lato client. Solo nome file semplice, al massimo 255 byte UTF-8. Memorizzato esattamente come source_filename sul contenuto pronto e usato per derivare filename. minLength: 1 maxLength: 255 |
| content_type (obbligatorio, stringa) | Consentito: "image/png", "image/jpeg", "image/webp", "image/gif", "video/mp4", "video/webm", "audio/mpeg" |
| bytes (obbligatorio, intero) | minimo: 1 massimo: 1073741824 |
| sha256 (obbligatorio, stringa) | pattern: "^[a-f0-9]{64}$" |
| tag (opzionale, stringa) | pattern: "^[A-Za-z0-9]{1,32}$" |
| folder_id (opzionale, stringa) | La cartella media in cui arriva il contenuto pronto; se omessa, arriva nella radice della libreria. La cartella deve esistere quando l’upload viene dichiarato (altrimenti invalid_request su folder_id) e quando viene confermato (l’operazione fallisce con invalid_request: dichiaralo di nuovo). Un uploader (docs/uploaders.md) deve inviare una delle sue cartelle (altrimenti outside_upload_scope). |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/uploads'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Autorizzazione firmata di breve durata per esattamente un PUT di un oggetto privato. Invia il metodo restituito e ogni intestazione restituita alla lettera. Anche il dashboard carica in questo modo. Il suo browser invia i byte con PUT direttamente nel sistema di archiviazione degli oggetti, mai tramite l’API, perché un proxy davanti all’API rifiuta un corpo della richiesta superiore a 100 MB. Un browser imposta Content-Length da sé in base al corpo, quindi invia ogni intestazione restituita tranne quella. | MediaUploadSession (application/json); intestazioni: Cache-Control, 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) |
Anteprima selettore nel progetto
Anteprima in sola lettura delle corrispondenze di immagini o video pronte di proprietà del progetto corrente. Restituisce l’ordinamento dei nomi file e la politica normalizzata; la riproduzione casuale si mescola a ogni nuovo ciclo sul lettore. Non avanza i cursori, non crea concessioni di contenuti, né modifica i manifesti. Più di 1024 corrispondenze restituisce invalid_request.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| fuso orario (opzionale, stringa) | Zona IANA in cui viene letta la disponibilità del media; predefinita UTC. |
| rect (opzionale, oggetto) | La dimensione rect della primitiva; obbligatoria con selector.fit aspect. |
| primitivo (obbligatorio, stringa) | Consentito: "image", "video" |
| selettore (obbligatorio, inline) |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/selectors/preview'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Corrispondenze selettore correnti. | SelectorPreview (application/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 segnalazioni bug nel progetto
Restituisce i report di bug del progetto chiamante, dal più recente, fino a cento. Le segnalazioni di altri progetti non sono mai restituite. Leggi un thread di proprietà tramite il suo ID feedback. Non c’è cursore di paginazione in v1. Ogni segnalazione riporta il suo stato e le risposte dello staff/agente, dalla più vecchia.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/bugs'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Segnalazioni di bug di proprietà del progetto chiamante. | FeedbackList (application/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) |
Segnala bug nel progetto
Registra un bug report contro il progetto chiamante. I campi della segnalazione non possono essere aggiornati o eliminati; aggiungi una correzione o più informazioni con una risposta nello stesso thread di feedback.
Un retry esatto con la stessa Idempotency-Key restituisce la stessa submission originale per ventiquattro ore invece di creare un duplicato, e un corpo diverso sotto quella chiave restituisce idempotency_mismatch. Ogni submission è controllata prima di essere memorizzata.
Un corpo sotto i 12 caratteri o 3 parole restituisce submission_too_short; testo che non descrive problema o richiesta (caratteri casuali, battitura) restituisce submission_unclear; spam, testo con molti link, injection prompt e testo malevolo restituiscono submission_rejected.
Una sottomissione rifiutata non viene memorizzata, il dettaglio del problema non ripete mai il testo inviato, e un ritentativo esatto con la stessa Idempotency-Key restituisce lo stesso rifiuto.
Non inserire mai credenziali, cookie, header Authorization, nonce di completamento, URL firmati o chiavi oggetto in titolo, corpo o contesto; testo a forma di credenziale (token ScreenRig, JWT, bearer token, chiavi cloud e API, chiavi private) è sostituito con [redacted] prima che la submission sia archiviata, e la risposta riporta il testo redatto.
Quando il modello di screening è temporaneamente non disponibile, la segnalazione viene accettata e trattenuta per un nuovo screening in background; dopo alcune accettazioni simili in un’ora, il progetto riceve submission_screening_unavailable (500, Retry-After) e riprova la stessa richiesta più tardi.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| titolo (obbligatorio, stringa) | Sommario su una riga. Spazi iniziali e finali rimossi, caratteri di controllo rifiutati. minLength: 1 maxLength: 120 |
| body (obbligatorio, stringa) | Descrizione completa. A capo e tabulazione sono gli unici caratteri di controllo accettati. minLength: 1 maxLength: 4000 |
| context (opzionale, FeedbackContext) | Busta diagnostica chiusa. Ogni membro è uno scalare opzionale vincolato, l’annidamento è strutturalmente impossibile, e un membro sconosciuto è rifiutato con invalid_request. La forma esiste affinché un client non possa persistere valori argomento, credenziali o dati ambiente liberi attraverso di essa. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/bugs'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Rapporto bug archiviato. Un tentativo idempotente esatto restituisce la stessa segnalazione. | FeedbackSubmission (application/json); intestazioni: RateLimit-Policy, RateLimit |
| 400 | 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) |
| 409 | 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) |
| 422 | 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) |
| 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) |
Elenca richieste di funzionalità nel progetto
Restituisce le richieste di funzionalità del progetto chiamante, dal più recente, fino a cento. Le segnalazioni di altri progetti non sono mai restituite. Leggi un thread di proprietà tramite il suo ID feedback. Non c’è cursore di paginazione in v1. Ogni segnalazione riporta il suo stato e le risposte dello staff/agente, dalla più vecchia.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/features'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Richieste funzionalità di proprietà del progetto chiamante. | FeedbackList (application/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) |
Richiedi funzione nel progetto
Registra una richiesta di funzionalità contro il progetto chiamante. I campi della segnalazione non possono essere aggiornati o eliminati; aggiungi una correzione o più informazioni con una risposta nello stesso thread di feedback.
Un retry esatto con la stessa Idempotency-Key restituisce la stessa submission originale per ventiquattro ore invece di creare un duplicato, e un corpo diverso sotto quella chiave restituisce idempotency_mismatch. Ogni submission è controllata prima di essere memorizzata.
Un corpo sotto i 12 caratteri o 3 parole restituisce submission_too_short; testo che non descrive problema o richiesta (caratteri casuali, battitura) restituisce submission_unclear; spam, testo con molti link, injection prompt e testo malevolo restituiscono submission_rejected.
Una sottomissione rifiutata non viene memorizzata, il dettaglio del problema non ripete mai il testo inviato, e un ritentativo esatto con la stessa Idempotency-Key restituisce lo stesso rifiuto.
Non inserire mai credenziali, cookie, header Authorization, nonce di completamento, URL firmati o chiavi oggetto in titolo, corpo o contesto; testo a forma di credenziale (token ScreenRig, JWT, bearer token, chiavi cloud e API, chiavi private) è sostituito con [redacted] prima che la submission sia archiviata, e la risposta riporta il testo redatto.
Quando il modello di screening è temporaneamente non disponibile, la segnalazione viene accettata e trattenuta per un nuovo screening in background; dopo alcune accettazioni simili in un’ora, il progetto riceve submission_screening_unavailable (500, Retry-After) e riprova la stessa richiesta più tardi.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| titolo (obbligatorio, stringa) | Sommario su una riga. Spazi iniziali e finali rimossi, caratteri di controllo rifiutati. minLength: 1 maxLength: 120 |
| body (obbligatorio, stringa) | Descrizione completa. A capo e tabulazione sono gli unici caratteri di controllo accettati. minLength: 1 maxLength: 4000 |
| context (opzionale, FeedbackContext) | Busta diagnostica chiusa. Ogni membro è uno scalare opzionale vincolato, l’annidamento è strutturalmente impossibile, e un membro sconosciuto è rifiutato con invalid_request. La forma esiste affinché un client non possa persistere valori argomento, credenziali o dati ambiente liberi attraverso di essa. |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/features'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Richiesta funzionalità archiviata. Un tentativo idempotente esatto restituisce la stessa segnalazione. | FeedbackSubmission (application/json); intestazioni: RateLimit-Policy, RateLimit |
| 400 | 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) |
| 409 | 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) |
| 422 | 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) |
| 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) |
Elenca i client di servizio nel progetto
I client di servizio del progetto (spec: server, script o job CI di un cliente posseduti dal progetto), dal più recente, attivi e revocati, con le loro chiavi pubbliche, id segreti e uso; mai un segreto o il suo digest. Richiede la capacità del progetto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Il client di servizio. | ServiceClientList (application/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) |
Crea client di servizio nel progetto
Crea un client di servizio di proprietà del progetto con un nome, capacità (omesse significano tutte e sei; ciascuna deve essere posseduta dal gestore, altrimenti 403), accesso (lettura, predefinito, o gestione) e una chiave JWK pubblica (OKP Ed25519, EC P-256 o RSA di almeno 2048 bit) e/o segreto vero. Il segreto è restituito una sola volta, solo qui. Al massimo 50 client attivi per organizzazione.
Gli agenti necessitano di ambito identità, identità live Gestisci, la propria concessione Gestisci con la capacità progetto sul progetto, e un ruolo amministratore live nell’organizzazione; una persona usa la sessione dashboard con project_id e una prova fresca (tipo service_client_change, soggetto l’id client o l’id progetto alla creazione) nel corpo. Un token di servizio è rifiutato con 403.
Un membro limitato agli schermi non collega agenti, non emette credenziali e non gestisce le persone del progetto: outside_screen_scope (chiedi al proprietario del progetto).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| project_id (opzionale, stringa) | Solo sessione dashboard. |
| proof (opzionale, DashboardProof) | |
| nome (opzionale, stringa) | minLength: 1 maxLength: 80 |
| capacità (opzionale, array) | |
| accesso (opzionale, stringa) | Gestire richiede una persona che possa approvare revisioni (403 approver_required). Consentito: "read", "propose", "manage" |
| key (opzionale, oggetto) | Una JWK pubblica: OKP Ed25519, EC P-256 o RSA di almeno 2048 bit. |
| segreto (opzionale, booleano) | Genera un segreto (solo creazione). |
| upload_scope (opzionale, UploadScope) | Ciò che un uploader può usare (docs/uploaders.md): le playlist di cui modifica le pagine e le cartelle media in cui carica. Le cartelle sono esattamente quelle elencate, mai le loro sottocartelle. Un id che al momento della scrittura non indica alcun oggetto attivo del progetto è invalid_request alla sua posizione; una successiva eliminazione lascia un id morto, che non concede nulla. L’ambito viene letto a ogni richiesta, quindi una modifica si applica alla successiva. |
Modello richiesta e risposte
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Il client di servizio. | ServiceClientResult (application/json) |
| 402 | feature_not_in_plan — un ambito di upload crea un uploader, e il piano del progetto non include gli uploader; required_plan indica il piano che li include. Restringere un ambito e rimuoverlo sono sempre consentiti. | Problema (application/problem+json) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | 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) |
Elencare gli account di sincronizzazione media nel progetto
Lists the project's media sync accounts, newest first (200 per page; next_cursor continues). Each shows its tenant and client id, its state and its last test; the client secret is never returned, only whether one is set and its last four characters.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| cursore | query | opzionale | Il next_cursor della pagina precedente. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-sync-accounts'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Gli account del progetto. | MediaSyncAccountList (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) |
Creare un account di sincronizzazione media nel progetto
Aggiunge un account che sincronizza in lettura. kind microsoft365 memorizza le credenziali dell’app Microsoft Entra propria del progetto, così le sincronizzazioni possono leggere una cartella SharePoint o OneDrive for Business: config.tenant_id è l’ID della directory o il dominio principale del tenant (common, organizations e consumers vengono rifiutati), config.client_id l’ID applicazione dell’app, e secret il valore di uno dei segreti client dell’app; l’app richiede l’autorizzazione dell’applicazione Microsoft Graph Sites.Selected (concessa su ogni sito) o Files.Read.All, con il consenso dell’amministratore.
Al posto di quei tre, config.connection_id indica una connessione Microsoft del progetto (createConnection), in entrambe le modalità, che accede e conserva il segreto. kind canva accetta solo un nome: l’account è pending_consent e la risposta porta authorize_url, un link monouso (valido fino a authorize_expires_at) che la persona titolare dell’account Canva apre, connessa a Canva, per collegarlo tramite l’integrazione Canva di screenRIG.
La concessione appartiene al progetto, quindi le sue sincronizzazioni sopravvivono alla persona che l’ha collegata.
Un server senza l’integrazione Canva risponde 409 canva_not_configured. kind dropbox funziona come canva: l’account è pending_consent e authorize_url è un link monouso che la persona titolare dell’account Dropbox apre, dopo aver effettuato l’accesso a Dropbox, per concedere l’accesso in sola lettura (files.metadata.read, files.content.read, account_info.read, sharing.read).
Passa attraverso l’app Dropbox di screenRIG, oppure attraverso l’app Dropbox propria del cliente quando config.app_key la indica (PKCE, quindi senza app secret; l’app deve elencare https://API_ORIGIN/api/dropbox/callback come URI di reindirizzamento).
Un server senza l’app Dropbox di screenRIG risponde 409 dropbox_not_configured a un account dropbox senza app_key. kind google_drive è subito ready e legge le cartelle condivise con config.service_account_email: l’account di servizio di screenRIG, oppure quello proprio del cliente quando secret è la chiave JSON di quell’account di servizio.
Una cartella condivisa con l’account di servizio di screenRIG si sincronizza solo quando un membro del progetto con un’email verificata l’ha condivisa o ne è il proprietario. Un server senza l’account di servizio di screenRIG risponde 409 google_drive_not_configured a un account google_drive senza chiave. Un segreto è sigillato a riposo e non viene mai restituito né scritto nei log. Aggiunge media_sync_account.created.
Un nuovo tentativo identico con la stessa Idempotency-Key restituisce lo stesso account (un nuovo tentativo Canva o Dropbox riceve un nuovo link).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| kind (obbligatorio, stringa) | Consentito: "microsoft365", "canva", "dropbox", "google_drive" |
| nome (obbligatorio, stringa) | minLength: 1 maxLength: 80 |
| config (opzionale, object) | Per microsoft365, tenant_id e client_id (entrambi) con secret, oppure connection_id da solo: l’ID di una connessione Microsoft di questo progetto. Per dropbox, app_key indica facoltativamente l’app Dropbox propria del cliente. Non accettato per canva o google_drive. |
| secret (opzionale, stringa) | Obbligatorio per microsoft365 con tenant_id e client_id: il valore di uno dei segreti client dell’app (non il suo ID), al massimo 1024 caratteri. Per google_drive, facoltativa: la chiave JSON dell’account di servizio Google Cloud proprio del cliente (type service_account), il cui client_email diventa il service_account_email dell’account; senza di essa l’account legge tramite l’account di servizio di screenRIG. Non accettata con connection_id né per canva o dropbox. minLength: 1 maxLength: 8192 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-sync-accounts'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato, con il segreto mascherato; un account Canva o Dropbox porta anche authorize_url. | MediaSyncAccountConnect (application/json); intestazioni: ETag, Cache-Control |
| 400 | invalid_request. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — il piano del progetto non include la sincronizzazione media; required_plan indica il piano che la include. | Problema (application/problem+json) |
| 409 | canva_not_configured (questo server non ha l’integrazione Canva; solo kind canva), dropbox_not_configured (nessuna app Dropbox di screenRIG e nessun config.app_key; solo kind dropbox), google_drive_not_configured (nessun account di servizio di screenRIG e nessuna chiave; solo kind google_drive), resource_conflict o idempotency_mismatch. | 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) |
Elencare le sincronizzazioni media nel progetto
Lists the project's media syncs, newest first (200 per page; next_cursor continues), optionally of one account_id or state. Each shows its source folder, the media folder it fills, its cadence, state, next run and the summary of its last run.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| cursore | query | opzionale | Il next_cursor della pagina precedente. |
| account_id | query | opzionale | Elenca solo le sincronizzazioni che leggono tramite questo account. |
| stato | query | opzionale | Elenca solo le sincronizzazioni in questo stato. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-syncs'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Le sincronizzazioni del progetto. | MediaSyncList (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) |
Creare una sincronizzazione media nel progetto
provider canva: legge il design (design è il suo id o il suo indirizzo canva.com/design/ID/...) tramite un account Canva connesso e memorizza la sincronizzazione, da eseguire ora.
Each run asks Canva for the design's last change and, when it moved, exports the pages (pages, default all; format png gives one image per page and mp4 one video) and imports them into the media folder, replacing the bytes of a page already imported under the same media id so the playlists that use it update; a page the design no longer has leaves play like a removed SharePoint file.
Un design che Canva non mostra più ferma la sincronizzazione nello stato error (errore di esecuzione design_unavailable) e mantiene i media.
Un design o una pagina che l’account non può vedere è 409 media_sync_source_refused. provider dropbox: url è l’indirizzo della cartella in Dropbox (https://www.dropbox.com/home/...), il link di una cartella condivisa che l’account collegato ha aggiunto al proprio Dropbox, oppure un percorso che inizia con /; viene letto una sola volta tramite un account Dropbox collegato e la sincronizzazione viene memorizzata, da eseguire subito.
Le cartelle in uno spazio del team vengono lette dalla radice del team. Ogni esecuzione riprende dalla posizione salvata di Dropbox nella cartella, quindi vengono lette solo le modifiche.
Una cartella che l’account non può aprire è 409 media_sync_source_refused; un account la cui connessione Dropbox non accetta più è 409 dropbox_reconnect_required. provider google_drive: url è l’indirizzo Google Drive della cartella (https://drive.google.com/drive/folders/ID) o il suo ID, condivisa (basta il ruolo Lettore) con il service_account_email dell’account.
Ogni esecuzione elenca la cartella e confronta il checksum di ogni file. I file di Google Documenti, Fogli e Presentazioni vengono saltati come unsupported_type. Una cartella che l’indirizzo non riesce ad aprire è 409 media_sync_source_refused.
Tramite l’account di servizio di screenRIG la cartella deve essere condivisa o di proprietà di un membro del progetto con un’email verificata (403 media_sync_sharer_not_member), e ogni esecuzione lo verifica di nuovo (l’errore di esecuzione sharer_not_member ferma la sincronizzazione nello stato error). provider sharepoint: legge l’indirizzo della cartella tramite l’account (un indirizzo di sito SharePoint come https://TENANT.sharepoint.com/sites/SITE/LIBRARY/FOLDER, oppure un link di condivisione; l’app deve poterlo vedere: Sites.Selected richiede una concessione sul sito, un link di condivisione richiede Files.Read.All) e memorizza la sincronizzazione, da eseguire subito. folder_id è la cartella media in cui vengono salvati i file; senza di esso la sincronizzazione ne crea una con il nome della cartella di origine.
Each run imports the images (png, jpeg, webp, gif), videos (mp4, webm) and audio (mp3) directly in the source folder, replaces the bytes of a file that changed under the same media id so playlists that use it update, and takes a file removed at the source out of play: its media is deleted, or, while screens still hold it, moved to a Removed subfolder and deleted later.
Subfolders are ignored; other files are listed as skipped with the reason. every is the seconds between runs, 300 to 86400, default 900. A folder the provider refuses is 409 media_sync_source_refused and one it cannot reach is 500 media_sync_source_unavailable; nothing is stored. Appends media_sync.created.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| provider (obbligatorio, stringa) | Consentito: "sharepoint", "canva", "dropbox", "google_drive" |
| account_id (obbligatorio, stringa) | Un account del tipo corrispondente al provider: microsoft365 per sharepoint, canva, dropbox o google_drive. |
| url (opzionale, stringa) | sharepoint (obbligatorio): l’indirizzo SharePoint della cartella o il link di condivisione, letto una sola volta per trovare la cartella e non memorizzato. dropbox (obbligatorio): l’indirizzo Dropbox della cartella, il link di una cartella condivisa che l’account ha aggiunto, oppure un percorso che inizia con /. google_drive (obbligatorio): l’indirizzo Google Drive della cartella o il suo ID. maxLength: 4096 |
| design (opzionale, stringa) | canva (obbligatorio): l’id del design o il suo indirizzo canva.com/design/ID/... maxLength: 2048 |
| pages (opzionale, array) | canva: le pagine da sincronizzare; omettilo per tutte le pagine. Un design che in seguito ha meno pagine toglie dalla riproduzione quelle mancanti. |
| format (opzionale, stringa) | canva: png dà un’immagine per pagina; mp4 un video delle pagine. Allowed: "png", "mp4" default: "png" |
| folder_id (opzionale, stringa) | La cartella media in cui arrivano i file. Omettila per crearne una con il nome della cartella di origine. |
| every (opzionale, intero) | Secondi tra un’esecuzione e l’altra; 900 per impostazione predefinita. minimum: 300 maximum: 86400 |
| nome (opzionale, stringa) | Per impostazione predefinita, il nome della cartella di origine. minLength: 1 maxLength: 80 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-syncs'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creata, da eseguire ora. | MediaSync (application/json); intestazioni: ETag, Cache-Control |
| 400 | invalid_request. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — il piano del progetto non include la sincronizzazione media; required_plan indica il piano che la include. | Problema (application/problem+json) |
| 403 | media_sync_sharer_not_member — una cartella Google Drive letta tramite l’account di servizio di screenRIG non è stata condivisa né è di proprietà di un membro del progetto con un’email verificata. | Problema (application/problem+json) |
| 409 | media_sync_source_refused (il provider ha rifiutato l’app, la sua autorizzazione o la cartella), dropbox_reconnect_required (l’account Dropbox deve essere collegato di nuovo), dropbox_not_configured, google_drive_not_configured, resource_conflict (la stessa origine è già sincronizzata in quella cartella media) o idempotency_mismatch. | Problema (application/problem+json) |
| 500 | media_sync_source_unavailable: il provider non è raggiungibile oppure ha risposto con un errore. | 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 link flotta nel progetto
Elenca i link della flotta del progetto, dal più vecchio al più recente (al massimo 50). Sotto Gestisci effettivo ogni URL è vuoto e url_redacted è true, poiché l’URL crea schermi.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/fleet-links'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | I fleet link del progetto. | FleetLinkList (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 collegamento flotta nel progetto
Crea un link fleet: un URL Player (https://play.<domain>/player/#fleet=<secret>) che trasforma ogni dispositivo che lo apre nel proprio schermo in questo progetto, senza codice di associazione. Inseriscilo in un gestore dispositivi, come un’app kiosk Google Admin console.
Ogni nuovo schermo riceve i tag, i campi e la playlist del link, e un’etichetta dal dispositivo (prima l’ID asset dell’amministratore, poi la posizione), altrimenti la prossima etichetta predefinita. Un lettore che già possiede uno schermo non ne crea un altro: la sua chiave resta l’identità dello schermo tra ricariche e riavvii.
Dopo un powerwash o una reinstallazione, un dispositivo che segnala il numero di serie o il DUID di uno schermo creato da un link flotta di questo progetto recupera quello schermo (screen.recovered) invece di crearne uno nuovo, una volta che la vecchia chiave è stata silente per dieci minuti.
Il segreto viaggia nel frammento URL, che i browser non inviano mai al server. max_screens limita gli schermi che il link crea ed expires_at termina il link in quel momento, come fa la sua disattivazione. Un’organizzazione ha al massimo 50 link di flotta in tutti i suoi progetti (fleet_link_limit_reached). Aggiunge fleet_link.created.
Un retry esatto con la stessa Idempotency-Key restituisce questa stessa risposta per ventiquattro ore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| label (obbligatorio, stringa) | minLength: 1 maxLength: 80 |
| abilitato (opzionale, booleano) | Predefinito a true. |
| tag (opzionale, ScreenTags) | Tag selettore flotta, da 0 a 16 tag unici esatti, ciascuno conforme alla grammatica dei tag media. Su ScreenPatch l’array sostituisce l’intero set e un array vuoto lo cancella; un tag duplicato o malformato è invalid_request. Cambiare i tag aggiorna la revisione dello schermo (protetta da If-Match) e aggiunge screen.updated con details.tags; non modifica mai la revisione del manifesto. I tag non sono mai nel manifesto di runtime e mai nell’autorizzazione. |
| fields (opzionale, oggetto) | Campi con cui parte ogni schermo creato dal link; i posizionamenti delle card li leggono tramite {screen.field.NAME}. |
| playlist_id (opzionale, stringa) | |
| max_screens (opzionale, intero) | minimo: 1 massimo: 10000 |
| expires_at (opzionale, stringa) | Quando il link scade (RFC 3339); un link oltre tale momento non crea né recupera schermi. Se assente, non scade mai. Un orario già trascorso viene accettato e fa scadere subito il link. format: "date-time" |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/fleet-links'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato, con il suo URL. | FleetLink (application/json); intestazioni: Cache-Control |
| 400 | invalid_request, incluso un playlist_id sconosciuto o un tag o campo malformato. | Problema (application/problem+json) |
| 409 | fleet_link_limit_reached o idempotency_mismatch. | 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 i webhook nel progetto
Elenca le notifiche webhook del progetto nel formato webhook, dalla meno recente (al massimo 50); GET /api/notifications elenca ogni canale. Il segreto di firma non viene mai restituito qui. Richiede la capability project; una credenziale limitata ai report viene rifiutata con 403 forbidden, perché la risposta include gli URL di ricezione.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/webhooks'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | I webhook del progetto. | WebhookList (application/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) |
Crea webhook nel progetto
Crea un webhook che riceve gli eventi durevoli del progetto come POST HTTPS firmati. L’URL deve essere https su un host pubblico Internet: un IP letterale o ogni risposta DNS attuale del nome deve essere pubblica (privati, loopback, link-local, CGNAT, IPv6 fuori 2000::/3, documentazione e altri intervalli riservati sono rifiutati con webhook_url_rejected).
La porta deve essere 443 (default) o 8443, altrimenti webhook_url_rejected. L’host è risolto e controllato di nuovo prima di ogni consegna e la connessione è stabilita esattamente all’indirizzo controllato, quindi una risposta DNS che cambia dopo non può reindirizzare le consegne. event_types elenca tipi esatti di eventi (screen.online) o prefissi terminanti in .* (screen.*).
Un’organizzazione ha al massimo 50 notifiche su tutti i canali (webhook_limit_reached). Il server genera il segreto di firma e lo restituisce solo in questa risposta e in rotate-secret; conservalo. Un nuovo tentativo identico con la stessa Idempotency-Key restituisce questa stessa risposta, segreto incluso, per ventiquattro ore.
La consegna parte dal primo evento successivo a notification.created.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| url (obbligatorio, stringa) | URL https su host pubblico Internet, porta 443 (default) o 8443. Nessun userinfo o frammento. maxLength: 2048 formato: "uri" |
| event_types (obbligatorio, WebhookEventTypes) | Tipi di evento esatti come screen.online, oppure prefissi che terminano con .* come screen.* (ogni tipo che inizia con screen.). notification.test non viene mai distribuito da una sottoscrizione; viene inviato solo da POST /api/webhooks/{id}/test. |
| abilitato (opzionale, booleano) | predefinito: true |
| descrizione (opzionale, stringa) | maxLength: 200 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/webhooks'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato. Il segreto è mostrato solo qui e su ruota-segreto. | WebhookWithSecret (application/json); intestazioni: Cache-Control |
| 400 | invalid_request o webhook_url_rejected. | Problema (application/problem+json) |
| 409 | webhook_limit_reached, idempotency_mismatch o resource_conflict quando il progetto non appartiene a nessuna organizzazione. | 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 alert nel progetto
Elenca gli alert degli schermi del progetto: uno per schermo e condizione finché dura (open) e quelli terminati entro il periodo di conservazione degli eventi del piano (resolved).
Un alert si apre quando arriva l’evento della sua condizione (screen.offline, un cambiamento di salute display_disconnected, temperature_high o on_battery, screen.storage_shortfall, uno screen.manifest_upgrade bloccato, uno screen.status_changed di livello error, uno screen.glass_changed con verdetto bloccato, vuoto o congelato) e si risolve con l’evento di ripristino; crashing è un avviso, non un alert. counts.attention conta gli alert aperti che non sono riconosciuti, posticipati o silenziati, il numero mostrato dal dashboard.
Uno schermo che si riavvia per un riavvio inviato dal backend non apre alert screen_offline o display_disconnected finché il riavvio non è completato o fino a dieci minuti dopo l'invio; una condizione che persiste allora apre il suo alert in quel momento. Gli alert aperti vengono per primi, dal più recente; passa next_cursor come prima per la pagina successiva.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| formato | query | opzionale | json (predefinito) restituisce il report come JSON. csv, xlsx e pdf restituiscono le stesse righe come allegato (ogni pagina di un report a pagine, fino a 50000 righe). |
| stato | query | opzionale | |
| screen_id | query | opzionale | |
| before | query | opzionale | next_cursor della pagina precedente. |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alerts'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di alert. | AlertList (application/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 silenziamenti alert nel progetto
Elenca i silenziamenti del progetto non ancora terminati, a partire da quello che termina prima (al massimo 50).
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alert-mutes'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | I silenziamenti attivi del progetto. | AlertMuteList (application/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) |
Crea silenziamento alert nel progetto
Silenzia gli schermi per manutenzione fino a un istante non oltre 30 giorni più avanti: gli schermi indicati da screen_ids e ogni schermo con uno qualsiasi dei tag in tags al momento in cui un avviso deve essere inviato. I loro alert continuano ad aprirsi e a risolversi, contrassegnati con muted, e non richiedono mai attenzione; gli avvisi di ogni notifica che li riguardano vengono saltati (muted).
Un’organizzazione ha al massimo 50 silenziamenti attivi in tutti i suoi progetti (alert_mute_limit_reached). Aggiunge alert_mute.created.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| screen_ids (opzionale, array) | |
| tag (opzionale, ScreenTags) | Tag selettore flotta, da 0 a 16 tag unici esatti, ciascuno conforme alla grammatica dei tag media. Su ScreenPatch l’array sostituisce l’intero set e un array vuoto lo cancella; un tag duplicato o malformato è invalid_request. Cambiare i tag aggiorna la revisione dello schermo (protetta da If-Match) e aggiunge screen.updated con details.tags; non modifica mai la revisione del manifesto. I tag non sono mai nel manifesto di runtime e mai nell’autorizzazione. |
| until (obbligatorio, string) | Al massimo 30 giorni più avanti. format: "date-time" |
| note (facoltativo, string) | maxLength: 200 |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alert-mutes'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creato. | AlertMute (application/json) |
| 409 | alert_mute_limit_reached o idempotency_mismatch. | 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 notifiche nel progetto
Elenca le notifiche dell’organizzazione che coprono il progetto, di ogni canale, dalla meno recente (al massimo 50). status, failing_since, last_success_at e last_failure_at sono quelli di questo progetto. Il segreto di firma di un webhook non viene mai restituito qui.
Richiede la capability project; una credenziale limitata ai report viene rifiutata con 403 forbidden, perché la risposta include gli URL di ricezione e i destinatari.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notifications'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Le notifiche del progetto. | NotificationList (application/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) |
Crea notifica nel progetto
Crea una notifica. channel email invia a recipients (il proprietario, o gli user_ids dei membri del progetto); channel webhook esegue una POST firmata a url, che segue le regole degli URL webhook (https su un host Internet pubblico, porta 443 o 8443, altrimenti webhook_url_rejected). conditions elenca i cambi di stato dello schermo che la attivano; una notifica email ne richiede almeno uno, un webhook richiede conditions o event_types. screen_tags limita conditions agli schermi con uno qualsiasi di quei tag; vuoto significa ogni schermo, oppure audience indica quali schermi con le regole di un pubblico di campagna. min_severity e severity filtrano e valutano gli avvisi, e active_hours li trattiene o li scarta fuori dalle sue finestre.
Una condizione invia un avviso solo dopo essere durata per hold_minutes (predefinito 10), e quando si risolve dopo l’invio di un avviso ne segue uno di risoluzione. La notifica copre solo questo progetto; un’organizzazione ha al massimo 50 notifiche, escluse quelle predefinite create dal sistema (notification_limit_reached).
Il segreto di firma di un webhook viene generato dal server e restituito solo in questa risposta e in rotate-secret; conservalo. Un nuovo tentativo identico con la stessa Idempotency-Key restituisce questa stessa risposta, segreto incluso, per ventiquattro ore. Gli avvisi partono dal primo evento successivo a notification.created.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| channel (obbligatorio, string) | Consentiti: "email", "webhook", "slack", "teams", "pagerduty", "telegram" |
| descrizione (opzionale, stringa) | Un nome per le persone. maxLength: 200 |
| conditions (facoltativo, NotificationConditions) | |
| screen_tags (facoltativo, ScreenTags) | Tag selettore flotta, da 0 a 16 tag unici esatti, ciascuno conforme alla grammatica dei tag media. Su ScreenPatch l’array sostituisce l’intero set e un array vuoto lo cancella; un tag duplicato o malformato è invalid_request. Cambiare i tag aggiorna la revisione dello schermo (protetta da If-Match) e aggiunge screen.updated con details.tags; non modifica mai la revisione del manifesto. I tag non sono mai nel manifesto di runtime e mai nell’autorizzazione. |
| audience (opzionale, CampaignAudience) | Quali schermi una campagna prende di mira: esattamente uno tra all (ogni regola corrisponde), any (almeno una corrisponde), tag (lo schermo ha il tag), screen_id (quello schermo) o folder (gli schermi in quella cartella schermi e in ogni cartella al suo interno, GET /api/screen-folders; la cartella deve esistere). Le regole si annidano al massimo su 3 livelli e un’audience ha al massimo 500 regole. {"all": []} è ogni schermo del progetto; altrove all e any elencano almeno una regola. |
| min_severity (opzionale, NotificationSeverity) | La gravità di un avviso, dalla meno grave. Un avviso aperto ha la gravità della sua condizione: error per screen_offline e warning per ogni altra condizione, salvo diversa indicazione della severity della notifica. Un avviso risolto e un test sono info. Consentiti: "info", "warning", "error" |
| severity (opzionale, NotificationSeverityOverrides) | Da condizione a gravità per questa notifica, ad esempio {"not_playing": "error"}. Conta per min_severity ed è la gravità che Teams e PagerDuty mostrano per la condizione. Una condizione non elencata mantiene il valore predefinito. In una patch un oggetto vuoto, come null, azzera ogni override. |
| active_hours (opzionale, NotificationActiveHours) | Quando partono gli avvisi aperti: le finestre (screenrig.schedule/v1), lette in timezone. Un avviso in scadenza mentre sono chiuse attende la successiva apertura (outside hold, il valore predefinito) e parte allora se la sua condizione persiste, quindi una condizione che rientra prima non invia nulla, oppure viene saltato (outside drop; last_error outside_hours). Un avviso di risoluzione per un avviso aperto che è stato inviato parte sempre, dentro gli orari o no, e un test li ignora. crashing viene trattenuto o scartato come qualsiasi altra condizione. Gli orari giudicano un avviso quando parte la prima volta; uno fallito viene ritentato con la cadenza consueta a prescindere dagli orari. Aggiungere, modificare o rimuovere gli orari fa rigiudicare subito gli avvisi trattenuti per i vecchi. |
| reach_drop (opzionale, NotificationReachDrop) | Il calo più piccolo della copertura di una campagna per cui viene inviato un avviso reach_dropped: screens è il minor numero di schermi persi (default 1) e percent, se impostato, la quota più piccola degli schermi che la campagna raggiungeva quando è stata pubblicata; un calo deve soddisfare entrambi. Un calo più piccolo non mette in coda alcun avviso, e un avviso in coda il cui calo si è ridotto al di sotto della soglia alla scadenza viene saltato (condition_cleared). Solo con la condizione reach_dropped; su una notifica senza di essa, invalid_request. |
| hold_minutes (facoltativo, integer) | Quanto deve durare una condizione prima di inviare un avviso. crashing non ha mai un periodo di attesa. default: 10 minimum: 0 maximum: 1440 |
| recipients (facoltativo, NotificationRecipients) | Solo e-mail. owner (chi possiede il progetto nel momento in cui viene inviato un avviso) oppure lo user_id di una persona che è membro del progetto; uno user_id che non appartiene a un membro restituisce invalid_request. A ciascuno viene inviata un'e-mail al suo indirizzo verificato. Chi nel frattempo ha lasciato il progetto o non ha un indirizzo verificato viene saltato. |
| url (opzionale, stringa) | Solo webhook: URL https su un host Internet pubblico, porta 443 (predefinita) oppure 8443. Nessun userinfo né frammento. maxLength: 2048 format: "uri" |
| event_types (facoltativo, NotificationEventTypes) | Solo webhook. Eventi di progetto inviati inoltre con POST man mano che si verificano, esattamente come li invia un webhook: tipi esatti come screen.online, oppure prefissi che terminano con .* come screen.*. notification.test non viene mai distribuito. |
| destination (opzionale, NotificationDestination) | Solo Slack, Teams, PagerDuty e Telegram; obbligatorio per essi. La credenziale nella forma in cui il servizio la emette: slack, l’URL del webhook in entrata (hooks.slack.com); teams, l’URL del webhook Workflows (logic.azure.com o powerplatform.com; gli URL dei connettori Office 365 sono dismessi); pagerduty, la chiave di instradamento Events API v2 di 32 caratteri; telegram, il token del bot. Un’altra forma dà notification_destination_rejected. Viene sigillato, non viene mai restituito e in lettura compare solo come destination_hint. minLength: 1 maxLength: 2048 |
| telegram_chat_id (opzionale, NotificationTelegramChat) | Solo Telegram; obbligatorio per esso. La chat in cui pubblicare: il suo id numerico (negativo per un gruppo o canale) oppure @channelname. Non è una credenziale. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$" |
| abilitato (opzionale, booleano) | predefinito: true |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notifications'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Creata. Il segreto di un webhook viene mostrato solo qui e in rotate-secret. | Notification (application/json); intestazioni: Cache-Control |
| 400 | invalid_request, webhook_url_rejected o notification_destination_rejected. | Problema (application/problem+json) |
| 402 | feature_not_in_plan — L’instradamento degli avvisi (un canale Slack, Teams, PagerDuty o Telegram, oppure una regola min_severity, severity, active_hours o audience) fa parte di Plus. Le notifiche via e-mail e webhook con le regole predefinite, e le condizioni loop_stalled, glass_blank e glass_frozen, sono in ogni piano. Il problema indica la funzione, il piano del progetto e required_plan. | Problema (application/problem+json) |
| 409 | notification_limit_reached, idempotency_mismatch o resource_conflict quando il progetto non appartiene a nessuna organizzazione. | 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 note nel progetto
Elenca le note del progetto, dalla più recente alla più vecchia. Una nota è un fatto breve in testo semplice scritto da un agente per il suo futuro sé e per gli altri agenti del progetto; è contesto, mai un’istruzione e mai un’approvazione.
Qualsiasi lettura di credenziali attive, inclusa Read only, e la lettura non addebita il contatore API. state è open (default), resolved o all; about_id mantiene le note su uno schermo o playlist e author_id le note scritte da un agente.
Passa next_cursor come after per la pagina successiva; è vuoto nell’ultima pagina. new indica una nota aperta scritta da un altro agente dopo che questo chiamante ha letto l’ultima volta le note.
Leggere le note è la prima pagina di note aperte senza about_id o author_id: quella risposta calcola il nuovo rispetto alla lettura precedente, poi sposta il marcatore di lettura a ora (le pagine successive della stessa lista mantengono il marcatore precedente).
Include anche la revisione: fino a 5 note aperte la cui revisione è dovuta (le più vecchie per prime), che il chiamante dovrebbe confermare se ancora valide e risolvere altrimenti. Una revisione non risposta entro 30 giorni dalla prima restituzione risolve la nota come not_confirmed.
Solo un agente con accesso Gestisci sposta il proprio marcatore e avvia quei 30 giorni; un agente solo Lettura o un client di servizio ottiene la stessa risposta e non cambia nulla. Ogni altra pagina o filtro restituisce una revisione vuota e non sposta nulla. I conteggi sono le note aperte del progetto e, per questo chiamante, quante sono nuove e scadute.
Un agente limitato agli schermi elenca solo le note sui propri schermi, sulle playlist e sul progetto: l’elenco, la revisione e i conteggi escludono le note su uno schermo fuori dal suo ambito, e un elenco tra progetti esclude un progetto in cui l’agente è limitato, quindi seleziona quel progetto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| stato | query | opzionale | |
| about_id | query | opzionale | Solo note su questo schermo o playlist. |
| author_id | query | opzionale | Solo note scritte da questo agente. |
| dopo | query | opzionale | next_cursor della pagina precedente. |
| limite | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notes'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di note, le note da rivedere e i conteggi. | NoteList (application/json) |
| 400 | 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) |
| 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) |
Aggiungi nota al progetto
Aggiunge una nota per gli agenti del progetto: un fatto su cui un altro agente agirebbe, mai un report di progresso, chat o segreto. Il corpo è da 1 a 2000 caratteri di testo semplice dopo il trim e può coprire più righe.
Testo contenente una credenziale (token, chiavi, chiavi private, password in URL) è rifiutato con note_contains_credential e testo che appare come istruzione a un modello con note_rejected; nulla viene memorizzato e il dettaglio non ripete mai il testo. Riguardo ai nomi uno schermo (incluso archiviato) o playlist del progetto, altrimenti not_found. ttl_seconds (3600 a 31536000) crea una nota temporanea che si risolve come scaduta; una nota senza questo parametro viene sottoposta a revisione 90 giorni dopo l’aggiunta o l’ultima conferma. Sostituisce i nomi di una nota aperta che questa sostituisce: si risolve come sostituita nella stessa transazione (note_not_open quando è già risolta).
Un corpo il cui testo normalizzato (ripulito, con gli spazi compressi e in minuscolo) e il cui campo about corrispondono a una nota aperta conferma quella nota e la restituisce con 200 invece di aggiungerne una; non viene aggiunto alcun evento note.added. Un’organizzazione contiene al massimo 200 note aperte in tutti i suoi progetti; la 201ª è note_limit_reached, il cui dettaglio nomina fino a 5 note da risolvere per prime.
Aggiunge note.added (e note.resolved per una nota sostituita) senza il testo. Un retry esatto con la stessa Idempotency-Key restituisce la prima risposta per ventiquattro ore.
Per un agente limitato agli schermi (docs/screen-scope.md) un about che è uno schermo fuori dal suo ambito o sconosciuto al progetto, o un replaces che nomina una nota su uno schermo fuori dal suo ambito, è outside_screen_scope (403) e non viene memorizzato nulla.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| body (obbligatorio, stringa) | Testo semplice, da 1 a 2000 caratteri dopo il trim; i ritorni a capo si mantengono. minLength: 1 maxLength: 2000 |
| informazioni (opzionale, in linea) | |
| ttl_seconds (opzionale, intero) | Scadenza della nota dopo questo intervallo. Senza, la nota viene riesaminata dopo 90 giorni. minimo: 3600 massimo: 31536000 |
| sostituisce (opzionale, stringa) | Una nota aperta che questa sostituisce; è risolta come sostituita. pattern: "^(?:(?:stage|qa|development)_)?nte_[A-Za-z0-9_-]{16,24}$" |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notes'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Aggiunto. | Nota (application/json) |
| 200 | Il testo ha corrisposto a una nota aperta, che è confermata e restituita. | Nota (application/json) |
| 400 | 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) |
| 403 | outside_screen_scope - il chiamante è limitato agli schermi e lo schermo, la cartella di schermi, il selettore o il pubblico che la richiesta nomina o raggiunge è fuori da essi (docs/screen-scope.md). Un id fuori dall’ambito e un id che non esiste ricevono la stessa risposta; errors[0].screen_scope riporta l’ambito del chiamante, e la scrittura viene rifiutata per intero, mai ridotta. | Problema (application/problem+json) |
| 404 | 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) |
| 409 | note_not_open, note_limit_reached o idempotency_mismatch. | Problema (application/problem+json) |
| 422 | note_contains_credential o note_rejected. | 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) |
Stato assistenza nel progetto
Disponibilità e orari per ogni progetto attivo. chat_allowed è true per ogni progetto attivo, incluso Standard. human_available è true quando una persona può unirsi alla chat su richiesta (Education, Premium ed Enterprise); Standard e Plus hanno documentazione e assistenza AI. staffed indica se lo staff è nel suo orario in questo momento. Luna risponde subito su ogni piano.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/status'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato assistenza. | SupportStatus (application/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 conversazioni di assistenza nel progetto
Conversazioni del progetto, le più recenti per prime, massimo 100. Il conteggio dei messaggi non letti dallo staff è per persona o agente autenticato.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| before | query | opzionale | ID conversazione dal cursore successivo della pagina precedente. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/conversations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Risultato assistenza. | SupportConversationList (application/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) |
Crea conversazione assistenza nel progetto
Disponibile su ogni piano; Luna risponde per prima, subito. Dove una persona può unirsi (human_available nello stato dell’assistenza), la richiesta mette in pausa Luna per lo staff; su Standard e Plus viene ignorata e Luna risponde. Controllato prima dell’archiviazione o Slack.
Un messaggio iniziale sotto gli 8 caratteri o 3 parole restituisce submission_too_short; uno che non è domanda o problema restituisce submission_unclear; spam, testo con molti link, prompt injection e testo non sicuro restituiscono submission_rejected. Il testo rifiutato non viene conservato né inviato a Luna, e il dettaglio del problema non lo ripete mai.
Testi con forma di credenziali diversi da credenziali ScreenRig (token bearer, chiavi cloud e API, chiavi private) sono sostituiti con [redacted] prima della memorizzazione; materiale di credenziali ScreenRig restituisce invalid_request. Una nuova conversazione inizia un thread Slack; i follow-up restano in esso. Richieste con la stessa chiave vengono riprodotte per 24 ore, incluso un rifiuto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| Idempotency-Key | intestazione | obbligatorio |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| body (obbligatorio, stringa) | minLength: 1 maxLength: 4000 |
| human_requested (opzionale, booleano) | Chiedi una persona: mette in pausa Luna e attende lo staff. Conta solo dove una persona può unirsi (human_available: Education, Premium ed Enterprise); su Standard e Plus viene ignorato e Luna risponde. predefinito: false |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/conversations'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 201 | Risultato assistenza. | SupportSubmission (application/json) |
| 422 | Il messaggio è stato rifiutato dallo screening: submission_too_short o submission_unclear (solo il messaggio iniziale) o submission_rejected. Il dettaglio non ripete mai il testo. | 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 recensioni nel progetto
Le revisioni del progetto (docs/reviews.md): modifiche a playlist e schermi proposte con accesso Proposta, e per una rete pubblicitaria le creatività inviate dagli acquirenti (tipo ad_creative).
I più recenti prima, al massimo limit (default 50, massimo 100) per pagina; passa next_cursor come cursore con gli stessi filtri. state pending (default), decided (ogni altro stato) o all; kind restringe a un tipo.
Una sessione dashboard legge ogni tipo; un bearer legge i tipi coperti dalle sue capacità (playlist per playlist_change, schermi per screen_change, pubblicità per ad_creative), e un tipo che non può leggere è una pagina vuota. pending_count conta le revisioni in sospeso di ogni tipo che il chiamante vede.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| stato | query | opzionale | |
| kind | query | opzionale | |
| limite | query | opzionale | |
| cursore | query | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reviews'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Una pagina di revisioni. | ReviewList (application/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) |
Progetto Scoped_get Card Data
Restituisce il documento e la sua revisione. L’ETag è la revisione, per If-Match sulla prossima scrittura.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| 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. |
| key | path | obbligatorio | Chiave dati scheda. Non può iniziare con feed:. |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Documento dati scheda | CardDataEntry (application/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) |
Progetto Scoped_put Card Data
Crea o sostituisce un documento dati scheda. Quando le posizioni delle schede nelle playlist del progetto vincolano la chiave, il documento deve contenere solo le proprietà dinamiche di ogni scheda vincolata e validare contro di esse; altrimenti la scrittura è rifiutata con card_data_invalid nominando la scheda e il percorso della proprietà, e nulla cambia. Una chiave non vincolata ad alcuna posizione accetta qualsiasi oggetto JSON.
Ogni stringa che inizia con media: è un riferimento a contenuti multimediali, media:<id>, che una scheda deve disegnare (una foto); su qualsiasi chiave deve nominare un’immagine pronta e approvata in questo progetto, al massimo 256 media distinti per documento, o la scrittura è rifiutata con card_media_invalid che nomina il percorso proprietà e media_id.
Gli schermi il cui contenuto legge la chiave possono quindi recuperare quei contenuti multimediali da GET /media/{media_id}. Gli schermi che mostrano un posizionamento che legge la chiave ricevono screen.card_data_changed e lo recuperano nuovamente in loco; il registro del progetto registra kv.updated con una risorsa card_data_entry, che non raggiunge mai un lettore.
Limiti, quote, misurazioni, revisioni e idempotenza sono quelli dell’archivio K/V dell’applicazione.
Anche le scritture di agenti e webhook hanno un limite di frequenza, per organizzazione in base al piano (Standard e Plus 60 al minuto, Education e Premium 600, Enterprise 3.000) e 60 al minuto per chiave su ogni piano; una scrittura oltre il limite viene rifiutata con rate_limited e Retry-After e non viene misurata.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| 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. |
| key | path | obbligatorio | Chiave dati scheda. Non può iniziare con feed:. |
| If-Match | intestazione | opzionale | Revisione positiva opzionale della risorsa. Ometti per creare o sovrascrivere una chiave; 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 |
|---|---|
| documento (obbligatorio, oggetto) | Il documento dati della scheda: un oggetto JSON di massimo 1 MiB. Quando un posizionamento di scheda lega la chiave, contiene solo le proprietà dinamiche di quella scheda. Una stringa che inizia con media: è un riferimento multimediale, media:<id>, che nomina un’immagine pronta e approvata in questo progetto. |
| expires_at (opzionale, stringa) | Scadenza assoluta; i dati omessi non scadono mai. formato: "date-time" |
| ttl_seconds (opzionale, intero) | TTL dalla prima scrittura confermata. Si esclude a vicenda con expires_at. Un nuovo tentativo conserva la scadenza originale. Omettere entrambi cancella la scadenza. Dimensionalo sulla pianificazione di chi scrive: quando il documento di una scheda scade senza alcuna scrittura che lo rinnovi mentre uno schermo mostra la scheda, la scheda resta vuota e la condizione di notifica card_data_stale lo segnala al progetto, quindi un job fermo viene notato. minimum: 1 maximum: 31536000 |
Modello richiesta e risposte
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Documento dati scheda | CardDataEntry (application/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) |
Progetto Scoped_delete Card Data
Elimina un documento dati carta. Una carta associata alla chiave è nascosta sul vetro finché un documento non viene riscritto.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| 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. |
| key | path | obbligatorio | Chiave dati scheda. Non può iniziare con feed:. |
| 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]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 204 | Eliminato | nessun corpo |
| 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) |
Progetto Scoped_get Feed
Legge un documento feed di terze parti condiviso: lo stesso documento che una scheda integrata con gli stessi parametri legge (docs/feeds.md).
I parametri di query vengono normalizzati nella chiave di feed della scheda, indicata dall’intestazione ScreenRig-Feed-Key: weather, airquality e alerts accettano lat e lon (arrotondati a una cella di 0,25 gradi); earthquakes lat, lon, radius_km (da 10 a 20000, 500 per impostazione predefinita), min_magnitude (da 0 a 9, 2,5 per impostazione predefinita) e hours (da 1 a 168, 24 per impostazione predefinita); cyclones basins (separati da virgole at, ep, cp, wp; tutti per impostazione predefinita) e facoltativamente lat, lon e radius_km (le tempeste vicino a quel luogo); tides station (un ID di stazione di previsione delle maree NOAA, come 9414290) oppure lat e lon (la stazione più vicina entro 100 km, altrimenti invalid_request); launches nessun parametro (i prossimi lanci nel mondo); rates base (una valuta di riferimento BCE, EUR per impostazione predefinita); crypto symbols (ID CoinGecko o ticker, separati da virgole, al massimo 20) e currency (usd per impostazione predefinita); headlines url (un URL RSS o Atom http o https); drugalerts (screenrig.drugalerts/v1) i rapporti di richiamo recenti di un paese: country (us, ca o gb, obbligatorio) e category (drug, il predefinito, o food); respiratory (screenrig.respiratory/v1) l’attività settimanale di influenza, COVID-19 e VRS di un luogo: country (us o gb, obbligatorio) e region (uno stato, territorio o DC degli USA per nome o codice postale, oppure l’Inghilterra o una regione dell’UKHSA; il paese se vuoto).
La richiesta non chiama mai il provider. 200 è il documento (schema, fetchedAt, attribution e i campi della famiglia, come definiti dal contratto delle card); il suo ETag è lo sha256 dei byte e If-None-Match risponde 304; Cache-Control max-age dura fino al prossimo fetch programmato. 202 significa nessun documento ancora: la domanda di lettura è registrata e il feed worker recupera la chiave entro circa un minuto (Retry-After).
Una lettura API mantiene una chiave recuperata per 24 ore. Un’organizzazione registra al massimo 50 nuove chiavi al giorno in tutti i suoi progetti (rate_limited oltre). Una famiglia senza origine su questa distribuzione risponde not_found.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| 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. |
| famiglia | path | obbligatorio | La famiglia di feed. |
| lat | query | opzionale | |
| lon | query | opzionale | |
| radius_km | query | opzionale | |
| min_magnitude | query | opzionale | terremoti: magnitudo minima. |
| ore | query | opzionale | terremoti: finestra in ore. |
| bacini | query | opzionale | cicloni: separati da virgola at, ep, cp, wp. |
| station | query | opzionale | tides: un ID di stazione di previsione delle maree NOAA, come 9414290. Senza di esso, lat e lon scelgono la stazione più vicina entro 100 km. |
| base | query | opzionale | |
| simboli | query | opzionale | |
| valuta | query | opzionale | |
| url | query | opzionale | |
| country | query | opzionale | drugalerts: us, ca o gb. respiratory: us o gb. Entrambi lo richiedono. |
| category | query | opzionale | drugalerts: drug (predefinito) o food. |
| region | query | opzionale | respiratory: uno stato, territorio o DC degli USA per nome o codice postale, oppure l’Inghilterra o una regione dell’UKHSA; il paese se vuoto. |
| If-None-Match | intestazione | opzionale |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feeds/FAMILY'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Documento feed | FeedDocument (application/json); intestazioni: ETag, ScreenRig-Feed-Key |
| 202 | Nessun documento ancora; il feed worker recupera la chiave al prossimo passaggio. | FeedPending (application/json); intestazioni: Retry-After, ScreenRig-Feed-Key |
| 304 | Il documento corrisponde a If-None-Match. | nessun corpo |
| 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) |
Progetto Scoped_list Advertising Joined Inventory
Inventario selezionato e slot riutilizzabili all’interno dell’appartenenza del chiamante. Non espone mai screenshot, playlist o dati a livello di progetto del venditore.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| 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. |
| seller_project_id | path | obbligatorio |
Modello richiesta e risposte
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/projects/PROJECT_ID/advertising/networks/SELLER_PROJECT_ID/inventory'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Inventario e slot consentiti. | AdvertisingJoinedInventory (application/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) |
Progetto Scoped_get Current Agent
Restituisce l’installazione dell’agente collegata al bearer del progetto chiamante più connection_ready. Un progetto è pronto quando almeno un membro ha un passkey o password. Lo stato dell’identità è diagnostico e non addebita il contatore API.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| 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]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/agents/self'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 200 | Prontezza di connessione dell’agente e progetto corrente. | AgentSelfStatus (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) |
Progetto Scoped_disconnect Current Agent
Revoca solo l’iscrizione del progetto chiamante e il suo token di progetto, preservando l’identità globale, altre iscrizioni, progetto e contenuti. Ripetere con lo stesso bearer revocato e crittograficamente valido è un successo senza effetto. Disconnettere l’ultimo agente attivo restituisce agent_lockout_risk a meno che allow_last_agent non sia esplicito. Non addebita il contatore API.
Un JWT di accesso agente, incluso Read only, disconnette l’agente dal progetto del suo token; la membership termina, il consenso del progetto lascia i grant dell’agente e quella coppia identity/progetto è tagliata fuori per i token di accesso più vecchi. Altri progetti nel token continuano a funzionare. Un retry con lo stesso JWT dopo la disconnessione è un successo no-op.
Parametri
| Nome | Invia | Obbligatorio? | Descrizione |
|---|---|---|---|
| project_id | path | obbligatorio | |
| 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. |
Campi del corpo della richiesta
| Campo | Descrizione |
|---|---|
| allow_last_agent (opzionale, booleano) | Accetta esplicitamente la perdita dell’ultimo agente attivo bearer. Una passkey dashboard registrata resta autorità amministrativa indipendente. default: false |
Modello richiesta e risposte
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/agents/self/disconnect'Risposte
| Stato | Significato | Corpo e intestazioni |
|---|---|---|
| 204 | Agente disconnesso. | nessun corpo; intestazioni: Cache-Control |
| 401 | 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) |
| 409 | 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) |
| 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) |