Référence API

API Notifications

Notifications : avis par courriel et par webhook signé lors des changements d'état des écrans

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

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

Notifications : avis par courriel et par webhook signé lors des changements d'état des écrans

GET/api/notifications

Lister les notifications

Liste les notifications de l’organisation qui couvrent le projet, de tous les canaux, de la plus ancienne à la plus récente (50 au plus). status, failing_since, last_success_at et last_failure_at sont ceux de ce projet. Le secret de signature d’un webhook n’est jamais renvoyé ici.

Exige la capacité project; un justificatif d’identité limité aux rapports est refusé avec 403 forbidden, car la réponse comprend les URL des récepteurs et les destinataires.

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

Paramètres

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

Réponses

StatutSensCorps et en-têtes
200Les notifications du projet.NotificationList (application/json)
par défaut

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

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

Créer une notification

Crée une notification. channel email envoie à recipients (propriétaire, ou user_ids des membres du projet) ; channel webhook fait un POST, signé, vers url, qui suit les règles d’URL de webhook (https sur un hôte public d’Internet, port 443 ou 8443, sinon webhook_url_rejected). conditions liste les changements d’état d’écran qui la déclenchent ; une notification par courriel en exige au moins un, un webhook exige conditions ou event_types. screen_tags limite conditions aux écrans portant l’une de ces étiquettes ; vide signifie tous les écrans, ou audience indique quels écrans selon les règles d’une audience de campagne. min_severity et severity filtrent et classent les avis, et active_hours met en attente ou abandonne les avis en dehors de ses fenêtres.

Une condition ne notifie qu’après avoir duré hold_minutes (10 par défaut), et un avis de résolution suit lorsqu’elle disparaît après l’envoi d’un avis. La notification couvre ce projet seul; une organisation compte au plus 50 notifications, sans compter celles que le système crée par défaut (notification_limit_reached).

Le secret de signature d’un webhook est généré par le serveur et renvoyé uniquement dans cette réponse et dans rotate-secret; conservez-le. Une nouvelle tentative identique avec la même Idempotency-Key renvoie cette même réponse, secret compris, pendant vingt-quatre heures. Les avis commencent avec le premier événement après notification.created.

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

Paramètres

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

Champs du corps de la requête

ChampDescription
channel (obligatoire, string)Autorisés : « email », « webhook », « slack », « teams », « pagerduty », « telegram »
description (optionnelle, chaîne)Un nom destiné aux personnes. maxLength: 200
conditions (facultatif, NotificationConditions)
screen_tags (facultatif, 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.

audience (optionnel, CampaignAudience)

Les écrans qu’une campagne cible : exactement un parmi all (chaque règle correspond), any (au moins une correspond), tag (l’écran porte l’étiquette), screen_id (cet écran) ou folder (les écrans de ce dossier d’écrans et de chaque dossier à l’intérieur, GET /api/screen-folders ; le dossier doit exister).

Les règles s’imbriquent sur 3 niveaux au plus et une audience a au plus 500 règles. {"all": []} correspond à chaque écran du projet ; ailleurs, all et any listent au moins une règle.

min_severity (facultatif, NotificationSeverity)

La gravité d’un avis, de la moins grave à la plus grave. Un avis ouvert a la gravité de sa condition : error pour screen_offline et warning pour toute autre condition, sauf si la gravité de la notification en décide autrement. Un avis résolu et un test sont info. Autorisés : « info », « warning », « error »

severity (facultatif, NotificationSeverityOverrides)

Condition vers gravité pour cette notification, comme {"not_playing": "error"}. Elle compte pour min_severity et est la gravité que Teams et PagerDuty affichent pour la condition. Une condition non listée garde sa valeur par défaut. Lors d’un patch, un objet vide, comme null, efface chaque substitution.

active_hours (facultatif, NotificationActiveHours)

Quand les avis ouverts partent : les fenêtres (screenrig.schedule/v1), lues dans timezone. Un avis qui arrive à échéance pendant qu’elles sont fermées attend la prochaine ouverture (outside hold, la valeur par défaut) et part alors si sa condition tient toujours, de sorte qu’une condition qui disparaît d’abord n’envoie rien, ou est ignoré (outside drop ; last_error outside_hours).

Un avis résolu pour un avis ouvert qui a été envoyé part toujours, dans les heures ou non, et un test les ignore. crashing est mis en attente ou abandonné comme n’importe quelle autre condition. Les heures jugent un avis lorsqu’il part pour la première fois ; un avis en échec est retenté selon le calendrier habituel, quelles que soient les heures.

Ajouter, modifier ou retirer les heures fait juger de nouveau aussitôt les avis mis en attente pour les anciennes.

reach_drop (facultatif, NotificationReachDrop)

La plus petite baisse de la portée d’une campagne pour laquelle un avis reach_dropped est envoyé : screens est le moins d’écrans perdus (1 par défaut) et percent, s’il est défini, la plus petite part des écrans que la campagne atteignait lors de sa publication ; une baisse doit remplir les deux seuils.

Une baisse plus petite ne met aucun avis en file, et un avis en file dont la baisse est passée sous le seuil à l’échéance est ignoré (condition_cleared). Seulement avec la condition reach_dropped ; sur une notification sans elle, invalid_request.

hold_minutes (facultatif, integer)Durée pendant laquelle une condition doit persister avant de notifier. La condition crashing n'est jamais mise en attente. default: 10 minimum: 0 maximum: 1440
recipients (facultatif, NotificationRecipients)

Courriel seulement. owner (la personne propriétaire du projet au moment de l'envoi d'un avis) ou le user_id d'une personne membre du projet; un user_id qui n'est pas celui d'un membre entraîne invalid_request. Chacun reçoit un courriel à son adresse courriel vérifiée. Une personne qui a depuis quitté le projet ou qui n'a aucune adresse courriel vérifiée est ignorée.

url (optionnelle, chaîne)Webhook seulement : URL https sur un hôte Internet public, port 443 (par défaut) ou 8443. Ni userinfo ni fragment. maxLength: 2048 format: "uri"
event_types (facultatif, NotificationEventTypes)

Webhook seulement. Événements du projet également envoyés par POST dès qu'ils se produisent, exactement comme un webhook les envoie : types exacts comme screen.online, ou préfixes se terminant par .* comme screen.*. notification.test n'est jamais diffusé.

destination (facultatif, NotificationDestination)

Slack, Teams, PagerDuty et Telegram seulement ; obligatoire pour eux. L’identifiant sous la forme où le service l’émet : slack, l’URL du webhook entrant (hooks.slack.com) ; teams, l’URL du webhook Workflows (logic.azure.com ou powerplatform.com ; les URL de connecteur Office 365 sont retirées) ; pagerduty, la clé d’acheminement Events API v2 de 32 caractères ; telegram, le jeton du bot.

Une autre forme donne notification_destination_rejected. Il est scellé, jamais renvoyé, et n’apparaît en lecture que sous la forme destination_hint. minLength: 1 maxLength: 2048

telegram_chat_id (facultatif, NotificationTelegramChat)Telegram seulement ; obligatoire pour lui. La conversation où publier : son identifiant numérique (négatif pour un groupe ou un canal) ou @channelname. Ce n’est pas un identifiant secret. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$"
activé (optionnel, booléen)vrai
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/notifications'

Réponses

StatutSensCorps et en-têtes
201Créée. Le secret d'un webhook n'est affiché qu'ici et sur rotate-secret.Notification (application/json); en-têtes : Cache-Control
400invalid_request, webhook_url_rejected ou notification_destination_rejected.Problème (application/problem+json)
402

feature_not_in_plan — L’acheminement des alertes (un canal Slack, Teams, PagerDuty ou Telegram, ou une règle min_severity, severity, active_hours ou audience) fait partie de Plus. Les notifications par courriel et par webhook avec les règles par défaut, ainsi que les conditions loop_stalled, glass_blank et glass_frozen, sont offertes dans tous les forfaits.

Le problème nomme la fonctionnalité, le forfait du projet et required_plan.

Problème (application/problem+json)
409notification_limit_reached, idempotency_mismatch ou resource_conflict lorsque le projet n’appartient à aucune organisation.Problème (application/problem+json)
par défaut

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

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

Obtenir une notification

Exige la capacité project; un justificatif d'identité limité aux rapports est refusé avec 403 forbidden, car la réponse comprend l'URL du récepteur ou les destinataires.

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

Paramètres

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

Réponses

StatutSensCorps et en-têtes
200Une notification.Notification (application/json); en-têtes : ETag
par défaut

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

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

Mettre à jour une notification

Modifie n’importe lequel de description (vide l’efface), conditions, screen_tags, audience, min_severity, severity, active_hours (null efface chacun de ceux-ci), hold_minutes, recipients (email), url et event_types (webhook), destination et telegram_chat_id (Slack, Teams, PagerDuty et Telegram), enabled et snoozed_until ; channel ne change jamais.

Un champ de l’autre canal est invalid_request. Une nouvelle url est vérifiée comme à la création.

Définir enabled à true sur une notification désactivée efface son état d'échec et démarre à l'événement qui consigne le changement; rien de ce qui est survenu pendant la désactivation n'est envoyé, et les avis encore en attente avant la désactivation sont marqués comme échoués avec webhook_disabled. snoozed_until n'envoie rien avant cet instant (au plus 30 jours à l'avance; null met fin à la pause); les avis qui arrivent à échéance entre-temps sont ignorés (snoozed).

Ajoute notification.updated. If-Match protège la révision. Seule une notification qui ne couvre que ce projet se modifie ici; une notification qui couvre aussi d’autres projets de l’organisation donne notification_covers_other_projects et se modifie depuis la page Notifications de l’organisation.

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

Paramètres

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

Champs du corps de la requête

ChampDescription
description (optionnelle, chaîne)Une chaîne vide efface la description. maxLength : 200
conditions (facultatif, NotificationConditions)
screen_tags (facultatif, 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.

audience (facultatif, en ligne)Comme sur NotificationWrite ; null l’efface. Une audience et screen_tags ensemble sont invalid_request, donc passer de l’une à l’autre efface la première dans la même requête.
min_severity (facultatif, en ligne)Comme sur NotificationWrite ; null l’efface.
severity (facultatif, en ligne)Remplace toutes les substitutions ; null ou un objet vide les efface.
active_hours (facultatif, en ligne)Remplace les heures ; null les efface.
reach_drop (facultatif, en ligne)Remplace le seuil ; null l’efface, de sorte que toute baisse déclenche un avis. Retirer reach_dropped de conditions alors qu’il est défini donne invalid_request ; effacez-le dans la même requête.
hold_minutes (facultatif, integer)minimum: 0 maximum: 1440
recipients (facultatif, NotificationRecipients)

Courriel seulement. owner (la personne propriétaire du projet au moment de l'envoi d'un avis) ou le user_id d'une personne membre du projet; un user_id qui n'est pas celui d'un membre entraîne invalid_request. Chacun reçoit un courriel à son adresse courriel vérifiée. Une personne qui a depuis quitté le projet ou qui n'a aucune adresse courriel vérifiée est ignorée.

url (optionnelle, chaîne)maxLength : 2048 format : « uri »
event_types (facultatif, NotificationEventTypes)

Webhook seulement. Événements du projet également envoyés par POST dès qu'ils se produisent, exactement comme un webhook les envoie : types exacts comme screen.online, ou préfixes se terminant par .* comme screen.*. notification.test n'est jamais diffusé.

destination (facultatif, NotificationDestination)

Slack, Teams, PagerDuty et Telegram seulement ; obligatoire pour eux. L’identifiant sous la forme où le service l’émet : slack, l’URL du webhook entrant (hooks.slack.com) ; teams, l’URL du webhook Workflows (logic.azure.com ou powerplatform.com ; les URL de connecteur Office 365 sont retirées) ; pagerduty, la clé d’acheminement Events API v2 de 32 caractères ; telegram, le jeton du bot.

Une autre forme donne notification_destination_rejected. Il est scellé, jamais renvoyé, et n’apparaît en lecture que sous la forme destination_hint. minLength: 1 maxLength: 2048

telegram_chat_id (facultatif, NotificationTelegramChat)Telegram seulement ; obligatoire pour lui. La conversation où publier : son identifiant numérique (négatif pour un groupe ou un canal) ou @channelname. Ce n’est pas un identifiant secret. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$"
activé (optionnel, booléen)
snoozed_until (facultatif, inline)N'envoie rien avant cet instant, au plus 30 jours à l'avance; null met fin à la pause.
Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/notifications/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Notification mise à jour.Notification (application/json); en-têtes : ETag
400invalid_request, webhook_url_rejected ou notification_destination_rejected.Problème (application/problem+json)
402

feature_not_in_plan — L’acheminement des alertes (modifier une notification Slack, Teams, PagerDuty ou Telegram autrement qu’en la désactivant, en la mettant en sourdine ou en la décrivant, ou définir une règle min_severity, severity, active_hours ou audience) fait partie de Plus. Effacer une règle est permis dans tous les forfaits ; les conditions loop_stalled, glass_blank et glass_frozen sont offertes dans tous les forfaits.

Le problème nomme la fonctionnalité, le forfait du projet et required_plan.

Problème (application/problem+json)
409notification_covers_other_projects — la notification couvre aussi d’autres projets de l’organisation, donc elle ne se modifie que depuis la page Notifications de l’organisation.Problème (application/problem+json)
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
par défaut

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

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

Supprimer une notification

Supprime la notification et ajoute notification.deleted. Ses avis en attente sont marqués comme échoués avec webhook_deleted; son journal de livraison n’est plus adressable et expire avec la conservation des événements. Seule une notification qui ne couvre que ce projet est supprimée ici (sinon notification_covers_other_projects).

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

Paramètres

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

Réponses

StatutSensCorps et en-têtes
204Supprimé.pas de corps; en-têtes : Cache-Control
409notification_covers_other_projects — la notification couvre aussi d’autres projets de l’organisation, donc elle ne se modifie que depuis la page Notifications de l’organisation.Problème (application/problem+json)
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
par défaut

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

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

Renouveler le secret de la notification

Notifications webhook seulement (tout autre canal entraîne invalid_request). Remplace le secret de signature et renvoie la notification avec le nouveau dans secret; l'ancien secret cesse de signer immédiatement, et au plus une tentative déjà en cours peut encore arriver signée avec l'ancien, donc acceptez les deux brièvement. Ajoute notification.updated avec details.changed [secret].

Une nouvelle tentative exacte avec la même Idempotency-Key retourne le même nouveau secret pendant vingt-quatre heures.

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

Paramètres

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

Réponses

StatutSensCorps et en-têtes
200La notification et son nouveau secret.Notification (application/json); en-têtes : Cache-Control
400invalid_request : la notification n’est pas un webhook.Problème (application/problem+json)
409notification_covers_other_projects — la notification couvre aussi d’autres projets de l’organisation, donc elle ne se modifie que depuis la page Notifications de l’organisation.Problème (application/problem+json)
412revision_conflict — If-Match est périmé; la propriété current_revision de l’erreur contient la révision actuelle.Problème (application/problem+json)
par défaut

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

Problème (application/problem+json)
POST/api/notifications/{id}/test

Tester une notification

Ajoute un événement de projet notification.test et met en file d'attente une livraison de cet événement pour cette notification uniquement (aucune autre notification ne reçoit notification.test).

Un webhook reçoit l’événement comme corps de requête ; une notification par courriel envoie un courriel de test à ses destinataires ; une notification Slack, Teams ou Telegram publie un message de test ; une notification PagerDuty déclenche un événement d’information et le résout aussitôt.

Il fonctionne sur une notification désactivée ou en pause, n'est tenté qu'une fois, sans nouvelle tentative, et ne modifie jamais l'état d'échec de la notification. Interrogez le journal des livraisons pour en connaître le résultat.

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

Paramètres

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

Réponses

StatutSensCorps et en-têtes
202La livraison de test en file d’attente.NotificationDelivery (application/json); en-têtes : RateLimit-Policy, RateLimit
429

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

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

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

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

Lister les livraisons de notification

Le journal des livraisons de la notification, de l'événement le plus récent au plus ancien. Une ligne par événement, et par condition de cet événement pour un avis d'écran; les nouvelles tentatives mettent la ligne à jour et GET .../deliveries/{delivery_id}/attempts liste ses tentatives les plus récentes. Un avis qui n'a jamais eu besoin d'être envoyé est ignoré, avec sa raison.

Les lignes sont conservées comme les événements (la durée de conservation des événements du forfait, au moins la fenêtre de nouvelles tentatives de 24 heures). Renvoyez next_cursor comme précédemment pour obtenir la page suivante.

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

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
avantrequêteoptionnelnext_cursor de la page de livraisons précédente. Une page qui se termine parmi les avis d'un même événement nomme dans son curseur la condition du dernier.
limiterequêteoptionnel
Modèle de requête et réponses
shell · modèle de requête
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/notifications/RESOURCE_ID/deliveries'

Réponses

StatutSensCorps et en-têtes
200Une page de livraisons.NotificationDeliveryList (application/json)
par défaut

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

Problème (application/problem+json)
GET/api/notifications/{id}/deliveries/{delivery_id}/attempts

Lister les tentatives de livraison de notification

Les tentatives d'une livraison, de la plus récente à la plus ancienne, les 20 plus récentes, conservées avec la ligne de livraison et aussi longtemps qu'elle. Chacune comporte son numéro de tentative, l'heure de sa fin, le statut HTTP du récepteur (null si aucun n'a répondu ou pour un courriel), la classe d'erreur (null en cas de succès) et sa durée.

Une livraison qui n'appartient pas à cette notification, ou une notification d'un autre projet, renvoie not_found.

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

Paramètres

NomEnvoyerRequis ?Description
ScreenRig-Projecten-têteoptionnelObsolète pour une version. Doit être cohérent avec les droits JWT des projets ; ajoute les en-têtes Deprecation et Warning. Pas d’échange de jeton.
idcheminobligatoire
delivery_idcheminobligatoireL’identifiant d’une des livraisons du webhook.
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/notifications/RESOURCE_ID/deliveries/DELIVERY_ID/attempts'

Réponses

StatutSensCorps et en-têtes
200Les tentatives conservées de la livraison.NotificationDeliveryAttemptList (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)
SUPPRIMER/api/notifications/{id}/unsubscribed/{user_id}

Réabonner une personne à une notification

Renvoie les courriels d’une notification à une personne qui les avait arrêtés avec le lien de désabonnement de son courriel (Notification.unsubscribed liste les personnes concernées). Idempotent : une personne qui n’est pas arrêtée ne change rien, et la réponse est la notification telle qu’elle est.

Un changement augmente la révision et ajoute notification.updated avec les détails change resubscribed, user_id et via api. Une session du tableau de bord peut réabonner n’importe quelle personne du projet; une information d’identification d’agent exige la capacité d’écriture du projet. Le moyen qu’a la personne de revenir elle-même est le bouton Resubscribe de la page que renvoie son lien de désabonnement.

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

Paramètres

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

Réponses

StatutSensCorps et en-têtes
200La notification, sans la personne dans unsubscribed.Notification (application/json); en-têtes : ETag
409notification_covers_other_projects — la notification couvre aussi d’autres projets de l’organisation, donc elle ne se modifie que depuis la page Notifications de l’organisation.Problème (application/problem+json)
404

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

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

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

Problème (application/problem+json)
GET/api/notifications/unsubscribe

Afficher le désabonnement d’une notification

Le lien dans le pied de page d’un courriel d’alerte. Il ne porte ni session ni jeton porteur; le jeton t, créé par screenRIG pour une notification n et une personne u, est toute l’autorité, n’expire jamais et reste valide tant que la version de clé d’émission qu’il nomme est conservée.

La réponse est une page qui demande d’arrêter les courriels de cette notification pour cette personne et qui ne change rien, de sorte qu’un analyseur de courriel qui ouvre le lien n’arrête rien; son bouton publie vers ce chemin. Une personne déjà arrêtée voit une page dont le bouton la réabonne.

Tout jeton, toute notification ou toute personne qui ne correspond pas, ainsi qu’une notification supprimée ou qui n’est pas une notification par courriel, obtient la même page 404. La page n’a aucun script et ne publie que vers cette origine. Au plus 30 requêtes par minute par adresse (rate_limited).

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

Paramètres

NomEnvoyerRequis ?Description
nrequêteobligatoireLa notification à laquelle le lien est destiné.
urequêteobligatoireLe user_id de la personne à qui le lien est destiné.
trequêteobligatoireLe jeton du lien.
Modèle de requête et réponses
shell · modèle de requête
curl --request GET 'https://api.screenrig.ai/api/notifications/unsubscribe?n=N&u=U&t=T'

Réponses

StatutSensCorps et en-têtes
200La page qui demande d’arrêter les alertes.chaîne (text/html)
404Le lien n’est pas valide; la même page quelle qu’en soit la cause.chaîne (text/html)
par défaut

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

Problème (application/problem+json)
POST/api/notifications/unsubscribe

Se désabonner d’une notification

Arrête les courriels d’une notification pour la personne à qui le lien est destiné. La chaîne de requête est celle du lien GET; le corps n’est pas lu, de sorte que la requête en un clic RFC 8058 d’un fournisseur de courriel (List-Unsubscribe=One-Click, issue des en-têtes List-Unsubscribe et List-Unsubscribe-Post que porte chaque courriel d’alerte et de test) et le bouton de la page fonctionnent tous deux.

Seule cette personne est arrêtée, pour cette notification seulement; les autres continuent de recevoir les courriels, et la personne reste parmi les destinataires (recipients). L’opération est idempotente. La première fois, elle augmente la révision et ajoute notification.updated avec les détails change unsubscribed, user_id et via email_link.

La page qu’elle renvoie contient un bouton Resubscribe (POST /api/notifications/resubscribe); un membre du projet voit les personnes arrêtées dans Notification.unsubscribed. Lorsqu’il ne reste personne à qui écrire, un avis est ignoré avec no_recipients. Tout lien qui ne correspond pas obtient la page 404 du GET. Au plus 30 requêtes par minute par adresse (rate_limited).

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

Paramètres

NomEnvoyerRequis ?Description
nrequêteobligatoireLa notification à laquelle le lien est destiné.
urequêteobligatoireLe user_id de la personne à qui le lien est destiné.
trequêteobligatoireLe jeton du lien.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST 'https://api.screenrig.ai/api/notifications/unsubscribe?n=N&u=U&t=T'

Réponses

StatutSensCorps et en-têtes
200La page qui indique que les alertes sont arrêtées.chaîne (text/html)
404Le lien n’est pas valide; la même page quelle qu’en soit la cause.chaîne (text/html)
par défaut

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

Problème (application/problem+json)
POST/api/notifications/resubscribe

Se réabonner à une notification

Annule POST /api/notifications/unsubscribe pour la personne à qui le lien est destiné : le bouton Resubscribe de la page qu’il renvoie. Même lien, même autorité et même page 404; idempotent. Un changement augmente la révision et ajoute notification.updated avec les détails change resubscribed, user_id et via email_link. Au plus 30 requêtes par minute par adresse (rate_limited).

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

Paramètres

NomEnvoyerRequis ?Description
nrequêteobligatoireLa notification à laquelle le lien est destiné.
urequêteobligatoireLe user_id de la personne à qui le lien est destiné.
trequêteobligatoireLe jeton du lien.
Modèle de requête et réponses
shell · modèle de requête
curl --request POST 'https://api.screenrig.ai/api/notifications/resubscribe?n=N&u=U&t=T'

Réponses

StatutSensCorps et en-têtes
200La page qui indique que les alertes sont de nouveau actives.chaîne (text/html)
404Le lien n’est pas valide; la même page quelle qu’en soit la cause.chaîne (text/html)
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)