Cycle de vie du projet et de l’organisation
Le projet actuel est le dernier utilisé. Chaque enveloppe JSON inclut le contexte d’organisation et de projet ; la sortie humaine nomme les deux. Les identifiants d’identité sont limités par l’adhésion au projet sélectionné. L’état de réessai reste séparé par projet.
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 vérifie les adhésions accessibles. project token --projects IDS remplace les projets que couvre le jeton de cette connexion par 1 à 64 ID de projet consentis, séparés par des virgules ou des espaces. project use en sélectionne un. La création exige un nom unique dans son organisation et par défaut l’organisation du projet actuel, puis celle que vous administrez ; lorsqu’aucune n’est nommée, l’organisation détenant le domaine de courriel vérifié du propriétaire est prioritaire. La personne responsable devient propriétaire. Chaque forfait limite le nombre de projets d’une organisation ; chaque personne a une organisation Standard gratuite, et une deuxième nécessite Plus, Premium ou Enterprise. Sans projet actuel ni organisation nommée, le serveur place le projet de la même manière. --organization NAME démarre une nouvelle organisation uniquement pour une personne qui n’en possède aucune gratuite ; sinon la création est refusée avec free_organization_limit, dont le détail nomme l’organisation à utiliser. L’inscription est régie par des limites de débit.
Le propriétaire peut déplacer le projet vers une destination retournée par project moves, ou transférer la propriété à un membre vérifié existant. Un déplacement transporte les écrans, et une organisation de destination qui détient déjà autant de projets que son forfait le permet le refuse avec project_limit_reached. La suppression utilise le nom actuel exact et la révision positive de son aperçu. Elle exige zéro écran non archivé, aucun forfait propre et aucune publicité active. Seul le propriétaire du projet ou un administrateur de son organisation peut le supprimer ; un agent supprime pour sa personne responsable, ou seul uniquement le projet qu’il a inscrit tant qu’aucune personne n’a accepté cette inscription. Elle envoie un courriel aux membres et conserve une pierre tombale.
Les noms d’organisation peuvent se répéter; utilisez des ID explicites pour renommer une organisation que vous administrez. Une organisation a des administrateurs désignés et des membres d’origine; les administrateurs invitent d’autres administrateurs et des membres par courriel depuis le tableau de bord. organization list marque les organisations free et plan_required, indique new_organization_allowed et nomme le projet de bibliothèque d’une organisation dans library_project_id quand elle en a un. Sa liste de projets n’accorde pas l’accès au contenu des projets. L’organisation paie : son forfait, son stockage et son plafond de requêtes d’agent sont partagés par ses projets.
login --project ID demande ce projet avec la même identité. Seule l’approbation explicite de cette demande accorde une adhésion. agent disconnect --yes révoque une adhésion (--allow-lockout permet aussi de révoquer le dernier agent du projet) ; agent revoke-identity --yes révoque séparément l’identité et toutes les adhésions. Une réponse ambiguë conserve les identifiants locaux et l’état de nouvelle tentative pour la réconciliation.
Les rapports publicitaires conservent les faits de règlement au-delà de la rétention des événements. Consultez leurs métadonnées de couverture : les lectures historiques manquantes ou la durée approuvée inconnue sont inconnues, jamais zéro. Un rapport peut avoir des totaux financiers complets et un historique des résultats incomplet.
Projets, invitations et diagnostics
Les commandes de projet listent les adhésions, sélectionnent un projet, créent des projets et gèrent leurs noms, propriétaires, déplacements et suppressions. Les invitations font entrer des personnes dans des projets ou des réseaux publicitaires.
project show#
Lire la fiche du projet.
project show
Aucun paramètre.
screenrig project show
project rename#
Définir le nom que les gens voient dans le sélecteur de projet du tableau de bord.
project rename NAME
project token#
Remplacer les projets couverts par le jeton de cette connexion.
project token --projects IDS| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--projects IDS | string | oui | aucun | De 1 à 64 identifiants de projet prj_ distincts, séparés par des virgules ou des espaces, auxquels cette identité a consenti. |
screenrig project token --projects prj_01EXAMPLEPROJECT0000,prj_01EXAMPLEOTHER000000Remplace tout le sous-ensemble ; project list seul n’accorde aucun accès. Une réponse perdue conserve l’identifiant de demande de rotation pour une nouvelle tentative identique.
project capabilities#
Lire le forfait du projet, les indicateurs de fonctionnalités indépendants screens et advertiser et l’ensemble des capacités effectives. Un refus de route l’emporte sur une lecture périmée des capacités.
project capabilities
project uptime#
Lire la disponibilité quotidienne des écrans du projet sur des jours UTC.
project uptime [--day-from YYYY-MM-DD] [--day-to YYYY-MM-DD] [--format json|csv|xlsx|pdf] [--output FILE]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--day-from YYYY-MM-DD | string | non | 29 jours avant --day-to | Premier jour UTC, inclus. |
--day-to YYYY-MM-DD | string | non | aujourd’hui | Dernier jour UTC, inclusivement. Au maximum 366 jours après --day-from. |
--format FORMAT | string | non | json | json correspond à la réponse de la commande. csv, xlsx ou pdf écrit toutes les lignes dans --output et répond avec son path, ses bytes, son sha256, son content_type et son format. |
--output FILE | chemin | non | ./project-uptime.FORMAT | Le fichier pour csv, xlsx ou pdf : un chemin de fichier, pas un répertoire, et pas -. Un fichier existant est remplacé. Pas avec json. |
screenrig project uptime
screenrig project uptime --day-from 2026-09-01 --day-to 2026-09-30La plage et les valeurs par défaut sont celles de screen uptime. data.items liste une ligne par jour UTC, du plus ancien au plus récent : online_s et offline_s cumulés sur les écrans avec un état enregistré ce jour-là, availability, coverage (la part de la journée de ces écrans avec un état enregistré), et screens (combien avaient un état enregistré). La ligne d’aujourd’hui couvre les intervalles terminés jusqu’à présent ; screen list montre qui est en ligne maintenant.
project health-trend#
Lire la santé de la flotte par heure UTC : écrans rapportant, chauds, afficheur déconnecté, plantage.
project health-trend [--from TIME] [--to TIME] [--format json|csv|xlsx|pdf] [--output FILE]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--from TIME | string | non | 24 heures avant --to | Début inclusif de l’heure : un instant RFC 3339 avec secondes et décalage (normalisé en UTC), now, ou un âge tel que 7d, 12h ou 30m. |
--to TIME | string | non | maintenant | Fin exclusive, dans les mêmes formes. Au maximum 93 jours après --from. |
--format FORMAT | string | non | json | json correspond à la réponse de la commande. csv, xlsx ou pdf écrit toutes les lignes dans --output et répond avec son path, ses bytes, son sha256, son content_type et son format. |
--output FILE | chemin | non | ./health-trend.FORMAT | Le fichier pour csv, xlsx ou pdf : un chemin de fichier, pas un répertoire, et pas -. Un fichier existant est remplacé. Pas avec json. |
screenrig project health-trend
screenrig project health-trend --from 7ddata.items liste la santé de la flotte par heure UTC : hour, screens_reporting, hot (température maximale à 80 °C ou plus), display_disconnected, et crashing (3 crashs ou plus en 24 heures). Le CLI suit next_cursor jusqu’à la fin et répond chaque heure avec next_cursor null. Les heures suivent les rapports avec un délai d’environ 5 minutes.
project export#
Écrire les données de ce projet dans un répertoire en formats ouverts.
project export <DIR> [--no-media] [--since YYYY-MM-DD]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
<DIR> | chemin | oui | aucun | Le répertoire dans lequel écrire. Il est créé au besoin, et une nouvelle exécution le reprend et l’actualise. |
--no-media | boolean | non | désactivé | Ignorer les fichiers médias d’origine ; le manifeste les énumère quand même avec leurs empreintes. |
--since YYYY-MM-DD | string | non | aussi loin que le forfait conserve les données | Premier jour UTC des CSV des lectures, de la disponibilité et de la lecture, et du journal des événements. |
screenrig project export ./export
screenrig project export ./export --no-media --since 2026-01-01DIR obtient du JSON pour le projet, les écrans, les dossiers d’écrans, les étiquettes, les programmations par écran, les listes de lecture avec chaque révision, les campagnes, les campagnes directes, les cartes et leurs données, les sources (jamais leurs identifiants), les notifications, les webhooks (sans secrets de signature ni URL de récepteur), les mises en sourdine, les métadonnées d’application, les déclencheurs et les abonnements aux rapports ; les fichiers médias d’origine dans media/files, avec media/manifest.json contenant le SHA-256 de chaque fichier ; des CSV des lectures, de la lecture, de la disponibilité et des alertes dans data/ ; et le journal des événements dans log/events.jsonl. export.json est écrit en dernier et énumère chaque fichier avec sa taille et son SHA-256, ainsi que le résultat de chaque section (ok, skipped ou failed). Une nouvelle exécution conserve les fichiers médias complets et poursuit les fichiers partiels. Une section que l’identifiant ne peut pas lire est skipped ; l’avertissement export_section_failed signifie que la copie est incomplète, donc exécutez de nouveau la même commande. Les fichiers d’application sont signalés comme omis avec complete: false et l’avertissement export_application_content_omitted, y compris avec --no-media : conservez les archives d’application d’origine pour la récupération. Chaque requête est une requête API facturée, et les téléchargements de médias sont de la sortie.
invitations#
Créer, lister ou révoquer des invitations de membres de projet, de téléverseurs et d’acheteurs de publicité.
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 utilise member par défaut. La livraison par courriel est la valeur par défaut et expire après sept jours. --email accepte des destinataires séparés par des virgules, jusqu’à cinquante par demande. --link est réservé aux membres, ne nomme aucun destinataire, et renvoie une seule fois une URL d’invitation valide vingt-quatre heures pour un transfert direct à la personne visée. Ne mettez jamais cette URL dans des journaux, notes ou une transcription partagée. Les listes ne la renvoient jamais. Au plus 50 invitations peuvent être en attente par organisation.
Les acheteurs d’annonces utilisent uniquement le courriel et ont besoin d’un écran ou d’un périmètre de créneau possédé (ou les deux). --screen-id et --slot-id acceptent des ID séparés par des virgules ; --policy sélectionne trusted ou review_required. Les filtres de statut sont queued, sent, issued, accepted, revoked, expired et failed.
--kind uploader invite une personne qui travaille uniquement dans les dossiers médias indiqués avec --folder-id (au moins un) et dans les listes de lecture indiquées avec --playlist-id : elle téléverse dans ces dossiers et ajoute, remplace et supprime des pages de ces listes de lecture, et rien d’autre. Ses changements attendent une revue, sauf avec --access manage, que seule une personne pouvant approuver les revues peut accorder. Une invitation --kind member avec --screen-folder-id (chaque dossier inclut tous les dossiers qu’il contient) ou --screen-id limite la personne qui l’accepte à ces écrans. --folder-id, --playlist-id et --access nécessitent --kind uploader, et --slot-id et --policy nécessitent --kind ad-buyer. Voir Authentification.
screenrig invitations create --email teammate@example.com
screenrig invitations create --kind ad-buyer --email buyer@example.com --screen-id scr_LOBBY --policy review_requiredLes agents n’acceptent pas les invitations. La personne invitée ouvre le courriel, se connecte ou crée une clé d’accès, et accepte dans le tableau de bord. L’inscription par lien vérifie d’abord leur courriel. Révoquer une invitation acceptée ne supprime pas une adhésion; utilisez les contrôles d’adhésion acheteur pour révoquer l’accès publicitaire.
agent status#
Signaler si cette installation détient une crédentiale utilisable.
agent statusAucun paramètre.
screenrig agent statusLecture seule. Ne modifie jamais l’état local ou serveur, et ne coûte rien. Le résultat porte le access de session, son effective_access et, quand le paramètre de revue du projet ou un membre sans droit d’approbation le maintient plus bas, access_limited_by (project ou person). Lorsque le projet limite cet agent à des dossiers d’écrans et à des écrans, screen_scope les énumère (folder_ids, chacun avec tous les dossiers qu’il contient, et screen_ids) et person_screen_scope est la portée de la personne responsable de l’agent ; l’agent agit uniquement sur les écrans que les deux autorisent, et les deux sont absents pour un agent de l’ensemble du projet. En dehors de la portée, une commande répond outside_screen_scope (code de sortie 3). Les nouvelles notes du projet, ou les notes à passer en revue, ajoutent l’avertissement notes_waiting.
agent disconnect#
Révoquer l’adhésion de cet agent au projet actuel.
agent disconnect --yes [--allow-lockout]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--yes | boolean | oui | désactivé | Confirmer la révocation. Rien n’est envoyé sans cela. |
--allow-lockout | boolean | non | désactivé | Autoriser la déconnexion du dernier agent du projet. Sans cela, le serveur refuse avec agent_lockout_risk. |
screenrig agent disconnect --yesRévoque uniquement l’adhésion au projet actuel : l’identité, les autres adhésions, le projet et ses écrans demeurent. Les identifiants locaux et l’état de nouvelle tentative restent lorsque la réponse est ambiguë, donc relancer est sans risque.
agent revoke-identity#
Révoquer cette identité et toutes ses adhésions aux projets.
agent revoke-identity --yes| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--yes | boolean | oui | désactivé | Confirmer la révocation dans tous les projets. |
screenrig agent revoke-identity --yesUne révocation confirmée efface les identifiants locaux et le travail en attente de chaque projet en cache. Un échec ambigu les conserve.
login#
Connectez cette installation à un compte existant, avec l’approbation d’une personne dans le tableau de bord, ou en tant que client de service.
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)| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--project ID | string | non | aucun | Suggérer le projet prj_ que la personne approuve. |
--access LEVEL | string | non | gérer | read, propose ou manage. La personne fait le choix final. |
--name NAME | string | non | aucun | Nommez cette installation, au maximum 80 caractères. |
--no-wait | boolean | non | désactivé | Retourner status: pending avec l’adresse, le code et une poignée login_. |
--resume ID | string | non | aucun | Attendre la connexion en attente que --no-wait a lancée. |
--client-id ID | string | non | aucun | Connecter cette configuration en tant que client de service (scl_…) plutôt qu’en tant que personne, sans approbation. Pas avec --no-wait, --project, --access ou --name. |
--client-key-file PATH | chemin | avec --client-id | aucun | La clé privée du client, un JWK ou PEM. Exactement un seul parmi le fichier de clé et le fichier de secret. |
--client-secret-file PATH | chemin | avec --client-id | aucun | Un fichier contenant le secret du client. |
screenrig login --access read
screenrig --config ci.json login --client-id scl_01EXAMPLECLIENT0000 --client-key-file ci-key.pemImprime l’adresse du tableau de bord et un code de huit lettres sur stderr, puis attend jusqu’à 24 heures. La personne vérifie que le code correspond et appuie une fois sur Connecter, sans deuxième invite de clé d’accès après une connexion au tableau de bord dans l’heure précédente. L’enveloppe rapporte status: signed_in, le projet, l’organisation et access. L’exécuter à nouveau sur une installation connectée ajoute un projet ou élève un projet en lecture seule ou à proposer en gestion. Le refus est login_denied et l’expiration est login_expired.
La configuration d’un client de service doit être son propre fichier : chaque commande ultérieure avec ce --config se connecte en tant que client, lit le fichier de clé ou de secret à chaque fois et garde le jeton en mémoire.
logout#
Terminer la connexion de cette installation et supprimer ses jetons.
logoutAucun paramètre.
screenrig logoutRévoque la connexion sur le serveur, puis supprime les jetons stockés et rapporte status: signed_out. Dans la configuration d’un client de service, elle supprime le client enregistré et laisse son fichier de clé ou de secret. Un échec qui n’a peut-être pas atteint le serveur les conserve, donc relancer est sans risque. Exécutez screenrig login pour vous reconnecter.
dashboard#
Ouvrez l’URL ordinaire du tableau de bord. Cette commande ne crée pas de lien de connexion, ne crée pas de session et ne nécessite pas d’identifiant d’agent.
dashboard [open]
screenrig dashboard
Le tableau de bord affiche les projets de la personne après connexion. La sélection de projet dans le navigateur ne change pas le projet lié à un agent.
dashboard reset-sign-in#
Demander un courriel de réinitialisation de connexion sans justificatif d’agent.
dashboard reset-sign-in --email ADDRESSL’accusé de réception ne révèle pas si le courriel a une connexion. La réinitialisation envoyée par courriel expire après une heure ; la personne crée une nouvelle clé d’accès. La complétion remplace ses identifiants de connexion et révoque les autres sessions. Tant que la propriété du projet est encore en attente depuis l’inscription, --email avec l’adresse d’inscription d’origine envoie aussi par courriel une nouvelle invitation d’inscription valide sept jours ; la personne l’ouvre et l’accepte avec sa connexion pour revendiquer la propriété.
doctor#
Vérifiez cette installation et signalez chaque vérification par nom.
doctor [--repair-config]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--repair-config | boolean | non | désactivé | Restreindre les permissions d’un fichier de configuration existant lisible par le groupe ou les autres. |
screenrig doctordata.checks nomme chaque vérification et son statut (pass, warn ou fail) : le runtime Node, le chemin de configuration résolu et ses permissions, l’identifiant stocké et la fin de la connexion, l’origine du plan de contrôle et ses routes de service, la capacité feedback annoncée, et la chaîne d’outils multimédias optionnelle (ffmpeg, ffprobe, encoder_libx264, encoder_libx265, encoder_libwebp, cwebp, filter_hdr_tonemap).
Toute vérification échouée fait sortir doctor avec un code non nul, ce que ne fait pas un warn, donc lisez les noms individuels avant de déclarer l’installation non saine. Une chaîne d’outils média manquante n’affecte que les commandes qui convertissent des médias : media upload, media upload-batch, media replace et playlist init.
version#
Imprime la version CLI intégrée et son adaptateur de protocole.
version
Aucun paramètre.
screenrig version
Exécutez ceci en premier dans une session. Une enveloppe réussie prouve que le lanceur a résolu le CLI intégré. --version et -V font la même chose depuis n’importe où dans la ligne de commande.
Facturation
Limites du forfait et montants publicitaires du projet. Les requêtes, le stockage, la lecture et tout le reste que fait un projet ne sont jamais facturés; les montants ici concernent uniquement la publicité. Les trois commandes sont gratuites, et les lectures de /api/billing ne comptent pas dans le plafond horaire de requêtes d’agent.
billing usage#
Lire les limites de stockage et de requêtes d’agent du forfait.
billing usageAucun paramètre.
screenrig billing usagedata.stored_bytes est le stockage utilisé et data.allowance.storage_bytes la limite de stockage du forfait; un téléversement qui la dépasse est refusé avec quota_exceeded. data.allowance.requests_per_hour est le plafond horaire de requêtes d’agent (agent_requests_per_hour dans la sortie pour humains). Les requêtes restantes pour cette heure figurent dans l’en-tête RateLimit de chaque réponse comptée.
billing balance#
Lire les montants publicitaires en dollars américains : restant, réservé, disponible et revenus payables.
billing balanceAucun paramètre.
screenrig billing balanceLes annonceurs paient par carte ou par paiement machine x402, les prix et les revenus sont en dollars américains, et les versements commencent le 1er janvier 2027. La sortie pour humains affiche des dollars; le JSON conserve les membres décimaux mcr, où 10 000 000 mcr valent US$1.
billing statement#
Lire les entrées publiées du grand livre.
billing statement [--cursor CURSOR] [--limit COUNT]| Paramètre | Type | Requis | Par défaut | Notes |
|---|---|---|---|---|
--cursor CURSOR | string | non | première page | Le next_cursor d’un relevé précédent. |
--limit COUNT | integer | non | valeur par défaut du serveur | Le nombre maximal d’entrées à retourner. |
screenrig billing statement --limit 20Les entrées sont des lignes du grand livre comptabilisées, en dollars américains, dans un ordre stable. Les réservations apparaissent comme des retenues, non comme des revenus ou des dépenses comptabilisés, et une correction renvoie à l’entrée d’origine au lieu de la réécrire. Un débit publicitaire est visible pour l’acheteur; un vendeur voit son brut, les frais de service et son net.