Campagne
Una campagna commuta ogni schermo di un pubblico su una playlist finché sono in vigore le sue regole, e lo fa tornare indietro quando cessano. Una campagna trasmette i menu del pranzo in ogni negozio north, e anche uno schermo taggato north in un secondo momento la riceve. Senza alcuna regola impostata è sempre in vigore.
Per ogni schermo il server sceglie il suo takeover, altrimenti la prima campagna in vigore (--priority da 0 a 100, prima il valore più alto, poi la più recente), altrimenti la programmazione playlist, altrimenti la playlist assegnata; vedi Programmazioni e takeover per lo stack e le regole. Una campagna raggiunge uno schermo che ha una playlist predefinita (screen assign). Le sue date, i suoi giorni e le sue ore sono orari civili letti nel fuso orario proprio di ogni schermo: l’override impostato con screen set-timezone, altrimenti la zona che il suo Player riporta, altrimenti UTC. Gli schermi cambiano entro circa un minuto, e i lettori non necessitano di aggiornamenti.
Una campagna in pausa è una bozza: non è su alcuno schermo finché campaign publish non la pubblica, volendo prima su una cartella di prova o su pochi schermi di prova, e poi campaign promote le dà il suo pubblico. campaign preview mostra una modifica prima che venga fatta, e campaign revisions e campaign restore conservano e ripristinano le versioni precedenti. Le stesse bozze, anteprime e cronologia esistono per le voci di programma qui sotto; vedi bozze, prova e promozione, cronologia.
I comandi di campagna usano la capacità screens. Le scritture richiedono l’accesso Gestisci: una sessione Propose risponde con 403 insufficient_access. Un’organizzazione ha al massimo 100 campagne in tutti i suoi progetti (campaign_limit_reached, exit 5), e la playlist deve essere approvata (playlist_not_approved, exit 5). Le campagne sono una funzionalità Plus: senza di essa, campaign create, campaign resume e un campaign update diverso da una pausa rispondono feature_not_in_plan (uscita 8), mentre list, show, screens, explain, preview, pause e delete restano disponibili, quindi una campagna già impostata continua a funzionare. Una bozza (campaign create --paused) e campaign promote appartengono al controllo delle modifiche alla programmazione, una funzionalità Enterprise che risponde allo stesso modo. Prezzi elenca i piani. Ogni scrittura aggiunge campaign.created, campaign.updated o campaign.deleted agli eventi del progetto, e uno schermo che una campagna sposta registra screen.playlist_switched con source campaign e l’id della campagna come entry_id. ads campaigns acquistano tempo pubblicitario su altri schermi e sono una risorsa diversa.
Un chiamante limitato a cartelle di schermi crea, modifica ed elimina solo una campagna il cui pubblico è interamente nel suo ambito, altrimenti outside_screen_scope (exit 3), e campaign list e campaign show mostrano editable: false per una campagna che raggiunge l’esterno. Una scrittura campaign create, update, pause, resume o delete il cui pubblico raggiunge uno schermo in una cartella protetta risponde pending_review con una revisione protected_change che decide un secondo approvatore: non ripetere la scrittura, leggi la decisione con reviews show ID e usa --note TEXT per dire all’approvatore il motivo. Una campagna riservata viene modificata solo da una persona che può approvare, e un agente viene rifiutato con reserved_item (exit 3) a qualsiasi livello di accesso.
campaign list#
Elenca le campagne del progetto nell’ordine in cui gli schermi le leggono.
campaign listNessun parametro.
screenrig campaign listdata.items contiene al massimo 100 campagne, prima quelle con la priorità più alta e, a parità di priorità, le più recenti per prime. Ognuna riporta i campi restituiti da campaign show, con reach una volta conteggiata. Una campagna in pausa è elencata e non si applica da nessuna parte. reserved segnala una campagna riservata, e editable compare solo per un chiamante limitato a cartelle di schermi: false significa che la campagna raggiunge schermi al di fuori di quell’ambito.
campaign show#
Leggi una campagna.
campaign show <id>| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
screenrig campaign show cmp_LUNCHRestituisce name, playlist_id, audience (la regola esatta), priority, paused, reserved (true per una campagna riservata, che solo una persona che può approvare modifica), i from, until, windows, monthly, dates, except, data, interaction, covers, displays e start impostati, e revision, il valore per --expect-rev in una scrittura successiva. editable compare solo per un chiamante limitato a cartelle di schermi: false significa che la campagna raggiunge schermi fuori da quell’ambito ed è di sola lettura per quel chiamante. import è presente su una campagna creata da un’importazione della programmazione. reach riporta quanti schermi il pubblico comprende: published quando la campagna è stata pubblicata l'ultima volta (creata, o aggiornata con un nuovo pubblico, una nuova playlist o uno stato di pausa), current e at per il conteggio più recente, e empty_groups, le foglie tag:NAME e folder:ID del pubblico che non corrispondono ad alcuno schermo. Un tag, una cartella, un'archiviazione o un'eliminazione che cambia il conteggio viene ricalcolato entro circa 15 secondi; campaign list riporta anche reach, e le notifiche reach_dropped e group_empty lo controllano. Un id da ads campaigns list risponde qui con not_found (exit 4).
campaign create#
Commuta gli schermi di un pubblico su una playlist, sempre o finché sono in vigore le sue regole.
campaign create --name NAME --playlist-id ID (--tag TAG | --any-tag TAG | --screen-id ID | --folder ID | --all-screens | --audience RULE) [--from TIME] [--until TIME] [--window SPEC] [--monthly SPEC] [--date SPEC] [--except DATES] [--data KEY[:PATH[=VALUE]]] [--on-touch [IDLE_S]] [--displays N[,N]] [--start on-time|next-item] [--covers WHERE] [--priority N] [--paused] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
--name NAME | string | sì | nessuno | Un nome da 1 a 120 caratteri. |
--playlist-id ID | string | sì | nessuno | La playlist pl_ che il pubblico mostra finché la campagna è in vigore. Deve essere approvata. |
--tag TAG | string | un’opzione di pubblico | nessuno | Schermi che hanno questo tag. Ripeti o separa con virgole per richiedere ogni tag elencato. |
--any-tag TAG | string | un’opzione di pubblico | nessuno | Schermi che hanno almeno uno di questi tag. Ripeti o separa con virgole. |
--screen-id ID | string | un’opzione di pubblico | nessuno | Questi schermi. Ripeti o separa con virgole. |
--folder ID | string | un’opzione di pubblico | nessuno | Gli schermi di questa cartella di schermi sfd_ e di ogni cartella al suo interno. Per combinare una cartella con i tag, usa --audience. |
--all-screens | boolean | un’opzione di pubblico | spento | Ogni schermo del progetto. |
--audience RULE | string | un’opzione di pubblico | nessuno | Una regola come JSON, @FILE per leggerla da un file, o - per stdin. |
--from TIME | string | no | nessun inizio | Inizia a quest’ora civile nel fuso orario di ogni schermo, YYYY-MM-DDTHH:MM senza offset. |
--until TIME | string | no | nessuna fine | Termina prima di quest’ora civile nel fuso orario di ogni schermo, nella stessa forma e dopo --from. |
--window SPEC | string | no | nessuno | Resta in vigore solo in questa finestra settimanale, DAYS o DAYS@HH:MM-HH:MM, ad esempio mon-fri@09:00-17:00 o sat,sun. Ripeti fino a 16 volte; la campagna è in vigore in una qualsiasi di esse. |
--monthly SPEC | string | no | nessuno | Resta in vigore solo in questa ricorrenza mensile: un giorno del mese (15 o day15; un mese senza quel giorno la salta) oppure l’ennesimo giorno della settimana (1st-mon, 2nd-tue, 3rd-wed, 4th-thu, last-sun), ciascuno con un @HH:MM-HH:MM facoltativo. Ripeti fino a 16 volte. |
--date SPEC | string | no | nessuno | Resta in vigore solo in questo giorno, YYYY-MM-DD o YYYY-MM-DD@HH:MM-HH:MM. Ripeti fino a 100 volte. |
--except DATE | string | no | nessuno | Salta queste date, YYYY-MM-DD, ripetute o separate da virgole, fino a 100. Un’eccezione rimuove ogni occorrenza che inizia in quella data, compresi i prolungamenti notturni. |
--data KEY[:PATH[=VALUE]] | string | no | nessuno | Vale solo finché i dati di scheda KEY (una chiave di dati di scheda o un ID scheda, oppure {screen.weather}) esistono, facoltativamente al puntatore RFC 6901 PATH o uguali a VALUE. Indicalo una sola volta. |
--on-touch [IDLE_S] | integer | no | spento | Resta in vigore solo mentre qualcuno usa lo schermo con un tocco o un clic, finché non passano IDLE_S secondi, da 5 a 3600 (60 per impostazione predefinita), senza input. |
--displays N[,N] | string | no | tutte le uscite | Riproduci solo su queste uscite del video wall, da 1 a 12, separate da virgole. |
--start WHEN | string | no | next-item | on-time cambia nell’istante esatto e interrompe l’elemento in corso; next-item attende che finisca. |
--covers WHERE | string | no | full | Dove viene riprodotta la playlist: full (l’intera pagina), main (la pagina stessa), oppure header, footer o side, una fascia disegnata sopra la pagina che richiede una playlist creata per quella regione (playlist create --format-region). Vedi fasce. Una fascia viene rifiutata con playlist_format_mismatch (exit 5) quando non è disposta su nessuno degli schermi del pubblico. |
--priority N | integer | no | 0 | Da 0 a 100. Vince il numero più alto quando due campagne sono in vigore su uno schermo. |
--paused | boolean | no | spento | Creala in pausa: una bozza che non è su alcuno schermo fino a campaign publish o campaign resume. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig campaign create --name "Lunch menu" --playlist-id pl_LUNCH --tag north --window mon-fri@11:00-14:00
screenrig campaign create --name "North Tower welcome" --playlist-id pl_WELCOME --folder sfd_01EXAMPLEFOLDER000000000
screenrig campaign create --name "Holiday hours" --playlist-id pl_HOLIDAY --tag Lobby --from 2026-12-20T00:00 --until 2027-01-02T00:00 --priority 10
screenrig campaign create --name "North cafes" --playlist-id pl_CAFE --audience '{"all":[{"tag":"North"},{"any":[{"tag":"Cafe"},{"tag":"Patio"}]}]}' --paused
screenrig campaign create --name "Brunch" --playlist-id pl_BRUNCH --tag Cafe --monthly 1st-sun@10:00-14:00 --except 2026-12-06
screenrig campaign create --name "Touch to browse" --playlist-id pl_MENU --screen-id scr_KIOSK --on-touch 90
screenrig campaign create --name "Holiday opening" --playlist-id pl_HOLIDAY --tag Lobby --date 2026-12-24@18:00-22:00 --start on-time
screenrig campaign create --name "Wall outputs 1 and 2" --playlist-id pl_WALL --screen-id scr_WALL --displays 1,2
screenrig campaign create --name "Room availability" --playlist-id pl_LIVE --folder sfd_01EXAMPLEFOLDER000000000 --data "crd_ROOM:/available=true"
screenrig campaign create --name "Fire exits" --playlist-id pl_EXITS --folder sfd_01EXAMPLEFOLDER000000000 --note "Fire safety"I tag sono da 1 a 32 lettere o cifre. DAYS è daily, un giorno (mon), un intervallo (mon-fri; fri-mon supera la fine della settimana) o un elenco separato da virgole (sat,sun). Senza un orario la finestra è l’intera giornata, e una fine uguale o precedente all’inizio attraversa la mezzanotte e appartiene al giorno di inizio. In una regola --audience ogni membro ha esattamente uno tra all, any, tag, screen_id o folder, i gruppi si annidano al massimo a 3 livelli, un pubblico ha al massimo 500 regole e {"all":[]} è ogni schermo. Il server rifiuta una regola morta: una data --except fuori da --from e --until, un --date che inizia fuori da esse e un --date che è anche un’eccezione (invalid_request, exit 8).
--data KEY vale finché i dati di scheda KEY esistono, --data KEY:PATH finché esiste un valore al puntatore RFC 6901 PATH, e --data KEY:PATH=VALUE finché è uguale a VALUE, uno scalare JSON (true, false, null, un numero o una stringa tra virgolette JSON) o una stringa semplice come rain. Oggetti e array vengono rifiutati. I dati mancanti o scaduti non corrispondono mai, e un null o false presente conta come esistente. KEY:=VALUE confronta l’intero documento. Esegui l’escape dei due punti in KEY come \: e racchiudi l’argomento tra virgolette per mantenere le virgolette della stringa JSON: --data 'crd_ROOM:/status="true"'. La chiave {screen.weather} legge il meteo nella posizione di ogni schermo (screen update ID --location LAT,LON): --data '{screen.weather}:/condition=rain'.
Dopo una creazione interrotta o ambigua, riesegui lo stesso comando entro 24 ore: riutilizza la chiave di idempotenza salvata e il server restituisce la stessa campagna invece di crearne un’altra.
campaign update#
Modifica una campagna; gli schermi del suo vecchio e del suo nuovo pubblico vengono rivalutati entro un minuto.
campaign update <id> [--name NAME] [--playlist-id ID] [audience option] [--from TIME | --clear-from] [--until TIME | --clear-until] [--window SPEC | --clear-windows] [--monthly SPEC | --clear-monthly] [--date SPEC | --clear-dates] [--except DATES | --clear-except] [--data KEY[:PATH[=VALUE]] | --clear-data] [--on-touch [IDLE_S] | --clear-on-touch] [--displays N[,N] | --clear-displays] [--start WHEN] [--covers WHERE] [--priority N] [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--name NAME | string | no | invariato | Rinomina la campagna. |
--playlist-id ID | string | no | invariato | Mostra invece questa playlist. Deve essere approvata. |
--tag, --any-tag, --screen-id, --folder, --all-screens, --audience | string | no | invariato | Al massimo una, scritta come in campaign create. Sostituisce l’intero pubblico. |
--from TIME, --until TIME | string | no | invariato | Un’ora civile come in campaign create. --from deve restare prima di --until, altrimenti invalid_request (exit 8). |
--clear-from, --clear-until | boolean | no | spento | Rimuovi l’inizio o la fine. |
--window SPEC | string | no | invariato | Sostituisce ogni finestra con queste. Ripeti fino a 16 volte. |
--clear-windows | boolean | no | spento | Rimuovi ogni finestra. |
--monthly SPEC, --date SPEC, --except DATE | string | no | invariato | Come in campaign create; ciascuna sostituisce tutte le regole del suo tipo. |
--data KEY[:PATH[=VALUE]] | string | no | invariato | Come in campaign create; sostituisce la condizione sui dati di scheda. |
--on-touch [IDLE_S], --displays N[,N], --start WHEN | string | no | invariato | Come in campaign create; --on-touch senza valore equivale a 60 secondi. |
--clear-monthly, --clear-dates, --clear-except, --clear-data, --clear-on-touch, --clear-displays | boolean | no | spento | Li rimuove. Una campagna senza alcuna regola è sempre in vigore. |
--covers WHERE | string | no | invariato | full, main, header, footer o side, come in campaign create. |
--priority N | integer | no | invariato | Da 0 a 100. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig campaign update cmp_LUNCH --playlist-id pl_LUNCH2 --expect-rev 2
screenrig campaign update cmp_LUNCH --tag Lobby --window sat,sun --priority 20
screenrig campaign update cmp_LUNCH --clear-until --clear-windows
screenrig campaign update cmp_BRUNCH --monthly 2nd-sun@10:00-14:00 --except 2026-12-13,2027-01-10
screenrig campaign update cmp_BROWSE --clear-on-touch --clear-displays
screenrig campaign update cmp_ROOMS --data crd_ROOM:/available=true
screenrig campaign update cmp_ROOMS --clear-data
screenrig campaign update cmp_LUNCH --playlist-id pl_LUNCH2 --note "Safety review done"Passa almeno una modifica; cambiano solo i campi passati. Un nuovo --playlist-id è verificato come in creazione. Dopo una richiesta interrotta o ambigua, riesegui lo stesso comando: riutilizza la chiave di idempotenza salvata e il server restituisce l’aggiornamento già avvenuto invece di applicarlo di nuovo.
campaign pause#
Ferma una campagna su ogni schermo senza eliminarla.
campaign pause <id> [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig campaign pause cmp_LUNCH
screenrig campaign pause cmp_LUNCH --note "Holiday over"Gli schermi che la mostravano tornano a ciò che mostrerebbero senza di essa entro un minuto. campaign resume l’avvia di nuovo.
campaign resume#
Avvia di nuovo una campagna in pausa.
campaign resume <id> [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig campaign resume cmp_LUNCH
screenrig campaign resume cmp_LUNCH --note "Holiday again"Ogni schermo del pubblico a cui la campagna può applicarsi passa alla sua playlist entro un minuto finché la campagna è in vigore.
campaign delete#
Elimina una campagna.
campaign delete <id> [--expect-rev REVISION] [--note TEXT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
--note TEXT | string | no | nessuno | Una nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito. |
screenrig campaign delete cmp_LUNCH
screenrig campaign delete cmp_LUNCH --note "Replaced by the winter campaign"La campagna non ritorna. Ogni schermo che la mostra torna a ciò che mostrerebbe senza di essa entro un minuto; playlist, schermi e tag restano. campaign pause ferma una campagna e la conserva.
campaign screens#
Mostra gli schermi raggiunti da una campagna e lo stato di ciascuno.
campaign screens <id> [--limit N] [--cursor CURSOR]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--limit N | integer | no | 100 | Schermi per pagina, da 1 a 500. |
--cursor CURSOR | string | no | la prima pagina | Il data.next_cursor della pagina precedente. |
screenrig campaign screens cmp_LUNCHdata.counts copre ogni schermo live del pubblico: audience, poi un conteggio per ogni stato presente. data.items è una pagina di quegli schermi in ordine di id schermo, ciascuno con il status della campagna. data.next_cursor è assente nell’ultima pagina. Su uno schermo il cui lettore risolve il proprio stack, lo stato è quello che lo stack assegna alla campagna: una campagna a fascia o main viene riprodotta nella sua regione, e una campagna --displays sui suoi display.
| Stato | Significato |
|---|---|
playing | Lo schermo mostra la playlist della campagna. |
pending | Dovrebbe essere mostrata, e il cambiamento avviene entro un minuto. |
waiting | Ora fuori da --from, --until, dalle finestre, dalle regole mensili o dalle date; next_start quando inizia entro otto giorni. |
ended | --until è passato. |
outranked | È in vigore, ma vince un takeover dello schermo (reason takeover) o un’altra campagna (reason campaign, con by). |
conditional | È in vigore per orario e viene riprodotta mentre qualcuno usa lo schermo (reason interaction) o mentre la sua condizione sui dati è soddisfatta (reason data). Solo il lettore vede i suoi input e i dati delle schede. |
paused | La campagna è in pausa. |
blocked | Non può essere mostrata qui. reason è no_default_playlist (screen assign), playlist_unavailable (la playlist manca, non è approvata o non si adatta allo schermo), region_not_laid_out (non entra in nessun display dello schermo: la sua fascia non entra in nessuno, o il suo --displays non ne indica nessuno, e la campagna resta fuori dal suo stack) o stack_only (il lettore dello schermo non risolve il proprio stack, e solo uno che lo fa rispetta una regione, un blocco dei display, --on-touch o una condizione sui dati). |
campaign explain#
Mostra perché ogni campagna viene riprodotta o meno su uno schermo, ora o in un momento scelto.
campaign explain <screen-id> [--at TIME] [--to TIME]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<screen-id> | string | sì | nessuno | L’ID schermo scr_. |
--at TIME | string | no | ora | Spiega questo momento invece di ora: un istante con fuso (2026-12-24T10:00:00-08:00) o un orario sull’orologio dello schermo (2026-12-24T18:00). Un orario che l’ora legale salta o ripete viene rifiutato. |
--to TIME | string | no | nessuno | Elenca anche i cambi di playlist da --at (predefinito: ora) fino a questo momento, nelle stesse forme. Non c’è limite alla distanza; una risposta elenca al massimo 500 intervalli, e ogni periodo di otto giorni senza modifiche conta come uno. |
screenrig campaign explain scr_LOBBY
screenrig campaign explain scr_LOBBY --at 2026-12-24T18:00 --to 2026-12-26T00:00data.items elenca ogni campagna del progetto nell’ordine in cui lo schermo le legge, ciascuna con uno stato da campaign screens o not_in_audience; una riga blocked indica la correzione. data.effective_playlist è la playlist che lo schermo riproduce ora (id, source, che è takeover, campaign, schedule, default o folder, e entry_id, l’id della campagna, della voce di programmazione o della cartella), o null quando lo schermo non mostra alcuna playlist. Non cambia nulla.
Con --at, data.at contiene la risposta per quel momento: instant, timezone (il fuso orario effettivo dello schermo) e local (l’istante sull’orologio dello schermo), effective_playlist (il cui until è il prossimo cambiamento) e una riga verdicts per il takeover, ogni campagna e ogni voce di programmazione, nell’ordine in cui lo schermo le legge.
Un verdetto è won (la playlist mostrata), outranked (è in vigore, e by indica la vincitrice), not_started (prima dell’inizio), ended (dopo la fine), outside_hours (dentro le date, fuori dalle finestre, dalle regole mensili o dalle date, o in una data di eccezione; next_start indica quando torna in vigore entro otto giorni), conditional (è in vigore per orario e viene riprodotta mentre qualcuno usa lo schermo, reason interaction, o mentre la sua condizione sui dati è soddisfatta, reason data) o off (non si applica, e reason dice perché: paused, not_in_audience, no_default_playlist, playlist_unavailable, region_not_laid_out o stack_only). Su uno schermo il cui Player risolve il proprio stack, i verdetti leggono quello stack: un livello a fascia o main vince o viene superato nella sua regione, e un blocco dei display sui suoi display. effective_playlist e la sequenza temporale restano la pagina del display 1, e data.at.not_judged elenca player_stack.
--to aggiunge data.at.timeline, gli intervalli in cui la playlist non cambia, e timeline_truncated segnala una risposta che si è fermata prima di --to: interroga di nuovo con --at impostato sul to dell’ultimo intervallo. data.at.not_judged indica ciò che non viene giudicato: il takeover, il programma e le campagne sono letti come sono ora, e data.items resta lo stato attuale.
campaign preview#
Mostrare cosa farebbe creare o modificare una campagna prima di farlo.
campaign preview [<id>] [--name NAME] [--playlist-id ID] [audience option] [rule flags] [clear flag] [--paused | --publish] [--calendar-from INSTANT] [--calendar-to INSTANT]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | no | una nuova campagna | La campagna cmp_ di cui vedere in anteprima una modifica. Omettila per vedere in anteprima una nuova campagna dai flag di campaign create. |
--name NAME, --playlist-id ID | string | per una nuova campagna | invariato | Come in campaign create; una nuova campagna li richiede entrambi. |
--tag, --any-tag, --screen-id, --folder, --all-screens, --audience | string | per una nuova campagna | invariato | Al massimo una, scritta come in campaign create; una nuova campagna ne richiede una. Con un <id> sostituisce l’intero pubblico. |
--from TIME, --until TIME, --window SPEC, --monthly SPEC, --date SPEC, --except DATE | string | no | invariato | Le opzioni di regola di campaign create. Con un <id>, ciascuna sostituisce tutte le regole del suo tipo. |
--data KEY[:PATH[=VALUE]], --on-touch [IDLE_S], --displays N[,N], --start WHEN, --covers WHERE | string | no | invariato | Come in campaign create. |
--priority N | integer | no | invariato | Da 0 a 100. |
--clear-from, --clear-until, --clear-windows, --clear-monthly, --clear-dates, --clear-except, --clear-data, --clear-on-touch, --clear-displays | boolean | no | spento | Come in campaign update: anteprima della rimozione della regola. Richiedono un <id>. |
--paused | boolean | no | spento | Anteprima come bozza: in pausa, su alcuno schermo. Non con --publish. |
--publish | boolean | no | spento | Anteprima della ripresa dalla pausa della campagna. Con un’opzione di pubblico, anteprima della sua pubblicazione per quel pubblico. Richiede un <id> ed esclude --paused. |
--calendar-from INSTANT | string | no | ora | Avvia i calendari in questo istante con fuso, ad esempio 2026-12-01T00:00:00Z. |
--calendar-to INSTANT | string | no | una settimana dopo l’inizio | Termina i calendari in questo istante con fuso, al massimo 93 giorni dopo l’inizio. |
screenrig campaign preview cmp_LUNCH --tag Lobby
screenrig campaign preview cmp_LUNCH --clear-until --priority 20
screenrig campaign preview cmp_LUNCH --publish --folder sfd_TEST
screenrig campaign preview cmp_LUNCH --publish --calendar-from 2026-12-01T00:00:00Z --calendar-to 2027-01-01T00:00:00Z
screenrig campaign preview --name "Holiday hours" --playlist-id pl_HOLIDAY --tag Lobby --from 2026-12-20T00:00 --until 2027-01-02T00:00Le opzioni vengono controllate come le controlla la scrittura, quindi un’anteprima rifiuta ciò che la scrittura rifiuta. Con un <id>, passa almeno una modifica: un’opzione di campaign update, --paused o --publish. Non viene scritto nulla. data.gained e data.lost sono {count, screen_ids} (i primi 500 per id): gli schermi che porterebbero la campagna e ora non la portano, e quelli che non la porterebbero più. Una campagna in pausa non è su alcuno schermo, quindi pubblicarla ne guadagna il pubblico; una modifica che mantiene la campagna su uno schermo si vede solo nei calendari. data.calendar.before e data.calendar.after sono i calendari dei programmi da --calendar-from a --calendar-to per gli schermi del vecchio e del nuovo pubblico, con le bozze disegnate come livelli in pausa. --human stampa i tratti del primo display e le bozze che sarebbero in vigore, e dice quando il calendario non cambia.
campaign publish#
Togliere la pausa a una campagna in bozza, volendo solo per una cartella di prova o pochi schermi di prova.
campaign publish <id> [--test-folder ID | --test-screen ID] [--expect-rev REVISION]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--test-folder ID | string | no | il pubblico della campagna | Pubblica solo sugli schermi di questa cartella di schermi sfd_ e di ogni cartella al suo interno. |
--test-screen ID | string | no | il pubblico della campagna | Pubblica solo su questi schermi. Ripeti o separa con virgole. |
--expect-rev REVISION | string | no | nessuno | Precondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry. |
screenrig campaign publish cmp_LUNCH
screenrig campaign publish cmp_LUNCH --test-folder sfd_TEST
screenrig campaign publish cmp_LUNCH --test-screen scr_LOBBY,scr_CAFE --expect-rev 2Una bozza è una campagna in pausa: non è su alcuno schermo finché non viene pubblicata. Senza opzione di prova, la campagna raggiunge il suo pubblico entro un minuto. Un’opzione di prova sostituisce il pubblico nella stessa scrittura, così cambiano solo gli schermi di prova. Il flusso abituale: campaign create --paused con il pubblico reale, campaign publish ID --test-folder FOLDER, guardare gli schermi di prova, poi campaign promote ID --revision N. campaign preview ID --publish mostra prima l’effetto.
campaign promote#
Mettere il pubblico di una bozza sulla campagna dopo la sua prova.
campaign promote <id> --revision N [--expect-rev REVISION]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--revision N | integer | sì | nessuno | La revisione in pausa della bozza, come la numera campaign revisions. La campagna prende il pubblico di quella revisione. |
--expect-rev REVISION | string | no | la revisione appena letta | Richiedi questa revisione corrente della campagna. Senza, la CLI legge la campagna subito prima della scrittura e invia quella revisione; una modifica nel frattempo è revision_conflict (exit 6). |
screenrig campaign promote cmp_LUNCH --revision 1
screenrig campaign promote cmp_LUNCH --revision 1 --expect-rev 2Il pubblico della revisione N diventa quello della campagna in una scrittura, una nuova revisione il cui change è promoted, e ogni schermo del vecchio e del nuovo pubblico si risolve di nuovo entro un minuto. La revisione N deve essere una revisione in pausa (altrimenti invalid_request la nomina), e la campagna deve essere attiva: una campagna ora in pausa non ha alcuna prova da promuovere. Una revisione il cui pubblico è già quello della campagna non cambia nulla. --expect-rev è la revisione corrente della campagna, non N. La promozione richiede l’accesso richiesto da campaign update.
campaign revisions#
Elenca le revisioni di una campagna, la più recente per prima.
campaign revisions <id> [--after CURSOR]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--after CURSOR | string | no | la prima pagina | Continua dal data.next_cursor della pagina precedente. |
screenrig campaign revisions cmp_LUNCH
screenrig campaign revisions cmp_LUNCH --after CURSORdata.items contiene al massimo 50 revisioni, ciascuna con revision, created_at, change, current, author quando noto e campaign, la campagna com’era dopo quella scrittura, con il suo stato di pausa. change è created, edited (un aggiornamento o un’importazione della programmazione), restored o promoted (una copia della revisione precedente indicata da restored_from), oppure baseline, la revisione che la campagna aveva quando è iniziata la sua cronologia. Una campagna la cui cronologia non ha alcuna revisione non in pausa è una bozza. Finché data.next_cursor è una stringa, restano revisioni più vecchie: esegui di nuovo il comando con --after impostato su quel valore. Le revisioni restano finché esiste la campagna e vanno via con la sua eliminazione. Basta l’accesso in sola lettura.
campaign restore#
Rendere di nuovo corrente una revisione precedente copiandola in avanti.
campaign restore <id> --revision N [--expect-rev REVISION]| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
<id> | string | sì | nessuno | L’ID campagna cmp_. |
--revision N | integer | sì | nessuno | La revisione da copiare in avanti, come la numera campaign revisions. |
--expect-rev REVISION | string | no | la revisione appena letta | Richiedi questa revisione corrente della campagna. Senza, la CLI legge la campagna subito prima della scrittura e invia quella revisione; una modifica nel frattempo è revision_conflict (exit 6). |
screenrig campaign restore cmp_LUNCH --revision 3
screenrig campaign restore cmp_LUNCH --revision 3 --expect-rev 5Nome, playlist, pubblico, regole, regione, priorità e stato di pausa della revisione N diventano una nuova revisione il cui change è restored, controllata come lo è campaign update: la sua playlist deve ancora esistere ed essere approvata (playlist_not_approved, exit 5). Ogni schermo del vecchio e del nuovo pubblico si risolve di nuovo entro un minuto. Le revisioni precedenti restano com’erano, e ripristinare il contenuto corrente non cambia nulla. Il ripristino richiede l’accesso richiesto da campaign update.