Documentazione

Progetti: comandi CLI

Crea, seleziona, rinomina, sposta ed esporta progetti, accedi ed esci, invita persone, leggi i limiti del piano e gli importi pubblicitari ed esegui doctor.

Ogni comando funziona come descritto nel riferimento CLI: flag globali, output JSON, codici uscita, revisioni e ritentativi.

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 --yes

project 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
ParametroTipoObbligatorioPredefinitoNote
--projects IDSstringsìnessunoDa 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_01EXAMPLEOTHER000000

Sostituisce 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]
ParametroTipoObbligatorioPredefinitoNote
--day-from YYYY-MM-DDstringno29 giorni prima di --day-toPrimo giorno UTC, incluso.
--day-to YYYY-MM-DDstringnooggiUltimo giorno UTC, incluso. Al massimo 366 giorni dopo --day-from.
--format FORMATstringnojsonjson è 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 FILEpathno./project-uptime.FORMATIl 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-30

Intervallo 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]
ParametroTipoObbligatorioPredefinitoNote
--from TIMEstringno24 ore prima di --toInizio inclusivo dell’ora: un istante RFC 3339 con secondi e offset (normalizzato a UTC), now, o un’età come 7d, 12h o 30m.
--to TIMEstringnooraFine esclusiva, nelle stesse forme. Al massimo 93 giorni dopo --from.
--format FORMATstringnojsonjson è 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 FILEpathno./health-trend.FORMATIl 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 7d

data.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]
ParametroTipoObbligatorioPredefinitoNote
<DIR>pathsìnessunoLa directory in cui scrivere. Viene creata se necessario, e una riesecuzione la continua e la aggiorna.
--no-mediabooleannospentoSalta i file multimediali originali; il manifest li elenca comunque con i loro hash.
--since YYYY-MM-DDstringnoindietro fin dove il piano conserva i datiPrimo 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-01

DIR 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_required

Gli 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 status

Nessun parametro.

screenrig agent status

Sola 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]
ParametroTipoObbligatorioPredefinitoNote
--yesbooleansìspentoConferma la revoca. Senza di essa non viene inviato nulla.
--allow-lockoutbooleannospentoConsenti di disconnettere l’ultimo agente del progetto. Senza di esso il server rifiuta con agent_lockout_risk.
screenrig agent disconnect --yes

Revoca 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
ParametroTipoObbligatorioPredefinitoNote
--yesbooleansìspentoConferma la revoca in tutti i progetti.
screenrig agent revoke-identity --yes

La 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)
ParametroTipoObbligatorioPredefinitoNote
--project IDstringnonessunoSuggerisci il progetto prj_ che la persona approva.
--access LEVELstringnogestireread, propose o manage. La persona prende la decisione finale.
--name NAMEstringnonessunoDai un nome a questa installazione, massimo 80 caratteri.
--no-waitbooleannospentoRestituisci status: pending con l’indirizzo, il codice e una maniglia login_.
--resume IDstringnonessunoAttendere l’accesso in sospeso avviato da --no-wait.
--client-id IDstringnonessunoAccedi 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 PATHpathcon --client-idnessunoLa chiave privata del client, un JWK o PEM. Esattamente uno tra il file della chiave e il file del segreto.
--client-secret-file PATHpathcon --client-idnessunoUn 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.pem

Stampa 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.

logout

Nessun parametro.

screenrig logout

Revoca 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 ADDRESS

La 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]
ParametroTipoObbligatorioPredefinitoNote
--repair-configbooleannospentoRestringi i permessi su un file di configurazione esistente leggibile da gruppo o altri.
screenrig doctor

data.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 usage

Nessun parametro.

screenrig billing usage

data.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 balance

Nessun parametro.

screenrig billing balance

Gli 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]
ParametroTipoObbligatorioPredefinitoNote
--cursor CURSORstringnoprima paginaIl next_cursor di un estratto conto precedente.
--limit COUNTintegernopredefinito del serverIl massimo numero di voci da restituire.
screenrig billing statement --limit 20

Le 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.

Altri gruppi di comandi