Référence API

API Événements du projet

Événements durables du projet

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

Ce groupe compte 2 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.

Événements durables du projet

GET/api/events

Lister les événements

Liste les événements durables du projet par ordre croissant de séquence.

La pagination est contiguë : passez le next_cursor retourné comme after pour continuer exactement là où la page s’est arrêtée. next_cursor est le curseur du dernier événement retourné tant que des événements plus récents existent déjà, et nul à la fin de l’historique. limit par défaut à 50 et accepte 1-200 ; une valeur hors plage est refusée avec invalid_request et un membre errors[] nommant limit.

Le décalage de pagination n’est pas supporté. source=log liste le journal du Player à la place : les rapports de conditions envoyés par les Players (runtime.reported) triés par heure de réception, filtrés par screen_id et gravité sur une fenêtre de à (par défaut les dernières 24 heures, au maximum 31 jours).

Ses curseurs sont opaques : lg1_ ou ev1_ selon l'endroit où le serveur garde le journal du Player, donc renvoyez celui qu'une page a retourné ; un curseur de l'autre type est refusé avec invalid_request nommant le champ. Les enregistrements du journal du Player n'ont pas de séquence, ne sont pas sur GET /stream/project et ne sont pas livrés aux webhooks.

Un enregistrement est reconnu lorsque la file d’attente du journal du lecteur l’accepte et est conservé pour la rétention d’événements du projet. Un sondage avec le dernier curseur et la fenêtre par défaut suit le journal. Les enregistrements du journal du lecteur ne figurent pas dans la liste par défaut (source=project). from et to sont refusés avec invalid_request sauf si source est log.

La liste de projets prend screen_id, playlist_id et application_id pour lire les événements d’un écran, d’une liste de lecture ou d’une application, tous limités au projet des identifiants (un id nomme quels événements lire, jamais à qui) : screen_id garde les événements dont la ressource est cet écran ; playlist_id les événements dont la ressource est cette liste de lecture plus ceux qui la nomment comme details.playlist_id (un écran la prenant) ; application_id les événements dont la ressource est cette application plus ceux dont la ressource la porte comme application_id (ses versions et entrées clé/valeur).

Une valeur qui n’est pas un identifiant de son type est refusée avec invalid_request nommant le champ ; playlist_id et application_id sont refusés avec source=log, dont les enregistrements appartiennent uniquement à un écran.

Les deux sources prennent resource_id, type et gravité (au minimum), combinés entre eux, avec les filtres d’identifiant et la pagination ; un enregistrement de journal Player est un enregistrement runtime.reported dont la ressource est son écran, donc un resource_id qui n’est pas cet écran ou un type qui exclut runtime.reported renvoie une page vide. before (ou order=desc) affiche les plus récents en premier : next_cursor est alors le curseur de l’élément le plus ancien retourné et renvoyé comme before pour continuer vers les éléments plus anciens.

Sans from, une page source=log la plus récente d’abord remonte au-delà des 24 heures par défaut jusqu’au plus ancien enregistrement que la rétention d’événements du projet conserve, au maximum 31 jours sous le bord supérieur de la page par requête. Une page source=log la plus récente d’abord peut contenir moins que limit d’enregistrements, voire aucun, avec un next_cursor ; null la termine toujours, à la fin du journal conservé.

Un appelant limité aux écrans (docs/screen-scope.md) lit un flux filtré : les événements des écrans de son périmètre, des dossiers d’écrans qu’il peut voir (les siens, ceux au-dessus et ceux à l’intérieur ; screen.moved seulement quand la destination est dans son périmètre), des campagnes, des listes de lecture, des médias, des applications et des cartes, et les révisions playlist_change.

Tout autre événement est omis, de sorte qu’une page peut contenir moins d’événements que limit, voire aucun, avec un next_cursor ; continuez la pagination avec celui-ci. source=log exige un screen_id dans son périmètre. Les événements sur le projet lui-même ne sont pas envoyés.

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

Paramètres

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

Un curseur d’une réponse précédente : ev1_ pour les événements de projet (et les flux d’événements). Le journal du Lecteur (source=log) pagine avec les curseurs lg1_ ou ev1_ selon l’endroit où le serveur le conserve ; traitez-les comme opaques et renvoyez celui qu’une page a retourné. Un curseur d’un autre type est refusé avec invalid_request.

avantrequêteoptionnel

Pages les plus récentes d’abord, strictement plus anciennes que ce curseur : un next_cursor d’une page la plus récente d’abord, ou n’importe quel curseur d’élément (ev1_ pour les événements de projet ; pour source=log le curseur opaque que ses éléments portent). Vide ou absent avec order=desc commence à l’élément le plus récent.

ordrerequêteoptionnelpages asc plus anciennes d’abord avec after ; pages desc plus récentes d’abord avec before. before implique desc ; order=asc avec before est refusé.
limiterequêteoptionnelTaille de la page. Une valeur hors plage 1-200 est refusée avec invalid_request et un membre errors[] dont le champ est limit.
sourcerequêteoptionnelle projet liste les événements séquencés du projet. le journal liste le journal du Player : rapports d’état du Player (runtime.reported), par ordre croissant de réception.
resource_idrequêteoptionnelSeuls les éléments dont resource.id est cet id (un écran, liste de lecture, média, webhook, agent ou identifiant d’application). Avec source=log, c’est l’écran de l’enregistrement.
typerequêteoptionnelUn type d’événement exact tel que playlist.updated, ou un préfixe de famille se terminant par un point tel que playlist. pour chaque type playlist.*.
screen_idrequêteoptionnelSeulement les événements de cet écran : avec source=project ceux dont la ressource est l’écran, avec source=log ses enregistrements de journal Player. Un autre type d’id est refusé avec invalid_request.
playlist_idrequêteoptionnelAvec source=project, uniquement les événements de cette liste de lecture : ceux dont la ressource est la liste de lecture et ceux la nommant comme details.playlist_id. Refusé avec source=log.
application_idrequêteoptionnel

Avec source=project, uniquement les événements de cette application : ceux dont la ressource est l’application et ceux dont la ressource la porte comme application_id (ses versions et entrées clé/valeur). Refusé avec source=log.

gravitérequêteoptionnelGravité minimale : info affiche tous les éléments, warning conserve avertissements et erreurs, error conserve les erreurs. Les deux sources.
derequêteoptionnelAvec source=log, le début de la fenêtre (inclusif). Par défaut, 24 heures avant to ; une page la plus récente d’abord sans from remonte à la rétention d’événements du projet à la place.
àrequêteoptionnelAvec source=log, la fin de la fenêtre (exclusif). Par défaut, maintenant. La fenêtre est au maximum de 31 jours.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/events'

Réponses

StatutSensCorps et en-têtes
200Événements durables (source=project) ou enregistrements de journal Player (source=log)EventList (application/json)
403

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

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

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

Problème (application/problem+json)
GET/stream/project

Événements en flux

Flux d’écoute du projet rejouable. Les enregistrements du journal du lecteur (runtime.reported) se lisent avec GET /api/events?source=log et ne figurent pas sur ce flux. L’ouverture de cette requête coûte 1 crédit comme abonnement au flux d’écoute. Les en-têtes de crédit sont omis. Les événements facturés suivants coûtent 1 crédit chacun; screen.*, runtime.*, alert_mute.* et application.event en sont exemptés.

Les battements de cœur et le préambule de réessai ne sont jamais facturés. stream.cursor et stream.resync_required sont facturés. L’idempotence de débit est sse-event:<project_id>:<sequence>, donc la reconnexion et la relecture sont gratuites. Un événement facturé non payé n’est pas écrit et le flux se ferme.

Un flux ouvert avec une session du tableau de bord ne facture rien (ni l’ouverture ni ses événements), comme les requêtes d’API du tableau de bord ; il prend quand même l’un des emplacements de flux du projet. Un appelant limité aux écrans (docs/screen-scope.md) reçoit le même flux filtré que GET /api/events : aucune trame n’est envoyée pour un événement écarté et stream.cursor continue d’avancer la position.

Le périmètre est lu à l’ouverture du flux et l’arbre des dossiers de nouveau lors d’un événement de déplacement ou de dossier ; un périmètre réduit s’applique à un flux ouvert quand il se reconnecte.

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

Paramètres

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

Un curseur d’une réponse précédente : ev1_ pour les événements de projet (et les flux d’événements). Le journal du Lecteur (source=log) pagine avec les curseurs lg1_ ou ev1_ selon l’endroit où le serveur le conserve ; traitez-les comme opaques et renvoyez celui qu’une page a retourné. Un curseur d’un autre type est refusé avec invalid_request.

Last-Event-IDen-têteoptionnelCurseur durable utilisé quand after est absent.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/stream/project'

Réponses

StatutSensCorps et en-têtes
200

Flux SSE rejouable. Le curseur de requête a la priorité sur Last-Event-ID. Les curseurs invalides, futurs ou pré-rétention reçoivent stream.resync_required à la tête actuelle et ferment. Pas d’en-têtes ScreenRig-Credits-*.

chaîne (text/event-stream)
402

Réponse stable RFC 9457 à un problème. Un 421 server_draining porte un Retry-After de 1 seconde, un 500 not_ready ou dependency_unavailable porte 5, 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)