Référence API

API Webhooks

Webhooks : livraison d’événements signés

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 9 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.

Webhooks : livraison d’événements signés

GET/api/webhooks

Lister les webhooks

Liste les notifications webhook du projet au format webhook, de la plus ancienne à la plus récente (50 au plus); GET /api/notifications liste tous les canaux. Le secret de signature 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.

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

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/webhooks'

Réponses

StatutSensCorps et en-têtes
200Les webhooks du projet.WebhookList (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/webhooks

Créer un webhook

Crée un webhook qui reçoit les événements durables du projet sous forme de POST HTTPS signés. L’URL doit être https sur un hôte Internet public : une adresse IP littérale ou chaque réponse DNS actuelle du nom doit être publique (privé, loopback, link-local, CGNAT, IPv6 hors 2000::/3, documentation et autres plages réservées sont refusées avec webhook_url_rejected).

Le port doit être 443 (par défaut) ou 8443, sinon webhook_url_rejected. L’hôte est résolu et vérifié à nouveau avant chaque livraison et la connexion est établie à l’adresse vérifiée exacte, donc une réponse DNS qui change plus tard ne peut pas rediriger les livraisons. event_types liste les types d’événements exacts (screen.online) ou les préfixes finissant par .* (screen.*).

Une organisation compte au plus 50 notifications, tous canaux confondus (webhook_limit_reached). Le serveur génère le secret de signature et ne le renvoie que 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.

La livraison commence avec le premier événement après notification.created.

Authentification
projectBearer
Corps de la requête
Écriture webhook
ID d’opération
createWebhook

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
url (obligatoire, chaîne)URL https sur un hôte Internet public, port 443 (par défaut) ou 8443. Pas d’informations utilisateur ni de fragment. maxLength : 2048 format : « uri »
event_types (obligatoire, WebhookEventTypes)

Types d'événements exacts comme screen.online, ou préfixes se terminant par .* comme screen.* (tous les types commençant par screen.). notification.test n'est jamais diffusé par un abonnement; il n'est envoyé que par POST /api/webhooks/{id}/test.

activé (optionnel, booléen)vrai
description (optionnelle, chaîne)maxLength : 200
Modèle de requête et réponses
shell · modèle de requête
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/webhooks'

Réponses

StatutSensCorps et en-têtes
201Créé. Le secret n’est affiché qu’ici et lors de la rotation du secret.WebhookWithSecret (application/json) ; en-têtes : Cache-Control
400invalid_request ou webhook_url_rejected.Problème (application/problem+json)
409webhook_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/webhooks/{id}

Obtenir le webhook

Requiert la capacité du projet ; un justificatif en lecture seule est refusé 403 interdit, car la réponse inclut des URL de récepteur.

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

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/webhooks/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Un webhook.Webhook (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/webhooks/{id}

Mettre à jour le webhook

Modifie l’un des éléments url, event_types, activé et description (une description vide la supprime). Une nouvelle url est vérifiée comme à la création.

Activer un webhook désactivé efface son état d’échec et démarre la livraison à l’événement qui enregistre le changement ; les événements survenus pendant sa désactivation ne sont pas rejoués, et les livraisons encore en attente d’avant la désactivation échouent avec webhook_disabled. Désactiver un webhook échoue ses livraisons en attente avec webhook_disabled.

Ajoute notification.updated. If-Match protège la révision.

Authentification
projectBearer
Corps de la requête
Patch webhook
ID d’opération
updateWebhook

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
url (optionnelle, chaîne)maxLength : 2048 format : « uri »
event_types (optionnel, WebhookEventTypes)

Types d'événements exacts comme screen.online, ou préfixes se terminant par .* comme screen.* (tous les types commençant par screen.). notification.test n'est jamais diffusé par un abonnement; il n'est envoyé que par POST /api/webhooks/{id}/test.

activé (optionnel, booléen)
description (optionnelle, chaîne)Une chaîne vide efface la description. maxLength : 200
Modèle de requête et réponses
shell · modèle de requête
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/webhooks/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
200Webhook mis à jour.Webhook (application/json) ; en-têtes : ETag
400invalid_request ou webhook_url_rejected.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/webhooks/{id}

Supprimer le webhook

Supprime le webhook et ajoute notification.deleted. Ses livraisons en attente sont marquées comme échouées avec webhook_deleted; son journal de livraison n'est plus adressable et expire avec la conservation des événements.

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

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/webhooks/RESOURCE_ID'

Réponses

StatutSensCorps et en-têtes
204Supprimé.pas de corps; en-têtes : Cache-Control
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/webhooks/{id}/rotate-secret

Faire pivoter le secret Webhook

Remplace le secret de signature et renvoie le nouveau; l'ancien secret cesse de signer immédiatement : toute tentative qui signe après la validation de cette opération utilise le nouveau secret, et au plus une tentative par webhook 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
Corps de la requête
aucun
ID d’opération
rotateWebhookSecret

Paramètres

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

Réponses

StatutSensCorps et en-têtes
200Le webhook et son nouveau secret.WebhookWithSecret (application/json) ; en-têtes : Cache-Control
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/webhooks/{id}/test

Webhook de test

Ajoute un événement de projet notification.test et met en file d'attente une livraison de cet événement pour ce webhook uniquement (aucun autre webhook ne reçoit notification.test). Il fonctionne sur un webhook désactivé, n'est tenté qu'une fois, sans nouvelle tentative, est mesuré comme toute livraison et ne modifie jamais l'état d'échec du webhook. Interrogez le journal des livraisons pour en connaître le résultat.

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

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]' 'https://api.screenrig.ai/api/webhooks/RESOURCE_ID/test'

Réponses

StatutSensCorps et en-têtes
202La livraison de test en file d’attente.WebhookDelivery (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/webhooks/{id}/deliveries

Lister les livraisons de webhook

Le journal de livraison du webhook, événement le plus récent en premier. Une ligne par (webhook, événement) ; les tentatives de nouvelle livraison mettent à jour la ligne et GET .../deliveries/{delivery_id}/attempts liste ses tentatives les plus récentes. Les lignes sont conservées comme les événements (la rétention des événements du plan, au moins la fenêtre de nouvelle tentative de 24 heures). Renvoyez next_cursor dans le paramètre before pour la page suivante.

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

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 précédente des livraisons.
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/webhooks/RESOURCE_ID/deliveries'

Réponses

StatutSensCorps et en-têtes
200Une page de livraisons.WebhookDeliveryList (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/webhooks/{id}/deliveries/{delivery_id}/attempts

Lister les tentatives de livraison de webhook

Les tentatives d’une livraison, les plus récentes en premier, les 20 dernières, conservées avec la ligne de livraison et aussi longtemps. Chacune a son numéro de tentative, sa fin, le statut HTTP du récepteur (null quand aucun n’a répondu), la classe d’erreur (null en cas de succès) et sa durée. Les corps et en-têtes de réponse ne sont jamais conservés. Une livraison enregistrée avant la conservation des tentatives n’en liste aucune.

Une livraison qui n’est pas celle de ce webhook, ou un webhook d’un autre projet, est not_found.

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

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/webhooks/RESOURCE_ID/deliveries/DELIVERY_ID/attempts'

Réponses

StatutSensCorps et en-têtes
200Les tentatives conservées de la livraison.WebhookDeliveryAttemptList (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)