Documentación

Notificaciones: comandos CLI

Avisa a personas y sistemas cuando una pantalla cambia de estado con notificaciones y webhooks, sigue los eventos, trabaja alertas y espera operaciones.

Cada comando se ejecuta como describe la referencia de la CLI: banderas globales, salida JSON, códigos de salida, revisiones y reintentos.

Operaciones

Las cargas y las publicaciones se ejecutan como operaciones. media upload, media replace y app upload esperan la suya de forma predeterminada; estos comandos sirven para terminar una que dejó en ejecución con --no-wait.

operations show#

Lea el estado actual de una operación.

operations show <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de operación del sobre que la inició.
screenrig operations show op_01EXAMPLEOPERATION00000

state es receiving, queued, running, succeeded, failed o cancelled; los tres últimos terminan la operación. Una operación exitosa lleva su result, y una fallida lleva error con el code y el detail del problema.

operations wait#

Consulte una operación hasta que finalice.

operations wait <id> [--timeout MS] [--poll-ms MS]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de operación.
--timeout MSintegerno120000Fecha límite para la espera. También limita cada solicitud subyacente.
--poll-ms MSintegerno1000Intervalo entre sondeos de operación mientras espera.
screenrig operations wait op_01EXAMPLEOPERATION00000

La espera termina cuando la operación está succeeded, failed o cancelled. Una operación fallida o cancelada termina con 13 y su propio error. Una espera que agota su tiempo termina con 11 y la operación sigue ejecutándose; el next del error es operations wait ID, que reanuda la espera sin volver a iniciarla.

operations cancel#

Pida al plano de control que cancele una operación.

operations cancel <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de operación.
screenrig operations cancel op_01EXAMPLEOPERATION00000

Cancelar requiere acceso de administración. La respuesta es la operación cancelada.

Eventos

El registro de eventos del proyecto registra lo que hizo el proyecto y lo que hizo la flota. Una versión publicada añade application.published; una app que llama a screenrig.emit(code) añade su propio evento, que es la evidencia más directa de que se ejecutó en una pantalla.

La presencia también está en el registro. screen.offline se escribe una vez que una pantalla ha estado sin conexión por 60 segundos, y screen.online cuando vuelve; una reconexión dentro de esos 60 segundos no escribe ninguno. screen.offline lleva details.offline_since y, cuando la pantalla ha estado en línea antes, details.last_online_at. screen.online lleva details.last_online_at, más details.offline_at cuando la pantalla estuvo sin conexión antes de volver. Como cada evento screen.*, son gratuitos en el flujo de escucha, por lo que un agente puede mantener events follow abierto para observar una flota.

Las actualizaciones de contenido de un Player llegan como screen.manifest_changed, screen.manifest_activated y screen.manifest_upgrade, cuyos details incluyen manifest_revision, state y, cuando existen, code y attempt. Una actualización failed tiene gravedad de error, y retrying, blocked y partial son advertencias.

events list#

Lea una página finita de eventos del proyecto.

events list [--after CURSOR] [--limit N] [--type TYPE] [--source project|log] [--screen-id ID] [--playlist-id ID] [--app-id ID]
ParámetroTipoRequeridoPredeterminadoNotas
--after CURSORstringnola primera páginaReanudar después del next_cursor de la página anterior.
--limit Nintegerno50Tamaño de página, de 1 a 200.
--type TYPEstringnocada tipoUn tipo de evento, o una familia por un prefijo que termina en un punto, como note..
--source SOURCEstringnoprojectproject lista los eventos del proyecto. log lista los registros del log del Player, que pertenecen a una pantalla: úselo con --screen-id.
--screen-id IDstringnocada pantallaEventos cuyo recurso es esta pantalla, incluidos los emitidos por el SDK. Con --source log, los registros del log del Player de esa pantalla.
--playlist-id IDstringnocada lista de reproducciónEventos cuyo recurso es esta lista de reproducción y eventos que la nombran en details.playlist_id, como una pantalla que la adopta. No con --source log.
--app-id IDstringnotodas las aplicacionesEventos del recurso de aplicación, sus versiones y sus entradas K/V; excluye los eventos emitidos por el SDK. No con --source log.
screenrig events list --limit 25
screenrig events list --type application.event --screen-id scr_SCREEN
screenrig events list --playlist-id pl_PLAYLIST
screenrig events list --source log --screen-id scr_SCREEN

Los métodos emit() y emitConfirmed() del SDK añaden registros application.event cuyo recurso es la pantalla. Léalos con --type application.event y, opcionalmente, --screen-id. Los campos details.primitive_id y details.code devueltos identifican la primitiva emisora y la acción con nombre. --app-id selecciona eventos del recurso de aplicación, sus versiones y sus entradas K/V, por lo que excluye estos eventos de pantalla.

--source log lee el log del Player: las condiciones que informa un Player, conservadas durante la retención de eventos del proyecto. No tiene secuencia, por lo que no está en events follow ni se entrega a los webhooks, y --playlist-id y --app-id se rechazan con él (usage_error, salida 2). Un id de un tipo equivocado se rechaza antes de cualquier solicitud. data.next_cursor es null al final del historial.

La salida predeterminada es un sobre JSON para la página. Con --human, la salida es una línea logfmt por evento: at=, type=, severity= y detalles escalares.

events follow#

Manténgase en la transmisión de eventos e imprima los eventos a medida que llegan.

events follow [--after CURSOR] [--timeout MS] [--type TYPE]
ParámetroTipoRequeridoPredeterminadoNotas
--after CURSORstringnoel final en vivoReanudar desde este cursor.
--timeout MSintegernosin fecha límiteFinaliza todo el seguimiento, incluyendo la reconexión con retroceso.
--type TYPEstringnocada tipoUn tipo de evento, o una familia por un prefijo que termina en un punto, como note..
screenrig events follow

Una desconexión o fallo transitorio se reconecta con retroceso y reanuda desde el último id de evento. La reproducción tras reconexión es gratuita. Problemas de autorización y no encontrado detienen el comando en lugar de reintentarlo.

Con --type, el flujo sigue llevando todos los eventos y la CLI imprime solo los que coinciden, y los marcos stream.* que describen el propio flujo se imprimen siempre: screenrig events follow --type note. vigila las notas del proyecto.

La salida predeterminada es NDJSON: un sobre por evento en su propia línea, en lugar de un solo sobre. Use --human para líneas logfmt.

Notificaciones

Una notificación avisa a una persona, o a otro sistema, cuando una pantalla cambia de estado. Una notificación por correo envía un correo a cada destinatario, una notificación webhook envía un POST HTTPS firmado y una notificación de Slack, Teams, PagerDuty o Telegram publica un mensaje en un chat o en un sistema de guardia. Una organización tiene como máximo 50 entre todos los canales y todos sus proyectos, y cada proyecto empieza con un correo a su propietario cuando una pantalla lleva 10 minutos sin conexión.

Una notificación vigila las condiciones que usted nombra:

CondiciónComienza cuandoTermina cuando
screen_offlineEl Player ha estado sin conexión durante 60 segundos.La pantalla vuelve a estar en línea.
display_disconnectedEl Player informa que su monitor está desconectado.El monitor se reconecta.
running_hotEl dispositivo informa una temperatura igual o superior al umbral de calor.La temperatura vuelve a la normalidad.
on_batteryUn dispositivo con batería informa de que funciona con la batería, desenchufado.El dispositivo informa de otra fuente de alimentación.
storage_fullEl almacenamiento del Player no puede albergar su contenido.La falta de espacio desaparece.
content_stuckLa actualización de contenido de la pantalla está en reintento, fallida, bloqueada o parcial.La actualización pasa a cualquier otro estado.
not_playingEl Player muestra un error en lugar de su contenido. El almacenamiento lleno es storage_full.El estado del Player ya no es un error.
loop_stalledUna pantalla en línea, dentro de su horario y con contenido al día no ha iniciado ninguna imagen ni vídeo durante más tiempo del que permite su bucle.Una imagen o un vídeo vuelve a empezar, o screenRIG deja de juzgar la pantalla.
glass_blankLas capturas que tomó screenRIG durante una serie que cubre todo el bucle eran todas de un solo tono plano.Dos capturas seguidas muestran una imagen, o screenRIG deja de juzgar la pantalla.
glass_frozenLas capturas que tomó screenRIG durante una serie que cubre todo el bucle eran todas la misma imagen.Dos capturas seguidas muestran una imagen en movimiento, o screenRIG deja de juzgar la pantalla.
crashingEl Player falló o reinició su renderizador repetidamente.Nunca: cada pico es su propio aviso.
source_failedFalló la actualización de una fuente de datos.Una actualización funciona.
source_staleUna fuente de datos siguió fallando hasta que caducaron sus datos.Una actualización funciona.
card_data_staleLos datos de una tarjeta, escritos con una caducidad, la alcanzaron mientras una pantalla muestra la tarjeta y nada los renovó.Una escritura en los datos de la tarjeta se completa.
reach_droppedUna campaña alcanza menos pantallas que cuando se publicó por última vez, porque las pantallas salieron de sus etiquetas o carpetas, o fueron archivadas o eliminadas.La campaña vuelve a alcanzar tantas pantallas, o se publica de nuevo.
group_emptyUna etiqueta o carpeta de la audiencia de una campaña no coincide con ninguna pantalla.La etiqueta o carpeta vuelve a coincidir con una pantalla, o una publicación la quita de la audiencia.

Una condición notifica una vez que ha durado --hold minutos (10 por defecto), para que una reconexión rápida no genere avisos. Si termina antes, no se envía nada; si termina después de que se haya enviado un aviso, sigue un aviso de resolución. crashing se envía de inmediato. Un aviso también se omite cuando alguien reconoce o pospone la alerta de la pantalla durante el tiempo de espera, o cuando un silenciamiento cubre la pantalla. --tag limita una notificación a las pantallas que llevan esa etiqueta; sin ella, se consideran todas las pantallas.

Cada aviso tiene una gravedad. Un aviso abierto es error para screen_offline y warning para cualquier otra condición, y un aviso resuelto o una prueba es info. --min-severity LEVEL (info, warning o error) no crea ningún aviso abierto por debajo de ese nivel, y un aviso resuelto sigue a su aviso abierto. --severity CONDITION=LEVEL, repetible, define el nivel de una condición para esta notificación, como --severity not_playing=error; cuenta para --min-severity. Teams y PagerDuty siempre muestran el nivel, el texto de correo, Slack y Telegram lo nombra cuando la notificación define --min-severity o --severity, y el cuerpo de un webhook incluye severity.

--active-hours SPEC envía los avisos abiertos solo dentro de ventanas semanales, leídas en --timezone ZONE, que lo requiere. SPEC es DAYS HH:MM-HH:MM, como "Mon-Fri 08:00-22:00"; repítalo hasta 16 veces. Con --outside-hours hold, el valor predeterminado, un aviso que vence fuera del horario espera a la siguiente ventana y se envía entonces si su condición sigue vigente, de modo que una condición que se despeja antes no envía nada. Con drop el aviso se omite como outside_hours, que notifications deliveries lista. Un aviso resuelto de un aviso abierto que se envió siempre se envía, crashing sigue el horario como cualquier otra condición, primero se comprueba un aplazamiento, y notifications test ignora el horario, la gravedad y la audiencia.

--audience FILE (JSON en línea, un archivo o - para stdin) elige las pantallas con las reglas de una audiencia de campaña, como {"all":[{"tag":"level2"},{"tag":"overhead"}]} para las pantallas que llevan ambas etiquetas; --all-tags TAG y --any-tag TAG son las abreviaturas de una regla all y una regla any de etiquetas, y --tag significa cualquiera de las etiquetas. --tag, --any-tag, --all-tags y --audience se excluyen entre sí.

loop_stalled, glass_blank y glass_frozen son veredictos que screenRIG saca de los informes de reproducción y las capturas de pantalla que recibe, y dejan fuera lo que no pueden juzgar: una pantalla sin conexión, con la pantalla apagada, bajo una toma de control o suspendida, que muestra una sola imagen fija o un muro de vídeo, o cuyo Player no envía números de reproducción. Cuando screenRIG deja de juzgar una pantalla que había encontrado en uno de ellos, la alerta se cierra, pero el correo, Slack, Teams y Telegram no envían aviso de resolución, porque nada mostró que la pantalla se recuperara; PagerDuty sí resuelve su incidente.

source_failed y source_stale vigilan las fuentes de datos del proyecto, no sus pantallas: un aviso nombra la fuente y enlaza su página, y --tag nunca coincide con una fuente.

card_data_stale vigila una tarjeta, no una pantalla. Escriba los datos de una tarjeta con una caducidad ajustada al calendario de quien los escribe (card data put --ttl 30m), y cuando el trabajo o el agente que los renueva se detiene, los datos caducan, la tarjeta queda en blanco en cada pantalla que la muestra, y esta condición se lo avisa. El aviso nombra la tarjeta y cuándo caducaron sus datos, y enlaza el editor de páginas en una página que la coloca. Los documentos de una fuente de datos nunca se anuncian aquí (source_stale los cubre), ni tampoco una tarjeta que ninguna pantalla muestra, datos escritos sin caducidad o datos eliminados. --tag nunca coincide con una tarjeta.

reach_dropped y group_empty vigilan una campaña, no una pantalla. El aviso nombra la campaña y las pantallas que alcanzaba antes y que alcanza ahora, o la etiqueta o carpeta vacía, y enlaza al calendario de la campaña. Una campaña pertenece al proyecto, por lo que --tag, --any-tag, --all-tags y --audience nunca limitan a estos dos; --min-severity, --severity, --active-hours y --hold se aplican como en cualquier condición, y ambos están warning de forma predeterminada. --reach-drop-screens N y --reach-drop-percent P envían un aviso reach_dropped solo por una caída de al menos N pantallas y de al menos P por ciento de las pantallas que la campaña alcanzaba cuando se publicó; una caída debe cumplir ambos, y sin ellos cualquier caída genera un aviso. Requieren reach_dropped en --conditions. Cada etiqueta o carpeta vacía de una campaña es su propio aviso, y notifications deliveries lo muestra como audience_group (tag:Lobby o folder:sfd_…). Una publicación que quita un grupo vacío de la audiencia cierra un incidente de PagerDuty y la alerta de un webhook, pero no envía correo electrónico ni mensaje de chat de recuperación.

El correo electrónico se envía a la dirección verificada de cada destinatario, un correo por destinatario para todo lo que vence en unos dos minutos, con un enlace a cada pantalla y a la notificación en el panel. Los destinatarios son owner, quien sea propietario del proyecto cuando se envía el aviso, y los ids de usuario de los miembros del proyecto. Se omite a un destinatario sin dirección verificada o que ha salido del proyecto. Los correos electrónicos de notificación y los avisos de pantalla son gratuitos.

Cada correo incluye un enlace para cancelar la suscripción de su propio destinatario: el botón de cancelar suscripción de las aplicaciones de correo y un enlace en el pie. Al seguirlo, los correos de esa notificación dejan de llegar a esa única persona, sin iniciar sesión, y la página que se abre tiene un botón Resubscribe. Los demás destinatarios no se ven afectados, y la persona sigue entre los destinatarios. notifications show muestra quién canceló la suscripción con unsubscribed, y notifications resubscribe vuelve a enviarle correos. Un aviso sin nadie a quien enviar correo se omite como no_recipients.

Una notificación de webhook envía por POST cada aviso como JSON, que usted verifica como se describe en Verificar una entrega. Con --events también envía por POST eventos del proyecto sin procesar a medida que ocurren; esas entregas se miden como se describe en Webhooks.

Una notificación de Slack, Teams, PagerDuty o Telegram publica un mensaje por caída y por pantalla, o por grupo de pantallas: la pantalla, qué cambió, desde cuándo, el proyecto, un enlace a la pantalla y, cuando vuelve una pantalla sin conexión, su causa probable si ya se conoce. Un mensaje de recuperación llega cuando se envió el primero y, en PagerDuty, resuelve el incidente que abrió el primero. La credencial se da una sola vez (--slack toma la URL de un webhook entrante, --teams la URL de un webhook de Workflows, --pagerduty una clave de enrutamiento de la API Events v2, --telegram un token de bot con --telegram-chat); queda sellada, no se vuelve a mostrar y destination_hint solo muestra su final enmascarado. Un - la lee desde una línea de stdin para que no quede en el historial de tu shell. Una publicación fallida se reintenta durante 24 horas, y una notificación que falla durante 72 horas se desactiva.

Cuando tres o más pantallas entran en la misma condición con menos de cinco minutos de diferencia y comparten red, ubicación, modelo, versión del Player o etiqueta, una notificación por correo, Slack, Teams, PagerDuty o Telegram envía un solo aviso para ellas en lugar de uno por pantalla, y un solo aviso comunica el grupo cuando se recupera su última pantalla; el aviso de cada otra pantalla se omite como grouped. Un webhook sigue enviando un aviso por pantalla.

Leer las notificaciones y sus entregas requiere el acceso Solo lectura; crear, cambiar, probar y eliminar una, rotar su secreto y volver a suscribir a una persona requieren el acceso Administrar.

Código de problemaSalirSignificado
webhook_url_rejected8La URL no es https en el puerto 443 o 8443, o su host no resuelve solo a direcciones públicas de Internet. error.detail lleva la razón del servidor. No se creó ni cambió nada.
notification_destination_rejected8El destino no corresponde a su canal, o es la URL de un conector de Office 365 retirado. error.detail indica la forma que corresponde. No se creó ni se cambió nada.
notification_limit_reached5La organización ya tiene 50 notificaciones. Elimine una primero.
revision_conflict6La revisión --expect-rev estaba obsoleta. Ejecute notifications show y luego intente de nuevo.
rate_limited7Más de 20 llamadas notifications test en un minuto para esta organización.
invalid_request8Un destinatario de --email que no es miembro del proyecto, o una opción que pertenece a otro canal, como --url en una notificación por correo. No se creó ni cambió nada.

notifications create#

Crea una notificación por correo, webhook, Slack, Teams, PagerDuty o Telegram.

notifications create (--email RECIPIENTS | --webhook URL | --slack URL | --teams URL | --pagerduty KEY
                      | --telegram TOKEN --telegram-chat CHAT_ID) [--conditions LIST] [--events TYPES]
                     [--tag TAG... | --any-tag TAG... | --all-tags TAG... | --audience FILE] [--hold MINUTES]
                     [--min-severity LEVEL] [--severity CONDITION=LEVEL]... [--active-hours SPEC]...
                     [--timezone ZONE] [--outside-hours hold|drop] [--reach-drop-screens N] [--reach-drop-percent P]
                     [--description TEXT] [--disabled]
ParámetroTipoRequeridoPredeterminadoNotas
--email RECIPIENTSstringun indicador de canalningunoEnviar correo electrónico a estos destinatarios separados por comas: owner, o el id de usuario de un miembro del proyecto, máximo 20.
--webhook URLstringun indicador de canalningunoUna URL https en el puerto 443 (el predeterminado) o 8443 cuyo host se resuelve solo a direcciones públicas de Internet. El servidor la verifica en cada escritura y nuevamente antes de cada entrega. Se rechaza localmente una URL que lleva credenciales (user:pass@ o token@) o un fragmento # con salida 2.
--conditions LISTstringsí, salvo en un webhookningunoCondiciones separadas por comas de la tabla anterior. Un webhook necesita esto, --events, o ambos.
--slack URLstringun indicador de canalningunoPublica en Slack con la URL de un webhook entrante de hooks.slack.com, o - para leerla desde una línea de stdin.
--teams URLstringun indicador de canalningunoPublica en Teams con la URL de un webhook de Workflows (el desencadenador «Cuando se recibe una solicitud de webhook de Teams»), o - para stdin. Las URL de conectores de Office 365 están retiradas y se rechazan.
--pagerduty KEYstringun indicador de canalningunoActiva y resuelve incidentes de PagerDuty con una clave de enrutamiento de la API Events v2 de 32 caracteres, o - para stdin.
--telegram TOKENstringun indicador de canalningunoPublica en Telegram con un token de bot, o - para stdin. Necesita --telegram-chat.
--telegram-chat CHAT_IDstringcon --telegramningunoEl chat donde publicar: su id numérico, como -1001234567890, o @channelname.
--events TYPESstringnoningunoSolo webhook. Enviar también por POST estos eventos del proyecto sin procesar: de 1 a 32 tipos exactos separados por comas, como screen.online, o prefijos que terminan en .*, como screen.*.
--tag TAGstringnocada pantallaSolo pantallas que llevan alguna de estas etiquetas. Repita la bandera o sepárelas con comas, hasta 16 etiquetas.
--hold MINUTESintegerno10Cuánto tiempo debe durar una condición antes de notificar, de 0 a 1440. crashing nunca espera.
--all-tags TAGstringnoningunoSolo las pantallas que llevan todas las etiquetas listadas. Repita la opción o sepárelas con comas.
--any-tag TAGstringnoningunoSolo las pantallas que llevan al menos una etiqueta listada, como --tag. Repita la opción o sepárelas con comas.
--audience FILEstringnocada pantallaLas pantallas como una regla de audiencia de campaña en JSON: en línea, un archivo o - para stdin. No con las opciones de etiquetas.
--min-severity LEVELstringnoningunoinfo, warning o error: los avisos abiertos por debajo de ese nivel no se envían.
--severity CONDITION=LEVELstringnolos valores predeterminadosDefine la gravedad de una condición para esta notificación. Repita la opción.
--active-hours SPECstringnoalwaysEnvíe los avisos abiertos solo dentro de esta ventana semanal, DAYS HH:MM-HH:MM como "Mon-Fri 08:00-22:00". Repita hasta 16 veces. Requiere --timezone.
--timezone ZONEstringcon --active-hoursningunoLa zona IANA en la que se lee el horario, como America/Los_Angeles.
--outside-hours MODEstringnoholdhold espera a la siguiente ventana; drop omite el aviso.
--reach-drop-screens Nintegernocualquier caídaSolo con reach_dropped: enviar un aviso solo cuando la campaña haya perdido al menos N pantallas (1 o más).
--reach-drop-percent Pintegernocualquier caídaSolo con reach_dropped: exigir además una pérdida de al menos P por ciento (1 a 100) de las pantallas que la campaña alcanzaba cuando se publicó.
--description TEXTstringnoningunoMáximo 200 caracteres.
--disabledbooleannoapagadoCréela deshabilitada. No se envía nada hasta notifications update --enable.
screenrig notifications create --email owner --conditions screen_offline,display_disconnected --tag Lobby
screenrig notifications create --webhook https://hooks.example.com/screenrig --conditions screen_offline,crashing
screenrig notifications create --slack - --conditions screen_offline,crashing < slack-url.txt

El sobre es la notificación. El de un webhook lleva su secreto de firma en data.secret (whsec_…) con la advertencia webhook_secret_shown_once. Guarde el secreto en el almacén de secretos del receptor de inmediato. Solo notifications rotate-secret lo devuelve de nuevo, y la CLI nunca lo escribe en su configuración, registro de operaciones o estado de recuperación de escritura. Después de una creación interrumpida o ambigua, vuelva a ejecutar el mismo comando dentro de 24 horas: reutiliza la clave de idempotencia guardada, y el servidor devuelve la misma respuesta, incluido el secreto. Los avisos comienzan con el primer evento posterior a la creación de la notificación.

notifications list#

Listar las notificaciones de este proyecto, nunca sus secretos.

notifications list
screenrig notifications list

Cada fila es una notificación de cualquier canal, de la más antigua a la más reciente, con su status. Una notificación de Slack, Teams, PagerDuty o Telegram muestra destination_hint, su credencial enmascarada hasta el host y los últimos caracteres, en la columna TO de --human. Por debajo del acceso Administrar, la url de un webhook está vacía y url_redacted es true, y TO muestra (withheld).

notifications show#

Inspeccionar una notificación y su estado de entrega.

notifications show <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de notificación ntf_ (cualquier canal salvo webhook) o whk_ (webhook).
screenrig notifications show ntf_01EXAMPLENOTICE00000

status es active, failing mientras ninguna entrega ha tenido éxito desde failing_since, o disabled. Después de 72 horas de fallo continuo, la notificación se deshabilita con disabled_reason: delivery_failures y el registro de eventos registra notification.disabled. snoozed_until está presente mientras hay una pausa establecida. last_success_at y last_failure_at informan los últimos resultados. revision es el valor que protege --expect-rev. min_severity, severity, active_hours con outside, audience y reach_drop aparecen mientras están definidos, y una notificación por correo lista unsubscribed.

notifications update#

Cambia los destinatarios, la URL, el destino, las condiciones, las pantallas, la espera, la pausa o el estado de activación de una notificación.

notifications update <id> [--email RECIPIENTS | --url URL | --destination VALUE] [--telegram-chat CHAT_ID]
                          [--conditions LIST | --clear-conditions]
                          [--events TYPES | --clear-events] [--tag TAG... | --any-tag TAG... | --all-tags TAG... | --audience FILE | --all-screens]
                          [--hold MINUTES] [--min-severity LEVEL | --clear-min-severity]
                          [--severity CONDITION=LEVEL]... [--clear-severity]
                          [--active-hours SPEC]... [--timezone ZONE] [--outside-hours hold|drop] [--clear-active-hours]
                          [--reach-drop-screens N] [--reach-drop-percent P] [--clear-reach-drop]
                          [--description TEXT | --clear-description] [--enable | --disable]
                          [--snooze WHEN] [--expect-rev REVISION]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de notificación ntf_ (cualquier canal salvo webhook) o whk_ (webhook).
--email RECIPIENTSstringal menos un cambiosin cambiosNotificaciones por correo electrónico: reemplaza los destinatarios.
--url URLstringal menos un cambiosin cambiosNotificaciones de webhook: reemplaza la URL, verificada como create.
--destination VALUEstringal menos un cambiosin cambiosNotificaciones de Slack, Teams, PagerDuty y Telegram: sustituye la credencial, comprobada como en create. - la lee desde una línea de stdin.
--telegram-chat CHAT_IDstringal menos un cambiosin cambiosNotificaciones de Telegram: sustituye el chat.
--conditions LISTstringal menos un cambiosin cambiosReemplaza las condiciones.
--clear-conditionsbooleanal menos un cambioapagadoEliminar todas las condiciones. Entonces un webhook necesita --events.
--events TYPESstringal menos un cambiosin cambiosNotificaciones de webhook: reemplaza los eventos del proyecto sin procesar.
--clear-eventsbooleanal menos un cambioapagadoNotificaciones de webhook: deja de enviar por POST los eventos del proyecto sin procesar. Entonces necesita condiciones.
--tag TAGstringal menos un cambiosin cambiosReemplaza las etiquetas de pantalla, y la audiencia si la notificación tiene una.
--all-screensbooleanal menos un cambioapagadoQuitar las etiquetas de pantalla y la audiencia; la notificación cubre todas las pantallas.
--hold MINUTESintegeral menos un cambiosin cambiosDe 0 a 1440.
--all-tags TAGstringal menos un cambiosin cambiosReemplaza las pantallas por las que llevan todas las etiquetas listadas.
--any-tag TAGstringal menos un cambiosin cambiosReemplaza las pantallas por las que llevan al menos una etiqueta listada, como --tag.
--audience FILEstringal menos un cambiosin cambiosReemplaza las pantallas con una regla de audiencia de campaña en JSON: en línea, un archivo o - para stdin.
--min-severity LEVELstringal menos un cambiosin cambiosinfo, warning o error.
--clear-min-severitybooleanal menos un cambioapagadoQuitar el filtro de gravedad.
--severity CONDITION=LEVELstringal menos un cambiosin cambiosReemplaza las anulaciones de gravedad por estas. Repita la opción.
--clear-severitybooleanal menos un cambioapagadoQuitar todas las anulaciones de gravedad.
--active-hours SPECstringal menos un cambiosin cambiosReemplaza las ventanas por estas. Repita hasta 16 veces. --timezone es por defecto la zona que la notificación ya tiene.
--timezone ZONEstringal menos un cambiosin cambiosLa zona IANA en la que se lee el horario. Solo, conserva las ventanas actuales.
--outside-hours MODEstringal menos un cambiosin cambioshold o drop. Solo, conserva las ventanas actuales.
--clear-active-hoursbooleanal menos un cambioapagadoQuitar el horario activo. Los avisos que se retuvieron por él se vuelven a juzgar de inmediato.
--reach-drop-screens Nintegeral menos un cambiosin cambiosReemplaza el menor número de pantallas que un aviso reach_dropped exige que la campaña haya perdido.
--reach-drop-percent Pintegeral menos un cambiosin cambiosReemplaza el menor porcentaje de su alcance publicado que la campaña debe haber perdido.
--clear-reach-dropbooleanal menos un cambioapagadoQuita el umbral, de modo que cualquier caída genera un aviso. Quite reach_dropped de --conditions solo junto con él.
--description TEXTstringal menos un cambiosin cambiosMáximo 200 caracteres.
--clear-descriptionbooleanal menos un cambioapagadoEliminar la descripción.
--enablebooleanal menos un cambioapagadoBorra el estado de fallo y comienza en el evento que registra el cambio; no se envía nada de lo ocurrido mientras estuvo deshabilitada.
--disablebooleanal menos un cambioapagadoDetiene los avisos; los avisos pendientes fallan con webhook_disabled.
--snooze WHENstringal menos un cambiosin cambiosNo enviar nada hasta entonces: una duración como 30m, 1h o 2d (menos de 30 días), un instante RFC 3339 con segundos y un desplazamiento, o off para terminar la pausa. Los avisos que vencen mientras tanto se omiten, no se envían después.
--expect-rev REVISIONstringnoningunoPrecondición opcional de revisión.
screenrig notifications update ntf_01EXAMPLENOTICE00000 --snooze 2h

update cambia solo los campos que pase. El canal nunca cambia: --email se aplica a una notificación por correo, --url y --events a un webhook, y --destination y --telegram-chat a una de chat o de buscapersonas, y una opción de otro canal es invalid_request (salida 8). Indique como máximo una de --email, --url y --destination. Las etiquetas de pantalla y una audiencia se excluyen entre sí: definir una borra la otra. Una notificación por correo conserva al menos una condición, y un webhook conserva condiciones o eventos. El secreto de firma no cambia; use notifications rotate-secret.

notifications delete#

Eliminar una notificación. Sus avisos pendientes fallan con webhook_deleted.

notifications delete <id> [--expect-rev REVISION]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de notificación ntf_ (cualquier canal salvo webhook) o whk_ (webhook).
--expect-rev REVISIONstringnoningunoPrecondición opcional de revisión.
screenrig notifications delete ntf_01EXAMPLENOTICE00000

Su registro de entregas no se puede leer después; sus filas caducan con la retención de eventos.

notifications rotate-secret#

Sustituye el secreto de firma de una notificación webhook y devuelve el nuevo una sola vez. Cualquier otro canal no tiene secreto y responde invalid_request (salida 8).

notifications rotate-secret <id> [--expect-rev REVISION]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de notificación ntf_ (cualquier canal salvo webhook) o whk_ (webhook).
--expect-rev REVISIONstringnoningunoPrecondición opcional de revisión.
screenrig notifications rotate-secret whk_01EXAMPLEWEBHOOK00000

El sobre lleva el nuevo secreto en data.secret con la advertencia webhook_secret_shown_once; guárdelo de inmediato. El secreto anterior deja de firmar, pero como máximo un intento ya en curso aún puede llegar firmado con él, así que acepte ambos por un corto tiempo. Después de una rotación interrumpida o ambigua, vuelva a ejecutar el mismo comando dentro de 24 horas para recuperar el mismo secreto.

notifications test#

Envía un correo de prueba, un POST de prueba firmado o un mensaje de chat solo a esta notificación.

notifications test <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de notificación ntf_ (cualquier canal salvo webhook) o whk_ (webhook).
screenrig notifications test ntf_01EXAMPLENOTICE00000

El sobre es la entrega en cola. Se intenta una vez sin reintentos, funciona con una notificación deshabilitada o en pausa y nunca cambia el estado de fallo de la notificación. Máximo 20 entregas de prueba por minuto por organización; más es rate_limited (salida 7). Lea el resultado con notifications deliveries.

Una prueba de PagerDuty dispara un evento informativo con la clave screenrig:test:DELIVERY_ID y lo resuelve de inmediato, así que no queda ningún incidente abierto.

notifications resubscribe#

Vuelve a enviar los correos de una notificación a una persona que canceló su suscripción.

notifications resubscribe <id> --user USER_ID
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id ntf_ de una notificación por correo electrónico.
--user USER_IDstringsíningunoEl id de usuario de la persona, tal como notifications show lo muestra en unsubscribed.
screenrig notifications resubscribe ntf_01EXAMPLENOTICE00000 --user usr_01EXAMPLEPERSON0000

El sobre es la notificación. Una persona que no canceló su suscripción no cambia nada. Volver a suscribir a una persona aumenta la revisión y agrega notification.updated. Una notificación de otro canal o proyecto es not_found (salida 4).

notifications deliveries#

Leer el registro de entregas de una notificación, con las más recientes primero.

notifications deliveries <id> [--before CURSOR] [--limit N]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de notificación ntf_ (cualquier canal salvo webhook) o whk_ (webhook).
--before CURSORstringnoel evento más recienteEl next_cursor (whc1_… o whc2_…) de la página anterior.
--limit Nintegerno50Filas por página, de 1 a 200.
screenrig notifications deliveries ntf_01EXAMPLENOTICE00000 --limit 20

Cada fila es un evento, o un aviso de una condición en una pantalla: event_type, state (pending, succeeded, failed o skipped), attempts, last_status y una clase last_error fija como http_status, timeout, connection_failed, tls_failed, dns_failed, url_rejected, email_failed, email_rejected o secret_unavailable. Un aviso de pantalla añade condition, phase (opened o resolved), screen_id, screen_name (para una fuente de datos, una campaña o una tarjeta, su id y nombre) y since, y un aviso por correo añade emailed, el número de personas alcanzadas. Un aviso que no hizo falta enviar es skipped, con su motivo en last_error: condition_cleared (la pantalla salió del estado antes de terminar la espera), not_opened (no salió ningún aviso que resolver), snoozed (la notificación está en pausa), acknowledged (alguien reconoció o pospuso la alerta de la pantalla durante la espera), muted (un silenciamiento cubre la pantalla), outside_hours (el horario activo de la notificación estaba cerrado y descarta los avisos fuera de él), below_severity (el aviso está por debajo de min_severity, que se subió después de ponerlo en cola), planned_reboot (la pantalla se desconectó, desconectó su pantalla o falló mientras se reiniciaba por un reinicio enviado por screenRIG, hasta que termina o pasan diez minutos desde su envío), no_recipients (ningún destinatario es miembro del proyecto con una dirección verificada y sin haberse dado de baja), grouped (la pantalla entró en la condición junto con otras, y un aviso de otra fila las dice todas), o no_longer_judged (una condición loop_stalled, glass_blank o glass_frozen terminó porque screenRIG dejó de evaluar la pantalla, una reach_dropped porque la campaña se publicó de nuevo o se eliminó, una group_empty porque una publicación quitó la etiqueta o la carpeta de su audiencia, o una card_data_stale porque se eliminaron los datos de la tarjeta, así que no se comunicó ninguna recuperación). El aviso que dijo un grupo de pantallas lleva group (id, attribute, value y count), y cada otra pantalla del grupo lleva group_id; --human muestra ambos en una columna GROUP. Las filas nunca incluyen la respuesta del receptor. next_cursor es null al final del registro. Un intento fallido se reintenta con espera creciente, de 30 segundos duplicándose hasta una hora, durante 24 horas, y después la fila es failed.

Verificar una entrega

El cuerpo de un aviso de pantalla es JSON: type (alert.opened o alert.resolved), id (el id de entrega), notification_id, project_id, condition, screen (id y name), since (cuando comenzó la condición), at (cuando duró lo suficiente, o se resolvió), event_id y severity (info, warning o error: el nivel de la condición en alert.opened, info en alert.resolved). alert.resolved para screen_offline también lleva likely_cause (device_restart, app_crash, app_restart, network o platform), null mientras la causa es desconocida. Para una fuente de datos, una campaña o una tarjeta, screen la nombra, y un aviso de campaña añade reach (published y current pantallas) para reach_dropped o audience_group (kind tag o folder, y value) para group_empty. Un evento sin procesar de --events es el mismo objeto JSON que events list devuelve. Los encabezados son ScreenRig-Webhook-Id (el id de la notificación), ScreenRig-Event-Id (estable entre reintentos: el id de entrega para un aviso, el cursor del evento para un evento) y ScreenRig-Signature: t=<unix seconds>,v1=<hex>, donde v1 es HMAC-SHA256 sobre "<t>.<raw body>" con la cadena secreta como clave. Calcúlelo sobre los bytes sin procesar antes de analizar JSON, compárelo en tiempo constante, rechace un t antiguo y deduplique en ScreenRig-Event-Id, porque la entrega es al menos una vez y sin orden. Responda 2xx en 10 segundos; no se siguen las redirecciones.

import { createHmac, timingSafeEqual } from "node:crypto";

// rawBody: the request body bytes (Buffer) exactly as received.
function verify(rawBody, signatureHeader, secret, toleranceSeconds = 300) {
  if (typeof signatureHeader !== "string" || !signatureHeader) return false;
  const parts = Object.fromEntries(signatureHeader.split(",").map((part) => part.split("=", 2)));
  const t = Number(parts.t);
  if (!Number.isInteger(t) || Math.abs(Date.now() / 1000 - t) > toleranceSeconds) return false;
  const expected = createHmac("sha256", secret).update(`${t}.`).update(rawBody).digest();
  const given = Buffer.from(parts.v1 ?? "", "hex");
  return given.length === expected.length && timingSafeEqual(given, expected);
}

Alertas

Una alerta es un problema en una pantalla mientras dura. Se abre cuando una pantalla entra en una de las condiciones de notificación de pantalla (screen_offline, display_disconnected, running_hot, on_battery, storage_full, content_stuck, not_playing, loop_stalled, glass_blank o glass_frozen), la vigile o no una notificación, y se resuelve cuando la condición termina. Una pantalla tiene como máximo una alerta abierta por condición. Un pico de fallos, una fuente de datos, una tarjeta y una campaña son avisos, nunca alertas. Una pantalla que se reinicia por un reinicio enviado por screenRIG (screen reboot o una programación de reinicios) no abre ninguna alerta screen_offline ni display_disconnected hasta que el reinicio termina o pasan diez minutos desde su envío; una condición que sigue vigente abre entonces su alerta. alerts list muestra lo que está abierto ahora.

Una alerta abierta necesita atención hasta que alguien la reconoce o la pospone, o hasta que un silenciamiento cubre su pantalla. Reconocer significa que alguien se está ocupando: la alerta sigue abierta, registra quién la reconoció y cuándo, y no necesita atención hasta que se resuelve. Posponer reconoce hasta una hora como máximo 30 días en el futuro, y la alerta vuelve a necesitar atención entonces si sigue abierta. Un reconocimiento o aplazamiento posterior reemplaza al anterior. Mientras una alerta está reconocida o pospuesta, se omite el aviso de una notificación sobre ella que aún está en su tiempo de espera.

Un silenciamiento sirve para el mantenimiento: nombra pantallas, etiquetas o ambas, y termina en un momento como máximo 30 días en el futuro. Cubre una pantalla mientras su id figure en la lista o lleve una etiqueta de la lista, de modo que una pantalla etiquetada después queda cubierta y una que pierde la etiqueta deja de estarlo. Las alertas de una pantalla silenciada siguen abriéndose y resolviéndose, marcadas muted, pero nunca necesitan atención, y todas las notificaciones omiten sus avisos. Una organización tiene como máximo 50 silenciamientos vigentes en todos sus proyectos.

counts.attention en alerts list es el número que el panel muestra junto a Alertas. Abrir, resolver y reconocer una alerta agrega screen.alert_opened, screen.alert_resolved y screen.alert_acknowledged al registro de eventos del proyecto, y crear y finalizar un silenciamiento agrega alert_mute.created y alert_mute.deleted. Son gratuitos en el flujo de escucha y en los webhooks, como todo evento screen.*. Las alertas resueltas siguen en la lista durante la retención de eventos del plan. Leer alertas y silenciamientos requiere el acceso Solo lectura; reconocer, posponer, silenciar y quitar el silencio requieren el acceso Administrar.

Código de problemaSalirSignificado
alert_not_open5La alerta ya se resolvió, así que no hay nada que reconocer ni posponer. Ejecute alerts list y use una abierta.
alert_mute_limit_reached5La organización ya tiene 50 silenciamientos vigentes. Termine uno con alerts unmute, o cubra más pantallas con un solo silenciamiento por etiqueta.
invalid_request8El instante --until está a más de 30 días en el futuro. No se cambió nada.
not_found4Ninguna alerta ni silenciamiento del proyecto tiene este id. Una alerta resuelta desaparece tras la retención de eventos del plan, y un silenciamiento cuando termina.

alerts list#

Listar las alertas de este proyecto, primero las abiertas.

alerts list [--state open|resolved|all] [--screen-id ID] [--before CURSOR] [--limit N]
            [--format json|csv|xlsx|pdf] [--output FILE]
ParámetroTipoRequeridoPredeterminadoNotas
--state STATEstringnoopenopen, resolved o all.
--screen-id IDstringnocada pantallaSolo las alertas de esta pantalla.
--before CURSORstringnola primera páginaEl next_cursor de la página anterior.
--limit Nintegerno100Filas por página, de 1 a 200.
--format FORMATstringnojsonjson, o csv, xlsx o pdf para escribir las alertas en un archivo en lugar de mostrarlas.
--output FILErutano./alerts.FORMATEl archivo que se escribe con --format csv, xlsx o pdf. No con json.
screenrig alerts list
screenrig alerts list --state all --screen-id scr_01EXAMPLESCREEN00000000
screenrig alerts list --state all --format csv --output alerts.csv

Cada fila es una alerta: id (alr_…), screen_id, screen_name, condition, state (open o resolved), since (cuándo empezó la condición), resolved_at una vez resuelta, acknowledged_at y acknowledged_by (kind, id y name de la persona o del agente) una vez reconocida, snoozed_until mientras está pospuesta, muted y attention. Las alertas abiertas van primero, las más recientes primero. counts contiene open y attention de todo el proyecto, sea cual sea la página y los filtros, y next_cursor es null al final.

Con --format csv, xlsx o pdf, el archivo contiene todas las alertas que cumplen los filtros, hasta 50 000 filas, y el sobre lleva su path, sus bytes y su sha256. Informes y exportaciones describe los archivos.

alerts show#

Mostrar una alerta.

alerts show <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de alerta alr_.
screenrig alerts show alr_01EXAMPLEALERT000000

El sobre es la alerta, con la forma de una fila de alerts list.

alerts ack#

Reconocer una alerta abierta: alguien se está ocupando de ella.

alerts ack <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de alerta alr_.
screenrig alerts ack alr_01EXAMPLEALERT000000

La alerta sigue abierta y no necesita atención hasta que se resuelve; acknowledged_by nombra a la persona o al agente y acknowledged_at la hora. Se omite el aviso de una notificación que aún está en su tiempo de espera. Reconocer de nuevo reemplaza el reconocimiento o aplazamiento anterior. Una alerta resuelta devuelve alert_not_open (salida 5). El sobre es la alerta, y el registro de eventos registra screen.alert_acknowledged.

alerts snooze#

Reconocer una alerta abierta hasta una hora, para que vuelva a necesitar atención entonces.

alerts snooze <id> (--for DURATION | --until TIME)
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de alerta alr_.
--for DURATIONduraciónuno de --for, --untilningunoCuánto tiempo posponer a partir de ahora: una duración como 30m, 4h o 2d, como máximo 29d23h59m.
--until TIMEstringuno de --for, --untilningunoCuándo termina el aplazamiento: un instante RFC 3339 con segundos y un desplazamiento, como 2026-11-01T09:00:00-07:00, como máximo 30 días en el futuro.
screenrig alerts snooze alr_01EXAMPLEALERT000000 --for 4h

snoozed_until es la hora en que termina el aplazamiento. Hasta entonces la alerta no necesita atención y se omite el aviso de una notificación que aún está en su tiempo de espera, igual que con alerts ack; si la alerta sigue abierta en ese momento, vuelve a necesitar atención. Una alerta resuelta devuelve alert_not_open (salida 5).

alerts mute#

Silenciar pantallas por mantenimiento.

alerts mute [--screen-id ID]... [--tag TAG]... (--for DURATION | --until TIME) [--note TEXT]
ParámetroTipoRequeridoPredeterminadoNotas
--screen-id IDstringal menos uno de --screen-id, --tagningunoUn scr_ id de pantalla. Repítalo o liste ids separados por comas; máximo 100.
--tag TAGstringal menos uno de --screen-id, --tagningunoCada pantalla que lleve esta etiqueta. Repítalo o liste etiquetas separadas por comas; máximo 16.
--for DURATIONduraciónuno de --for, --untilningunoCuánto dura el silenciamiento a partir de ahora: una duración como 30m, 4h o 2d, como máximo 29d23h59m.
--until TIMEstringuno de --for, --untilningunoCuándo termina el silenciamiento: un instante RFC 3339 con segundos y un desplazamiento, como 2026-11-01T09:00:00-07:00, como máximo 30 días en el futuro.
--note TEXTstringnoningunoPor qué las pantallas están silenciadas, para quienes ven el silenciamiento; como máximo 200 caracteres.
screenrig alerts mute --tag Lobby --for 2h --note "Rewiring the lobby displays"

El sobre es el silenciamiento: id (amt_…), screen_ids, tags, until, note, created_by y created_at. Las alertas de cada pantalla cubierta muestran muted de inmediato, incluidas las que ya estaban abiertas. Una organización tiene como máximo 50 silenciamientos vigentes en todos sus proyectos; uno más es alert_mute_limit_reached (salida 5), y un silenciamiento que terminó ya no cuenta. Tras un silenciamiento interrumpido o ambiguo, lea primero alerts mutes: repetir el mismo comando con --until dentro de 24 horas devuelve el mismo silenciamiento, mientras que repetirlo con --for cuenta desde un nuevo momento y crea otro.

alerts mutes#

Listar los silenciamientos que no han terminado, primero el que termina antes.

alerts mutes
screenrig alerts mutes

Cada fila es un silenciamiento tal como lo imprime alerts mute.

alerts unmute#

Terminar un silenciamiento ahora.

alerts unmute <mute-id>
ParámetroTipoRequeridoPredeterminadoNotas
<mute-id>stringsíningunoEl id de silenciamiento amt_.
screenrig alerts unmute amt_01EXAMPLEMUTE0000000

Las alertas abiertas de esas pantallas vuelven a necesitar atención, y los avisos posteriores ya no se omiten por estar silenciados. Un silenciamiento que terminó devuelve not_found (salida 4). El registro de eventos registra alert_mute.deleted.

Webhooks

Un webhook envía los eventos propios de este proyecto a un endpoint HTTPS que usted ejecuta como POST firmados, para que un evento coincidente pueda despertar a un agente, a un bot o a su propio servicio. Cada evento coincidente llega como el mismo objeto JSON que events list devuelve. Un webhook es una notificación en su forma original: cuenta para las 50 notificaciones de la organización, y notifications list lo muestra. El trabajo nuevo usa notifications, que también envía correo electrónico y avisos de pantalla.

Cada intento de entrega es gratuito y no cuenta para el límite por hora de solicitudes de agentes de la organización.

webhooks create --url URL --event-types TYPES [--description TEXT] [--disabled]
webhooks list
webhooks show <id>
webhooks update <id> [--url URL] [--event-types TYPES] [--description TEXT | --clear-description]
                     [--enable | --disable] [--expect-rev REVISION]
webhooks delete <id> [--expect-rev REVISION]
webhooks rotate-secret <id> [--expect-rev REVISION]
webhooks test <id>
webhooks deliveries <id> [--before CURSOR] [--limit N]

webhooks create responde webhook_limit_reached (salida 5) cuando la organización ya tiene 50 notificaciones, mientras que notifications create responde notification_limit_reached. Una URL rechazada es webhook_url_rejected (salida 8) en ambos casos.

--url toma una URL https en el puerto 443 o 8443 cuyo host resuelve solo a direcciones públicas de Internet, comprobada como en notifications create; una URL que lleva credenciales o un fragmento # se rechaza localmente con salida 2. --event-types toma de 1 a 32 tipos exactos separados por comas, como screen.online, o prefijos que terminan en .*, como screen.*. --description tiene como máximo 200 caracteres. --disabled crea el webhook deshabilitado. webhooks update --enable borra el estado de fallo y empieza en el evento actual, de modo que no se envía nada de lo ocurrido mientras estuvo deshabilitado, y --disable hace fallar las entregas pendientes con webhook_disabled. --expect-rev protege la revisión (revision_conflict, salida 6).

webhooks create y webhooks rotate-secret imprimen una sola vez el secreto de firma en data.secret con la advertencia webhook_secret_shown_once; tras una llamada interrumpida o ambigua, vuelva a ejecutar el mismo comando dentro de las 24 horas para recibir de nuevo la misma respuesta. La entrega empieza con el primer evento posterior a la creación del webhook. webhooks test pone en cola una entrega webhook.test solo para este webhook; funciona con un webhook deshabilitado, se intenta una vez sin reintentos, se mide como cualquier entrega y está limitada a 20 por minuto por organización (rate_limited, salida 7). webhooks list muestra las notificaciones webhook de este proyecto, de la más antigua a la más reciente, y una credencial de solo lectura recibe cada url vacío con url_redacted en true. webhooks deliveries lee el registro empezando por el evento más reciente, de 1 a 200 filas por página (50 por defecto), con next_cursor (whc1_…) como --before; el state de una fila es pending, succeeded o failed, con last_status y una clase last_error fija. Verifique una entrega como se describe en Verificar una entrega.

Otros grupos de comandos