Ciclo di vita progetto e organizzazione
Il progetto corrente è l’ultimo usato. Ogni busta JSON include contesto organizzazione e progetto; l’output umano nomina entrambi. Le credenziali identità sono limitate dall’appartenenza al progetto selezionato. Lo stato retry resta separato per progetto.
project list
project token --projects IDS
project use ID
project create NAME [--organization-id ID | --organization NAME]
project moves
project move --organization-id ID
project transfer-owner --user-id ID
project deletion-preview
project delete --name NAME --revision N --yes
organization list
organization rename ID NAME
project export DIR [--no-media] [--since YYYY-MM-DD]
agent disconnect --yes [--allow-lockout]
agent revoke-identity --yesproject list verifica le appartenenze accessibili. project token --projects IDS sostituisce i progetti coperti dal token di questo accesso con da 1 a 64 ID progetto per cui è stato dato il consenso, separati da virgole o spazi. project use ne seleziona una. La creazione richiede un nome unico nella propria organizzazione e predefinisce l’organizzazione del progetto corrente, poi quella che amministri; quando nessuna è nominata, l’organizzazione che detiene il dominio email verificato del proprietario viene prima. La persona responsabile diventa proprietaria. Ogni piano limita quanti progetti può contenere un’organizzazione; ogni persona ha un’organizzazione Standard gratuita, e una seconda richiede Plus, Premium o Enterprise. Senza progetto corrente e senza organizzazione nominata, il server assegna il progetto allo stesso modo. --organization NAME avvia una nuova organizzazione solo per una persona che non ne possiede una gratuita; altrimenti la creazione è rifiutata con free_organization_limit, il cui dettaglio nomina l’organizzazione da usare. L’iscrizione è regolata da limiti di frequenza.
Il proprietario può spostare in una destinazione restituita da project moves, o trasferire la proprietà a un membro verificato esistente. Uno spostamento trasporta schermi, e un’organizzazione di destinazione che ha già tanti progetti quanti ne consente il suo piano lo rifiuta con project_limit_reached. L’eliminazione usa il nome esatto corrente e la revisione positiva dalla sua anteprima. Richiede zero schermi non archiviati, nessun piano proprio e nessuna pubblicità attiva. Solo il proprietario del progetto o un amministratore della sua organizzazione può eliminarlo; un agente elimina per la sua persona responsabile, o da solo soltanto il progetto che ha iscritto, finché nessuna persona ha accettato quell’iscrizione. Invia email ai membri e mantiene una lapide.
I nomi delle organizzazioni possono ripetersi; usa ID espliciti quando rinomini un’organizzazione che amministri. Un’organizzazione ha amministratori designati e membri interni; gli amministratori invitano altri amministratori e membri via email dalla dashboard. organization list contrassegna le organizzazioni free e plan_required, riporta new_organization_allowed e indica il progetto libreria di un’organizzazione in library_project_id quando ne ha uno. Il suo elenco di progetti non concede accesso ai contenuti dei progetti. Paga l’organizzazione: il suo piano, la sua archiviazione e il suo limite di richieste agente sono condivisi dai suoi progetti.
login --project ID chiede quel progetto con la stessa identità. Solo l’approvazione esplicita di questa richiesta concede l’appartenenza. agent disconnect --yes revoca un’appartenenza (--allow-lockout consente anche di revocare l’ultimo agente del progetto); agent revoke-identity --yes revoca separatamente l’identità e tutte le appartenenze. Una risposta ambigua mantiene le credenziali locali e lo stato di ritentativo per la riconciliazione.
I report pubblicitari mantengono i dati di liquidazione oltre la conservazione degli eventi. Leggi i metadati di copertura: riproduzioni storiche mancanti o durata approvata sconosciuta sono sconosciute, mai zero. Un report può avere totali finanziari completi e cronologia degli esiti incompleta.
Progetti, inviti e diagnostica
I comandi del progetto elencano le appartenenze, selezionano un progetto, creano progetti e gestiscono nomi, proprietari, spostamenti ed eliminazioni. Gli inviti aggiungono persone a progetti o reti pubblicitarie.
project show#
Legge il record del progetto.
project show
Nessun parametro.
screenrig project show
project rename#
Imposta il nome che le persone vedono nel selettore progetto della dashboard.
project rename NAME
project token#
Sostituisci i progetti coperti dal token di questo accesso.
project token --projects IDS| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--projects IDS | string | sì | nessuno | Da 1 a 64 ID progetto prj_ distinti, separati da virgole o spazi, per ciascuno dei quali questa identità ha dato il consenso. |
screenrig project token --projects prj_01EXAMPLEPROJECT0000,prj_01EXAMPLEOTHER000000Sostituisce l’intero sottoinsieme; project list da solo non concede alcun accesso. Una risposta persa mantiene l’ID della richiesta di rotazione per un ritentativo identico.
project capabilities#
Leggi il piano del progetto, i flag delle funzionalità indipendenti screens e advertiser e il set di capacità effettive. Un diniego di percorso prevale su una lettura di capacità obsoleta.
project capabilities
project uptime#
Leggi la disponibilità giornaliera degli schermi del progetto su giorni UTC.
project uptime [--day-from YYYY-MM-DD] [--day-to YYYY-MM-DD] [--format json|csv|xlsx|pdf] [--output FILE]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--day-from YYYY-MM-DD | string | no | 29 giorni prima di --day-to | Primo giorno UTC, incluso. |
--day-to YYYY-MM-DD | string | no | oggi | Ultimo giorno UTC, incluso. Al massimo 366 giorni dopo --day-from. |
--format FORMAT | string | no | json | json è la risposta del comando. csv, xlsx o pdf scrive tutte le righe in --output e risponde con path, bytes, sha256, content_type e format del file. |
--output FILE | path | no | ./project-uptime.FORMAT | Il file per csv, xlsx o pdf: un percorso di file, non una directory, e non -. Un file esistente viene sostituito. Non con json. |
screenrig project uptime
screenrig project uptime --day-from 2026-09-01 --day-to 2026-09-30Intervallo e predefiniti sono quelli di screen uptime. data.items elenca una riga per ogni giorno UTC, dal più vecchio al più recente: online_s e offline_s sommati sugli schermi con stato registrato quel giorno, availability, coverage (la quota del giorno di quegli schermi con stato registrato) e screens (quanti avevano uno stato registrato). La riga di oggi copre gli intervalli terminati finora; screen list mostra chi è online ora.
project health-trend#
Leggi la salute della flotta per ora UTC: schermi che segnalano, caldi, display disconnessi, crash.
project health-trend [--from TIME] [--to TIME] [--format json|csv|xlsx|pdf] [--output FILE]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--from TIME | string | no | 24 ore prima di --to | Inizio inclusivo dell’ora: un istante RFC 3339 con secondi e offset (normalizzato a UTC), now, o un’età come 7d, 12h o 30m. |
--to TIME | string | no | ora | Fine esclusiva, nelle stesse forme. Al massimo 93 giorni dopo --from. |
--format FORMAT | string | no | json | json è la risposta del comando. csv, xlsx o pdf scrive tutte le righe in --output e risponde con path, bytes, sha256, content_type e format del file. |
--output FILE | path | no | ./health-trend.FORMAT | Il file per csv, xlsx o pdf: un percorso di file, non una directory, e non -. Un file esistente viene sostituito. Non con json. |
screenrig project health-trend
screenrig project health-trend --from 7ddata.items elenca la salute della flotta per ora UTC: hour, screens_reporting, hot (temperatura massima pari o superiore a 80 °C), display_disconnected e crashing (3 o più crash in 24 ore). La CLI segue next_cursor fino alla fine e risponde ogni ora con next_cursor null. Le ore seguono i report con un ritardo fino a circa 5 minuti.
project export#
Scrivi i dati di questo progetto in una directory in formati aperti.
project export <DIR> [--no-media] [--since YYYY-MM-DD]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<DIR> | path | sì | nessuno | La directory in cui scrivere. Viene creata se necessario, e una riesecuzione la continua e la aggiorna. |
--no-media | boolean | no | spento | Salta i file multimediali originali; il manifest li elenca comunque con i loro hash. |
--since YYYY-MM-DD | string | no | indietro fin dove il piano conserva i dati | Primo giorno UTC dei CSV di riproduzioni, uptime e playback e del registro eventi. |
screenrig project export ./export
screenrig project export ./export --no-media --since 2026-01-01DIR ottiene JSON per il progetto, gli schermi, le cartelle di schermi, i tag, le programmazioni per schermo, le playlist con ogni revisione, le campagne, le campagne dirette, le schede e i loro dati, le origini (mai le loro credenziali), le notifiche, i webhook (senza segreti di firma né URL del ricevente), i silenziamenti, i metadati delle applicazioni, i trigger e gli abbonamenti ai report; i file multimediali originali in media/files con media/manifest.json che contiene lo SHA-256 di ogni file; CSV di riproduzioni, playback, uptime e alert in data/; e il registro eventi in log/events.jsonl. export.json viene scritto per ultimo ed elenca ogni file con la sua dimensione e lo SHA-256 e l’esito di ogni sezione (ok, skipped o failed). Una riesecuzione mantiene i file multimediali completi e continua quelli parziali. Una sezione che la credenziale non può leggere è skipped; l’avviso export_section_failed indica che la copia è incompleta, quindi esegui di nuovo lo stesso comando. I file delle applicazioni sono segnalati come omessi con complete: false e l’avviso export_application_content_omitted, anche con --no-media: conserva gli archivi originali delle applicazioni per il recupero. Ogni richiesta è una richiesta API fatturata e i download multimediali sono egress.
invitations#
Crea, elenca o revoca inviti per membri del progetto, uploader e acquirenti di annunci.
invitations create (--email ADDRESS[,ADDRESS] | --link) [--kind member|uploader|ad-buyer]
[--screen-id IDS] [--screen-folder-id IDS] [--slot-id IDS] [--policy trusted|review_required]
[--folder-id IDS] [--playlist-id IDS] [--access propose|manage]
invitations list [--kind member|ad-buyer] [--status STATUS]
invitations revoke ID--kind predefinito a member. La consegna email è predefinita e scade dopo sette giorni. --email accetta destinatari separati da virgola, fino a cinquanta per richiesta. --link è solo per membri, non nomina alcun destinatario e restituisce una sola volta un URL di invito valido 24 ore per la consegna diretta alla persona prevista. Non mettere mai quell’URL in log, note o trascrizioni condivise. Le liste non lo restituiscono mai. Al massimo 50 inviti possono essere in sospeso per organizzazione.
Gli acquirenti di annunci usano solo email e necessitano di uno schermo o ambito slot posseduto (o entrambi). --screen-id e --slot-id accettano ID separati da virgola; --policy seleziona trusted o review_required. I filtri di stato sono queued, sent, issued, accepted, revoked, expired e failed.
--kind uploader invita una persona che lavora solo nelle cartelle multimediali indicate con --folder-id (almeno una) e nelle playlist indicate con --playlist-id: carica nelle cartelle e aggiunge, sostituisce e rimuove pagine di quelle playlist, e nient’altro. Le sue modifiche restano in attesa di revisione a meno che non sia indicato --access manage, che può concedere solo chi può approvare le revisioni. Un invito --kind member con --screen-folder-id (ogni cartella include tutte le cartelle al suo interno) o --screen-id limita a quegli schermi la persona che accetta. --folder-id, --playlist-id e --access richiedono --kind uploader, mentre --slot-id e --policy richiedono --kind ad-buyer. Vedi Autenticazione.
screenrig invitations create --email teammate@example.com
screenrig invitations create --kind ad-buyer --email buyer@example.com --screen-id scr_LOBBY --policy review_requiredGli agenti non accettano inviti. La persona invitata apre l’email, accede o crea una passkey, e accetta nel dashboard. La registrazione tramite link verifica prima la loro email. Revocare un invito accettato non annulla un’appartenenza; usa i controlli di appartenenza acquirente per revocare l’accesso pubblicitario.
agent status#
Segnala se questa installazione possiede una credenziale utilizzabile.
agent statusNessun parametro.
screenrig agent statusSola lettura. Non modifica mai lo stato locale o server e non costa nulla. Il risultato include il access della sessione, il suo effective_access e, quando l’impostazione di revisione del progetto o un membro senza approvazione lo mantengono basso, access_limited_by (project o person). Quando il progetto limita questo agente a cartelle di schermi e schermi, screen_scope li elenca (folder_ids, ciascuna con ogni cartella al suo interno, e screen_ids) e person_screen_scope è l’ambito della persona responsabile dell’agente; l’agente agisce solo sugli schermi che entrambi consentono, ed entrambi sono assenti per un agente dell’intero progetto. Fuori dall’ambito un comando risponde outside_screen_scope (uscita 3). Le nuove note del progetto, o le note da rivedere, aggiungono l’avviso notes_waiting.
agent disconnect#
Revoca l’appartenenza di questo agente al progetto corrente.
agent disconnect --yes [--allow-lockout]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--yes | boolean | sì | spento | Conferma la revoca. Senza di essa non viene inviato nulla. |
--allow-lockout | boolean | no | spento | Consenti di disconnettere l’ultimo agente del progetto. Senza di esso il server rifiuta con agent_lockout_risk. |
screenrig agent disconnect --yesRevoca solo l’appartenenza al progetto corrente: l’identità, le altre appartenenze, il progetto e i suoi schermi restano. Le credenziali locali e lo stato di ritentativo restano quando la risposta è ambigua, quindi rieseguire è sicuro.
agent revoke-identity#
Revoca questa identità e tutte le sue appartenenze ai progetti.
agent revoke-identity --yes| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--yes | boolean | sì | spento | Conferma la revoca in tutti i progetti. |
screenrig agent revoke-identity --yesLa revoca confermata cancella le credenziali locali e il lavoro in sospeso per ogni progetto in cache. Un errore ambiguo li mantiene.
login#
Fai accedere questa installazione a un account esistente, con l’approvazione di una persona nel dashboard, o come client di servizio.
login [--project ID] [--access read|propose|manage] [--name NAME] [--no-wait] [--resume ID]
login --client-id ID (--client-key-file PATH | --client-secret-file PATH)| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--project ID | string | no | nessuno | Suggerisci il progetto prj_ che la persona approva. |
--access LEVEL | string | no | gestire | read, propose o manage. La persona prende la decisione finale. |
--name NAME | string | no | nessuno | Dai un nome a questa installazione, massimo 80 caratteri. |
--no-wait | boolean | no | spento | Restituisci status: pending con l’indirizzo, il codice e una maniglia login_. |
--resume ID | string | no | nessuno | Attendere l’accesso in sospeso avviato da --no-wait. |
--client-id ID | string | no | nessuno | Accedi con questa configurazione come client di servizio (scl_…) invece che come persona, senza approvazione. Non insieme a --no-wait, --project, --access o --name. |
--client-key-file PATH | path | con --client-id | nessuno | La chiave privata del client, un JWK o PEM. Esattamente uno tra il file della chiave e il file del segreto. |
--client-secret-file PATH | path | con --client-id | nessuno | Un file che contiene il segreto del client. |
screenrig login --access read
screenrig --config ci.json login --client-id scl_01EXAMPLECLIENT0000 --client-key-file ci-key.pemStampa l’indirizzo del dashboard e un codice di otto lettere su stderr, poi attende fino a 24 ore. La persona verifica che il codice corrisponda e preme Connetti una volta, senza un secondo prompt passkey dopo un accesso al dashboard nell’ultima ora. La busta riporta status: signed_in, il progetto, l’organizzazione e access. Eseguirlo di nuovo su un’installazione con accesso aggiunge un progetto o eleva da Solo lettura o Proponi progetto a Gestisci. Il rifiuto è login_denied e la scadenza è login_expired.
La configurazione di un client di servizio deve essere un file a sé: ogni comando successivo con quel --config accede come il client, leggendo ogni volta il file della chiave o del segreto e tenendo il token in memoria.
logout#
Termina l’accesso di questa installazione e rimuovi i suoi token.
logoutNessun parametro.
screenrig logoutRevoca l’accesso sul server, quindi rimuove i token memorizzati e segnala status: signed_out. Nella configurazione di un client di servizio rimuove il client salvato e lascia il suo file della chiave o del segreto. Un errore che potrebbe non aver raggiunto il server li mantiene, quindi rieseguire è sicuro. Esegui screenrig login per accedere di nuovo.
dashboard#
Apri l’URL ordinario del dashboard. Questo comando non crea un link di accesso, non crea una sessione e non richiede credenziali agente.
dashboard [open]
screenrig dashboard
Il dashboard mostra i progetti della persona dopo l’accesso. La selezione progetto nel browser non cambia il progetto associato a un agente.
dashboard reset-sign-in#
Richiedi un’email di reset accesso senza credenziali agente.
dashboard reset-sign-in --email ADDRESSLa conferma non rivela se l’email ha un accesso. Il reset inviato scade dopo un’ora; la persona crea una nuova passkey. Il completamento sostituisce le sue credenziali di accesso e revoca le altre sessioni. Finché la proprietà del progetto è ancora in sospeso dall’iscrizione, --email con l’indirizzo email di iscrizione originale invia anche un nuovo invito di iscrizione valido sette giorni; la persona lo apre e lo accetta con il proprio accesso per rivendicare la proprietà.
doctor#
Controlla questa installazione e segnala ogni controllo per nome.
doctor [--repair-config]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--repair-config | boolean | no | spento | Restringi i permessi su un file di configurazione esistente leggibile da gruppo o altri. |
screenrig doctordata.checks nomina ogni controllo e il suo stato (pass, warn o fail): runtime Node, percorso di configurazione risolto e permessi, credenziale memorizzata e fine dell’accesso, origine del control-plane e sue rotte di servizio, capacità feedback pubblicizzata, e la toolchain multimediale opzionale (ffmpeg, ffprobe, encoder_libx264, encoder_libx265, encoder_libwebp, cwebp, filter_hdr_tonemap).
Qualsiasi controllo fallito fa uscire doctor con codice non zero, mentre un warn no, quindi leggi i nomi individuali prima di chiamare l’installazione unhealthy. Una toolchain multimediale mancante interessa solo i comandi che convertono i contenuti multimediali: media upload, media upload-batch, media replace e playlist init.
version#
Stampa la versione CLI inclusa e il suo adattatore di protocollo.
version
Nessun parametro.
screenrig version
Esegui prima questo in una sessione. Una busta riuscita dimostra che il launcher ha risolto la CLI inclusa. --version e -V fanno lo stesso da qualsiasi punto della riga di comando.
Fatturazione
Limiti del piano e importi pubblicitari del progetto. Richieste, archiviazione, riproduzione e tutto il resto che fa un progetto non vengono mai addebitati; gli importi qui riguardano solo la pubblicità. Tutti e tre i comandi sono gratuiti, e le letture di /api/billing non contano nel limite orario di richieste agente.
billing usage#
Legge i limiti di archiviazione e di richieste agente del piano.
billing usageNessun parametro.
screenrig billing usagedata.stored_bytes è l’archiviazione usata e data.allowance.storage_bytes il limite di archiviazione del piano; un caricamento oltre il limite viene rifiutato con quota_exceeded. data.allowance.requests_per_hour è il limite orario di richieste agente (agent_requests_per_hour nell’output per persone). Le richieste rimaste in quest’ora sono nell’intestazione RateLimit di ogni risposta contata.
billing balance#
Legge gli importi pubblicitari in dollari statunitensi: rimanente, prenotato, disponibile e guadagni pagabili.
billing balanceNessun parametro.
screenrig billing balanceGli inserzionisti pagano con carta o con un pagamento macchina x402, prezzi e guadagni sono in dollari statunitensi e i pagamenti iniziano il 1° gennaio 2027. L’output per persone mostra dollari; il JSON mantiene i membri decimali mcr, dove 10.000.000 mcr sono US$1.
billing statement#
Leggi le voci contabilizzate del registro.
billing statement [--cursor CURSOR] [--limit COUNT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--cursor CURSOR | string | no | prima pagina | Il next_cursor di un estratto conto precedente. |
--limit COUNT | integer | no | predefinito del server | Il massimo numero di voci da restituire. |
screenrig billing statement --limit 20Le voci sono righe del registro contabilizzate, in dollari statunitensi, in un ordine stabile. Le prenotazioni compaiono come blocchi, non come guadagni o spese contabilizzati, e una correzione rimanda alla voce originale invece di riscriverla. Un addebito pubblicitario è visibile all’acquirente; un venditore vede il lordo, la commissione di servizio e il netto.