Documentation

Campagnes : commandes CLI

Créez, prévisualisez, publiez, promouvez, suspendez et restaurez des campagnes qui basculent des écrans sur une liste de lecture selon leurs règles.

Chaque commande s’exécute comme décrit dans la référence CLI : drapeaux globaux, sortie JSON, codes de sortie, révisions et réessais.

Campagnes

Une campagne fait basculer chaque écran d’une audience vers une seule liste de lecture tant que ses règles sont en vigueur, puis le ramène quand elles cessent. Une seule campagne diffuse les menus du midi dans chaque magasin north, et un écran étiqueté north par la suite l’obtient aussi. Sans aucune règle définie, elle est toujours en vigueur.

Par écran, le serveur choisit sa prise de contrôle, sinon la première campagne en vigueur (--priority de 0 à 100, la plus élevée d’abord, puis la plus récente), sinon l’horaire de liste de lecture, sinon la liste de lecture assignée ; voir Horaires et prise de contrôle pour la pile et les règles. Une campagne atteint un écran qui a une liste de lecture par défaut (screen assign). Ses dates, jours et heures sont des heures civiles lues dans le fuseau horaire propre à chaque écran : la substitution définie avec screen set-timezone, sinon le fuseau que son Player rapporte, sinon UTC. Les écrans basculent dans environ une minute, et les lecteurs n’ont pas besoin de mise à jour.

Une campagne en pause est un brouillon : elle n’est sur aucun écran tant que campaign publish ne la publie pas, d’abord si l’on veut pour un dossier de test ou quelques écrans de test, puis campaign promote lui donne son audience. campaign preview montre un changement avant qu’il soit fait, et campaign revisions et campaign restore conservent et rétablissent les versions antérieures. Les mêmes brouillons, aperçus et historique existent pour les entrées d’horaire plus bas ; voir brouillons, test et promotion, historique.

Les commandes de campagne utilisent la capacité screens. Les écritures nécessitent l’accès Gérer : une session Propose répond 403 insufficient_access. Une organisation a au maximum 100 campagnes, tous projets confondus (campaign_limit_reached, sortie 5), et la liste de lecture doit être approuvée (playlist_not_approved, sortie 5). Les campagnes sont une fonctionnalité Plus : sans elle, campaign create, campaign resume et un campaign update autre qu’une mise en pause répondent feature_not_in_plan (sortie 8), tandis que list, show, screens, explain, preview, pause et delete restent possibles, de sorte qu’une campagne déjà en place continue de tourner. Un brouillon (campaign create --paused) et campaign promote relèvent du contrôle des changements d’horaire, une fonctionnalité Enterprise qui répond de la même façon. Tarifs présente les forfaits. Chaque écriture ajoute campaign.created, campaign.updated ou campaign.deleted aux événements du projet, et un écran qu’une campagne fait basculer enregistre screen.playlist_switched avec source campaign et l’identifiant de la campagne comme entry_id. ads campaigns achètent du temps publicitaire sur d’autres écrans et sont une ressource différente.

Un appelant limité à des dossiers d’écrans ne crée, ne modifie et ne supprime qu’une campagne dont toute l’audience est dans son périmètre, sinon outside_screen_scope (sortie 3), et campaign list et campaign show affichent editable: false pour une campagne qui atteint l’extérieur. Une écriture campaign create, update, pause, resume ou delete dont l’audience atteint un écran d’un dossier protégé répond pending_review avec une révision protected_change que décide un second approbateur : ne répétez pas l’écriture, lisez la décision avec reviews show ID, et donnez --note TEXT pour dire à l’approbateur pourquoi. Une campagne réservée n’est modifiée que par une personne qui peut approuver, et un agent est refusé avec reserved_item (sortie 3) à tous les niveaux d’accès.

campaign list#

Lister les campagnes du projet dans l’ordre où les écrans les lisent.

campaign list

Aucun paramètre.

screenrig campaign list

data.items contient au maximum 100 campagnes, les priorités les plus élevées d’abord et les plus récentes d’abord au sein d’une même priorité. Chacune porte les champs que renvoie campaign show, avec reach une fois comptée. Une campagne en pause est listée et ne s’applique nulle part. reserved marque une campagne réservée, et editable n’apparaît que pour un appelant limité à des dossiers d’écrans : false signifie que la campagne atteint des écrans hors de ce périmètre.

campaign show#

Lire une campagne.

campaign show <id>
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
screenrig campaign show cmp_LUNCH

Retourne name, playlist_id, audience (la règle exacte), priority, paused, reserved (true pour une campagne réservée, que seule une personne pouvant approuver modifie), les from, until, windows, monthly, dates, except, data, interaction, covers, displays et start qui sont définis, et revision, la valeur pour --expect-rev lors d’une écriture ultérieure. editable n’apparaît que pour un appelant limité à des dossiers d’écrans : false signifie que la campagne atteint des écrans hors de ce périmètre et est en lecture seule pour cet appelant. import est présent sur une campagne créée par une importation d’horaires. reach indique combien d’écrans l’audience couvre : published à la dernière publication de la campagne (créée, ou mise à jour avec une nouvelle audience, liste de lecture ou état de pause), current et at pour le dernier compte, et empty_groups, les feuilles tag:NAME et folder:ID de l’audience qui ne correspondent à aucun écran. Une étiquette, un dossier, un archivage ou une suppression qui change le compte est recompté en environ 15 secondes ; campaign list porte aussi reach, et les notifications reach_dropped et group_empty le surveillent. Un identifiant de ads campaigns list répond not_found (sortie 4) ici.

campaign create#

Faire basculer les écrans d’une audience vers une liste de lecture, en tout temps ou tant que ses règles sont en vigueur.

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]
ParamètreTypeRequisPar défautNotes
--name NAMEstringouiaucunUn nom de 1 à 120 caractères.
--playlist-id IDstringouiaucunLa liste de lecture pl_ que l’audience affiche tant que la campagne est en vigueur. Elle doit être approuvée.
--tag TAGstringune option d’audienceaucunÉcrans qui portent cette étiquette. Répétez ou séparez par des virgules pour exiger chaque étiquette listée.
--any-tag TAGstringune option d’audienceaucunÉcrans qui portent au moins une de ces étiquettes. Répétez ou séparez par des virgules.
--screen-id IDstringune option d’audienceaucunCes écrans. Répétez ou séparez par des virgules.
--folder IDstringune option d’audienceaucunLes écrans de ce dossier d’écrans sfd_ et de chaque dossier qu’il contient. Pour combiner un dossier avec des étiquettes, utilisez --audience.
--all-screensbooleanune option d’audiencedésactivéChaque écran du projet.
--audience RULEstringune option d’audienceaucunUne règle en JSON, @FILE pour la lire depuis un fichier, ou - pour stdin.
--from TIMEstringnonpas de débutCommencer à cette heure civile dans le fuseau horaire de chaque écran, YYYY-MM-DDTHH:MM sans décalage.
--until TIMEstringnonpas de finSe terminer avant cette heure civile dans le fuseau horaire de chaque écran, sous la même forme et plus tard que --from.
--window SPECstringnonaucunÊtre en vigueur seulement dans cette fenêtre hebdomadaire, DAYS ou DAYS@HH:MM-HH:MM, par exemple mon-fri@09:00-17:00 ou sat,sun. Répétez jusqu’à 16 fois ; la campagne est en vigueur dans n’importe laquelle.
--monthly SPECstringnonaucunÊtre en vigueur seulement à cette occurrence mensuelle : un jour du mois (15 ou day15 ; un mois sans ce jour l’ignore) ou le n-ième jour de semaine (1st-mon, 2nd-tue, 3rd-wed, 4th-thu, last-sun), chacun avec un @HH:MM-HH:MM facultatif. Répétez jusqu’à 16 fois.
--date SPECstringnonaucunÊtre en vigueur seulement ce jour-là, YYYY-MM-DD ou YYYY-MM-DD@HH:MM-HH:MM. Répétez jusqu’à 100 fois.
--except DATEstringnonaucunIgnorer ces dates, YYYY-MM-DD, répétées ou séparées par des virgules, jusqu’à 100. Une exception retire toute occurrence qui commence à cette date, y compris les prolongements de nuit.
--data KEY[:PATH[=VALUE]]stringnonaucunNe tient que tant que les données de carte KEY (une clé de données de carte ou un ID de carte, ou {screen.weather}) existent, éventuellement au pointeur RFC 6901 PATH ou égales à VALUE. À donner une seule fois.
--on-touch [IDLE_S]integernondésactivéÊtre en vigueur seulement tant que quelqu’un utilise l’écran par toucher ou par clic, jusqu’à ce que IDLE_S secondes, de 5 à 3600 (60 par défaut), s’écoulent sans saisie.
--displays N[,N]stringnontoutes les sortiesJouer seulement sur ces sorties du mur vidéo, de 1 à 12, séparées par des virgules.
--start WHENstringnonnext-itemon-time change à l’instant exact et interrompt l’élément en cours ; next-item attend sa fin.
--covers WHEREstringnonfullOù la liste de lecture joue : full (la page entière), main (la page elle-même), ou header, footer ou side, un bandeau tracé sur la page qui exige une liste de lecture conçue pour cette région (playlist create --format-region). Voir bandeaux. Un bandeau est refusé avec playlist_format_mismatch (sortie 5) lorsqu’il n’est disposé sur aucun des écrans de l’audience.
--priority Nintegernon0De 0 à 100. Le nombre le plus élevé l’emporte quand deux campagnes sont en vigueur sur un même écran.
--pausedbooleannondésactivéCréer en pause : un brouillon qui n’est sur aucun écran avant campaign publish ou campaign resume.
--note TEXTstringnonaucunUne note pour la personne qui révise la modification : texte brut, au maximum 280 caractères. Ignorée lorsque la modification s’applique immédiatement.
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"

Les étiquettes comptent de 1 à 32 lettres ou chiffres. DAYS est daily, un jour (mon), une plage (mon-fri ; fri-mon traverse la fin de la semaine) ou une liste séparée par des virgules (sat,sun). Sans heure, la fenêtre couvre toute la journée, et une fin à ou avant le début traverse minuit et appartient au jour de début. Dans une règle --audience, chaque membre a exactement l’un de all, any, tag, screen_id ou folder, les groupes s’imbriquent sur 3 niveaux au plus, une audience a au plus 500 règles, et {"all":[]} désigne chaque écran. Le serveur refuse une règle morte : une date --except hors de --from et --until, un --date qui commence en dehors d’elles, et un --date qui est aussi une exception (invalid_request, sortie 8).

--data KEY tient tant que les données de carte KEY existent, --data KEY:PATH tant qu’une valeur existe au pointeur RFC 6901 PATH, et --data KEY:PATH=VALUE tant qu’elle est égale à VALUE, un scalaire JSON (true, false, null, un nombre ou une chaîne entre guillemets JSON) ou une chaîne brute comme rain. Les objets et les tableaux sont refusés. Des données absentes ou expirées ne correspondent jamais, et un null ou un false présent compte comme existant. KEY:=VALUE compare le document entier. Échappez un deux-points dans KEY avec \:, et mettez l’argument entre guillemets pour conserver les guillemets de la chaîne JSON : --data 'crd_ROOM:/status="true"'. La clé {screen.weather} lit la météo à l’emplacement de chaque écran (screen update ID --location LAT,LON) : --data '{screen.weather}:/condition=rain'.

Après une création interrompue ou ambiguë, relancez la même commande dans les 24 heures : elle réutilise la clé d’idempotence enregistrée, et le serveur renvoie la même campagne au lieu d’en créer une autre.

campaign update#

Modifier une campagne ; les écrans de son ancienne et de sa nouvelle audience résolvent à nouveau dans la minute.

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]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--name NAMEstringnoninchangéRenommer la campagne.
--playlist-id IDstringnoninchangéAfficher cette liste de lecture à la place. Elle doit être approuvée.
--tag, --any-tag, --screen-id, --folder, --all-screens, --audiencestringnoninchangéAu plus un, écrit comme dans campaign create. Il remplace toute l’audience.
--from TIME, --until TIMEstringnoninchangéUne heure civile comme dans campaign create. --from doit rester antérieur à --until, sinon invalid_request (sortie 8).
--clear-from, --clear-untilbooleannondésactivéSupprimer le début ou la fin.
--window SPECstringnoninchangéRemplace chaque fenêtre par celles-ci. Répétez jusqu’à 16 fois.
--clear-windowsbooleannondésactivéSupprimer toutes les fenêtres.
--monthly SPEC, --date SPEC, --except DATEstringnoninchangéComme pour campaign create ; chacune remplace toutes les règles de son type.
--data KEY[:PATH[=VALUE]]stringnoninchangéComme pour campaign create ; elle remplace la condition de données de carte.
--on-touch [IDLE_S], --displays N[,N], --start WHENstringnoninchangéComme pour campaign create ; --on-touch sans valeur vaut 60 secondes.
--clear-monthly, --clear-dates, --clear-except, --clear-data, --clear-on-touch, --clear-displaysbooleannondésactivéLes supprime. Une campagne sans aucune règle est toujours en vigueur.
--covers WHEREstringnoninchangéfull, main, header, footer ou side, comme dans campaign create.
--priority NintegernoninchangéDe 0 à 100.
--expect-rev REVISIONstringnonaucunPrécondition optionnelle de révision. Omettre pour écrire la ressource actuelle. Une valeur périmée fournie est revision_conflict : refetch, reapply, retry.
--note TEXTstringnonaucunUne note pour la personne qui révise la modification : texte brut, au maximum 280 caractères. Ignorée lorsque la modification s’applique immédiatement.
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"

Passez au moins un changement ; seuls les champs que vous passez changent. Un nouveau --playlist-id est vérifié comme à la création. Après une requête interrompue ou ambiguë, relancez la même commande : elle réutilise la clé d’idempotence enregistrée, et le serveur renvoie la mise à jour qui a déjà eu lieu au lieu de l’appliquer à nouveau.

campaign pause#

Arrêter une campagne sur chaque écran sans la supprimer.

campaign pause <id> [--expect-rev REVISION] [--note TEXT]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--expect-rev REVISIONstringnonaucunPrécondition optionnelle de révision. Omettre pour écrire la ressource actuelle. Une valeur périmée fournie est revision_conflict : refetch, reapply, retry.
--note TEXTstringnonaucunUne note pour la personne qui révise la modification : texte brut, au maximum 280 caractères. Ignorée lorsque la modification s’applique immédiatement.
screenrig campaign pause cmp_LUNCH
screenrig campaign pause cmp_LUNCH --note "Holiday over"

Les écrans qui l’affichaient reviennent, dans la minute, à ce qu’ils afficheraient sans elle. campaign resume la redémarre.

campaign resume#

Redémarrer une campagne en pause.

campaign resume <id> [--expect-rev REVISION] [--note TEXT]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--expect-rev REVISIONstringnonaucunPrécondition optionnelle de révision. Omettre pour écrire la ressource actuelle. Une valeur périmée fournie est revision_conflict : refetch, reapply, retry.
--note TEXTstringnonaucunUne note pour la personne qui révise la modification : texte brut, au maximum 280 caractères. Ignorée lorsque la modification s’applique immédiatement.
screenrig campaign resume cmp_LUNCH
screenrig campaign resume cmp_LUNCH --note "Holiday again"

Chaque écran de l’audience auquel la campagne peut s’appliquer bascule vers la liste de lecture de la campagne dans la minute tant que celle-ci est en vigueur.

campaign delete#

Supprimer une campagne.

campaign delete <id> [--expect-rev REVISION] [--note TEXT]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--expect-rev REVISIONstringnonaucunPrécondition optionnelle de révision. Omettre pour écrire la ressource actuelle. Une valeur périmée fournie est revision_conflict : refetch, reapply, retry.
--note TEXTstringnonaucunUne note pour la personne qui révise la modification : texte brut, au maximum 280 caractères. Ignorée lorsque la modification s’applique immédiatement.
screenrig campaign delete cmp_LUNCH
screenrig campaign delete cmp_LUNCH --note "Replaced by the winter campaign"

La campagne ne revient pas. Chaque écran qui l’affiche revient, dans la minute, à ce qu’il afficherait sans elle ; les listes de lecture, les écrans et les étiquettes restent. campaign pause arrête une campagne et la conserve.

campaign screens#

Afficher les écrans qu’une campagne atteint et l’état de chacun.

campaign screens <id> [--limit N] [--cursor CURSOR]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--limit Nintegernon100Écrans par page, de 1 à 500.
--cursor CURSORstringnonla première pageLe data.next_cursor de la page précédente.
screenrig campaign screens cmp_LUNCH

data.counts couvre chaque écran actif de l’audience : audience, puis un compte par état présent. data.items est une page de ces écrans dans l’ordre des identifiants d’écran, chacun avec le status de la campagne. data.next_cursor est absent de la dernière page. Sur un écran dont le lecteur résout sa propre pile, l’état est celui que cette pile donne à la campagne : une campagne en bandeau ou main joue dans sa région, et une campagne --displays sur ses afficheurs.

StatutSens
playingL’écran affiche la liste de lecture de la campagne.
pendingElle devrait s’afficher, et le changement a lieu dans la minute.
waitingHors de --from, --until, des fenêtres, des règles mensuelles ou des dates en ce moment ; next_start quand elle démarre dans les huit jours.
ended--until est dépassé.
outrankedElle est en vigueur, mais une prise de contrôle d’écran (reason takeover) ou une autre campagne (reason campaign, avec by) l’emporte.
conditionalElle est en vigueur selon l’horaire et joue tant que quelqu’un utilise l’écran (reason interaction) ou tant que sa condition de données est remplie (reason data). Seul le lecteur voit ses entrées et ses données de cartes.
pausedLa campagne est en pause.
blockedElle ne peut pas s’afficher ici. reason est no_default_playlist (screen assign), playlist_unavailable (la liste de lecture est manquante, non approuvée ou ne convient pas à l’écran), region_not_laid_out (elle ne tient sur aucun afficheur de l’écran : son bandeau ne tient sur aucun, ou son --displays n’en nomme aucun, et la campagne est exclue de sa pile) ou stack_only (le lecteur de l’écran ne résout pas sa propre pile, et seul un lecteur qui le fait respecte une région, un verrou d’afficheurs, --on-touch ou une condition de données).

campaign explain#

Afficher pourquoi chaque campagne joue ou non sur un écran, maintenant ou à un moment choisi.

campaign explain <screen-id> [--at TIME] [--to TIME]
ParamètreTypeRequisPar défautNotes
<screen-id>stringouiaucunL’identifiant d’écran scr_.
--at TIMEstringnonmaintenantExpliquer ce moment plutôt que maintenant : un instant avec fuseau (2026-12-24T10:00:00-08:00) ou une heure à l’horloge propre de l’écran (2026-12-24T18:00). Une heure d’horloge que l’heure d’été saute ou répète est refusée.
--to TIMEstringnonaucunListe aussi les changements de liste de lecture de --at (par défaut maintenant) jusqu’à ce moment, sous les mêmes formes. Il n’y a aucune limite de distance ; une réponse énumère au plus 500 périodes, et chaque tranche de huit jours sans changement compte pour une.
screenrig campaign explain scr_LOBBY
screenrig campaign explain scr_LOBBY --at 2026-12-24T18:00 --to 2026-12-26T00:00

data.items liste chaque campagne du projet dans l’ordre où l’écran les lit, chacune avec un état issu de campaign screens ou not_in_audience ; une ligne blocked nomme la correction. data.effective_playlist est la liste de lecture que l’écran joue maintenant (id, source, qui vaut takeover, campaign, schedule, default ou folder, et entry_id, l’identifiant de la campagne, de l’entrée de programmation ou du dossier), ou null quand l’écran n’affiche aucune liste de lecture. Rien n’est modifié.

Avec --at, data.at contient la réponse pour ce moment : instant, timezone (le fuseau horaire effectif de l’écran) et local (l’instant sur l’horloge de l’écran), effective_playlist (dont until est le prochain changement) et une ligne verdicts pour la prise de contrôle, chaque campagne et chaque entrée de programmation, dans l’ordre où l’écran les lit.

Un verdict est won (la liste de lecture affichée), outranked (elle est en vigueur, et by nomme le gagnant), not_started (avant son début), ended (après sa fin), outside_hours (dans ses dates, hors de ses fenêtres, de ses règles mensuelles ou de ses dates, ou à une date d’exception ; next_start dit quand elle est de nouveau en vigueur dans les huit jours), conditional (elle est en vigueur selon l’horaire et joue tant que quelqu’un utilise l’écran, reason interaction, ou tant que sa condition de données est remplie, reason data) ou off (elle ne s’applique pas, et reason dit pourquoi : paused, not_in_audience, no_default_playlist, playlist_unavailable, region_not_laid_out ou stack_only). Sur un écran dont le Player résout sa propre pile, les verdicts lisent cette pile : un niveau en bandeau ou main l’emporte ou est devancé dans sa région, et un verrou d’afficheurs sur ses afficheurs. effective_playlist et la chronologie restent la page de l’afficheur 1, et data.at.not_judged liste player_stack.

--to ajoute data.at.timeline, les périodes pendant lesquelles la liste de lecture ne change pas, et timeline_truncated signale une réponse arrêtée avant --to : relancez la requête avec --at réglé sur le to de la dernière période. data.at.not_judged dit ce qui n’est pas jugé : la prise de contrôle, la programmation et les campagnes sont lues telles qu’elles sont maintenant, et data.items reste l’état actuel.

campaign preview#

Montrer ce que ferait la création ou la modification d’une campagne avant de la faire.

campaign preview [<id>] [--name NAME] [--playlist-id ID] [audience option] [rule flags] [clear flag] [--paused | --publish] [--calendar-from INSTANT] [--calendar-to INSTANT]
ParamètreTypeRequisPar défautNotes
<id>stringnonune nouvelle campagneLa campagne cmp_ dont on prévisualise un changement. Omettez-la pour prévisualiser une nouvelle campagne à partir des flags de campaign create.
--name NAME, --playlist-id IDstringpour une nouvelle campagneinchangéComme pour campaign create ; une nouvelle campagne exige les deux.
--tag, --any-tag, --screen-id, --folder, --all-screens, --audiencestringpour une nouvelle campagneinchangéAu plus un, écrit comme dans campaign create ; une nouvelle campagne en exige un. Avec un <id>, il remplace toute l’audience.
--from TIME, --until TIME, --window SPEC, --monthly SPEC, --date SPEC, --except DATEstringnoninchangéLes options de règle de campaign create. Avec un <id>, chacune remplace toutes les règles de son type.
--data KEY[:PATH[=VALUE]], --on-touch [IDLE_S], --displays N[,N], --start WHEN, --covers WHEREstringnoninchangéComme pour campaign create.
--priority NintegernoninchangéDe 0 à 100.
--clear-from, --clear-until, --clear-windows, --clear-monthly, --clear-dates, --clear-except, --clear-data, --clear-on-touch, --clear-displaysbooleannondésactivéComme pour campaign update : aperçu du retrait de la règle. Elles nécessitent un <id>.
--pausedbooleannondésactivéPrévisualiser comme brouillon : en pause, sur aucun écran. Pas avec --publish.
--publishbooleannondésactivéPrévisualiser la sortie de pause de la campagne. Avec une option d’audience, prévisualise sa publication pour cette audience. Il exige un <id> et exclut --paused.
--calendar-from INSTANTstringnonmaintenantCommencer les calendriers à cet instant avec fuseau, tel que 2026-12-01T00:00:00Z.
--calendar-to INSTANTstringnonune semaine après le débutTerminer les calendriers à cet instant avec fuseau, au plus 93 jours après le début.
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:00

Les options sont vérifiées comme l’écriture les vérifie, donc un aperçu refuse ce que refuse l’écriture. Avec un <id>, passez au moins un changement : une option de campaign update, --paused ou --publish. Rien n’est écrit. data.gained et data.lost sont {count, screen_ids} (les 500 premiers par identifiant) : les écrans qui porteraient la campagne et ne la portent pas maintenant, et ceux qui ne la porteraient plus. Une campagne en pause n’est sur aucun écran, donc la publier gagne son audience ; une modification qui garde la campagne sur un écran ne se voit que dans les calendriers. data.calendar.before et data.calendar.after sont les calendriers d’horaires de --calendar-from à --calendar-to pour les écrans de l’ancienne et de la nouvelle audience, avec les brouillons dessinés comme niveaux en pause. --human affiche les plages du premier affichage et les brouillons qui s’appliqueraient, et indique quand le calendrier ne change pas.

campaign publish#

Sortir une campagne brouillon de la pause, si l’on veut seulement pour un dossier de test ou quelques écrans de test.

campaign publish <id> [--test-folder ID | --test-screen ID] [--expect-rev REVISION]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--test-folder IDstringnonl’audience de la campagnePublier seulement sur les écrans de ce dossier d’écrans sfd_ et de chaque dossier qu’il contient.
--test-screen IDstringnonl’audience de la campagnePublier seulement sur ces écrans. Répétez ou séparez par des virgules.
--expect-rev REVISIONstringnonaucunPrécondition optionnelle de révision. Omettre pour écrire la ressource actuelle. Une valeur périmée fournie est revision_conflict : refetch, 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 2

Un brouillon est une campagne en pause : elle n’est sur aucun écran tant qu’elle n’est pas publiée. Sans option de test, la campagne atteint sa propre audience en moins d’une minute. Une option de test remplace l’audience dans la même écriture, de sorte que seuls les écrans de test changent. Le déroulement habituel : campaign create --paused avec l’audience réelle, campaign publish ID --test-folder FOLDER, regarder les écrans de test, puis campaign promote ID --revision N. campaign preview ID --publish montre d’abord l’effet.

campaign promote#

Appliquer à la campagne l’audience d’un brouillon après son test.

campaign promote <id> --revision N [--expect-rev REVISION]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--revision NintegerouiaucunLa révision en pause du brouillon, telle que campaign revisions la numérote. La campagne prend l’audience de cette révision.
--expect-rev REVISIONstringnonla révision qui vient d’être lueExiger cette révision courante de la campagne. Sans elle, le CLI lit la campagne juste avant l’écriture et envoie cette révision ; un changement entre-temps donne revision_conflict (sortie 6).
screenrig campaign promote cmp_LUNCH --revision 1
screenrig campaign promote cmp_LUNCH --revision 1 --expect-rev 2

L’audience de la révision N devient celle de la campagne en une écriture, une nouvelle révision dont change est promoted, et chaque écran de l’ancienne et de la nouvelle audience est réévalué en moins d’une minute. La révision N doit être une révision en pause (invalid_request la nomme sinon), et la campagne doit être active : une campagne en pause maintenant n’a aucun test à promouvoir. Une révision dont l’audience est déjà celle de la campagne ne change rien. --expect-rev est la révision courante de la campagne, et non N. La promotion exige l’accès qu’exige campaign update.

campaign revisions#

Lister les révisions d’une campagne, la plus récente d’abord.

campaign revisions <id> [--after CURSOR]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--after CURSORstringnonla première pageReprendre à partir du data.next_cursor de la page précédente.
screenrig campaign revisions cmp_LUNCH
screenrig campaign revisions cmp_LUNCH --after CURSOR

data.items contient au plus 50 révisions, chacune avec revision, created_at, change, current, author lorsqu’il est connu et campaign, la campagne telle qu’elle était après cette écriture, avec son état de pause. change est created, edited (une mise à jour ou une importation d’horaires), restored ou promoted (une copie de la révision antérieure que nomme restored_from), ou baseline, la révision que la campagne avait quand son historique a commencé. Une campagne dont l’historique n’a aucune révision hors pause est un brouillon. Tant que data.next_cursor est une chaîne, des révisions plus anciennes restent : relancez la commande avec --after réglé à cette valeur. Les révisions sont conservées aussi longtemps que la campagne et partent avec sa suppression. L’accès en lecture seule suffit.

campaign restore#

Rendre de nouveau courante une révision antérieure en la copiant vers l’avant.

campaign restore <id> --revision N [--expect-rev REVISION]
ParamètreTypeRequisPar défautNotes
<id>stringouiaucunL’identifiant de campagne cmp_.
--revision NintegerouiaucunLa révision à copier vers l’avant, telle que campaign revisions la numérote.
--expect-rev REVISIONstringnonla révision qui vient d’être lueExiger cette révision courante de la campagne. Sans elle, le CLI lit la campagne juste avant l’écriture et envoie cette révision ; un changement entre-temps donne revision_conflict (sortie 6).
screenrig campaign restore cmp_LUNCH --revision 3
screenrig campaign restore cmp_LUNCH --revision 3 --expect-rev 5

Le nom, la liste de lecture, l’audience, les règles, le région, la priorité et l’état de pause de la révision N deviennent une nouvelle révision dont change est restored, vérifiée comme l’est campaign update : sa liste de lecture doit toujours exister et être approuvée (playlist_not_approved, sortie 5). Chaque écran de l’ancienne et de la nouvelle audience est réévalué en moins d’une minute. Les révisions antérieures restent telles quelles, et restaurer le contenu actuel ne change rien. La restauration exige l’accès qu’exige campaign update.

Autres groupes de commandes