OpenAPI YAMLOpenAPI JSONproblèmes YAMLVue d’ensemble de l’API
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
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| état | requête | optionnel | Omettre pour pairing_pending et active. Passez archived pour lister uniquement les écrans archivés. |
| étiquette | requête | optionnel | Étiquette d’écran exacte. Les écrans non étiquetés sont omis lorsque ce filtre est présent. |
| field | requête | optionnel | 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. |
| near | requête | optionnel | 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. |
| dossier | requête | optionnel | Un 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ès | requête | optionnel | next_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
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Écrans | ScreenList (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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screen-folders'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Dossiers d’écrans | ScreenFolderList (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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Dossier 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) |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Un 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Dossier 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) |
| 402 | feature_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) |
| 403 | outside_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 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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Supprimé ; 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) |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Combien 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) |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| de | requête | obligatoire | |
| à | requête | obligatoire | |
| screen_id | requête | optionnel | |
| folder_id | requête | optionnel | |
| étiquette | requête | optionnel | |
| campaign_id | requête | optionnel |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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-Key | en-tête | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Ré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) |
| 403 | outside_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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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-Key | en-tête | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| é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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Nouveau 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) |
| 403 | outside_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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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-Note | en-tête | optionnel | 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-Key | en-tête | optionnel | Omettre 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ès | requête | optionnel | next_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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Ré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) |
| 403 | insufficient_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) |
Obtenir l’écran
Renvoie pairing_pending, écrans actifs et archivés. Les écrans supprimés ne sont pas trouvés.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID'Réponses
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Screenrig-Review-Note | en-tête | optionnel | 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-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
| 403 | outside_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 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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/screens/RESOURCE_ID'Réponses
| Statut | Sens | Corps 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) |
| 409 | screen_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) |
| 412 | revision_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 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La 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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| é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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’écran tel que stocké maintenant ; l’ETag porte sa révision. | Écran (application/json) ; en-têtes : ETag |
| 412 | revision_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 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La 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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’écran tel que stocké maintenant ; l’ETag porte sa révision. | Écran (application/json) ; en-têtes : ETag |
| 412 | revision_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 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La 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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’écran tel que stocké maintenant ; l’ETag porte sa révision. | Écran (application/json) ; en-têtes : ETag |
| 412 | revision_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 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La 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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’écran tel que stocké maintenant ; l’ETag porte sa révision. | Écran (application/json) ; en-têtes : ETag |
| 412 | revision_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 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La 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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’écran tel que stocké maintenant ; l’ETag porte sa révision. | Écran (application/json) ; en-têtes : ETag |
| 412 | revision_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 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La 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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’écran tel que stocké maintenant ; l’ETag porte sa révision. | Écran (application/json) ; en-têtes : ETag |
| 412 | revision_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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| id | chemin | obligatoire | |
| If-Match | en-tête | obligatoire | La 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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’écran tel que stocké maintenant ; l’ETag porte sa révision. | Écran (application/json) ; en-têtes : ETag |
| 412 | revision_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 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) |
Faire pivoter l’identifiant public de l’écran
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/public-id/rotate'Réponses
| Statut | Sens | Corps 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) |
Obtenir le lien d’écran
Le lien de l’écran, l’URL de lecteur qui ouvre cet écran dans un navigateur qui ne conserve rien, comme une source navigateur vMix ou OBS. L’url est un identifiant d’accès : sous l’accès Manage effectif, elle est vide et url_redacted vaut true. Exige la capacité screens elle-même. screen_link_not_found lorsque l’écran n’en a pas.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/screens/RESOURCE_ID/link'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le lien de l’écran. | ScreenLink (application/json) ; en-têtes : Cache-Control |
| 404 | not_found pour un écran hors du projet ; screen_link_not_found pour un écran sans lien. | 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) |
Créer un lien d’écran
Émet le lien de l’écran et renvoie son url, en remplaçant tout lien existant (replaced l’indique). L’écran doit être actif, jumelé une fois avec son code (resource_conflict tant qu’il n’a aucun lecteur jumelé, screen_archived s’il est archivé).
Un remplacement incrémente le content_access_generation de l’écran et réémet ses autorisations actives, comme une rotation d’identifiant public, de sorte que chaque session ouverte par l’ancien lien prend fin aussitôt ; les lecteurs de l’écran liés à une clé se reconnectent d’eux-mêmes. Le premier lien n’incrémente rien. Un lien n’est pas une liaison d’appareil : les clés de l’écran ne sont pas touchées.
Ajoute screen.link_changed (details.action created ou replaced). If-Match est facultatif. L’url est un identifiant d’accès : ouvrez-la à un seul endroit.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/screens/RESOURCE_ID/link'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le nouveau lien de l’écran. | ScreenLink (application/json) ; en-têtes : ETag, Cache-Control |
| 409 | resource_conflict (aucun lecteur jumelé) ou screen_archived. | Problème (application/problem+json) |
| 412 | revision_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) |
Supprimer le lien d’écran
Désactive le lien de l’écran. L’ancienne url cesse de fonctionner aussitôt et chaque session qu’elle a ouverte prend fin, comme lors d’un remplacement. Réussit sans rien changer lorsque l’écran n’a pas de lien. Ajoute screen.link_changed (details.action deleted) lorsqu’un lien existait. If-Match est facultatif.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/screens/RESOURCE_ID/link'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Supprimé, ou il n’y en avait pas. | pas de corps |
| 412 | revision_conflict. | 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour créer ou écraser une clé ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour créer ou écraser une clé ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’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) |
| 409 | resource_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) |
| 403 | outside_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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Horaire 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Screenrig-Review-Note | en-tête | optionnel | 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-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | L’é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 |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Screenrig-Review-Note | en-tête | optionnel | 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-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/playlist-schedule'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | L’é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 |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| après | requête | optionnel | next_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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Les 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| révision | chemin | obligatoire | Une révision de l’enregistrement, telle que sa liste de révisions la numérote. |
| Screenrig-Review-Note | en-tête | optionnel | 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-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | L’é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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Screenrig-Review-Note | en-tête | optionnel | 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-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | L’é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 |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Screenrig-Review-Note | en-tête | optionnel | 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-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/takeover'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | L’é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 |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le 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 |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le 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) |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Les é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 |
| 403 | outside_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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | Accepté. 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | Accepté. 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| curseur | requête | optionnel | Le next_cursor de la page précédente. |
| limite | requête | optionnel |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Une 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| command_id | chemin | obligatoire | L’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-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’é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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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 |
| 403 | outside_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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
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
| Statut | Sens | Corps 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 |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/display-schedule'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Horaire 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| activé (obligatoire, booléen) | |
| windows (requis, tableau) | SUR Windows. |
Modèle de requête et réponses
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
| Statut | Sens | Corps 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 |
| 403 | outside_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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/display-schedule'Réponses
| Statut | Sens | Corps 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 |
| 403 | outside_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Horaire 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps 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) |
| 402 | feature_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) |
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é.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://screenrig.ai/api/screens/RESOURCE_ID/reboot-schedule'Réponses
| Statut | Sens | Corps 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | Accepté. 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Pré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) |
| 412 | revision_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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| à | requête | optionnel | 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ête | optionnel | 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | La 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| capture_id | requête | optionnel | |
| If-None-Match | en-tête | optionnel | ETag 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Image 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) |
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).
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| Idempotency-Key | en-tête | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | Accepté. 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Statut 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | La 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| 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
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Nouvelle session en direct ; le Player a reçu la demande de diffuser. | LiveSession (application/json); en-têtes : Cache-Control, RateLimit-Policy, RateLimit |
| 200 | La 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Arrê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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Un 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| viewer_id | chemin | obligatoire |
Champs du corps de la requête
| Champ | Description |
|---|---|
| answer (obligatoire, SessionDescription) |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Le 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 202 | L’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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| après | requête | optionnel | Renvoie une image capturée après cet instant (RFC 3339, comme dans ScreenRig-Captured-At). |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/screens/RESOURCE_ID/live/frame'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | L’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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| jeton | requête | obligatoire | Le jeton de l’adaptateur, 43 caractères. |
Modèle de requête et réponses
curl --request GET 'https://api.screenrig.ai/live/frames?token=TOKEN'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 101 | Passage 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) |
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é.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| format | requête | optionnel | json (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). |
| de | requête | optionnel | Limite inférieure inclusive sur l’heure du rapport. Par défaut 24 heures avant to. |
| à | requête | optionnel | Limite supérieure exclusive sur l’heure du rapport. Par défaut maintenant. |
| résolution | requête | optionnel | raw renvoie chaque rapport; hour renvoie un résumé par heure UTC. |
| limite | requête | optionnel | Taille de la page. |
| curseur | requête | optionnel | next_cursor de la page précédente, avec les mêmes filtres. Opaque. |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Une 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| format | requête | optionnel | json (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_from | requête | optionnel | Premier jour UTC, inclus. Par défaut, 29 jours avant day_to. Avec day_to couvre au maximum 366 jours. |
| day_to | requête | optionnel | Dernier jour UTC, inclusivement. Par défaut aujourd’hui (UTC). |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Lignes 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| depuis | requête | optionnel | Limite inférieure inclusive sur l’heure de l’événement de transition. Par défaut 30 jours avant until. |
| jusqu’à | requête | optionnel | Limite supérieure exclusive sur l’heure de l’événement de transition. Par défaut maintenant. until - since est au maximum 366 jours. |
| limite | requête | optionnel | Taille de la page. Une valeur hors plage 1-500 est refusée avec invalid_request nommant limit. |
| avant | requête | optionnel | next_cursor de la page précédente, avec les mêmes paramètres since et until. |
Modèle de requête et réponses
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
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Transitions 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| format | requête | optionnel | json (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). |
| de | requête | optionnel | Limite inférieure inclusive sur l’heure du rapport. Par défaut 24 heures avant to. |
| à | requête | optionnel | Limite supérieure exclusive sur l’heure du rapport. Par défaut maintenant. |
| limite | requête | optionnel | Taille de la page. |
| curseur | requête | optionnel | next_cursor de la page précédente, avec les mêmes filtres. Opaque. |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/health/trend'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Une 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) |
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.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| format | requête | optionnel | json (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_from | requête | optionnel | Premier jour UTC, inclus. Par défaut, 29 jours avant day_to. Avec day_to couvre au maximum 366 jours. |
| day_to | requête | optionnel | Dernier jour UTC, inclusivement. Par défaut aujourd’hui (UTC). |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/uptime/daily'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Lignes 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) |
Lister les liens de flotte
Liste les liens de flotte du projet, du plus ancien au plus récent (au maximum 50). Sous Gérer effectif, chaque URL est vide et url_redacted est vrai, puisque l’URL crée des écrans.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/fleet-links'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Les liens de flotte du projet. | FleetLinkList (application/json) ; en-têtes : Cache-Control |
| 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) |
Créer un lien de flotte
Crée un lien flotte : une URL Lecteur (https://play.<domain>/player/#fleet=<secret>) qui transforme chaque appareil l’ouvrant en son propre écran dans ce projet, sans code de jumelage. Mettez-le dans un gestionnaire d’appareils, comme une app kiosque de la console Google Admin.
Chaque nouvel écran reçoit les étiquettes, les champs et la liste de lecture du lien, ainsi qu’une étiquette provenant de l’appareil (son identifiant d’actif administrateur, puis l’emplacement), sinon la prochaine étiquette par défaut. Un lecteur qui détient déjà un écran n’en crée jamais un autre : sa clé conserve l’identité de l’écran lors des rechargements et des relances.
Après une réinitialisation complète ou une réinstallation, un appareil qui rapporte le numéro de série ou le DUID d’un écran lié à une flotte créée par ce projet récupère cet écran (screen.recovered) au lieu d’en créer un nouveau, une fois que l’ancienne clé est silencieuse depuis dix minutes.
Le secret voyage dans le fragment d’URL, que les navigateurs n’envoient jamais au serveur. max_screens plafonne les écrans que le lien crée et expires_at met fin au lien à ce moment-là, comme le fait sa désactivation. Une organisation compte au plus 50 liens de flotte, tous projets confondus (fleet_link_limit_reached). Ajoute fleet_link.created.
Une nouvelle tentative exacte avec la même Idempotency-Key retourne cette même réponse pendant vingt-quatre heures.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| étiquette (obligatoire, chaîne) | minLength : 1 maxLength : 80 |
| activé (optionnel, booléen) | Par défaut à vrai. |
| é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 (optionnel, objet) | Champs avec lesquels commence chaque écran que crée le lien ; les placements de cartes les lisent par {screen.field.NAME}. |
| playlist_id (optionnel, chaîne) | |
| max_screens (optionnel, entier) | minimum : 1 maximum : 10 000 |
| expires_at (optionnel, chaîne) | Date d'expiration du lien (RFC 3339); un lien dont l'échéance est dépassée ne crée ni ne récupère d'écran. L'absence de valeur signifie qu'il n'expire jamais. Une date déjà passée est acceptée et fait expirer le lien aussitôt. format: "date-time" |
Modèle de requête et réponses
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/fleet-links'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 201 | Créé, avec son URL. | FleetLink (application/json) ; en-têtes : Cache-Control |
| 400 | invalid_request, incluant un playlist_id inconnu ou une étiquette ou un champ mal formé. | Problème (application/problem+json) |
| 409 | fleet_link_limit_reached ou idempotency_mismatch. | 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) |
Obtenir le lien de flotte
Un lien de flotte. En dessous, l’URL effective Manage est vide et url_redacted est vrai.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire |
Modèle de requête et réponses
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/fleet-links/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Un lien de flotte. | FleetLink (application/json) ; en-têtes : ETag, Cache-Control |
| 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) |
Mettre à jour le lien de flotte
Modifie l’un des champs label, enabled, tags, fields, playlist_id, max_screens et expires_at ; null efface fields, playlist_id, max_screens ou expires_at. Un lien désactivé ou expiré ne crée ni ne récupère d’écrans ; un appareil qui l’ouvre affiche son code de jumelage à la place. Les modifications s’appliquent aux écrans que le lien crée désormais, jamais aux écrans qu’il a déjà créés.
Ajoute fleet_link.updated. If-Match protège la révision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
| Champ | Description |
|---|---|
| étiquette (optionnelle, chaîne) | minLength : 1 maxLength : 80 |
| activé (optionnel, booléen) | |
| é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 (optionnel, objet) | remplace tout le préréglage ; {} ou null l’efface. |
| playlist_id (optionnel, chaîne) | null efface la liste de lecture. |
| max_screens (optionnel, entier) | null supprime la limite. minimum : 1 maximum : 10 000 |
| expires_at (optionnel, chaîne) | null supprime l'expiration. format: "date-time" |
Modèle de requête et réponses
curl --request PATCH --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/fleet-links/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Lien de flotte mis à jour. | FleetLink (application/json) ; en-têtes : ETag |
| 400 | invalid_request. | Problème (application/problem+json) |
| 412 | revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle. | 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 le lien de flotte
Supprime le lien de flotte. Son URL cesse de fonctionner immédiatement ; les écrans qu’il a créés restent, avec leurs listes de lecture, tags et champs. Ajoute fleet_link.deleted. If-Match protège la révision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/fleet-links/RESOURCE_ID'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 204 | Supprimé. | pas de corps |
| 412 | revision_conflict. | 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) |
Faire pivoter Fleet Link
Remplace le secret du lien et retourne la nouvelle URL. L’ancienne URL cesse de fonctionner immédiatement ; les écrans déjà créés continuent la lecture, car un Player jumelé ne présente jamais à nouveau le lien. Ajoute fleet_link.updated avec details.rotated true. If-Match protège la révision.
Paramètres
| Nom | Envoyer | Requis ? | Description |
|---|---|---|---|
| ScreenRig-Project | en-tête | optionnel | Obsolè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. |
| id | chemin | obligatoire | |
| If-Match | en-tête | optionnel | Révision positive optionnelle de ressource. Omettre pour écrire la ressource actuelle ; une révision périmée fournie est revision_conflict. |
| Idempotency-Key | en-tête | optionnel | Omettre 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
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/fleet-links/RESOURCE_ID/rotate'Réponses
| Statut | Sens | Corps et en-têtes |
|---|---|---|
| 200 | Le lien de flotte avec sa nouvelle URL. | FleetLink (application/json) ; en-têtes : ETag, Cache-Control |
| 412 | revision_conflict. | 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) |