Référence API

API Écrans

Écrans

Référence HTTP. Générée à partir du contrat backend. Parcourez les points de terminaison ci-dessous ou téléchargez OpenAPI.

Ce groupe compte 84 opérations, générées à partir de api/openapi.yaml. Filtrez par chemin, action ou authentification. Chaque point de terminaison liste ses entrées ; développez-le pour voir un modèle de requête et les codes de réponse. Les modèles demandent vos propres valeurs et un corps conforme au schéma.

Remplacez les espaces réservés en majuscules par vos valeurs. Pour une requête JSON, enregistrez un corps correspondant au schéma dans request.json. Les exemples de cookies utilisent un pot à cookies local issu d’une session authentifiée.

Écrans

GET/api/screens

Lister les écrans

La liste par défaut retourne les écrans pairing_pending et actifs. Passez state=archived pour lister uniquement les écrans archivés. Passez tag pour lister uniquement les écrans dont les tags contiennent ce tag exact ; les écrans sans tag sont omis lorsque le filtre est présent.

Passez field, une fois par champ, sous la forme NAME:VALUE pour ne lister que les écrans dont les champs contiennent toutes les valeurs, et near sous la forme LAT,LON,KM pour ne lister que les écrans situés à KM kilomètres ou moins du point; les écrans sans emplacement sont omis, et chaque filtre se combine avec state et tag.

Passez folder comme ID de dossier d’écrans pour ne lister que les écrans directement à l’intérieur (pas ceux de ses sous-dossiers), ou root pour les écrans hors de tout dossier.

Les écrans sont du plus récent au plus ancien, 500 par page au plus. next_cursor est la position de la dernière ligne renvoyée tant qu’il reste des lignes ; renvoyez-le comme after, avec les mêmes filtres, pour la page suivante. next_cursor est null sur la dernière page. Un appelant limité aux écrans (docs/screen-scope.md) ne liste que les écrans de son périmètre.

Une requête qui ne nomme aucun projet omet chaque projet où l’appelant est limité aux écrans ; nommez le projet pour le lister.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
listScreens

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
étatrequêteoptionnelOmettre pour pairing_pending et active. Passez archived pour lister uniquement les écrans archivés.
étiquetterequêteoptionnelÉtiquette d’écran exacte. Les écrans non étiquetés sont omis lorsque ce filtre est présent.
fieldrequêteoptionnel

NAME:VALUE, séparé au premier deux-points : seuls les écrans dont le champ NAME contient exactement VALUE. Répétez le paramètre pour plusieurs champs; chacun doit correspondre, et un nom ne peut être donné qu'une fois. Un paramètre mal formé ou répété entraîne invalid_request, qui nomme field.

nearrequêteoptionnel

LAT,LON,KM en degrés décimaux et en kilomètres, par exemple 47.6062,-122.3321,25 : seuls les écrans dont l'emplacement se trouve à KM kilomètres ou moins du point. La latitude va de -90 à 90, la longitude de -180 à 180, et KM est supérieur à 0 et d'au plus 20038. Les écrans sans emplacement sont omis. Une valeur mal formée entraîne invalid_request, qui nomme near.

dossierrequêteoptionnelUn ID de dossier d’écrans ne conserve que les écrans directement dans ce dossier, pas ceux de ses sous-dossiers ; root ne conserve que les écrans hors de tout dossier. Omettre liste tous les écrans.
aprèsrequêteoptionnelnext_cursor de la page précédente de la même liste, avec les mêmes filtres. Omission commence à la ligne la plus récente. Une valeur qui n’est pas un tel curseur est invalid_request.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens'

Réponses

StatutSensCorps et en-têtes
200ÉcransScreenList (application/json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screen-folders

Lister les dossiers d’écrans

Liste chaque dossier d’écrans du projet, au maximum 1000, ordonnés par nom.

Les dossiers organisent les écrans et les ciblent : une feuille d’audience de campagne {"folder": ID} correspond aux écrans de ce dossier et de chaque dossier à l’intérieur, un sélecteur d’action de flotte by:folder agit sur les mêmes écrans, et le default_playlist_id d’un dossier est ce que montrent ses écrans sans liste de lecture propre. parent_id est null à la racine du projet ; construisez l’arbre à partir de parent_id. screens compte les écrans actifs directement à l’intérieur de chaque dossier.

Le dossier d’un écran est Screen.folder_id. Un appelant limité aux écrans (docs/screen-scope.md) liste les dossiers de son périmètre et les dossiers au-dessus, qui sont en lecture seule pour que son arbre ait une racine ; les dossiers au-dessus n’ont pas de nombre d’écrans et les dossiers frères sont masqués. Une requête qui ne nomme aucun projet omet chaque projet où l’appelant est limité aux écrans.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
listScreenFolders

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screen-folders'

Réponses

StatutSensCorps et en-têtes
200Dossiers d’écransScreenFolderList (application/json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screen-folders

Créer un dossier d’écrans

Crée un dossier d’écrans à la racine du projet (parent_id null ou absent) ou à l’intérieur de parent_id. Les noms sont tronqués, contiennent de 1 à 100 caractères Unicode sans contrôles, ne sont ni "." ni "..", et sont uniques parmi les dossiers frères (resource_conflict).

Une organisation contient au maximum 1000 dossiers, tous projets confondus (quota_exceeded), imbriqués au maximum à 10 niveaux (invalid_request). default_playlist_id, lorsqu’il est défini, doit nommer une liste de lecture approuvée (playlist_not_approved). Émet screen.folder_created.

Un appelant limité aux écrans (docs/screen-scope.md) ne crée un dossier que dans un dossier de son périmètre ; la racine du projet ou tout autre parent est outside_screen_scope. Créer un dossier dans un dossier protégé est une révision protected_change (202 pending_review) décidée par un second approbateur.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenFolderCreate
ID d’opération
createScreenFolder

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
nom (obligatoire, chaîne)Tronqué ; 1 à 100 caractères Unicode, sans contrôles, ni . ou .., unique parmi les dossiers frères. minLength: 1 maxLength: 100
parent_id (optionnel, en ligne)Le dossier dans lequel le créer ; null ou absent pour la racine du projet.
default_playlist_id (optionnel, chaîne)Une liste de lecture approuvée pour les écrans du dossier qui n’ont pas la leur. minLength: 1
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screen-folders'

Réponses

StatutSensCorps et en-têtes
201Dossier créé.ScreenFolder (application/json) ; en-têtes : ETag
202

L’écriture est devenue une révision et attend l’approbation d’une personne (docs/reviews.md), sous l’accès Proposer, ou à n’importe quel niveau d’accès quand elle atteint un écran d’un dossier d’écrans protégé, où un second approbateur décide (docs/screen-scope.md). Une personne approuve, rejette ou demande des modifications dans le tableau de bord à review.url.

Une relecture d’Idempotency-Key répond avec le même corps.

ReviewPending (application/json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screen-folders/{id}

Obtenir le dossier d’écrans

Un appelant limité aux écrans (docs/screen-scope.md) lit les dossiers de son périmètre et les dossiers au-dessus ; tout autre dossier, et un ID inconnu, est outside_screen_scope.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenFolder

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screen-folders/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Un dossier d’écrans.ScreenFolder (application/json) ; en-têtes : ETag
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screen-folders/{id}

Mettre à jour le dossier d’écrans

Renomme un dossier (name), le déplace avec tout son contenu (parent_id, null pour la racine du projet) ou définit la liste de lecture par défaut que montrent ses écrans sans liste propre (default_playlist_id, null l’efface). Un dossier ne peut pas être déplacé dans lui-même ni dans un dossier qu’il contient, et le déplacement doit maintenir chaque dossier dans une profondeur maximale de 10 niveaux (invalid_request).

Un déplacement ou un changement de valeur par défaut réévalue les écrans qui s’y trouvent en 15 secondes environ, et les levels de la réponse nomment les campagnes et les valeurs par défaut de dossier que ces écrans gagnent ou perdent. Une modification fait avancer la révision du dossier et émet screen.folder_updated ; les mêmes valeurs sont sans effet.

If-Match protège la révision de façon facultative. protected à true protège le dossier et chaque dossier qu’il contient, et false lève la protection ; envoyez-le seul (sinon invalid_request). Seule une personne qui peut approuver le définit : un agent, un client de service ou un membre qui ne peut pas approuver obtient approver_required.

Une modification ajoute screen.folder_protection_changed (détails folder_id, protected). Lever la protection, ainsi que déplacer un dossier qui contient des écrans protégés ou changer sa liste de lecture par défaut, est une révision protected_change (202 pending_review) décidée par un second approbateur.

Un appelant limité aux écrans (docs/screen-scope.md) ne modifie que des dossiers dans son périmètre : parent_id doit en nommer un aussi (la racine est outside_screen_scope), et protected n’est pas à lui de le modifier sur un dossier que son périmètre nomme. protected true relève des dossiers protégés, que le forfait Enterprise inclut ; un projet dont le forfait n’inclut pas cette fonctionnalité est refusé avec feature_not_in_plan (402).

Une protection définie continue de retenir les modifications pour un second approbateur, et demander de la retirer est une révision, quel que soit le forfait.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenFolderPatch
ID d’opération
updateScreenFolder

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
nom (optionnel, chaîne)Tronqué ; 1 à 100 caractères Unicode, sans contrôles, ni . ou .., unique parmi les dossiers frères. minLength: 1 maxLength: 100
parent_id (optionnel, en ligne)Déplacez le dossier dans celui-ci ; null pour la racine du projet.
default_playlist_id (optionnel, en ligne)Une liste de lecture approuvée pour les écrans du dossier qui n’ont pas la leur ; null l’efface.
protected (facultatif, booléen)

Protège le dossier et chaque dossier qu’il contient (docs/screen-scope.md). Seule une personne qui peut approuver le définit. Envoyez-le seul : avec tout autre membre, la requête est invalid_request. Le lever sur un dossier protégé est lui-même une modification protégée, une révision décidée par un second approbateur (202 pending_review).

Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screen-folders/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Dossier mis à jour.ScreenFolder (application/json) ; en-têtes : ETag
202

L’écriture est devenue une révision et attend l’approbation d’une personne (docs/reviews.md), sous l’accès Proposer, ou à n’importe quel niveau d’accès quand elle atteint un écran d’un dossier d’écrans protégé, où un second approbateur décide (docs/screen-scope.md). Une personne approuve, rejette ou demande des modifications dans le tableau de bord à review.url.

Une relecture d’Idempotency-Key répond avec le même corps.

ReviewPending (application/json)
402feature_not_in_plan — Les dossiers protégés font partie du forfait Enterprise ; le problème nomme la fonctionnalité, le forfait du compte et required_plan.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screen-folders/{id}

Supprimer le dossier d’écrans

Supprime un dossier. Rien à l’intérieur n’est supprimé : ses écrans et dossiers montent dans le parent du dossier supprimé (la racine du projet s’il n’en avait pas), chaque dossier déplacé faisant avancer sa révision, et ces écrans sont réévalués.

Refusé avec resource_conflict tant qu’une audience de campagne nomme le dossier, afin qu’aucun horaire ne perde ses écrans en silence : modifiez ou supprimez d’abord ces campagnes. Répond avec les niveaux que ses écrans ont gagnés ou perdus. Émet screen.folder_deleted. If-Match protège optionnellement la révision.

Un appelant limité aux écrans (docs/screen-scope.md) ne supprime qu’un dossier de son périmètre que son périmètre ne nomme pas lui-même (outside_screen_scope) ; les écrans qu’il contient remontent dans le parent. Supprimer un dossier protégé, ou un dossier qui contient des écrans protégés, est une révision protected_change (202 pending_review) décidée par un second approbateur.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
deleteScreenFolder

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screen-folders/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Supprimé ; son contenu est maintenant dans son parent. levels nomme les listes de lecture par défaut de dossier que ses écrans ont gagnées ou perdues.ScreenFolderDeleteResult (application/json)
202

L’écriture est devenue une révision et attend l’approbation d’une personne (docs/reviews.md), sous l’accès Proposer, ou à n’importe quel niveau d’accès quand elle atteint un écran d’un dossier d’écrans protégé, où un second approbateur décide (docs/screen-scope.md). Une personne approuve, rejette ou demande des modifications dans le tableau de bord à review.url.

Une relecture d’Idempotency-Key répond avec le même corps.

ReviewPending (application/json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/move

Déplacer les écrans

Déplace des écrans (screen_ids) et des dossiers (folder_ids) dans un dossier (folder_id), ou à la racine du projet lorsque folder_id est null, en une seule requête tout ou rien d’au plus 1000 identifiants. Chaque identifiant doit exister (not_found). Un dossier ne peut pas être déplacé dans lui-même ni dans un dossier qu’il contient, et le déplacement doit maintenir chaque dossier dans une profondeur maximale de 10 niveaux (invalid_request).

Les éléments déjà dans la destination sont laissés tels quels ; chaque écran et dossier déplacé fait avancer sa révision. Les écrans déplacés résolvent à nouveau leur liste de lecture en environ 15 secondes : levels nomme les campagnes dont ils rejoignent ou quittent l’audience de dossier et les listes de lecture par défaut de dossier qu’ils gagnent ou perdent.

Émet screen.moved, dont les détails portent les comptes (screens, folders) et l’emplacement de chaque élément déplacé : moves [{screen_id, from}] (from est l’id du dossier, vide pour la racine) et folder_moves [{folder_id, from_parent}], au plus 1000 chacun, de sorte qu’un historique peut les remettre en place avec cette route.

Un appelant limité aux écrans (docs/screen-scope.md) déplace des écrans et des dossiers de son périmètre vers un dossier de son périmètre ; tout ID ou toute destination en dehors de celui-ci, ainsi que la racine du projet, fait refuser tout le déplacement (outside_screen_scope), y compris quand un écran quitte le périmètre entre la vérification et l’écriture.

Un déplacement vers l’intérieur ou l’extérieur d’un dossier protégé est une révision protected_change (202 pending_review) décidée par un second approbateur.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenMove
ID d’opération
moveScreens

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
folder_id (obligatoire, en ligne)Dossier de destination ; null pour la racine du projet.
screen_ids (optionnel, array)
folder_ids (optionnel, tableau)
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/move'

Réponses

StatutSensCorps et en-têtes
200Combien d’écrans et de dossiers ont été déplacés, et les levels que les écrans déplacés gagnent ou perdent.ScreenMoveResult (application/json)
202

L’écriture est devenue une révision et attend l’approbation d’une personne (docs/reviews.md), sous l’accès Proposer, ou à n’importe quel niveau d’accès quand elle atteint un écran d’un dossier d’écrans protégé, où un second approbateur décide (docs/screen-scope.md). Une personne approuve, rejette ou demande des modifications dans le tableau de bord à review.url.

Une relecture d’Idempotency-Key répond avec le même corps.

ReviewPending (application/json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/schedule/calendar

Obtenir le calendrier de programmation

Répond à ce que jouent les écrans d’un sujet sur [from, to) et pourquoi, pour le calendrier de programmation du tableau de bord : exactement un parmi screen_id, folder_id (les écrans du dossier et de chaque dossier qu’il contient), tag ou campaign_id (les écrans de son audience).

Les écrans dont les piles ont des entrées identiques (mêmes niveaux, défaut, fuseau horaire et nombre d’afficheurs) partagent un groupe avec une seule chronologie, de sorte qu’un grand sujet coûte quelques dizaines de chronologies ; un groupe liste jusqu’à 500 de ses écrans et une réponse au plus 200 groupes (truncated).

Chaque groupe porte sa pile, la plus prioritaire en premier (prise de contrôle, campagnes qui atteignent les écrans, leurs propres entrées de programmation, puis la liste de lecture par défaut ou celle du dossier le plus proche), les périodes de chaque niveau (plays sur chaque afficheur qu’il cible, partial avec les afficheurs sur lesquels il joue, outranked, ou conditional tant qu’il attend une interaction ou une condition de données que seul un Player observe), ce que montre chaque afficheur (on_screen ; la région principale d’une page complète) et conflicts (deux campagnes de même priorité en vigueur à la fois ; un niveau en vigueur qui ne joue jamais). from et to sont des instants RFC 3339, to après from, à au plus 93 jours d’écart ; ils sont tronqués à la minute.

Les règles sont lues dans le fuseau horaire de chaque groupe, comme le font le balayage et chaque Player ; chaque niveau est jugé jouable. Un appelant limité aux écrans (docs/screen-scope.md) doit envoyer un screen_id ou un folder_id dans son périmètre ; une étiquette, un campaign_id ou l’absence de sujet est outside_screen_scope.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScheduleCalendar

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
derequêteobligatoire
àrequêteobligatoire
screen_idrequêteoptionnel
folder_idrequêteoptionnel
étiquetterequêteoptionnel
campaign_idrequêteoptionnel
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/schedule/calendar?from=FROM&to=TO'

Réponses

StatutSensCorps et en-têtes
200Le calendrier du sujet.ScheduleCalendar (application/json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/pair

Jumeler écran

Réclame une session d’association Player globale à la flotte de six caractères. Les tentatives Idempotency-Key exactes retournent le résultat original durable sans consommer à nouveau le quota.

La session du tableau de bord réclame dans son projet actuel avec le même corps, la même Idempotency-Key, les mêmes budgets et les mêmes problèmes, sauf que son not_found pour un code inconnu ou déjà réclamé ne nomme aucune commande CLI ; c’est un changement d’état, il suit donc les règles de mutation du tableau de bord, une session fantôme sans mode d’écriture du personnel est refusée, et les événements que la réclamation ajoute nomment l’utilisateur du tableau de bord. folder_id nomme le dossier où l’écran arrive.

Un appelant limité aux écrans (docs/screen-scope.md) doit envoyer un dossier de son périmètre et ne jumelle qu’en tant que personne qui peut approuver (outside_screen_scope, approver_required).

Authentification
projectBearer OU dashboardSession
Corps de la requête
Écran de jumelage
ID d’opération
pairScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
Idempotency-Keyen-têteobligatoire

Champs du corps de la requête

ChampDescription
code (obligatoire, chaîne)modèle : "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{6}$"
étiquette (optionnelle, chaîne)minLength : 1 maxLength : 120
folder_id (facultatif, chaîne)

Le dossier d’écrans où l’écran arrive ; omis, il l’amène à la racine du projet. Un appelant limité aux écrans doit envoyer un dossier de son périmètre (sinon outside_screen_scope). Un dossier que le projet ne contient pas donne invalid_request pour un appelant du projet entier.

Fait partie de la requête idempotente : un autre folder_id sous la même Idempotency-Key donne idempotency_mismatch. minLength: 1

Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/pair'

Réponses

StatutSensCorps et en-têtes
201Réclamation d’écran pairing_pending durable.PairingClaim (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
413

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
500

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/provision

Approvisionner l’écran

Provisionnement facultatif d’un nouvel écran, réservé au navigateur. Crée toujours un nouvel écran pairing_pending ; au plus cinq attendent d’être jumelés en même temps (quota_exceeded). Les nouvelles tentatives exactes redonnent le même jeton de fragment pendant dix minutes. Le jumelage à six caractères reste la valeur par défaut et le seul flux de récupération. folder_id nomme le dossier où l’écran arrive.

Un appelant limité aux écrans (docs/screen-scope.md) doit envoyer un dossier de son périmètre (sinon outside_screen_scope).

Authentification
projectBearer
Corps de la requête
ApprovisionnerÉcran
ID d’opération
provisionScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
Idempotency-Keyen-têteobligatoire

Champs du corps de la requête

ChampDescription
étiquette (optionnelle, chaîne)minLength : 1 maxLength : 120
folder_id (facultatif, chaîne)Le dossier d’écrans où l’écran arrive, comme sur PairScreen. minLength: 1
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/provision'

Réponses

StatutSensCorps et en-têtes
201Nouveau lien de provisionnement du navigateur.ScreenProvisioning (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
410

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
413

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
500

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/actions

Appliquer les actions d’écran

Applique une action à une flotte sélectionnée sans limite de nombre d’écrans. Sélectionnez un screen_ids unique ou une étiquette correspondant aux écrans actifs dans l’ordre de création. La sélection résolue est épinglée avant toute mutation, stockée en morceaux limités, et conservée pendant vingt-quatre heures sous Idempotency-Key.

Chaque étape utilise son chemin de mutation à écran unique, en préservant les révisions, événements, signaux d’exécution et limites par écran. Une réponse contient une page limitée de résultats ; correspondants, réussis et échoués décrivent cette page. HTTP 202 inclut le total, l’offset et next_cursor. Continuez avec le même sélecteur, la même action et Idempotency-Key, en passant next_cursor comme after.

Respectez Retry-After lorsqu’il est présent, y compris une page avec zéro résultat. La réponse renvoie Idempotency-Key, y compris une clé générée lorsque l’appelant l’a omise ; conservez cette clé pour les suites. Le HTTP 200 termine la sélection. Les pages répondues rejouent exactement, y compris les échecs par écran ; les étapes interrompues rejouent sans répéter leurs effets.

Les grandes actions sont limitées par les budgets existants de 600 par minute et par organisation pour rechargement, toast, prise de contrôle, horaires de playlist, redémarrage, affichage et horaires d’affichage ; l’épuisement du budget de l’organisation met l’action en pause au lieu de refuser la flotte. L’épuisement par écran échoue uniquement pour cet écran.

Une étape assign, takeover ou set_playlist_schedule qui lie une liste de lecture ayant un format à un écran dont le mur a une autre forme échoue pour cet écran seul avec 409 playlist_format_mismatch. Les changements d’assignation et d’étiquette n’ont pas de budget de messages.

Une assignation dont la liste de lecture contient un src d’iframe ou des params d’application qui lisent un jeton d’écran manquant à un écran de la page ajoute un avertissement screen_fact_missing à cette page (warnings, PlaylistWarning). L’échec partiel est un résultat normal. Toutes les pages et tentatives sous une même clé forment une seule action mesurée.

Les requêtes utilisent une charge utile d’octets limitée ; utilisez un tag pour une sélection plus grande que la charge utile de transport. Un sélecteur ou une action mal formé est refusé avant toute modification d’écran.

Un appelant limité aux écrans (docs/screen-scope.md) sélectionne par screen_ids ou par dossier, chaque écran de son périmètre ; un sélecteur d’étiquette, un écran en dehors du périmètre ou un écran inconnu fait refuser toute l’action (outside_screen_scope) avant que quoi que ce soit soit épinglé ou proposé.

Assign, takeover, takeover_clear, set_playlist_schedule et clear_playlist_schedule qui atteignent un écran protégé deviennent une révision décidée par un second approbateur (202 pending_review) à tous les niveaux d’accès ; set_tags, add_tags, remove_tags, toast, display, display_clear, set_display_schedule et clear_display_schedule sur un écran protégé donnent protected_target (409).

Une action set_playlist_schedule avec une entrée en pause (un brouillon) relève du contrôle des changements d’horaire, que le forfait Enterprise inclut ; un projet dont le forfait n’inclut pas cette fonctionnalité est refusé avec feature_not_in_plan (402).

Authentification
projectBearer
Corps de la requête
ScreenActionRequest
ID d’opération
applyScreenActions

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
Screenrig-Review-Noteen-têteoptionnel

Note optionnelle du proposant sur une écriture de classe revue, envoyée en UTF-8 encodé en pourcentage (ce que encodeURIComponent de JavaScript écrit). Le serveur la décode en pourcentage (une échappée invalide est 400 invalid_request) ; la note décodée est du texte brut, au plus 280 caractères après suppression des espaces, sans caractères de contrôle (sinon 400 invalid_request).

Stocké lors de la révision quand l’écriture devient une ; ignoré lorsqu’elle s’applique en direct.

Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
aprèsrequêteoptionnelnext_cursor de la page de résultats précédente. Réutilisez le Idempotency-Key original et le corps de la requête.

Champs du corps de la requête

ChampDescription
sélecteur (obligatoire, ScreenActionSelector)
action (obligatoire, ScreenAction)Une action de flotte, discriminée par type. Chaque membre porte uniquement ses propres paramètres ; un membre d’un autre type est un champ inconnu et invalid_request.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/actions'

Réponses

StatutSensCorps et en-têtes
200Résultats par écran. Le succès partiel est une réponse normale.ScreenActionResult (application/json) ; en-têtes : Idempotency-Key, Cache-Control, RateLimit-Policy, RateLimit
202

Il reste des écrans (continuez avec next_cursor et la même Idempotency-Key et le même corps, en respectant Retry-After), ou, avec le statut pending_review, l’action est devenue une révision sous l’accès Proposer (docs/reviews.md), ou à n’importe quel niveau d’accès parce qu’elle atteint un écran d’un dossier d’écrans protégé (docs/screen-scope.md).

Seules les actions assigner, prendre le contrôle, takeover_clear, set_playlist_schedule et clear_playlist_schedule deviennent des révisions ; toute autre action est insufficient_access pour Proposer.

inline (application/json) ; en-têtes : Idempotency-Key, Retry-After, Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
402

feature_not_in_plan — set_reboot_schedule avec enabled true (redémarrages planifiés) et set_playlist_schedule avec un verrou displays (murs vidéo) font partie de Plus ; les actions d’effacement et les commandes ponctuelles sont ouvertes. payment_required — le projet n’a plus de crédit. Le problème nomme la fonctionnalité, le forfait du projet et required_plan.

Problème (application/problem+json)
403insufficient_access, outside_screen_scope quand un appelant limité aux écrans sélectionne en dehors de son périmètre, ou approver_required pour un membre limité aux écrans qui ne peut pas approuver.Problème (application/problem+json)
409

playlist_format_mismatch et les autres conflits de l’action, ou protected_target quand set_tags, add_tags, remove_tags, toast, display, display_clear, set_display_schedule ou clear_display_schedule atteint un écran d’un dossier d’écrans protégé.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}

Obtenir l’écran

Renvoie pairing_pending, écrans actifs et archivés. Les écrans supprimés ne sont pas trouvés.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200ÉcranÉcran (application/json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}

Mettre à jour l’écran

Met à jour le name, playlist_id, timezone, wall, tags, fields, location, log_level, toast_level, display ou kiosk de l’écran. Un changement de tag répond levels : les campagnes que l’écran rejoint ou quitte, avec la portée de chaque campagne avant et après. wall fixe le mur vidéo de l’écran (un objet) ou l’efface (null).

Définir un mur vidéo exige un Player qui a déclaré la capacité d’hôte display.wall, sinon 409 wall_unsupported.

Sa modification régénère la révision du manifeste et ajoute screen.updated avec details.wall (l'objet du mur vidéo, ou null une fois effacé). fields fusionne avec les valeurs propres à l'écran (une chaîne définit un champ, null le retire, un fields valant null efface tous les champs) et location indique où se trouve l'écran (null l'efface).

La modification de l'un ou l'autre régénère la révision du manifeste d'un écran qui affiche une liste de lecture, de sorte que ses placements de cartes remplacent de nouveau leurs jetons {screen.…}, et ajoute screen.updated avec details.fields (le nouvel objet complet, {} une fois effacé) ou details.location (le nouvel objet, ou null une fois effacé).

Un nom ou une valeur que la grammaire refuse, ou un trente-troisième champ, donne invalid_request qui le nomme. log_level (debug, info, warn, error) et toast_level (info, alert, error) fixent le niveau le plus bas que le Player génère ou affiche, et null efface chacun ; toute autre valeur donne invalid_request.

Changer l’un ou l’autre régénère la révision du manifeste, qui les porte comme membre racine verbosity. display définit ou efface les paramètres d’assombrissement à l’inactivité et de luminosité de l’afficheur : display.idle {after_s, wake} assombrit l’écran après after_s secondes (30 à 86400) sans toucher ni touche ou, lorsque wake liste presence, sans personne devant l’écran, et un événement de réveil (touch, presence ou both, chacun une fois) le rallume aussitôt ; display.brightness {mode} vaut auto (le capteur de lumière de l’appareil règle la luminosité) ou fixed (valeur par défaut, la luminosité de l’opérateur).

Un membre que vous envoyez le remplace, null l’efface, un membre omis reste tel quel, et un display null efface les deux. kiosk {lock} true épingle le Player à l’écran (épinglage d’écran Android) et false ou null le libère. L’horaire d’affichage et la substitution gardent leurs propres routes ; un membre display qui nomme schedule ou override est invalid_request.

Une valeur hors plage ou d’un mauvais type est invalid_request et nomme le chemin (display.idle.after_s).

La modification de l’un d’eux régénère la révision du manifeste d’un écran qui affiche une liste de lecture et change l’ETag du manifeste de chaque écran ; le manifeste porte display.idle et display.brightness dans le membre racine display et le verrouillage comme membre racine kiosk, et screen.manifest_changed est ajouté ; l’écran les relit comme Screen.display.idle, Screen.display.brightness et Screen.kiosk.

Le backend enregistre ce que vous envoyez quel que soit le Player : un Player n’applique un paramètre que si ses capacités d’hôte déclarent display_power.idle, brightness.auto ou kiosk_lock, et les Players plus anciens les ignorent. Affecter une liste de lecture dont le format ne correspond pas au mur de l’écran donne 409 playlist_format_mismatch.

Avec l’accès Propose, un patch de playlist_id seul devient une révision (202 pending_review) ; tout autre champ, y compris wall, fields, location, display et kiosk, donne insufficient_access. Une liste de lecture sans version approuvée donne playlist_not_approved.

Lorsque la liste de lecture que l’écran affiche ensuite contient un src d’iframe ou des params d’application qui lisent un jeton d’écran que l’écran n’a pas, la réponse porte un avertissement screen_fact_missing (warnings, PlaylistWarning) et le manifeste de l’écran omet cette primitive.

Sur un écran protégé, playlist_id nécessite une révision par une deuxième personne autorisée à approuver (202 pending_review), quel que soit le niveau d’accès, et doit être envoyé seul (invalid_request avec name) ; tags, fields, location, timezone, wall et display donnent protected_target (409), même avec playlist_id. Le changement de nom reste immédiat. Vider playlist_id (null) sur un écran archivé donne 409 screen_archived.

Authentification
projectBearer
Corps de la requête
ScreenPatch
ID d’opération
updateScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Screenrig-Review-Noteen-têteoptionnel

Note optionnelle du proposant sur une écriture de classe revue, envoyée en UTF-8 encodé en pourcentage (ce que encodeURIComponent de JavaScript écrit). Le serveur la décode en pourcentage (une échappée invalide est 400 invalid_request) ; la note décodée est du texte brut, au plus 280 caractères après suppression des espaces, sans caractères de contrôle (sinon 400 invalid_request).

Stocké lors de la révision quand l’écriture devient une ; ignoré lorsqu’elle s’applique en direct.

If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
nom (optionnel, chaîne)minLength : 1 maxLength : 120
playlist_id (facultatif, en ligne)

La valeur par défaut de l’écran : un identifiant de liste de lecture l’assigne; null la retire; l’omettre la conserve. Les prises de contrôle, les campagnes, les horaires et les valeurs par défaut héritées des dossiers gardent la priorité. Sans contenu effectif, le Player jumelé affiche son écran d’attente.

fuseau horaire (optionnel, chaîne)

Identifiant de fuseau horaire IANA, par exemple America/Los_Angeles. C’est la zone dans laquelle chaque règle de visibilité de page sur cet écran est évaluée. Le changer recrée la révision du manifeste. Un écran assigné à une liste de lecture qui utilise la visibilité de page doit en avoir un. minLength : 1 maxLength : 64

wall (optionnel, en ligne)Le mur vidéo de l’écran ; null le supprime. En définir un nécessite un lecteur qui a déclaré la capacité d’hôte display.wall, sinon 409 wall_unsupported. Le changer recrée la révision du manifeste.
étiquettes (optionnelles, ScreenTags)

Étiquettes de sélection de flotte, de 0 à 16 étiquettes exactes uniques, chacune correspondant à la grammaire des étiquettes médias. Sur ScreenPatch, le tableau remplace l’ensemble complet et un tableau vide le vide ; une étiquette en double ou mal formée est invalid_request. Modifier les étiquettes augmente la révision de l’écran (If-Match la protège) et ajoute screen.updated avec details.tags ; cela ne modifie jamais la révision du manifeste.

Les étiquettes ne figurent jamais dans le manifeste d’exécution ni dans l’autorisation.

fields (facultatif, inline)

Fusionne avec les valeurs propres à l'écran, comme un numéro de magasin ou une région : une chaîne définit un champ, null le retire, et un fields valant null efface tous les champs. Les noms comptent de 1 à 32 lettres minuscules, chiffres ou traits de soulignement; les valeurs, de 1 à 200 caractères après suppression des espaces de début et de fin; un écran compte au plus 32 champs.

La modification des champs régénère la révision du manifeste d'un écran qui affiche une liste de lecture. Les placements de cartes les lisent au moyen des jetons {screen.field.NAME}.

location (facultatif, inline)L'endroit où se trouve l'écran; null l'efface. Sa modification régénère la révision du manifeste d'un écran qui affiche une liste de lecture. Les placements de cartes le lisent au moyen du jeton {screen.location}.
log_level (facultatif, en ligne)

Le niveau de journal le plus bas que le Player de l’écran génère : il n’écrit aucune ligne en dessous, et les lignes d’erreur sont toujours générées ; null l’efface (la valeur par défaut du Player). Le changer régénère la révision du manifeste, qui le porte comme verbosity.logLevel.

toast_level (facultatif, en ligne)

Le niveau de toast le plus bas que le Player de l’écran affiche : il n’affiche aucun toast en dessous, et les toasts d’erreur sont toujours affichés ; null l’efface (tous les toasts s’affichent). Le changer régénère la révision du manifeste, qui le porte comme verbosity.toastLevel.

display (facultatif, en ligne)

Les paramètres d’assombrissement à l’inactivité et de luminosité de l’afficheur (display.idle, display.brightness). Un membre que vous envoyez le remplace, null l’efface, un membre omis reste tel quel ; un display null efface les deux. Changer l’un ou l’autre régénère la révision du manifeste d’un écran qui affiche une liste de lecture, et le manifeste les porte dans le membre racine display.

Sur un écran protégé, cela donne protected_target.

kiosk (facultatif, en ligne)

Le verrouillage du kiosque (kiosk.lock). lock true épingle le Player à l’écran ; false ou null le libère. Le modifier régénère la révision du manifeste d’un écran qui affiche une liste de lecture, et le manifeste le porte comme membre racine kiosk.

Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
202

L’écriture est devenue une révision et attend l’approbation d’une personne (docs/reviews.md), sous l’accès Proposer, ou à n’importe quel niveau d’accès quand elle atteint un écran d’un dossier d’écrans protégé, où un second approbateur décide (docs/screen-scope.md). Une personne approuve, rejette ou demande des modifications dans le tableau de bord à review.url.

Une relecture d’Idempotency-Key répond avec le même corps.

ReviewPending (application/json)
200ÉcranÉcran (application/json)
402

feature_not_in_plan — Les murs vidéo font partie de Plus : définir un mur autre que celui de l’écran l’exige, null l’efface dans tous les forfaits. Le problème nomme la fonctionnalité, le forfait du projet et required_plan.

Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
409

protected_target - la modification atteint un écran d’un dossier d’écrans protégé et n’a aucune forme de révision (docs/screen-scope.md). Levez la protection du dossier au moyen d’une révision, effectuez la modification, puis protégez de nouveau le dossier.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screens/{id}

Supprimer l’écran

Supprime en douceur un écran admissible et révoque immédiatement ses identifiants de cookie et ses autorisations d’exécution. Les lectures ordinaires renvoient alors not_found ; la ligne marquée est conservée au moins 90 jours avant nettoyage. If-Match protège la révision et Idempotency-Key rejoue le résultat.

Un écran natif lié à une identité renvoie screen_archive_required : utilisez archive pour conserver cette liaison ; un écran lié à une identité qui est déjà archivé reste archivé (le même problème, qui le dit). Cette route n’accorde pas de permission administrative de dernier recours pour libérer l’inscription native. Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
deleteScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
204Écran supprimé en douceur ; sa pierre tombale est conservée au moins 90 jours.pas de corps
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409screen_archive_required pour un écran natif lié à une identité, ou protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md).Problème (application/problem+json)
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}/tags

Correctif des balises d’écran

Une personne connectée définit les étiquettes d’un écran. tags est l’ensemble complet : un tableau vide les efface, et une étiquette mal formée ou répétée est invalid_request à tags[i].

C'est la modification de tag que updateScreen effectue, lors de la session du tableau de bord : la révision de l'écran avance d'un, screen.updated porte details.tags et la personne comme acteur, et la révision du manifeste ne change jamais. Un écran pairing_pending, actif ou archivé l'accepte.

Le corps n’a aucun autre membre : une session renomme un écran avec patchScreenName et lui assigne sa liste de lecture avec patchScreenPlaylist, et ne peut pas changer son fuseau horaire. If-Match porte la révision de l’écran et est obligatoire (invalid_request en son absence, revision_conflict si obsolète).

Session du tableau de bord seulement ; les agents modifient les étiquettes avec updateScreen ou une action de flotte set_tags, add_tags ou remove_tags. listScreens avec tag trouve l’écran par ses nouvelles étiquettes. Sur un écran protégé, la modification donne protected_target (409).

Authentification
dashboardSession
Corps de la requête
ScreenTagsPatch
ID d’opération
patchScreenTags

Paramètres

NomEnvoyerRequis ?Description
idcheminobligatoire
If-Matchen-têteobligatoireLa révision actuelle de l’écran, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
étiquettes (requises, ScreenTags)

Étiquettes de sélection de flotte, de 0 à 16 étiquettes exactes uniques, chacune correspondant à la grammaire des étiquettes médias. Sur ScreenPatch, le tableau remplace l’ensemble complet et un tableau vide le vide ; une étiquette en double ou mal formée est invalid_request. Modifier les étiquettes augmente la révision de l’écran (If-Match la protège) et ajoute screen.updated avec details.tags ; cela ne modifie jamais la révision du manifeste.

Les étiquettes ne figurent jamais dans le manifeste d’exécution ni dans l’autorisation.

Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/tags'

Réponses

StatutSensCorps et en-têtes
200L’écran tel que stocké maintenant ; l’ETag porte sa révision.Écran (application/json) ; en-têtes : ETag
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}/fields

Correctif des champs d’écran

Une personne connectée modifie les champs d’un écran avec le correctif de fusion de updateScreen : une chaîne définit un champ, null le retire, et fields à null efface tous les champs. Un nom refusé, une valeur refusée ou un trente-troisième champ est invalid_request à fields ou à fields.NAME.

La révision de l’écran avance d’un, un écran qui affiche une liste de lecture reçoit une nouvelle révision du manifeste, et l’événement porte details.fields et la personne comme acteur. Le corps n’a aucun autre membre. If-Match porte la révision de l’écran et est obligatoire (invalid_request lorsqu’il est absent, revision_conflict lorsqu’il est périmé).

Session du tableau de bord seulement ; les agents utilisent PATCH /api/screens/{id} (updateScreen). Sur un écran protégé, la modification donne protected_target (409).

Authentification
dashboardSession
Corps de la requête
ScreenFieldsPatch
ID d’opération
patchScreenFields

Paramètres

NomEnvoyerRequis ?Description
idcheminobligatoire
If-Matchen-têteobligatoireLa révision actuelle de l’écran, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
fields (obligatoire, inline)

Fusionne avec les valeurs propres à l'écran, comme un numéro de magasin ou une région : une chaîne définit un champ, null le retire, et un fields valant null efface tous les champs. Les noms comptent de 1 à 32 lettres minuscules, chiffres ou traits de soulignement; les valeurs, de 1 à 200 caractères après suppression des espaces de début et de fin; un écran compte au plus 32 champs.

Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/fields'

Réponses

StatutSensCorps et en-têtes
200L’écran tel que stocké maintenant ; l’ETag porte sa révision.Écran (application/json) ; en-têtes : ETag
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}/location

Correctif de l’emplacement d’écran

Une personne connectée définit ou efface l’emplacement d’un écran avec le membre location de updateScreen : un objet avec latitude, longitude ainsi qu’un nom et une adresse facultatifs remplace l’emplacement en entier, et null l’efface. Un membre manquant ou de mauvais type, une coordonnée hors limites, un nom de plus de 40 caractères ou une adresse de plus de 200 est invalid_request à location.MEMBER.

La révision de l’écran avance d’un, un écran qui affiche une liste de lecture reçoit une nouvelle révision du manifeste, et l’événement porte details.location et la personne comme acteur. Le corps n’a aucun autre membre. If-Match porte la révision de l’écran et est obligatoire (invalid_request lorsqu’il est absent, revision_conflict lorsqu’il est périmé).

Session du tableau de bord seulement ; les agents utilisent PATCH /api/screens/{id} (updateScreen). Sur un écran protégé, la modification donne protected_target (409).

Authentification
dashboardSession
Corps de la requête
ScreenLocationPatch
ID d’opération
patchScreenLocation

Paramètres

NomEnvoyerRequis ?Description
idcheminobligatoire
If-Matchen-têteobligatoireLa révision actuelle de l’écran, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
location (obligatoire, inline)Emplacement de l’écran : l’objet remplace l’emplacement en entier et null l’efface.
Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/location'

Réponses

StatutSensCorps et en-têtes
200L’écran tel que stocké maintenant ; l’ETag porte sa révision.Écran (application/json) ; en-têtes : ETag
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}/verbosity

Modifier la verbosité d’un écran

Une personne connectée définit ou efface le niveau de journal et le niveau de toast d’un écran avec log_level (debug, info, warn, error) et toast_level (info, alert, error) de updateScreen : une chaîne définit le niveau, null l’efface, et un membre omis reste tel quel. Toute autre valeur donne invalid_request à log_level ou toast_level.

La révision de l’écran avance d’une unité, un écran qui affiche une liste de lecture reçoit une nouvelle révision du manifeste, et le Player lit les niveaux dans le membre verbosity du manifeste. Le corps nomme au moins l’un des deux membres et aucun autre. If-Match porte la révision de l’écran et est requis (invalid_request s’il est absent, revision_conflict s’il est périmé).

Session du tableau de bord seulement ; les agents utilisent PATCH /api/screens/{id} (updateScreen).

Authentification
dashboardSession
Corps de la requête
ScreenVerbosityPatch
ID d’opération
patchScreenVerbosity

Paramètres

NomEnvoyerRequis ?Description
idcheminobligatoire
If-Matchen-têteobligatoireLa révision actuelle de l’écran, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
log_level (facultatif, en ligne)Le niveau de journal le plus bas que génère le Player de l’écran ; les lignes d’erreur sont toujours générées. null l’efface (la valeur par défaut du Player). Le changer régénère la révision du manifeste.
toast_level (facultatif, en ligne)Le niveau de toast le plus bas qu’affiche le Player de l’écran ; les toasts d’erreur sont toujours affichés. null l’efface (tous les toasts s’affichent). Le changer régénère la révision du manifeste.
Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/verbosity'

Réponses

StatutSensCorps et en-têtes
200L’écran tel que stocké maintenant ; l’ETag porte sa révision.Écran (application/json) ; en-têtes : ETag
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}/device-settings

Correctif des paramètres d’appareil d’écran

Une personne connectée définit ou efface les paramètres d’assombrissement à l’inactivité et de luminosité d’un écran, ainsi que son verrouillage du kiosque, avec les membres display et kiosk d’updateScreen : display.idle {after_s 30 à 86400, wake touch, presence ou both}, display.brightness {mode auto ou fixed} et kiosk.lock.

Un membre que vous envoyez le remplace, null l’efface et un membre omis reste tel quel ; un display null efface les deux. Une valeur hors plage ou d’un mauvais type est invalid_request et nomme le chemin (display.idle.after_s).

La révision de l’écran augmente de 1, un écran qui affiche une liste de lecture reçoit une nouvelle révision du manifeste, et le Player lit les paramètres dans les membres de manifeste display (idle, brightness) et kiosk. Le corps nomme au moins l’un de display et kiosk et aucun autre membre.

If-Match porte la révision de l’écran et est obligatoire (invalid_request en son absence, revision_conflict si obsolète). Sur un écran protégé, un changement de display donne protected_target (409). Session du tableau de bord seulement ; les agents utilisent PATCH /api/screens/{id} (updateScreen).

Authentification
dashboardSession
Corps de la requête
ScreenDeviceSettingsPatch
ID d’opération
patchScreenDeviceSettings

Paramètres

NomEnvoyerRequis ?Description
idcheminobligatoire
If-Matchen-têteobligatoireLa révision actuelle de l’écran, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
display (facultatif, en ligne)

display.idle et display.brightness, comme le display d’updateScreen : un membre que vous envoyez le remplace, null l’efface, un membre omis reste tel quel ; un display null efface les deux. Changer l’un ou l’autre régénère la révision du manifeste d’un écran qui affiche une liste de lecture. Sur un écran protégé, cela donne protected_target.

kiosk (facultatif, en ligne)kiosk.lock, comme le kiosk d’updateScreen : lock true épingle le Player à l’écran, false ou null le libère.
Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/device-settings'

Réponses

StatutSensCorps et en-têtes
200L’écran tel que stocké maintenant ; l’ETag porte sa révision.Écran (application/json) ; en-têtes : ETag
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}/name

Modifier le nom de l’écran

Une personne connectée renomme un écran avec le champ name de updateScreen. Le nom est rogné et doit comporter de 1 à 120 caractères sans caractères de contrôle, sinon invalid_request sur name (de même pour un nom absent ou null).

La révision de l’écran avance d’un cran et l’événement est screen.manifest_changed, adressé à l’écran, avec la personne comme acteur ; la révision du manifeste reste la même, donc la lecture n’est pas touchée et les Players rafraîchissent le nom à partir de l’ETag modifié. Un renommage vers le même nom fait quand même avancer la révision et ajoute screen.updated. Le corps n’a aucun autre membre.

If-Match porte la révision de l’écran et est obligatoire (invalid_request en son absence, revision_conflict si obsolète). Session du tableau de bord uniquement ; les agents utilisent PATCH /api/screens/{id} (updateScreen).

Authentification
dashboardSession
Corps de la requête
ScreenNamePatch
ID d’opération
patchScreenName

Paramètres

NomEnvoyerRequis ?Description
idcheminobligatoire
If-Matchen-têteobligatoireLa révision actuelle de l’écran, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
nom (obligatoire, chaîne)Le nom de l’écran, rogné ; de 1 à 120 caractères après rognage, sans caractères de contrôle. minLength: 1 maxLength: 120
Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/name'

Réponses

StatutSensCorps et en-têtes
200L’écran tel que stocké maintenant ; l’ETag porte sa révision.Écran (application/json) ; en-têtes : ETag
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PATCH/api/screens/{id}/playlist

Correctif de la liste de lecture de l’écran

Une personne connectée affecte la liste de lecture de l’écran avec l’affectation d’updateScreen : la liste doit appartenir au projet et avoir une version approuvée (playlist_not_approved), et une liste avec un format exige un écran dont le mur a la même forme (409 playlist_format_mismatch).

The screen revision moves by one and the manifest is reissued from the new playlist; while a takeover, a campaign or a schedule entry is effective the playlist becomes the default behind it. Events carry the person as their actor.

The write is live, so only the project owner or a member who can approve makes it (approver_required); a staff session needs its write lease. The body has no other member. If-Match carries the screen revision and is required (invalid_request when absent, revision_conflict when stale).

Session du tableau de bord seulement ; les agents utilisent PATCH /api/screens/{id} (updateScreen). Sur un écran protégé, l’affectation d’un approbateur est une révision décidée par un second approbateur (202 pending_review).

Authentification
dashboardSession
Corps de la requête
ScreenPlaylistPatch
ID d’opération
patchScreenPlaylist

Paramètres

NomEnvoyerRequis ?Description
idcheminobligatoire
If-Matchen-têteobligatoireLa révision actuelle de l’écran, citée ou brute (l’ETag de la dernière lecture). Une révision périmée est revision_conflict avec current_revision.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
playlist_id (obligatoire, en ligne)

La liste de lecture par défaut de l’écran; null retire son assignation propre. Une prise de contrôle, une campagne, une entrée d’horaire ou une valeur par défaut héritée d’un dossier peut encore afficher du contenu; sinon, le Player jumelé affiche son écran d’attente.

Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/playlist'

Réponses

StatutSensCorps et en-têtes
200L’écran tel que stocké maintenant ; l’ETag porte sa révision.Écran (application/json) ; en-têtes : ETag
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
202

L’écriture est devenue une révision et attend l’approbation d’une personne (docs/reviews.md), sous l’accès Proposer, ou à n’importe quel niveau d’accès quand elle atteint un écran d’un dossier d’écrans protégé, où un second approbateur décide (docs/screen-scope.md). Une personne approuve, rejette ou demande des modifications dans le tableau de bord à review.url.

Une relecture d’Idempotency-Key répond avec le même corps.

ReviewPending (application/json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/public-id/rotate

Faire pivoter l’identifiant public de l’écran

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
rotateScreenPublicId

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/public-id/rotate'

Réponses

StatutSensCorps et en-têtes
200

Les identifiants publics URL ont été renouvelés ; l’inscription de la clé publique du lecteur est conservée. Chaque session d’exécution est invalidée par la nouvelle content_access_generation et les droits souhaités et actifs en direct sont réémis à cette génération pour leur révision de manifeste inchangée, donc un lecteur jumelé qui renouvelle sa session continue d’autoriser le contenu qu’il affiche déjà.

Écran (application/json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/recovery/confirm

Confirmer la récupération d’écran

Confirme une récupération d’écran en attente. Un démarrage de jumelage natif qui a présenté un duid hôte ou un numéro de série correspondant exactement à un écran dans un seul projet, sous une clé publique liée différente, enregistre une offre sur cet écran (Screen.recovery_pending, événement de projet screen.recovery_offered).

L’objet hôte est un indice, jamais un identifiant : rien n’est rebondi tant que le projet propriétaire n’appelle pas cette route. Un DUID est lisible par toute application sur le panneau, donc une offre est une surface de phishing.

Il est atténué par la vivacité (pas d'offre tant que la clé liée a montré une activité dans les dix dernières minutes), une limite de trois offres par écran par heure glissante, et cette confirmation du même projet ; recovery_pending.host et l'événement portent la plateforme, le modèle, le firmware et le fabricant de l'appareil offrant afin que l'opérateur puisse les comparer avec l'afficheur devant lui avant de confirmer.

La confirmation complète le jumelage natif en attente sur l’écran EXISTANT : l’appareil de jumelage reçoit pairing.claimed comme d’habitude et prouve la possession avec pairing.complete, la nouvelle clé devient l’identité de l’écran, et la clé précédente est retirée avec une période de grâce de quinze minutes pendant laquelle ses sessions runtime continuent de fonctionner et elle peut encore créer, après quoi elle est refusée.

Listes de lecture, étiquette, fuseau horaire, horaires et historique sont conservés. Même projet uniquement ; l’écran d’un autre projet est not_found. If-Match est optionnel. Émet screen.recovered. recovery_not_offered quand rien n’est en attente, recovery_expired quand la session de jumelage a expiré, recovery_ambiguous quand l’identifiant est attaché à plus d’un endroit.

Les réponses de problème ne renvoient jamais les identifiants d’appareil.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
confirmScreenRecovery

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour créer ou écraser une clé ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/recovery/confirm'

Réponses

StatutSensCorps et en-têtes
200Écran récupéré sur la clé de l’appareil apparié ; la réponse porte l’ETag actuel.Écran (application/json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
410

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/replace

Remplacer l’écran

Déplace l’appareil jumelé en tant qu’autre écran du projet vers celui-ci et archive cet autre écran, de sorte que cet écran conserve son nom, ses étiquettes, son fuseau horaire, sa liste de lecture, ses horaires, sa prise de contrôle, son horaire d’affichage et sa substitution, son mur vidéo, ses commentaires et son historique sur du nouveau matériel.

La clé publique de l’appareil (ou l’identifiant du navigateur) ouvre désormais cet écran, qui reprend l’hôte et le Player de l’écran de remplacement ; sa santé, son statut, son stockage, son observation et ses commandes en file d’attente repartent de zéro. La clé que cet écran détenait est retirée avec la période de grâce de récupération : elle peut encore créer des sessions pendant quinze minutes, puis elle est refusée (key_retired). Rien n’est dissocié.

L’écran remplacé est archivé avec archive_reason replaced et ne conserve ni liaison ni hôte. Les deux écrans font avancer content_access_generation, donc toutes les sessions que l’un ou l’autre détenait prennent fin ; l’appareil reçoit un player.reload adressé à l’écran qu’il a quitté (details.reason replaced, valide 24 heures) et crée de nouveau une session en tant que cet écran.

Les deux écrans doivent être actifs avec un Player jumelé (un écran pairing_pending ou un écran de remplacement non jumelé est resource_conflict, un écran archivé est screen_archived) ; with doit nommer un autre écran du projet (invalid_request ; l’écran d’un autre projet est not_found) ; un écran avec un mur vidéo nécessite un Player de remplacement qui a déclaré display.wall (wall_unsupported).

If-Match est optionnel et vérifie la révision de cet écran. Émet l’événement de projet screen.replaced (details.from_screen_id) et non screen.archived. Une nouvelle tentative exacte avec la même Idempotency-Key renvoie cette même réponse pendant vingt-quatre heures.

Un appelant limité aux écrans (docs/screen-scope.md) a besoin de l’écran et de with dans son périmètre (outside_screen_scope ; rien n’est archivé). Un remplacement où l’un ou l’autre écran est protégé donne protected_target.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenReplaceWrite
ID d’opération
replaceScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour créer ou écraser une clé ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
with (obligatoire, chaîne)

L’ID de l’écran, dans le même projet, dont l’appareil jumelé prend le relais de l’écran indiqué dans le chemin. Ce doit être un autre écran actif avec un Player jumelé ; il est archivé avec archive_reason replaced. minLength : 1 maxLength : 256

Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/replace'

Réponses

StatutSensCorps et en-têtes
200L’appareil ouvre désormais cet écran ; la réponse est cet écran avec sa nouvelle révision et l’ETag actuel.Écran (application/json)
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409resource_conflict, screen_archived, wall_unsupported, ou protected_target quand l’un ou l’autre écran est dans un dossier d’écrans protégé.Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/archive

Archiver l’écran

Masque l’écran dans la liste par défaut et affiche sur l’écran physique l’état « Écran archivé ». Ne dissocie pas la clé publique du lecteur. Libère le quota screen_count. Annule les commandes en attente reboot, clear_cache, restart_app et update de l’écran; un reload en attente est quand même livré. Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
archiveScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/archive'

Réponses

StatutSensCorps et en-têtes
200Écran archivé.Écran (application/json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/unarchive

Désarchiver l’écran

Restaure un écran archivé dans la liste par défaut et recrée un manifeste normal. Doit passer l’admission de l’écran. Ne change pas la clé publique liée.

Le manifeste est émis à nouveau, donc la liste de lecture de l’écran est vérifiée comme une affectation ; une liste de lecture qui référence un contenu manquant ou non prêt répond resource_conflict en nommant la liste de lecture, et l’écran reste archivé jusqu’à ce que la liste de lecture soit corrigée.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
unarchiveScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/unarchive'

Réponses

StatutSensCorps et en-têtes
200Écran désarchivé.Écran (application/json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
413

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/reload

Recharger l’écran

Demande au Player de l’écran actif ou archivé nommé de recharger (docs/player-compatibility.md §6.3). Le corps optionnel définit expires_in_s, la durée pendant laquelle le rechargement reste exécutable (de 60 à 86400 secondes, 86400 par défaut, soit 24 heures) ; une valeur hors limites est invalid_request qui nomme expires_in_s.

Un écran en ligne reçoit immédiatement l’événement durable player.reload par écran (details.reason project, un nouveau reload_id, spread_s 0, expires_at) et le rechargement est enregistré dans Screen.commands à l’état sent.

Un écran hors ligne conserve le rechargement à l’état queued, sans événement ; quand le backend applique la prochaine transition en ligne de l’écran avant expires_at, l’événement est ajouté, avec les mêmes reload_id et expires_at, et la commande passe à sent. Un rechargement plus récent remplace celui qui est toujours en file d’attente.

Un rechargement en file d’attente dont expires_at est dépassé apparaît comme expired, et POST /api/screens/{id}/commands/{command_id}/cancel annule un rechargement toujours en file d’attente. Le flux SSE runtime relaie l’événement à chaque session runtime. Un Player ignore un rechargement reçu dans les dix minutes suivant le dernier qu’il a exécuté.

Un Player web se recharge à sa prochaine limite de page ; un Player natif renouvelle sa session, récupère de nouveau son manifeste et vérifie s’il existe une mise à jour. La révision de l’écran ne change pas. If-Match et Idempotency-Key sont optionnels, comme sur archive ; une nouvelle tentative exacte avec la même Idempotency-Key renvoie le corps original pendant vingt-quatre heures.

Un écran pairing_pending n’a pas encore de Player et répond resource_conflict. Les messages d’écran sont exemptés du compteur API à 1 crédit.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenCommandWrite
ID d’opération
reloadScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
expires_in_s (optionnel, entier)Durée pendant laquelle la commande reste exécutable, en secondes à partir de la requête. Une commande en file d’attente n’est envoyée qu’avant son expiration ; un Player en ignore une après expires_at. par défaut : 86400 minimum : 60 maximum : 86400
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/reload'

Réponses

StatutSensCorps et en-têtes
202

Accepté. state vaut sent quand le rechargement est parvenu au Player de l’écran en ligne, queued quand il attend que l’écran passe en ligne. Le rechargement est exécutable jusqu’à expires_at. L’ETag est la révision d’écran inchangée.

ScreenReloadAccepted (application/json) ; en-têtes : Cache-Control, ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/playlist-schedule

Obtenir l’horaire de la liste de lecture de l’écran

Renvoie l’horaire de liste de lecture évalué par le serveur de l’écran : entrées par ordre de priorité (vide lorsque l’écran n’en a pas), updated_at, et le effective_playlist qu’ils produisent actuellement. L’ETag est la révision de l’écran. pairing_pending, écrans actifs et archivés sont lisibles ; l’écran d’un autre projet est not_found.

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
getScreenPlaylistSchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule'

Réponses

StatutSensCorps et en-têtes
200Horaire de la liste de lecture.ScreenPlaylistScheduleView (application/json) ; en-têtes : ETag
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PUT/api/screens/{id}/playlist-schedule

Définir l’horaire de la liste de lecture de l’écran

Remplace la programmation de la liste de lecture de l’écran. Le serveur l’évalue, jamais le Player : la première entrée dont la règle correspond à l’heure civile de l’écran (fenêtres screenrig.schedule/v1 et from/until, dans le fuseau horaire de l’écran, y compris les transitions d’heure d’été et les fenêtres traversant minuit) est la liste de lecture effective ; quand aucune ne correspond, c’est playlist_id assignée.

Une prise de contrôle l’emporte toujours sur toute entrée. L’écran doit avoir un fuseau horaire et une playlist_id par défaut assignée (invalid_request sinon), donc il y a toujours un repli.

Chaque liste de lecture référencée est validée contre l’écran exactement comme une affectation (propriété, références prêtes, la visibilité des pages nécessite un fuseau horaire, et une liste de lecture avec un format nécessite un écran dont le mur a la même forme, sinon 409 playlist_format_mismatch), donc une liste de lecture que l’écran refuserait est refusée ici ; la vérification écrit le document de la liste de lecture, donc une suppression concurrente de liste de lecture provoque un conflit au lieu d’une course.

Si une liste de lecture programmée ne peut plus être affichée (par exemple si son contenu ne se résout plus), ses entrées sont ignorées lors de l’évaluation et screen.playlist_unavailable (avertissement, détails playlist_id, entry_ids, code) est ajouté.

Lorsque la liste de lecture effective change, le manifeste est recréé à partir de celle-ci et le Player est signalé avec screen.manifest_changed, comme pour une affectation, et screen.playlist_switched est ajouté. La révision de l'écran est incrémentée (protégée par If-Match) et screen.updated est ajouté avec details.playlist_schedule_entries.

Un écran archivé répond screen_archived ; son horaire, sa prise de contrôle et son défaut restent référencés (ils bloquent la suppression de liste de lecture) et sont résolus à nouveau quand il est désarchivé. Limites de débit : screen-control-org 600, screen-control-screen 20, et screen-control-ip 60 par minute, partagées avec DELETE et les routes de prise de contrôle.

Sur un écran protégé, l’horaire est une révision décidée par un second approbateur (202 pending_review) à tous les niveaux d’accès. Une nouvelle entrée avec paused true (un brouillon) relève du contrôle des changements d’horaire, que le forfait Enterprise inclut ; un projet dont le forfait n’inclut pas cette fonctionnalité est refusé avec feature_not_in_plan (402).

Les entrées déjà enregistrées peuvent rester en pause, et la mise en pause d’une entrée enregistrée est ouverte à tous les forfaits.

Authentification
projectBearer
Corps de la requête
ScreenPlaylistScheduleWrite
ID d’opération
setScreenPlaylistSchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Screenrig-Review-Noteen-têteoptionnel

Note optionnelle du proposant sur une écriture de classe revue, envoyée en UTF-8 encodé en pourcentage (ce que encodeURIComponent de JavaScript écrit). Le serveur la décode en pourcentage (une échappée invalide est 400 invalid_request) ; la note décodée est du texte brut, au plus 280 caractères après suppression des espaces, sans caractères de contrôle (sinon 400 invalid_request).

Stocké lors de la révision quand l’écriture devient une ; ignoré lorsqu’elle s’applique en direct.

If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
entrées (obligatoire, tableau)Ordre de priorité : la première entrée correspondante l’emporte. DELETE efface l’horaire.
Modèle de requête et réponses
shell · modèle de requête
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule'

Réponses

StatutSensCorps et en-têtes
202L’écriture est devenue une révision sous Proposer l’accès et attend l’approbation d’une personne (docs/reviews.md). Une répétition d’Idempotency-Key répond avec le même corps.ReviewPending (application/json); headers: RateLimit-Policy, RateLimit
200Écran avec la programmation stockée et sa effective_playlist. L’ETag est la nouvelle révision.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
402

feature_not_in_plan — Le contrôle des changements d’horaire fait partie du forfait Enterprise ; le problème nomme la fonctionnalité, le forfait du compte et required_plan. Une entrée autre que l’entrée enregistrée de l’écran, qui verrouille une liste de lecture sur l’afficheur 2 ou au-delà d’un mur vidéo (displays), fait partie de Plus. Le problème nomme la fonctionnalité, le forfait du projet et required_plan.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screens/{id}/playlist-schedule

Effacer l’horaire de la liste de lecture de l’écran

Supprime l'horaire des listes de lecture de l'écran; la prise de contrôle, sinon une campagne en vigueur, sinon la liste de lecture assignée, devient effective, avec la même signalisation du manifeste que PUT. Un écran sans horaire renvoie 200 sans changement (aucune incrémentation de révision, aucun événement).

Sur un écran protégé, effacer l’horaire est une révision décidée par un second approbateur (202 pending_review) à tous les niveaux d’accès.

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
clearScreenPlaylistSchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Screenrig-Review-Noteen-têteoptionnel

Note optionnelle du proposant sur une écriture de classe revue, envoyée en UTF-8 encodé en pourcentage (ce que encodeURIComponent de JavaScript écrit). Le serveur la décode en pourcentage (une échappée invalide est 400 invalid_request) ; la note décodée est du texte brut, au plus 280 caractères après suppression des espaces, sans caractères de contrôle (sinon 400 invalid_request).

Stocké lors de la révision quand l’écriture devient une ; ignoré lorsqu’elle s’applique en direct.

If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule'

Réponses

StatutSensCorps et en-têtes
202L’écriture est devenue une révision sous Proposer l’accès et attend l’approbation d’une personne (docs/reviews.md). Une répétition d’Idempotency-Key répond avec le même corps.ReviewPending (application/json); headers: RateLimit-Policy, RateLimit
200Écran sans programmation de liste de lecture.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/playlist-schedule/preview

Aperçu de l’horaire de liste de lecture de l’écran

Ce que changerait le remplacement de l’horaire de liste de lecture de l’écran par entries, sans l’effectuer.

Les entrées sont vérifiées comme PUT les vérifie (grammaire, fuseau horaire et afficheurs de l’écran, liste de lecture par défaut, et chaque liste de lecture comme affectation : elle existe, a une version approuvée, convient au mur de l’écran et à la région qu’elle couvre, et ses références se résolvent), de sorte qu’un aperçu refuse ce que PUT refuse.

La réponse dit si l’écran gagnerait ou perdrait des niveaux de son horaire sur sa pile (une entrée en pause n’est sur aucune pile, donc en publier une la gagne), et le calendrier d’horaire de l’écran tel qu’il est (before) et tel qu’il serait (after) de from à to (par défaut : une semaine à partir de maintenant ; au plus 93 jours). Accès Lecture seule : rien n’est écrit.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenSchedulePreviewRequest
ID d’opération
previewScreenPlaylistSchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire

Champs du corps de la requête

ChampDescription
entrées (obligatoire, tableau)
from (optionnel, string)Début des calendriers ; par défaut maintenant. format: "date-time"
to (optionnel, chaîne)Fin des calendriers ; par défaut une semaine après from, au plus 93 jours après. format: "date-time"
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule/preview'

Réponses

StatutSensCorps et en-têtes
200L’aperçu.SchedulePreview (application/json)
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/playlist-schedule/revisions

Lister les révisions de l’horaire de liste de lecture de l’écran

Les révisions de l’horaire de liste de lecture de l’écran, de la plus récente à la plus ancienne : la liste entries complète telle que stockée après chaque écriture (un PUT, un DELETE, une restauration, une importation d’horaires), avec le type de changement et son auteur. Une révision est numérotée par la révision de l’écran lors de l’écriture, donc les numéros comportent des trous là où l’écran a changé autrement.

Un écran dont l’historique n’a encore aucune ligne liste son horaire tel qu’il est, avec change baseline. Les révisions disparaissent avec la purge de l’écran. Au plus 50 par page ; next_cursor tant qu’il en reste, null sur la dernière page.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
listScreenPlaylistScheduleRevisions

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
aprèsrequêteoptionnelnext_cursor de la page précédente de la même liste, avec les mêmes filtres. Omission commence à la ligne la plus récente. Une valeur qui n’est pas un tel curseur est invalid_request.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule/revisions'

Réponses

StatutSensCorps et en-têtes
200Les révisions de l’horaire de l’écran, de la plus récente à la plus ancienne.ScreenScheduleRevisionList (application/json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/playlist-schedule/revisions/{revision}/restore

Restaurer une révision de l’horaire de liste de lecture de l’écran

Remet les entrées d’une révision antérieure comme horaire de l’écran : la même écriture que PUT /api/screens/{id}/playlist-schedule avec ces entrées (ou DELETE lorsque cette révision n’en avait aucune), vérifiée comme elles le sont maintenant (une liste de lecture supprimée depuis la refuse), de sorte que, sous l’accès Propose, la restauration devient la même revue screen_change que devient le PUT.

If-Match est obligatoire et nomme la révision actuelle de l’écran. Les révisions antérieures restent telles qu’elles étaient.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
restoreScreenPlaylistScheduleRevision

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
révisioncheminobligatoireUne révision de l’enregistrement, telle que sa liste de révisions la numérote.
Screenrig-Review-Noteen-têteoptionnel

Note optionnelle du proposant sur une écriture de classe revue, envoyée en UTF-8 encodé en pourcentage (ce que encodeURIComponent de JavaScript écrit). Le serveur la décode en pourcentage (une échappée invalide est 400 invalid_request) ; la note décodée est du texte brut, au plus 280 caractères après suppression des espaces, sans caractères de contrôle (sinon 400 invalid_request).

Stocké lors de la révision quand l’écriture devient une ; ignoré lorsqu’elle s’applique en direct.

If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule/revisions/REVISION/restore'

Réponses

StatutSensCorps et en-têtes
202L’écriture est devenue une révision sous Proposer l’accès et attend l’approbation d’une personne (docs/reviews.md). Une répétition d’Idempotency-Key répond avec le même corps.ReviewPending (application/json); headers: RateLimit-Policy, RateLimit
200Écran avec l’horaire restauré et sa effective_playlist. L’ETag est la nouvelle révision.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/takeover

Définir la prise de contrôle de l’écran

Prend le contrôle de l'écran avec une liste de lecture qui prévaut sur les campagnes, son horaire des listes de lecture et sa liste de lecture assignée, jusqu'à until (RFC 3339, strictement dans le futur et au plus 7 jours à l'avance) ou, lorsque until vaut null ou est omis, jusqu'à ce que la prise de contrôle soit annulée. reason est facultatif, 120 caractères au plus.

L'écran doit avoir un playlist_id par défaut assigné (sinon invalid_request). Une prise de contrôle remplace la précédente (screen.takeover_ended avec reason replaced, ou expired lorsque la précédente avait déjà pris fin).

La liste de lecture est validée comme une assignation, y compris son format (une liste de lecture dotée d'un format exige un écran dont le mur vidéo a la même forme, sinon 409 playlist_format_mismatch). Une prise de contrôle dont la liste de lecture ne peut plus être affichée prend fin (screen.takeover_ended avec reason playlist_deleted ou playlist_unavailable).

Ajoute screen.takeover_started et, lorsque la liste de lecture effective change, screen.playlist_switched ainsi que le screen.manifest_changed du Player. Lorsque until est dépassé, le worker d'échéances met fin à la prise de contrôle dans les 60 secondes (screen.takeover_ended avec reason expired). La révision de l'écran est incrémentée (If-Match la protège).

Un écran archivé répond screen_archived ; le désarchivage réévalue d’abord, de sorte qu’une prise de contrôle terminée pendant l’archivage prend fin à ce moment. Les mêmes limites de débit de contrôle d’écran que pour les routes d’horaire s’appliquent. Sur un écran protégé, une prise de contrôle est une révision décidée par un second approbateur (202 pending_review) à tous les niveaux d’accès.

Authentification
projectBearer
Corps de la requête
ScreenTakeoverWrite
ID d’opération
setScreenTakeover

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Screenrig-Review-Noteen-têteoptionnel

Note optionnelle du proposant sur une écriture de classe revue, envoyée en UTF-8 encodé en pourcentage (ce que encodeURIComponent de JavaScript écrit). Le serveur la décode en pourcentage (une échappée invalide est 400 invalid_request) ; la note décodée est du texte brut, au plus 280 caractères après suppression des espaces, sans caractères de contrôle (sinon 400 invalid_request).

Stocké lors de la révision quand l’écriture devient une ; ignoré lorsqu’elle s’applique en direct.

If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
playlist_id (obligatoire, chaîne)minLength : 1
jusqu’à (optionnel, en ligne)Strictement dans le futur et au plus 7 jours à l’avance. null ou omission maintient la prise de contrôle jusqu’à sa suppression.
raison (optionnelle, chaîne)Note de l’opérateur portée sur la prise de contrôle et ses événements. Pas de caractères de contrôle. maxLength : 120
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/takeover'

Réponses

StatutSensCorps et en-têtes
202L’écriture est devenue une révision sous Proposer l’accès et attend l’approbation d’une personne (docs/reviews.md). Une répétition d’Idempotency-Key répond avec le même corps.ReviewPending (application/json); headers: RateLimit-Policy, RateLimit
200Écran avec la prise de contrôle et sa effective_playlist. L’ETag est la nouvelle révision.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screens/{id}/takeover

Prise de contrôle de l’écran effacée

Met fin à la prise de contrôle (screen.takeover_ended avec raison cleared) ; l’horaire, sinon la playlist assignée, devient effectif avec la même signalisation du manifeste. Un écran sans prise de contrôle répond 200 inchangé (pas d’incrément de révision, pas d’événement).

La prise de contrôle d’un écran archivé est également annulée : il reste archivé, son Player ne reçoit aucun signal et sa désarchivation détermine la liste de lecture effective. Sur un écran protégé, l’annulation d’une prise de contrôle nécessite une révision par une deuxième personne autorisée à approuver (202 pending_review), quel que soit le niveau d’accès.

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
clearScreenTakeover

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Screenrig-Review-Noteen-têteoptionnel

Note optionnelle du proposant sur une écriture de classe revue, envoyée en UTF-8 encodé en pourcentage (ce que encodeURIComponent de JavaScript écrit). Le serveur la décode en pourcentage (une échappée invalide est 400 invalid_request) ; la note décodée est du texte brut, au plus 280 caractères après suppression des espaces, sans caractères de contrôle (sinon 400 invalid_request).

Stocké lors de la révision quand l’écriture devient une ; ignoré lorsqu’elle s’applique en direct.

If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/takeover'

Réponses

StatutSensCorps et en-têtes
202L’écriture est devenue une révision sous Proposer l’accès et attend l’approbation d’une personne (docs/reviews.md). Une répétition d’Idempotency-Key répond avec le même corps.ReviewPending (application/json); headers: RateLimit-Policy, RateLimit
200Écran sans prise de contrôle.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/tab-shares

Démarrer un partage d’onglets

Affiche des onglets de navigateur sur des écrans. Crée une liste de lecture temporaire avec une page iframe plein canevas de 1920x1080 par onglet et reprend chaque écran cible avec cette liste (raison « Shared browser tab ») jusqu’à until, au plus 24 heures dans le futur (par défaut).

Les cibles sont l’union de screen_ids, de chaque écran actif dans folder_ids et leurs sous-dossiers, et de chaque écran actif portant au moins une des tags; les écrans hors ligne sont inclus et affichent le partage à leur retour.

Un appelant limité à certains écrans (docs/screen-scope.md) atteint seulement les écrans de sa portée : un écran hors portée est ignoré (outside_screen_scope); le reste de la requête suit les mêmes règles.

Un seul onglet reste affiché jusqu’à la fin du partage; plusieurs avancent après le duration_s de chaque onglet. reload_s recharge chaque page. qr ajoute un code QR de l’adresse de la page en bas à droite, d’environ 14 % de la hauteur du canevas. cookies contient la connexion de l’expéditeur aux pages : ces témoins sont scellés au repos, jamais renvoyés par une lecture, un événement, une entrée d’audit ou une révision, et transmis seulement dans le manifeste d’exécution d’un écran affichant le partage (le membre cookies de l’iframe); un Player qui ne peut pas les définir les ignore, tout comme le Player web et les enveloppes qui lui délèguent l’affichage.

Une cible impossible à reprendre (dossier protégé, aucune liste de lecture par défaut, archivée, introuvable, format incompatible, hors portée ou limite atteinte) est dans skipped sans faire échouer la requête. Ce partage remplace un partage précédent sur un écran; l’ancienne liste de lecture est supprimée dès qu’aucun écran ne l’affiche.

Si aucune cible n’est reprise, la liste temporaire est supprimée et la réponse est le problème de la cible unique, ou 409 resource_conflict avec les raisons. warnings liste les adresses d’onglets que le backend ne peut pas intégrer (embedding_blocked : X-Frame-Options ou frame-ancestors refuse l’application web Player), vérifiées une fois par adresse avec un budget de 3 secondes; cela ne bloque jamais le partage.

Les limites de contrôle des écrans s’appliquent à chaque écran cible (organisation et écran), et la limite IP une fois par requête. Chaque appel crée un partage; un Idempotency-Key ne rejoue rien. Le changement est immédiat : refusé avec insufficient_access pour un accès Propose et, sur la voie du tableau de bord, avec approver_required pour un membre qui ne peut pas approuver les révisions.

Sur la voie du tableau de bord, le projet courant de la session est utilisé (no_project s’il n’y en a pas). La requête peut provenir du tableau de bord ou d’une extension Chrome ou Firefox (chrome-extension://ID, moz-extension://UUID), avec Sec-Fetch-Site absent, same-origin ou none; un en-tête X-ScreenRig-CSRF présent doit correspondre à csrf_token de GET /api/session.

Seules cette route, DELETE /api/tab-shares/{id}, POST /api/playlists/{id}/pages et POST /api/screens/{id}/screenshot acceptent une origine d’extension.

Authentification
projectBearer OU dashboardSession
Corps de la requête
TabShareWrite
ID d’opération
startTabShare

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.

Champs du corps de la requête

ChampDescription
screen_ids (optionnel, array)Écrans par id. Les doublons sont regroupés.
folder_ids (optionnel, tableau)Dossiers d’écrans; chacun inclut tous ses sous-dossiers.
tags (optionnel, array)Un écran portant au moins une des étiquettes.
tabs (obligatoire, array)
cookies (optionnel, array)Les témoins de l’expéditeur pour les pages, au plus 64 KiB encodés. Secrets; voir POST /api/tab-shares.
reload_s (optionnel, integer)0 (jamais, par défaut) ou de 60 à 86400 : fréquence de rechargement de l’iframe de chaque page.
until (optionnel, string)Strictement dans le futur et au plus 24 heures à l’avance; 24 heures à partir de maintenant si omis. Fin de la reprise de chaque cible et expiration de la liste temporaire. format: "date-time"
qr (optionnel, boolean)Quand true, chaque page affiche un code QR de son adresse en bas à droite. Par défaut false.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/tab-shares'

Réponses

StatutSensCorps et en-têtes
200Le partage. Au moins un écran a été repris.TabShare (application/json) ; en-têtes : RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/tab-shares/{id}

Obtenir un partage d’onglets

Lit un partage : son heure de fin et les écrans dont la liste de reprise est encore celle du partage (les écrans repris depuis par quelqu’un ou archivés sont exclus). 404 not_found si le partage est terminé, expiré ou n’a jamais existé. Un appelant limité aux écrans voit seulement ceux de sa portée. Aucune règle d’origine d’extension ne s’applique à une lecture.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getTabShare

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/tab-shares/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Le partage et les écrans qui l’affichent encore.TabShareState (application/json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/tab-shares/{id}

Arrêter un partage d’onglets

Termine un partage : annule la reprise de chaque écran dont la liste de lecture est encore celle du partage (screen.takeover_ended avec la raison cleared; la programmation, sinon la liste attribuée, devient effective avec la même signalisation de manifeste), puis supprime la liste. Autorisé sur les écrans dans des dossiers protégés.

Un écran repris depuis par quelqu’un reste inchangé. 404 not_found si le partage est déjà terminé; le client le traite comme terminé. Chaque requête consomme une unité de chaque limite de contrôle d’écran. Un appelant limité aux écrans efface seulement ceux de sa portée. Les voies, règles d’accès et règles d’origine d’extension sont celles de POST /api/tab-shares.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
stopTabShare

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/tab-shares/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Les écrans dont la reprise a été annulée.TabShareStopped (application/json) ; en-têtes : RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/play-page

Lancer Screen Page

Demande au lecteur de l’écran de lancer une page de la liste de lecture qu’il joue actuellement, pour qu’une capture d’écran prise ensuite montre cette page sans attendre la rotation (docs/player-compatibility.md §6.3.1).

La page doit être une page de la liste de lecture effective de l'écran, celle à partir de laquelle son manifeste est construit : une prise de contrôle active, sinon une campagne en vigueur, sinon l'entrée courante de l'horaire des listes de lecture, sinon la liste de lecture assignée. Sinon, 409 page_not_on_screen, dont le detail nomme cette liste de lecture.

L’indication d’hôte de l’écran doit déclarer la capacité play_page, sinon 409 play_page_unsupported et rien n’est envoyé ; mettez à jour le lecteur. L’écran doit être actif ; un écran archivé répond screen_archived et un pairing_pending un resource_conflict.

Ajoute la commande d’exécution par écran player.play_page (détails page_id, playlist_id, manifest_revision, expires_at soixante secondes plus tard ; jamais livrée après expires_at). Le Player démarre la page depuis son début comme si la rotation l’avait atteinte et continue la rotation à partir de là. La révision de l’écran ne change pas.

L’Idempotency-Key est obligatoire, comme pour toast ; une nouvelle tentative exacte renvoie le corps d’origine pendant vingt-quatre heures. Une requête refusée, une requête échouée et une relecture exacte ne dépensent aucun budget de limite de débit. Les messages d’écran sont exemptés du compteur d’API de 1 crédit. Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer
Corps de la requête
ScreenPlayPageWrite
ID d’opération
playScreenPage

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Idempotency-Keyen-têteobligatoire

Champs du corps de la requête

ChampDescription
page_id (obligatoire, chaîne)L’identifiant d’une page de la playlist que l’écran joue maintenant (un identifiant dans les pages de cette playlist). minLength : 1 maxLength : 128
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/play-page'

Réponses

StatutSensCorps et en-têtes
202Accepté. La commande est exécutable jusqu’à expires_at. Une nouvelle tentative idempotente exacte renvoie ce même corps.ScreenPlayPageAccepted (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/identify

Identifier l’écran

Demande au Player de l’écran d’afficher le nom de l’écran par-dessus son contenu pendant duration_ms (de 2000 à 600000, 60000 par défaut), afin qu’une personne devant plusieurs afficheurs puisse savoir lequel correspond à un enregistrement (docs/player-compatibility.md §6.3.2).

Ajoute la commande d’exécution par écran player.identify (details identify_id, label, screen_id, duration_ms, at, expires_at soixante secondes après at ; jamais livrée après expires_at).

Le Player dessine une superposition plein écran au-dessus de son contenu, avec le nom très grand et l’ID de l’écran en petit au-dessous, pendant duration_ms à partir de la réception ; la lecture se poursuit par-dessous et une identification plus récente remplace la superposition.

L’indice d’hôte de l’écran doit déclarer la capacité identify, sinon 409 identify_unsupported et rien n’est envoyé ; mettez à jour le Player, ou affichez le nom avec un toast. L’écran doit être actif ; un écran archivé répond screen_archived et un écran pairing_pending répond resource_conflict. La révision de l’écran ne change pas.

Le corps et l’en-tête Idempotency-Key sont optionnels ; une nouvelle tentative exacte renvoie le corps original pendant vingt-quatre heures. Une requête refusée, une requête échouée et une répétition exacte ne dépensent pas de budget de limite de taux. Les messages d’écran sont exemptés du compteur API à 1 crédit.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenIdentifyWrite
ID d’opération
identifyScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
duration_ms (optionnel, entier)Durée pendant laquelle la superposition reste affichée, en millisecondes à partir de la réception par le Player. Une valeur omise prend 60000 par défaut. par défaut : 60000 minimum : 2000 maximum : 600000
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/identify'

Réponses

StatutSensCorps et en-têtes
202Accepté. La commande est exécutable jusqu’à expires_at. Une nouvelle tentative idempotente exacte renvoie ce même corps.ScreenIdentifyAccepted (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/suspend

Suspendre l’écran

Suspend l’écran : son Player affiche message à la place de son contenu (docs/player-compatibility.md §6.9). Le message compte de 1 à 280 caractères après suppression des espaces ; le saut de ligne est le seul caractère de contrôle accepté.

Rien d’autre ne change : la liste de lecture, l’horaire, la prise de contrôle, le contrôle de l’afficheur et tous les autres réglages restent en place et continuent d’évoluer, et resume affiche ce que l’écran afficherait en ce moment. Screen.suspension porte message et since. Suspendre un écran déjà suspendu remplace le message et conserve since.

Le manifeste d’exécution d’un écran suspendu a pages [] et un membre suspension, ainsi qu’une révision de manifeste qui lui est propre, avec ou sans liste de lecture assignée ; le Player reçoit l’ordre de le récupérer à nouveau immédiatement. Ajoute screen.suspended, réservé au projet (details message). Un écran archivé répond screen_archived. If-Match et Idempotency-Key sont optionnels, comme sur archive.

Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenSuspendWrite
ID d’opération
suspendScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
message (obligatoire, chaîne)L’avis que l’écran affiche, de 1 à 280 caractères après suppression des espaces. Le saut de ligne est le seul caractère de contrôle accepté ; un Player renvoie le texte à la ligne et conserve les sauts de ligne. minLength : 1 maxLength : 280
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/suspend'

Réponses

StatutSensCorps et en-têtes
200Écran suspendu. L’ETag est la nouvelle révision de l’écran.Écran (application/json) ; en-têtes : ETag
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/resume

Reprendre l’écran

Met fin à la suspension de l’écran : son Player affiche de nouveau le contenu propre de l’écran, à partir du manifeste que l’écran recevrait maintenant (docs/player-compatibility.md §6.9). Le Player reçoit l’ordre de récupérer ses données à nouveau immédiatement. Ajoute screen.resumed, réservé au projet. Reprendre un écran qui n’est pas suspendu répond 200 avec l’écran inchangé : pas d’incrément de révision et pas d’événement.

Un écran archivé répond screen_archived. Pas de corps. If-Match et Idempotency-Key sont optionnels, comme sur archive.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
resumeScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/resume'

Réponses

StatutSensCorps et en-têtes
200Écran repris, ou non suspendu. L’ETag est la révision de l’écran.Écran (application/json) ; en-têtes : ETag
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/reboot

Redémarrer l’écran

Demande au Player de l’écran de redémarrer l’appareil (docs/player-compatibility.md §6.5). Le corps optionnel définit expires_in_s, la durée pendant laquelle le redémarrage reste exécutable (de 60 à 86400 secondes, 86400 par défaut, soit 24 heures) ; une valeur hors limites est invalid_request qui nomme expires_in_s. Ajoute toujours screen.reboot_requested, réservé au projet.

Un écran en ligne reçoit immédiatement la commande d’exécution par écran player.reboot (details reboot_id, reason project, at, expires_at ; jamais livrée après expires_at) et le redémarrage est enregistré dans Screen.commands à l’état sent.

Un écran hors ligne conserve le redémarrage à l’état queued, sans événement ; quand le backend applique la prochaine transition en ligne de l’écran avant expires_at, l’événement est ajouté, avec les mêmes reboot_id et expires_at, et la commande passe à sent. Un redémarrage envoyé passe à done quand un rapport de santé portant uptime_s place le démarrage après son envoi.

Un redémarrage plus récent remplace celui qui est toujours en file d’attente. Un redémarrage en file d’attente dont expires_at est dépassé apparaît comme expired, et POST /api/screens/{id}/commands/{command_id}/cancel annule un redémarrage toujours en file d’attente. L’écran doit être actif ; un écran archivé répond screen_archived et un écran pairing_pending répond resource_conflict.

L’indice d’hôte de l’écran doit déclarer la capacité reboot, sinon 409 reboot_unsupported et rien n’est enregistré. La révision de l’écran ne change pas. If-Match et Idempotency-Key sont optionnels ; une nouvelle tentative exacte renvoie le même corps pendant vingt-quatre heures.

Au maximum 2 par écran toutes les 10 minutes ; une requête refusée (reboot_unsupported, not_found, un conflit), une requête échouée et une répétition exacte de la même Idempotency-Key ne dépensent rien.

Du moment où le redémarrage est envoyé jusqu’à ce qu’un rapport de santé prouve qu’il est terminé ou que dix minutes s’écoulent, l’écran ne déclenche aucun avis ni alerte screen_offline, display_disconnected ou crashing ; une condition qui tient toujours à ce moment s’ouvre normalement. L’horaire de redémarrage (PUT /api/screens/{id}/reboot-schedule) émet le même redémarrage avec la source schedule.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenCommandWrite
ID d’opération
rebootScreen

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
expires_in_s (optionnel, entier)Durée pendant laquelle la commande reste exécutable, en secondes à partir de la requête. Une commande en file d’attente n’est envoyée qu’avant son expiration ; un Player en ignore une après expires_at. par défaut : 86400 minimum : 60 maximum : 86400
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/reboot'

Réponses

StatutSensCorps et en-têtes
202

Accepté. state vaut sent quand le redémarrage est parvenu au Player de l’écran en ligne, queued quand il attend que l’écran passe en ligne. Le redémarrage est exécutable jusqu’à expires_at. L’ETag est la révision d’écran inchangée.

ScreenRebootAccepted (application/json) ; en-têtes : Cache-Control, ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/clear-cache

Vider le cache de l’écran

Demande au Player de l’écran de vider ses caches (docs/player-compatibility.md §6.5.1). Le Player supprime ses médias téléchargés, ses paquets d’application et ses caches de données, conserve son jumelage, son identité et ses paramètres, puis récupère de nouveau le manifeste et le contenu.

Le corps optionnel définit expires_in_s, la durée pendant laquelle la commande reste exécutable (60 à 86400 secondes, 86400 par défaut, soit 24 heures) ; une valeur hors plage est invalid_request nommant expires_in_s. Ajoute toujours le screen.command_requested réservé au projet.

Un écran en ligne reçoit aussitôt la commande d’exécution par écran player.clear_cache (details command_id, command, reason project, at, expires_at ; jamais livrée après expires_at) et la commande est enregistrée dans Screen.commands à l’état sent.

Un écran hors ligne conserve la commande à l’état queued sans événement ; quand le backend applique la prochaine transition en ligne de l’écran avant expires_at, l’événement est ajouté, avec les mêmes command_id et expires_at, et la commande passe à sent.

Le Player rapporte comment la commande s’est terminée : elle passe à done ou failed dans Screen.commands avec la cause que le Player a rapportée (cause, detail), et le screen.command_result réservé au projet est ajouté. Une commande envoyée sans rapport reste sent.

Une commande plus récente du même type remplace une commande encore en file d’attente, et POST /api/screens/{id}/commands/{command_id}/cancel annule une commande encore en file d’attente. L’écran doit être actif ; un écran archivé répond screen_archived et un écran pairing_pending répond resource_conflict.

L’indice d’hôte de l’écran doit déclarer la capacité clear_cache, sinon 409 command_unsupported et rien n’est enregistré. La révision de l’écran ne change pas. If-Match et Idempotency-Key sont optionnels ; une nouvelle tentative exacte renvoie le même corps pendant vingt-quatre heures.

Au plus 2 par écran toutes les 10 minutes pour clear-cache, restart-app et update réunis ; une requête refusée (command_unsupported, not_found, un conflit), une requête échouée et une relecture exacte d’Idempotency-Key ne dépensent rien.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenCommandWrite
ID d’opération
clearScreenCache

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
expires_in_s (optionnel, entier)Durée pendant laquelle la commande reste exécutable, en secondes à partir de la requête. Une commande en file d’attente n’est envoyée qu’avant son expiration ; un Player en ignore une après expires_at. par défaut : 86400 minimum : 60 maximum : 86400
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/clear-cache'

Réponses

StatutSensCorps et en-têtes
202

Accepté. state vaut sent quand la commande est parvenue au Player de l’écran en ligne, queued quand elle attend que l’écran passe en ligne. La commande est exécutable jusqu’à expires_at. L’ETag est la révision d’écran inchangée.

ScreenMaintenanceAccepted (application/json); en-têtes : Cache-Control, ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/restart-app

Redémarrer l’application de l’écran

Demande au Player de l’écran de redémarrer son application, pas l’appareil (docs/player-compatibility.md §6.5.1). Le processus du Player redémarre et rapporte depuis le nouveau processus. Le corps optionnel définit expires_in_s, la durée pendant laquelle la commande reste exécutable (60 à 86400 secondes, 86400 par défaut, soit 24 heures) ; une valeur hors plage est invalid_request nommant expires_in_s.

Ajoute toujours le screen.command_requested réservé au projet. Un écran en ligne reçoit aussitôt la commande d’exécution par écran player.restart_app (details command_id, command, reason project, at, expires_at ; jamais livrée après expires_at) et la commande est enregistrée dans Screen.commands à l’état sent.

Un écran hors ligne conserve la commande à l’état queued sans événement ; quand le backend applique la prochaine transition en ligne de l’écran avant expires_at, l’événement est ajouté, avec les mêmes command_id et expires_at, et la commande passe à sent.

Le Player rapporte comment la commande s’est terminée : elle passe à done ou failed dans Screen.commands avec la cause que le Player a rapportée (cause, detail), et le screen.command_result réservé au projet est ajouté. Une commande envoyée sans rapport reste sent.

Une commande plus récente du même type remplace une commande encore en file d’attente, et POST /api/screens/{id}/commands/{command_id}/cancel annule une commande encore en file d’attente. L’écran doit être actif ; un écran archivé répond screen_archived et un écran pairing_pending répond resource_conflict.

L’indice d’hôte de l’écran doit déclarer la capacité restart_app, sinon 409 command_unsupported et rien n’est enregistré. La révision de l’écran ne change pas. If-Match et Idempotency-Key sont optionnels ; une nouvelle tentative exacte renvoie le même corps pendant vingt-quatre heures.

Au plus 2 par écran toutes les 10 minutes pour clear-cache, restart-app et update réunis ; une requête refusée (command_unsupported, not_found, un conflit), une requête échouée et une relecture exacte d’Idempotency-Key ne dépensent rien.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenCommandWrite
ID d’opération
restartScreenApp

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
expires_in_s (optionnel, entier)Durée pendant laquelle la commande reste exécutable, en secondes à partir de la requête. Une commande en file d’attente n’est envoyée qu’avant son expiration ; un Player en ignore une après expires_at. par défaut : 86400 minimum : 60 maximum : 86400
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/restart-app'

Réponses

StatutSensCorps et en-têtes
202

Accepté. state vaut sent quand la commande est parvenue au Player de l’écran en ligne, queued quand elle attend que l’écran passe en ligne. La commande est exécutable jusqu’à expires_at. L’ETag est la révision d’écran inchangée.

ScreenMaintenanceAccepted (application/json); en-têtes : Cache-Control, ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/update

Mettre à jour le Player de l’écran

Demande au Player de l’écran de vérifier maintenant la plus récente version du Player et de l’installer (docs/player- compatibility.md §6.5.1). La cause du résultat est up_to_date quand la plus récente version s’exécute déjà et updated quand une version a été installée ; une installation gérée par un magasin ou par un gestionnaire d’appareils ne déclare aucune capacité de mise à jour.

Le corps optionnel définit expires_in_s, la durée pendant laquelle la commande reste exécutable (60 à 86400 secondes, 86400 par défaut, soit 24 heures) ; une valeur hors plage est invalid_request nommant expires_in_s. Ajoute toujours le screen.command_requested réservé au projet.

Un écran en ligne reçoit aussitôt la commande d’exécution par écran player.update (details command_id, command, reason project, at, expires_at ; jamais livrée après expires_at) et la commande est enregistrée dans Screen.commands à l’état sent.

Un écran hors ligne conserve la commande à l’état queued sans événement ; quand le backend applique la prochaine transition en ligne de l’écran avant expires_at, l’événement est ajouté, avec les mêmes command_id et expires_at, et la commande passe à sent.

Le Player rapporte comment la commande s’est terminée : elle passe à done ou failed dans Screen.commands avec la cause que le Player a rapportée (cause, detail), et le screen.command_result réservé au projet est ajouté. Une commande envoyée sans rapport reste sent.

Une commande plus récente du même type remplace une commande encore en file d’attente, et POST /api/screens/{id}/commands/{command_id}/cancel annule une commande encore en file d’attente. L’écran doit être actif ; un écran archivé répond screen_archived et un écran pairing_pending répond resource_conflict.

L’indice d’hôte de l’écran doit déclarer la capacité update, sinon 409 command_unsupported et rien n’est enregistré. La révision de l’écran ne change pas. If-Match et Idempotency-Key sont optionnels ; une nouvelle tentative exacte renvoie le même corps pendant vingt-quatre heures.

Au plus 2 par écran toutes les 10 minutes pour clear-cache, restart-app et update réunis ; une requête refusée (command_unsupported, not_found, un conflit), une requête échouée et une relecture exacte d’Idempotency-Key ne dépensent rien.

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenCommandWrite
ID d’opération
updateScreenPlayer

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
expires_in_s (optionnel, entier)Durée pendant laquelle la commande reste exécutable, en secondes à partir de la requête. Une commande en file d’attente n’est envoyée qu’avant son expiration ; un Player en ignore une après expires_at. par défaut : 86400 minimum : 60 maximum : 86400
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/update'

Réponses

StatutSensCorps et en-têtes
202

Accepté. state vaut sent quand la commande est parvenue au Player de l’écran en ligne, queued quand elle attend que l’écran passe en ligne. La commande est exécutable jusqu’à expires_at. L’ETag est la révision d’écran inchangée.

ScreenMaintenanceAccepted (application/json); en-têtes : Cache-Control, ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/commands

Lister les commandes de l’écran

Liste chaque redémarrage et rechargement demandé à un écran actif ou archivé, du plus récent au plus ancien : les commandes que contient Screen.commands (les 10 plus récentes) et toutes les plus anciennes, avec l’état atteint. Une commande en file d’attente après expires_at est lue comme expired. Une commande encore en file d’attente quand l’appareil de l’écran a été remplacé est lue comme cancelled.

Annulez une commande toujours en file d’attente avec POST /api/screens/{id}/commands/{command_id}/cancel.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
listScreenCommands

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
curseurrequêteoptionnelLe next_cursor de la page précédente.
limiterequêteoptionnel
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/commands'

Réponses

StatutSensCorps et en-têtes
200Une page des commandes de l’écran.ScreenCommandPage (application/json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/commands/{command_id}/cancel

Annuler la commande de l’écran

Annule un redémarrage ou un rechargement toujours en file d’attente pour l’écran, de sorte qu’il n’est jamais envoyé (docs/player-compatibility.md §6.3, §6.5). command_id est un ID de Screen.commands, ou le reboot_id ou le reload_id de la réponse 202. Seule une commande dont l’état est queued peut être annulée ; elle passe à cancelled.

Une commande déjà envoyée (sent, done) répond 409 resource_conflict avec "The command was already sent." ; une commande qui n’est plus en file d’attente (expired, cancelled, superseded) répond 409 resource_conflict avec "The command is no longer queued." ; un ID que l’écran ne répertorie pas répond 404 not_found. La liste de l’écran conserve ses 10 commandes les plus récentes.

La révision de l’écran ne change pas. If-Match et Idempotency-Key sont optionnels ; une nouvelle tentative exacte renvoie le même écran pendant vingt-quatre heures.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
cancelScreenCommand

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
command_idcheminobligatoireL’ID d’une des commandes de l’écran : l’ID dans Screen.commands, le reboot_id ou le reload_id de la réponse 202.
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/commands/COMMAND_ID/cancel'

Réponses

StatutSensCorps et en-têtes
200L’écran, avec la commande cancelled. L’ETag est la révision d’écran inchangée.Écran (application/json) ; en-têtes : ETag
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/display

Définir l’afficheur de l’écran

Demande l’allumage ou l’extinction de l’afficheur maintenant : une substitution manuelle de l’horaire d’affichage (docs/player-compatibility.md §6.5). power est allumé ou éteint. until (RFC 3339, strictement futur, au maximum 7 jours à l’avance) termine cette action ; sans until, elle se termine à la prochaine limite de l’horaire d’affichage quand un horaire est activé, sinon elle tient jusqu’à remplacement.

Stocke l’override (Screen.display.override), refait le manifeste (son membre display porte l’override pour qu’un Player hors ligne le conserve), ajoute la commande d’exécution player.display (détails override_id, power, until, at, expires_at) et l’écran modifié screen.display_changed réservé au projet, et incrémente la révision de l’écran (If-Match le protège). L’écran doit être actif.

Ce que le lecteur a accompli est rapporté dans son état de santé display.power (Screen.display.reported). Une réussite enregistre l’intention sans attendre de rapport ; Screen.display.override_status compare les observations suivantes et Screen.display.control nomme la méthode de contrôle annoncée.

Un Player à voile seul retire sa superposition lors d’une demande d’allumage, sans commande matérielle de réveil.

Sans until et sans limite de programmation dans les huit prochains jours (pas de programmation activée, ou aucune qui change), l’override tient jusqu’à DELETE /api/screens/{id}/display ou un remplacement ; un PUT ou DELETE ultérieur de display-schedule, ou un changement de fuseau horaire, rebondit un override sans until à la nouvelle limite suivante.

Une requête refusée ou échouée, et une relecture exacte d’Idempotency-Key, ne dépensent aucun budget. Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer OU dashboardSession
Corps de la requête
ScreenDisplayWrite
ID d’opération
setScreenDisplay

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
puissance (obligatoire, chaîne)Autorisé : "on", "off"
jusqu’à (optionnel, en ligne)Strictement futur, au plus 7 jours à l’avance. Omission ou null : jusqu’à la prochaine limite de l’horaire d’affichage, sinon jusqu’à remplacement.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/display'

Réponses

StatutSensCorps et en-têtes
200Écran avec son état d’affichage.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screens/{id}/display

Effacer l’affichage de l’écran

Met fin au remplacement manuel d’affichage pour que l’horaire d’affichage (sinon activé) s’applique de nouveau. Régénère le manifeste (son membre display abandonne le remplacement ; le Player suit screen.manifest_changed), ajoute screen.display_changed avec le changement override_cleared, et incrémente la révision. Un écran sans remplacement actif répond 200 inchangé.

Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
clearScreenDisplay

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/display'

Réponses

StatutSensCorps et en-têtes
200Écran avec son état d’affichage.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/display-schedule

Obtenir l’horaire d’affichage de l’écran

Retourne display_schedule (null s’il n’y en a pas) et l’état d’affichage de l’écran. L’ETag est la révision de l’écran.

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
getScreenDisplaySchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/display-schedule'

Réponses

StatutSensCorps et en-têtes
200Horaire d’affichage.ScreenDisplayScheduleView (application/json) ; en-têtes : ETag
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PUT/api/screens/{id}/display-schedule

Définir l’horaire d’affichage de l’écran

Remplace la programmation d’affichage : activée et 1 à 16 fenêtres screenrig.schedule/v1 (jours, début/fin HH:MM, fin <= début traverse minuit appartenant au jour de début, journée entière sans bords) lorsque l’affichage est ALLUMÉ ; en dehors de chaque fenêtre, le Player met l’affichage en veille.

Évalué sur l’appareil dans le fuseau horaire de l’écran (obligatoire, sinon invalid_request), donc il continue de fonctionner hors ligne : le membre display du manifeste le porte. enabled false garde les fenêtres et laisse l’affichage activé. Régénère le manifeste, ajoute screen.display_changed, incrémente la révision (If-Match le protège). L’écran doit être pairing_pending ou actif.

Un écran sans manifeste encore (jamais produit, ou sans liste de lecture) stocke l’horaire et son premier manifeste le porte ; un écran sans liste de lecture l’applique une fois qu’une liste de lecture est affectée. Une substitution sans until est replacée dans la prochaine limite du nouvel horaire. Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer
Corps de la requête
ScreenDisplayScheduleWrite
ID d’opération
setScreenDisplaySchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
activé (obligatoire, booléen)
windows (requis, tableau)SUR Windows.
Modèle de requête et réponses
shell · modèle de requête
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/display-schedule'

Réponses

StatutSensCorps et en-têtes
200Écran avec son état d’affichage.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screens/{id}/display-schedule

Effacer l’horaire d’affichage de l’écran

Retire l’horaire d’affichage (l’afficheur reste allumé sauf substitution). L’effacement de none répond 200 sans changement. Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
clearScreenDisplaySchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/display-schedule'

Réponses

StatutSensCorps et en-têtes
200Écran avec son état d’affichage.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope comme sur OutsideScreenScope, ou approver_required - un membre limité aux écrans qui ne peut pas approuver les révisions ne modifie ni ce qu’un écran diffuse ni quand (docs/screen-scope.md).Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/reboot-schedule

Obtenir l’horaire de redémarrage de l’écran

Renvoie reboot_schedule (null s’il n’y en a pas) et next_reboot_at, le début de la prochaine fenêtre où le backend redémarre l’écran (null s’il n’y en a pas). L’ETag est la révision de l’écran.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenRebootSchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/reboot-schedule'

Réponses

StatutSensCorps et en-têtes
200Horaire de redémarrage.ScreenRebootScheduleView (application/json) ; en-têtes : ETag
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PUT/api/screens/{id}/reboot-schedule

Définir l’horaire de redémarrage de l’écran

Remplace l’horaire de redémarrage : enabled et de 1 à 16 fenêtres screenrig.schedule/v1 (days, start/end HH:MM, end <= start passe minuit et appartient au jour de début, journée entière sans bornes), chacune durant de 5 minutes à 24 heures.

Au début de chaque fenêtre dans le fuseau horaire de l’écran (obligatoire, sinon invalid_request), le backend émet le même redémarrage que POST /api/screens/{id}/reboot, avec la source schedule dans Screen.commands, screen.reboot_requested et les détails player.reboot.

Un début situé dans le saut de l’heure d’été part à la première minute valide de la fenêtre ; une fenêtre sans minute valide ce jour-là, parce qu’elle se trouve entièrement dans le saut, est ignorée avec screen.reboot_skipped reason window_missed (next_reboot_at indique la minute où le saut se termine). Une répétition du retour à l’heure normale part une fois par fenêtre et par date locale.

Un écran en ligne reçoit le redémarrage tout de suite ; un écran hors ligne ne le garde en file que jusqu’à la fin de sa fenêtre (expires_at), de sorte qu’un redémarrage tardif ne tombe jamais en dehors de celle-ci. Une occurrence ne remplace jamais un redémarrage demandé par une personne qui attend encore l’écran : elle est ignorée avec screen.reboot_skipped reason reboot_pending.

Un changement de fuseau horaire annule les redémarrages planifiés encore en attente et déplace next_reboot_at vers le nouveau fuseau.

Un redémarrage, planifié ou demandé, ne déclenche aucune alerte screen_offline, display_disconnected ou crashing pendant dix minutes après son envoi, et un avis pour l’une d’elles qui arrive à échéance pendant ce temps attend la fin de la période plus son délai d’attente (un avis crashing est ignoré comme planned_reboot). enabled false conserve les fenêtres et ne redémarre rien.

Les fenêtres horaires sans intervalle entre elles, de sorte qu’aucun début ne suit, sont invalid_request. L’indice d’hôte de l’écran doit déclarer la capacité reboot, sinon 409 reboot_unsupported et rien n’est stocké; un écran qui la perd par la suite ignore chaque fenêtre avec screen.reboot_skipped et conserve son horaire.

Ajoute screen.reboot_schedule_changed, incrémente la révision (If-Match la protège) et ne régénère jamais le manifeste. L’écran doit être actif.

Authentification
projectBearer
Corps de la requête
ScreenRebootScheduleWrite
ID d’opération
setScreenRebootSchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.

Champs du corps de la requête

ChampDescription
activé (obligatoire, booléen)
windows (requis, tableau)Fenêtres de redémarrage : le backend redémarre l’écran au début de chacune, dans le fuseau horaire de l’écran. Chacune dure de 5 minutes à 24 heures.
Modèle de requête et réponses
shell · modèle de requête
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/reboot-schedule'

Réponses

StatutSensCorps et en-têtes
200Écran avec son horaire de redémarrage et next_reboot_at.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
402feature_not_in_plan — Les redémarrages planifiés font partie de Plus ; enabled true l’exige, enabled false et DELETE ne l’exigent pas. Le problème nomme la fonctionnalité, le forfait du projet et required_plan.Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screens/{id}/reboot-schedule

Effacer l’horaire de redémarrage de l’écran

Supprime l’horaire de redémarrage et next_reboot_at ; un redémarrage déjà émis n’est pas annulé (POST /api/screens/{id}/commands/{command_id}/cancel en annule un encore en file). Effacer un horaire inexistant répond 200 inchangé.

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
clearScreenRebootSchedule

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
If-Matchen-têteoptionnelRévision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict.
Idempotency-Keyen-têteoptionnelOmettre pour une opération fraîche. Fournissez et réutilisez une clé pour dédupliquer les tentatives ; le CLI gère les clés automatiquement.
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://screenrig.ai/api/screens/RESOURCE_ID/reboot-schedule'

Réponses

StatutSensCorps et en-têtes
200Écran sans horaire de redémarrage.Écran (application/json) ; en-têtes : ETag, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/toast

Toast post-écran

Publie un toast transitoire de chrome de scène à l’écran nommé. Un toast n’est pas une primitive : il n’occupe pas de slot de toile, n’a pas de couche, et ne participe jamais à la préparation ni au fondu enchaîné. Le type d’événement durable est screen.toast sur le flux SSE d’exécution existant. Le scan d’exécution ne délivre jamais un toast après expires_at, donc un curseur persistant ne peut pas le rejouer plus tard.

Les couleurs du niveau font partie du chrome du lecteur et ne sont pas des champs API. Le texte contient de 1 à 120 caractères, le saut de ligne est la seule coupure acceptée, et au plus trois lignes sont admises ; un Player affiche un toast sur une seule ligne, un saut de ligne comme une espace.

Le matériel d’identification ScreenRig reconnaissable et d’autres caractères de contrôle sont rejetés. duration_ms vaut 60000 par défaut et doit être entre 2000 et 60000 inclusivement. Une nouvelle tentative Idempotency-Key exacte retourne l’expires_at original pendant vingt-quatre heures. Dernier gagnant : il n’y a ni file d’attente ni verbe annuler. Les messages d’écran sont exemptés du compteur API à 1 crédit.

Un écran dans un dossier d’écrans protégé donne protected_target (409).

Authentification
projectBearer
Corps de la requête
ScreenToastWrite
ID d’opération
postScreenToast

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Idempotency-Keyen-têteobligatoire

Champs du corps de la requête

ChampDescription
niveau (obligatoire, chaîne)Jeton de gravité fermé. Le chrome Player choisit le remplissage ; l’API ne porte jamais de couleur. Autorisé : « erreur », « alerte », « info »
texte (requis, chaîne)

1 à 120 caractères. Le saut de ligne est le seul retour à la ligne accepté. Maximum trois lignes ; un Player affiche le toast sur une seule ligne, un saut de ligne comme une espace. Les autres caractères de contrôle et le matériel d’identification ScreenRig reconnaissable sont rejetés. minLength : 1 maxLength : 120

duration_ms (optionnel, entier)Durée visible en millisecondes. Les valeurs omises par défaut sont 60000. par défaut : 60000 minimum : 2000 maximum : 60000
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/toast'

Réponses

StatutSensCorps et en-têtes
202Accepté. Le toast est durable jusqu’à expires_at. Une nouvelle tentative idempotente exacte renvoie cette même expiration.ScreenToastAccepted (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

protected_target quand l’écran est dans un dossier d’écrans protégé (docs/screen-scope.md ; levez la protection du dossier au moyen d’une révision, effectuez la modification, protégez-le de nouveau), ou les autres conflits de l’opération.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/storage-forecast

Prévision du stockage d’écran

Simulation d’ajustement pré-affectation : répond si une liste de lecture tiendrait sur l’écran nommé avant son affectation, avec la même sélection cible que Screen.storage_forecast (la dernière capacité rapportée de l’écran, plan A.3 uniquement, pas de prédiction de transition, rien traité comme local).

Il n'écrit rien : pas d'assignation, pas de révision d'écran, pas d'événement, et le modèle de lecture storage_forecast de l'écran reste intact. Le porteur du projet est autoritaire ; un écran ou une playlist d'un autre projet est not_found. fit est inconnu lorsque l'écran n'a pas de rapport de stockage, ou lorsque les références de contenu de la playlist ne sont pas prêtes, et que les deux comptes d'octets sont alors nuls.

Une playlist_revision optionnelle refuse une liste de lecture qui a changé depuis que l’appelant l’a lue avec revision_conflict. Un rapport de plus de 24 heures est périmé mais toujours prévisionnel, exactement comme Screen.storage_forecast.

Authentification
projectBearer
Corps de la requête
ScreenStorageForecastRequest
ID d’opération
forecastScreenStorage

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire

Champs du corps de la requête

ChampDescription
playlist_id (obligatoire, chaîne)minLength : 1
playlist_revision (optionnelle, entier)Révision optionnelle attendue de la liste de lecture. Une révision stockée différente est revision_conflict et aucun pronostic n’est retourné. minimum : 1
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/storage-forecast'

Réponses

StatutSensCorps et en-têtes
200Prévision à blanc. fit unknown signifie qu’il n’y a rien à prévoir; les comptes d’octets et received_at sont nuls.ScreenStorageForecastDryRun (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
412revision_conflict — playlist_revision n’est pas la révision actuelle de la playlist; aucune prévision n’est retournée.Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/campaigns

Expliquer les campagnes d’un écran

Pourquoi chaque campagne du projet joue ou non sur cet écran, dans l’ordre de priorité, avec la liste de lecture effective de l’écran. items et effective_playlist sont l’état actuel de l’écran.

Avec at (et éventuellement to), at est le même résolveur que celui du balayage des limites, interrogé sur cet instant, avec un verdict pour la prise de contrôle, chaque campagne et chaque entrée de la programmation (won, outranked, not_started, ended, outside_hours, off), la liste de lecture à cet instant, et ce que la réponse ne juge pas.

Avec to aussi, at.timeline énumère les périodes entre at et to pendant lesquelles la liste de lecture ne change pas. La programmation, la prise de contrôle et les campagnes sont lues telles qu’elles sont maintenant.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
explainScreenCampaigns

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
àrequêteoptionnel

L’instant à expliquer, soit en RFC 3339 avec fuseau (2026-03-08T09:30:00Z ou 2026-03-08T01:30:00-08:00), soit une heure à l’horloge propre de l’écran (2026-03-08T09:30, avec secondes en option). Une heure d’horloge que l’heure d’été saute ou répète est refusée avec invalid_request nommant at, et une heure répétée nomme les deux instants parmi lesquels choisir.

Par défaut maintenant quand seul to est donné.

àrequêteoptionnel

Fin de la chronologie des changements qui commence à at, sous les mêmes deux formes que at. Postérieure à at, sans limite de distance ; une réponse énumère au plus 500 périodes, huit jours sans changement comptant pour une, et timeline_truncated indique qu’elle s’est arrêtée avant d’atteindre to.

Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/screens/RESOURCE_ID/campaigns'

Réponses

StatutSensCorps et en-têtes
200La situation de chaque campagne sur l’écran.ScreenCampaigns (application/json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/screenshot

Obtenir la capture d’écran

Retourne le WebP prêt actuel pour l’écran nommé. capture_id optionnel doit correspondre à ce slot prêt. Un capture_id nommé qui a expiré sans téléversement est screenshot_unavailable. Un capture_id nommé remplacé par une requête ultérieure est resource_conflict. Les octets d’image ne sont jamais une URL signée ou une clé d’objet. La plage n’est pas acceptée.

Les messages d’écran sont exemptés du compteur API à 1 crédit. L’ETag est le SHA-256 fort du WebP stocké. Une réponse de session du tableau de bord est privée, no-cache, et un If-None-Match du tableau de bord qui correspond à l’image actuelle, vérifiée après la résolution de l’écran et de la capture dans le projet de la session, retourne 304 sans ouvrir les octets stockés.

Une réponse porteuse de projet reste privée, no-store.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenScreenshot

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
capture_idrequêteoptionnel
If-None-Matchen-têteoptionnelETag fort d’une capture d’écran renvoyée par cette route. Respecté pour une session tableau de bord.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/screenshot'

Réponses

StatutSensCorps et en-têtes
200Image prête actuelle toujours en WebP.chaîne (image/webp); en-têtes : Content-Type, Content-Length, ETag, X-ScreenRig-Capture-ID, X-ScreenRig-Captured-At, Cache-Control, Content-Disposition
304

Session du tableau de bord uniquement. L’ETag de l’image actuelle correspond à If-None-Match. Aucun corps n’est produit et le stockage d’objets n’est pas lu. Les en-têtes de capture nomment la capture actuelle, qui peut différer de la réponse stockée lorsque une capture ultérieure est encodée avec les mêmes octets.

pas de corps; en-têtes : ETag, Cache-Control, X-ScreenRig-Capture-ID, X-ScreenRig-Captured-At
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/screenshot

Demander une capture d’écran de l’écran

Demande une capture d’écran fixe de l’écran actif nommé. Le plus récent l’emporte : une nouvelle demande remplace toute capture_id en cours et ne renvoie pas 409. Le créneau prêt actuel est conservé jusqu’à ce qu’un téléversement ultérieur réussisse. capture_id est un préfixe d’environnement optionnel, puis shot_ et un suffixe aléatoire. expires_at est trente secondes après acceptation.

Le type d’événement durable est screen.screenshot_requested sur le flux SSE runtime existant ; le scan runtime ne le délivre jamais après expires_at. Les détails de l’événement nomment capture_id, expires_at, max_width_divisor 2, max_height_divisor 2, format image/webp, qualité 80, et max_bytes 2097152. Les octets d’image n’apparaissent jamais sur SSE.

Le crédit prépayé restant n’est pas un verrou, et ce chemin de message écran est exempt du compteur API à 1 crédit. Une nouvelle tentative avec la même Idempotency-Key retourne le capture_id et expires_at originaux pendant vingt-quatre heures.

Sur la voie du tableau de bord, la requête peut provenir d’une extension Chrome ou Firefox comme POST /api/tab-shares, pour confirmer un onglet partagé (GET /api/screens/{id}/screenshot/status et GET /api/screens/{id}/screenshot n’exigent aucune règle d’origine).

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
requestScreenScreenshot

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Idempotency-Keyen-têteobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' 'https://screenrig.ai/api/screens/RESOURCE_ID/screenshot'

Réponses

StatutSensCorps et en-têtes
202Accepté. La requête est durable jusqu’à expires_at. Une nouvelle tentative idempotente exacte renvoie ce même capture_id et cette même expiration.ScreenScreenshotAccepted (application/json) ; en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/screenshot/status

Obtenir le statut de la capture d’écran

Retourne la machine d’état de la capture d’écran pour l’écran nommé lorsqu’elle existe pour ce projet. idle n’a pas de requête ni de slot prêt. pending est le capture_id actuel avant expires_at sans téléversement. ready signifie que le dernier téléversement réussi correspond au capture_id actuel. timed_out signifie que l’ID actuel a atteint expires_at sans téléversement.

Le délai d’attente est paresseux : le premier GET d’état ou le POST suivant après expiration l’enregistre et ajoute une seule fois screen.screenshot_failed avec la raison expired. Une requête expirée ne supprime pas un emplacement prêt plus ancien. Les messages d’écran sont exemptés du compteur API à 1 crédit.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenScreenshotStatus

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/screenshot/status'

Réponses

StatutSensCorps et en-têtes
200Statut de la capture d’écran pour l’écran de ce projet.ScreenScreenshotStatus (application/json) ; en-têtes : Cache-Control
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/live

Obtenir la session en direct de l’écran

Returns the screen's live session after lazy expiry: idle when it has none, requested while the Player has been asked to publish, publishing once the media relay holds its video, ended with ended_reason (stopped, expired, consent_denied, consent_timeout, capture_failed, connection_failed or player_stopped; an open enum) for ten minutes after it ended. publisher.connected is true only while the Player's last report, at most 45 seconds old, said it is connected; it is the Player's own word, not proof of picture. 404 feature_unavailable when the server has no media relay configured.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenLive

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/live'

Réponses

StatutSensCorps et en-têtes
200La session en direct de l’écran.LiveSession (application/json); en-têtes : Cache-Control
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/live

Démarrer la session en direct de l’écran

Starts live view of the named screen, or renews the one it has (docs/player-compatibility.md §6.10): sub-second video of what the screen plays, from the Player through a media relay to the dashboard. A screen has one live session, shared by every viewer.

Its lease runs duration_s from now (30 to 300, default 300) and a start or renewal sets lease_until to the later of its current end and that instant, never past max_until, five minutes after the session began. The session ends by itself at the latest then: nothing renews or restarts it, and a new session needs a new start.

Elle se termine plus tôt lorsque le bail expire sans renouvellement, avec DELETE, ou lorsque le Player y met fin ; le Player cesse de diffuser environ 20 secondes après la fin du bail.

With live_id the request only renews that session: when it is not the screen's live session (it ended, or the screen started another) the answer is 409 live_unavailable naming ended_reason, and no session starts or is extended.

Une nouvelle session ajoute la commande d’exécution par écran player.live_publish (détails live_id, at, expires_at soixante secondes plus tard, max_until ; jamais remise après expires_at) ; un renouvellement la renvoie seulement si le Player n’a jamais rejoint et que la dernière commande a expiré.

The screen must be active and online and its host hint must declare the live_view capability: 409 live_unsupported (update the Player, or use a screenshot), 409 live_unavailable (offline), screen_archived. 404 feature_unavailable when the server has no media relay configured. 201 is a new session, 200 a renewed one; both return the LiveSession with a viewer_url that opens the dashboard viewer.

L’état requested dure jusqu’à ce que le Player diffuse : interrogez GET jusqu’à publisher.connected. La vue en direct est gratuite et exemptée du compteur d’API de 1 crédit, comme une capture d’écran.

Authentification
projectBearer OU dashboardSession
Corps de la requête
LiveStartRequest
ID d’opération
startScreenLive

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire

Champs du corps de la requête

ChampDescription
duration_s (facultatif, entier)Durée du bail à partir de maintenant, en secondes. Une session dure cinq minutes au plus, quel que soit le bail. default: 300 minimum: 30 maximum: 300
live_id (facultatif, chaîne)

Renew this session only. When it is not the screen's live session, the answer is live_unavailable (the detail names ended_reason) and nothing starts or is extended. Without it, a start begins a session when the screen has none. pattern: "^lv_[a-z2-7]{26}$"

Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/live'

Réponses

StatutSensCorps et en-têtes
201Nouvelle session en direct ; le Player a reçu la demande de diffuser.LiveSession (application/json); en-têtes : Cache-Control, RateLimit-Policy, RateLimit
200La session en direct de l’écran, renouvelée.LiveSession (application/json); en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
SUPPRIMER/api/screens/{id}/live

Arrêter la session en direct de l’écran

Ends the screen's live session (ended_reason stopped), appends player.live_stop (details live_id, at, expires_at sixty seconds later), and closes its tracks on the media relay. 204 also when the screen has no live session. A Player that misses the command stops at its next heartbeat. 404 feature_unavailable when the server has no media relay configured.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
stopScreenLive

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/live'

Réponses

StatutSensCorps et en-têtes
204Arrêtée, ou il n’y avait rien à arrêter.pas de corps; en-têtes : Cache-Control
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/live/viewers

Créer un visionneur en direct de l’écran

Ouvre un visionneur de la session en direct de l’écran : une nouvelle session de relais média qui s’abonne à la vidéo du Player, et l’offre WebRTC du relais.

Apply offer with setRemoteDescription on an RTCPeerConnection built with ice_servers (short-lived credentials), create the answer, wait for ICE gathering to complete or two seconds, then PUT the answer to /api/screens/{id}/live/viewers/{viewer_id} within two minutes.

Candidates travel inside the SDP; there is no separate candidate call. 409 live_not_ready while the session is requested, 409 live_unavailable when the screen has no live session or it ended (the detail names ended_reason). 404 feature_unavailable when the server has no media relay configured.

Authentification
projectBearer OU dashboardSession
Corps de la requête
object
ID d’opération
createScreenLiveViewer

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/live/viewers'

Réponses

StatutSensCorps et en-têtes
201Un visionneur et l’offre du relais.LiveViewer (application/json); en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
PUT/api/screens/{id}/live/viewers/{viewer_id}

Répondre à un visionneur en direct de l’écran

Applies the viewer's WebRTC answer to the relay's offer. A viewer answers once, within two minutes of its offer; an unknown, expired, already answered or another screen's viewer_id is 404 not_found. 204 once the relay accepts the answer; media then flows from the relay to the viewer. 404 feature_unavailable when the server has no media relay configured.

Authentification
projectBearer OU dashboardSession
Corps de la requête
LiveViewerAnswer
ID d’opération
answerScreenLiveViewer

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
viewer_idcheminobligatoire

Champs du corps de la requête

ChampDescription
answer (obligatoire, SessionDescription)
Modèle de requête et réponses
shell · modèle de requête
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/screens/RESOURCE_ID/live/viewers/VIEWER_ID'

Réponses

StatutSensCorps et en-têtes
204Le relais a accepté la réponse.pas de corps; en-têtes : Cache-Control
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
POST/api/screens/{id}/live/frames

Démarrer les images en direct de l’écran

Starts JPEG frames of the screen's live session, for an agent that has HTTPS and no WebRTC: the media relay decodes the Player's published video and delivers one JPEG about every second, and GET /api/screens/{id}/live/frame returns the latest.

La session doit diffuser (409 live_not_ready jusque-là, 409 live_unavailable lorsqu’il n’y en a pas ou qu’elle est terminée ; démarrez-en une avec POST /api/screens/{id}/live).

Frames are started once per session: asking again answers the same adapter's progress, and a Player that reconnects ends its frames, so ask again. state is starting until the first frame arrives, streaming while frames arrive, and silent when the adapter is older than fifteen seconds and none has arrived in that time (last_frame_at, when present, says when frames last came).

The frames end with the session. 404 feature_unavailable when the server has no media relay or no frames origin configured. Live frames are free and exempt from the 1-credit API meter, like a screenshot. They are what the Player's encoder sent, scaled and lossy; they do not replace a screenshot as proof of layout.

Authentification
projectBearer
Corps de la requête
object
ID d’opération
startScreenLiveFrames

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/live/frames'

Réponses

StatutSensCorps et en-têtes
202L’adaptateur d’images et son avancement.LiveFrames (application/json); en-têtes : Cache-Control, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/live/frame

Obtenir l’image en direct de l’écran

Renvoie la dernière image JPEG de la session en direct de l’écran.

Without after it returns the latest frame there is; with after (the ScreenRig-Captured-At of the frame you already have) it returns the first frame captured later, waiting up to five seconds for one, so a loop that passes each answer's ScreenRig-Captured-At back as after receives every new frame once.

ScreenRig-Captured-At indique quand le backend a reçu l’image.

When no new frame comes in time the answer is 409 live_not_ready with Retry-After: 1; 409 resource_conflict answers a session whose frames were not started (POST /api/screens/{id}/live/frames first, and again after the Player reconnects); 409 live_unavailable answers a session that has ended or whose adapter is silent.

Frames are relay-decoded JPEGs of the live stream, at most 1280 by 720: they show what the Player encoded and sent, not a screenshot. They end with the session (max_until at the latest). 404 feature_unavailable when the server has no media relay or no frames origin configured. Free and exempt from the 1-credit API meter.

Authentification
projectBearer
Corps de la requête
aucun
ID d’opération
getScreenLiveFrame

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
aprèsrequêteoptionnelRenvoie une image capturée après cet instant (RFC 3339, comme dans ScreenRig-Captured-At).
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/live/frame'

Réponses

StatutSensCorps et en-têtes
200L’image.string (image/jpeg); en-têtes : Content-Type, Content-Length, ETag, Cache-Control, ScreenRig-Live-Id, ScreenRig-Captured-At, ScreenRig-Frame-Width, ScreenRig-Frame-Height, RateLimit-Policy, RateLimit
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
409

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
429

Problème stable rate_limited. Réessayez seulement après l’intervalle Retry-After autoritaire. Les refus à fenêtre fixe incluent aussi la politique RateLimit-Policy applicable et les membres RateLimit ; les refus de concurrence et de budget d’octets omettent ces divulgations optionnelles.

Problème (application/problem+json) ; en-têtes : Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/live/frames

Connecter les images en direct

The media relay's frame adapter connects here with a WebSocket upgrade; no client, agent or Player calls it. The token is the credential: POST /api/screens/{id}/live/frames hands it to the relay inside the adapter's endpoint and stores only its SHA-256.

Each binary message the relay sends is one protobuf Packet (field 1 sequenceNumber, field 2 timestamp, field 5 payload) whose payload is one whole JPEG of at most 2 MiB; anything else is skipped. The backend keeps the latest frame for fifteen seconds. One connection per token: a newer one replaces the older.

The connection is closed with 1000 when the live session ends, and a token of an ended session is refused with 401 before the upgrade. 404 feature_unavailable when the server has no frames origin configured.

Authentification
aucun
Corps de la requête
aucun
ID d’opération
connectLiveFrames

Paramètres

NomEnvoyerRequis ?Description
jetonrequêteobligatoireLe jeton de l’adaptateur, 43 caractères.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET 'https://api.screenrig.ai/live/frames?token=TOKEN'

Réponses

StatutSensCorps et en-têtes
101Passage du protocole à WebSocket.pas de corps
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/health/history

Obtenir l’historique de santé de l’écran

La santé qu’un écran a rapportée au fil du temps. resolution=raw (par défaut) renvoie chaque rapport accepté dans l’ordre chronologique, structuré comme Screen.health sans stale ; resolution=hour renvoie un résumé par heure UTC (rapports, température maximale et moyenne, charge maximale et ratio mémoire, signal Wi-Fi le plus faible, si l’afficheur a été déconnecté, pics de crash et de redémarrage du moteur). from (inclus) et to (exclus) par défaut sur les dernières 24 heures ; la plage est au plus de 31 jours pour raw et 93 jours pour hour.

Une page contient au maximum limit lignes (par défaut 100, au maximum 500) avec next_cursor, null à la fin. L’historique est conservé selon la rétention d’événements du forfait. Les rapports bruts atteignent cette vue en quelques secondes, les résumés horaires en environ 5 minutes. Un écran d’un autre projet est not_found. Screen.health, le dernier rapport, reste inchangé.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenHealthHistory

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
formatrequêteoptionneljson (par défaut) renvoie le rapport en JSON. csv, xlsx et pdf renvoient les mêmes lignes en pièce jointe (chaque page d'un rapport paginé, jusqu'à 50000 lignes).
derequêteoptionnelLimite inférieure inclusive sur l’heure du rapport. Par défaut 24 heures avant to.
àrequêteoptionnelLimite supérieure exclusive sur l’heure du rapport. Par défaut maintenant.
résolutionrequêteoptionnelraw renvoie chaque rapport; hour renvoie un résumé par heure UTC.
limiterequêteoptionnelTaille de la page.
curseurrequêteoptionnelnext_cursor de la page précédente, avec les mêmes filtres. Opaque.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/health/history'

Réponses

StatutSensCorps et en-têtes
200Une page de rapports ou de résumés horaires.ScreenHealthHistory (application/json) ; en-têtes : Cache-Control
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/uptime

Obtenir le temps de disponibilité de l’écran

Disponibilité quotidienne d’un écran sur des jours UTC inclusifs (day_to par défaut aujourd’hui et day_from 29 jours avant, au maximum 366 jours). Chaque ligne contient les secondes en ligne et hors ligne enregistrées ce jour-là, la disponibilité (en ligne sur temps enregistré, null si rien n’a été enregistré) et la couverture (part de la journée avec un état enregistré).

Le temps sans état enregistré n’est jamais compté comme temps d’arrêt : il réduit seulement la couverture. L’intervalle ouvert actuel de l’écran est inclus jusqu’à maintenant et marque ses jours en direct. Les jours sans enregistrement n’ont pas de ligne. Hors ligne est enregistré après que l’écran est devenu inaccessible pendant 60 secondes. Un écran d’un autre projet est not_found.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenUptime

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
formatrequêteoptionneljson (par défaut) renvoie le rapport en JSON. csv, xlsx et pdf renvoient les mêmes lignes en pièce jointe (chaque page d'un rapport paginé, jusqu'à 50000 lignes).
day_fromrequêteoptionnelPremier jour UTC, inclus. Par défaut, 29 jours avant day_to. Avec day_to couvre au maximum 366 jours.
day_torequêteoptionnelDernier jour UTC, inclusivement. Par défaut aujourd’hui (UTC).
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/uptime'

Réponses

StatutSensCorps et en-têtes
200Lignes quotidiennes de disponibilité, les plus anciennes en premier.ScreenUptime (application/json) ; en-têtes : Cache-Control
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/screens/{id}/presence

Obtenir la présence de l’écran

Les transitions en ligne et hors ligne de l’écran, les plus récentes d’abord, issues de ses événements screen.online et screen.offline quels que soient les journaux. since (inclus) et until (exclus) bornent le temps de l’événement ; until par défaut à maintenant et since à 30 jours avant, au plus 366 jours. Les transitions sont conservées selon la rétention d’événements du forfait.

Une page contient au maximum limit transitions (par défaut 100, au maximum 500) avec next_cursor, null à la fin ; renvoyez-le comme avant. Une transition hors ligne détectée par le serveur uniquement lors de la reconnexion de l’écran porte detected_on_reconnect, et son at correspond à la fin du bail de présence. Hors ligne est enregistré après 60 secondes d’inaccessibilité de l’écran.

Un écran d’un autre projet est not_found.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getScreenPresence

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
depuisrequêteoptionnelLimite inférieure inclusive sur l’heure de l’événement de transition. Par défaut 30 jours avant until.
jusqu’àrequêteoptionnelLimite supérieure exclusive sur l’heure de l’événement de transition. Par défaut maintenant. until - since est au maximum 366 jours.
limiterequêteoptionnelTaille de la page. Une valeur hors plage 1-500 est refusée avec invalid_request nommant limit.
avantrequêteoptionnelnext_cursor de la page précédente, avec les mêmes paramètres since et until.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID/presence'

Réponses

StatutSensCorps et en-têtes
200Transitions de présence, les plus récentes en premier.ScreenPresenceHistory (application/json) ; en-têtes : Cache-Control
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
404

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/health/trend

Obtenir Health Trend

La santé de la flotte du projet par heure UTC : combien d’écrans ont rapporté, et combien d’entre eux étaient chauds (à 80 °C ou plus), avaient un afficheur déconnecté ou plantaient (3 crashs ou plus en 24 heures). from (inclus) et to (exclus) par défaut les dernières 24 heures, au maximum 93 jours ; une page contient au maximum limit lignes (par défaut 100, au maximum 500) avec next_cursor, nul à la fin.

Les heures suivent les rapports avec un décalage d’environ 5 minutes au plus. Refusé à un appelant limité aux écrans (outside_screen_scope) ; GET /api/screens/{id}/health/history est la forme par écran.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getHealthTrend

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
formatrequêteoptionneljson (par défaut) renvoie le rapport en JSON. csv, xlsx et pdf renvoient les mêmes lignes en pièce jointe (chaque page d'un rapport paginé, jusqu'à 50000 lignes).
derequêteoptionnelLimite inférieure inclusive sur l’heure du rapport. Par défaut 24 heures avant to.
àrequêteoptionnelLimite supérieure exclusive sur l’heure du rapport. Par défaut maintenant.
limiterequêteoptionnelTaille de la page.
curseurrequêteoptionnelnext_cursor de la page précédente, avec les mêmes filtres. Opaque.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/health/trend'

Réponses

StatutSensCorps et en-têtes
200Une page de santé horaire de la flotte.HealthTrend (application/json) ; en-têtes : Cache-Control
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
GET/api/uptime/daily

Obtenir le temps de disponibilité du projet

Disponibilité quotidienne des écrans du projet sur des jours UTC inclusifs (par défaut et plage comme GET /api/screens/{id}/uptime). Chaque ligne totalise les secondes en ligne et hors ligne des écrans avec un état enregistré ce jour-là ; la couverture est la part de la journée de ces écrans avec un état enregistré.

Les intervalles comptent à leur fin, de sorte que la ligne d’aujourd’hui couvre les intervalles terminés jusqu’ici ; le nombre en ligne en direct se trouve dans le résumé du tableau de bord. Refusé à un appelant limité aux écrans (outside_screen_scope) ; GET /api/screens/{id}/uptime est la forme par écran.

Authentification
projectBearer OU dashboardSession
Corps de la requête
aucun
ID d’opération
getProjectUptime

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
formatrequêteoptionneljson (par défaut) renvoie le rapport en JSON. csv, xlsx et pdf renvoient les mêmes lignes en pièce jointe (chaque page d'un rapport paginé, jusqu'à 50000 lignes).
day_fromrequêteoptionnelPremier jour UTC, inclus. Par défaut, 29 jours avant day_to. Avec day_to couvre au maximum 366 jours.
day_torequêteoptionnelDernier jour UTC, inclusivement. Par défaut aujourd’hui (UTC).
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/uptime/daily'

Réponses

StatutSensCorps et en-têtes
200Lignes quotidiennes de disponibilité, les plus anciennes en premier.ProjectUptime (application/json) ; en-têtes : Cache-Control
400

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
401

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)
403

outside_screen_scope - l’appelant est limité aux écrans et l’écran, le dossier d’écrans, le sélecteur ou l’audience que la requête nomme ou atteint est en dehors de ceux-ci (docs/screen-scope.md). Un ID en dehors du périmètre et un ID qui n’existe pas obtiennent la même réponse ; errors[0].screen_scope porte le périmètre de l’appelant, et l’écriture est refusée en entier, jamais restreinte.

Problème (application/problem+json)
par défaut

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, et un 500 manifest_degraded porte 60, sauf si le gestionnaire a défini une valeur plus spécifique.

Problème (application/problem+json)