Documentação

Notificações: comandos da CLI

Avise pessoas e sistemas quando uma tela muda de estado com notificações e webhooks, acompanhe o log de eventos, trate alertas e aguarde operações.

Cada comando funciona como descrito na referência da CLI: flags globais, saída JSON, códigos de saída, revisões e tentativas.

Operações

Uploads e publicações são executados como operações. media upload, media replace e app upload aguardam a sua por padrão; estes comandos servem para concluir uma que você deixou em execução com --no-wait.

operations show#

Leia o estado atual de uma operação.

operations show <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id da operação do envelope que a iniciou.
screenrig operations show op_01EXAMPLEOPERATION00000

state é receiving, queued, running, succeeded, failed ou cancelled; os três últimos encerram a operação. Uma operação bem-sucedida traz seu result, e uma que falhou traz error com o code e o detail do problema.

operations wait#

Pesquise uma operação até que ela termine.

operations wait <id> [--timeout MS] [--poll-ms MS]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id da operação.
--timeout MSintegernão120000Prazo para a espera. Também limita cada solicitação subjacente.
--poll-ms MSintegernão1000Intervalo entre pesquisas de operação enquanto aguarda.
screenrig operations wait op_01EXAMPLEOPERATION00000

A espera termina quando a operação está succeeded, failed ou cancelled. Uma operação que falhou ou foi cancelada sai com 13 e seu próprio erro. Uma espera que estoura o tempo sai com 11 e a operação continua em execução; o next do erro é operations wait ID, que retoma a espera sem iniciar a operação de novo.

operations cancel#

Peça ao plano de controle para cancelar uma operação.

operations cancel <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id da operação.
screenrig operations cancel op_01EXAMPLEOPERATION00000

Cancelar exige acesso Gerenciar. A resposta é a operação cancelada.

Eventos

O registro de eventos do projeto registra o que o projeto fez e o que a frota fez. Um lançamento publicado adiciona application.published; um app que chama screenrig.emit(code) adiciona seu próprio evento, que é a evidência mais direta de que ele foi executado em uma tela.

Presença também está no log. screen.offline é gravado uma vez que uma tela fica offline por 60 segundos, e screen.online quando ela volta; uma reconexão dentro desses 60 segundos não grava nenhum dos dois. screen.offline carrega details.offline_since e, quando a tela já esteve online antes, details.last_online_at. screen.online carrega details.last_online_at, mais details.offline_at quando a tela estava offline antes de retornar. Como todo evento screen.*, eles são gratuitos na corrente de escuta, para que um agente possa manter events follow aberto para monitorar uma frota.

As atualizações de conteúdo de um Player chegam como screen.manifest_changed, screen.manifest_activated e screen.manifest_upgrade, cujos details trazem manifest_revision, state e, quando presentes, code e attempt. Um upgrade failed tem gravidade de erro, e retrying, blocked e partial são avisos.

events list#

Leia uma página finita de eventos do projeto.

events list [--after CURSOR] [--limit N] [--type TYPE] [--source project|log] [--screen-id ID] [--playlist-id ID] [--app-id ID]
ParâmetroTipoObrigatórioPadrãoNotas
--after CURSORstringnãoa primeira páginaRetomar após o next_cursor da página anterior.
--limit Nintegernão50Tamanho da página, de 1 a 200.
--type TYPEstringnãotodo tipoUm tipo de evento, ou uma família por um prefixo terminando em ponto, como note..
--source SOURCEstringnãoprojectproject lista os eventos do projeto. log lista os registros de log do Player, que pertencem a uma tela: use-o com --screen-id.
--screen-id IDstringnãotela inteiraEventos cujo recurso é esta tela, incluindo os emitidos pelo SDK. Com --source log, os registros de log do Player dessa tela.
--playlist-id IDstringnãocada playlistEventos cujo recurso é esta playlist e eventos que a nomeiam em details.playlist_id, como uma tela que a assume. Não com --source log.
--app-id IDstringnãotodas as aplicaçõesEventos do recurso de aplicação, de suas versões e de suas entradas K/V; exclui eventos emitidos pelo SDK. Não com --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

Os métodos emit() e emitConfirmed() do SDK adicionam registros application.event cujo recurso é a tela. Leia-os com --type application.event, adicionando --screen-id opcionalmente. Os campos retornados details.primitive_id e details.code identificam a primitiva emissora e a ação nomeada. --app-id seleciona eventos do recurso de aplicação, de suas versões e de suas entradas K/V, portanto exclui esses eventos de tela.

--source log lê o log do Player: as condições que um Player informa, mantidas pela retenção de eventos do projeto. Ele não tem sequência, então não está em events follow e não é entregue a webhooks, e --playlist-id e --app-id são recusados com ele (usage_error, exit 2). Um id de tipo errado é recusado antes de qualquer requisição. data.next_cursor é null no fim do histórico.

A saída padrão é um envelope JSON para a página. Com --human, a saída é uma linha logfmt por evento: at=, type=, severity= e detalhes escalares.

events follow#

Permaneça no fluxo de eventos e imprima os eventos conforme chegam.

events follow [--after CURSOR] [--timeout MS] [--type TYPE]
ParâmetroTipoObrigatórioPadrãoNotas
--after CURSORstringnãoo final ao vivoRetomar a partir deste cursor.
--timeout MSintegernãosem prazoEncerra todo o acompanhamento, incluindo reconexão com recuo.
--type TYPEstringnãotodo tipoUm tipo de evento, ou uma família por um prefixo terminando em ponto, como note..
screenrig events follow

Uma desconexão ou falha transitória reconecta com recuo e retoma do último id de evento. A reprodução após reconexão é gratuita. Problemas de autorização e não encontrado param o comando em vez de tentar novamente.

Com --type, o fluxo continua trazendo todos os eventos e a CLI imprime apenas os que correspondem, e os quadros stream.* que descrevem o próprio fluxo são sempre impressos: screenrig events follow --type note. acompanha as notas do projeto.

A saída padrão é NDJSON: um envelope por evento em sua própria linha, em vez de um único envelope. Use --human para linhas logfmt.

Notificações

Uma notificação avisa uma pessoa, ou outro sistema, quando uma tela muda de estado. Uma notificação por e-mail envia um e-mail a cada destinatário, uma notificação de webhook envia um POST HTTPS assinado, e uma notificação do Slack, Teams, PagerDuty ou Telegram publica uma mensagem em um chat ou em um sistema de plantão. Uma organização tem no máximo 50, somando todos os canais e todos os seus projetos, e todo projeto começa com um e-mail ao proprietário quando uma tela fica 10 minutos offline.

Uma notificação observa as condições que você indicar:

CondiçãoComeça quandoTermina quando
screen_offlineO Player está offline há 60 segundos.A tela está online novamente.
display_disconnectedO Player informa que seu monitor está desconectado.O monitor se reconecta.
running_hotO dispositivo informa uma temperatura igual ou superior ao limite de temperatura alta.A temperatura volta ao normal.
on_batteryUm dispositivo com bateria informa que está funcionando na bateria, desconectado da tomada.O dispositivo informa outra fonte de energia.
storage_fullO armazenamento do Player não comporta seu conteúdo.A falta de espaço desaparece.
content_stuckA atualização de conteúdo da tela está sendo tentada novamente, falhou, está bloqueada ou parcial.A atualização passa para qualquer outro estado.
not_playingO Player mostra um erro em vez do seu conteúdo. Armazenamento cheio é storage_full.O status do Player não é mais um erro.
loop_stalledUma tela que está online, dentro do horário e com conteúdo atual não iniciou nenhuma imagem ou vídeo por mais tempo do que o ciclo dela permite.Uma imagem ou um vídeo volta a iniciar, ou o screenRIG deixa de julgar a tela.
glass_blankAs capturas que o screenRIG fez ao longo de uma série que cobre todo o ciclo eram todas de um único tom chapado.Duas capturas seguidas mostram uma imagem, ou o screenRIG deixa de julgar a tela.
glass_frozenAs capturas que o screenRIG fez ao longo de uma série que cobre todo o ciclo mostravam todas a mesma imagem.Duas capturas seguidas mostram uma imagem em movimento, ou o screenRIG deixa de julgar a tela.
crashingO Player travou ou reiniciou seu renderizador repetidamente.Nunca: cada pico é um aviso próprio.
source_failedA atualização de uma fonte de dados falhou.Uma atualização funciona.
source_staleUma fonte de dados continuou falhando até os dados expirarem.Uma atualização funciona.
card_data_staleOs dados de um cartão, gravados com uma expiração, chegaram a ela enquanto uma tela mostra o cartão e nada os renovou.Uma gravação nos dados do cartão é concluída.
reach_droppedUma campanha alcança menos telas do que quando foi publicada pela última vez, porque telas saíram de suas tags ou pastas, ou foram arquivadas ou excluídas.A campanha volta a alcançar o mesmo número de telas, ou é publicada novamente.
group_emptyUma tag ou pasta do público-alvo de uma campanha não corresponde a nenhuma tela.A tag ou pasta volta a corresponder a uma tela, ou uma publicação a remove do público-alvo.

Uma condição notifica depois de durar --hold minutos (padrão 10), para que uma reconexão rápida fique silenciosa. Se ela terminar antes, nada é enviado; se terminar depois de um aviso ter sido enviado, um aviso de resolução vem em seguida. crashing é enviado imediatamente. Um aviso também é ignorado quando alguém reconhece ou adia o alerta da tela durante o tempo de espera, ou quando um silenciamento cobre a tela. --tag limita uma notificação às telas com essa tag; sem ela, todas as telas são consideradas.

Cada aviso tem uma severidade. Um aviso aberto é error para screen_offline e warning para toda outra condição, e um aviso de resolvido ou um teste é info. --min-severity LEVEL (info, warning ou error) não cria aviso aberto abaixo desse nível, e um aviso de resolvido segue o seu aberto. --severity CONDITION=LEVEL, repetível, define o nível de uma condição para esta notificação, como --severity not_playing=error; conta para --min-severity. Teams e PagerDuty sempre mostram o nível, o texto de e-mail, Slack e Telegram o nomeia quando a notificação define --min-severity ou --severity, e o corpo de um webhook carrega severity.

--active-hours SPEC envia avisos abertos somente dentro de janelas semanais, lidas em --timezone ZONE, que ele exige. SPEC é DAYS HH:MM-HH:MM, como "Mon-Fri 08:00-22:00"; repita até 16 vezes. Com --outside-hours hold, o padrão, um aviso que vence fora do horário espera a próxima janela e é enviado então se sua condição ainda se mantiver, de modo que uma condição que termina antes não envia nada. Com drop o aviso é ignorado como outside_hours, que notifications deliveries lista. Um aviso de resolvido para um aviso aberto que foi enviado sempre é enviado, crashing segue o horário como qualquer outra condição, um adiamento é verificado primeiro, e notifications test ignora horário, severidade e público-alvo.

--audience FILE (JSON inline, um arquivo ou - para stdin) escolhe as telas com as regras de um público-alvo de campanha, como {"all":[{"tag":"level2"},{"tag":"overhead"}]} para telas com ambas as tags; --all-tags TAG e --any-tag TAG são os atalhos para uma regra all e uma regra any de tags, e --tag significa qualquer uma das tags. --tag, --any-tag, --all-tags e --audience são mutuamente excludentes.

loop_stalled, glass_blank e glass_frozen são veredictos que o screenRIG tira dos relatórios de reprodução e das capturas de tela que recebe, e deixam de fora o que não conseguem julgar: uma tela offline, com o display desligado, sob takeover ou suspensa, que mostra uma única imagem estática ou um video wall, ou cujo Player não envia números de reprodução. Quando o screenRIG deixa de julgar uma tela que havia encontrado em um deles, o alerta se fecha, mas e-mail, Slack, Teams e Telegram não enviam aviso de resolução, pois nada mostrou a tela se recuperando; o PagerDuty ainda resolve o incidente.

source_failed e source_stale acompanham as fontes de dados do projeto, não as telas: um aviso nomeia a fonte e liga à página dela, e --tag nunca corresponde a uma fonte.

card_data_stale vigia um cartão, não uma tela. Grave os dados de um cartão com uma expiração dimensionada pelo horário de quem os grava (card data put --ttl 30m), e quando o job ou agente que os renova para, os dados expiram, o cartão fica em branco em toda tela que o mostra, e esta condição avisa você. O aviso nomeia o cartão e quando os dados dele expiraram, e liga ao editor de páginas em uma página que o coloca. Os documentos de uma fonte de dados nunca são anunciados aqui (source_stale os cobre), nem um cartão que nenhuma tela mostra, dados gravados sem expiração ou dados excluídos. --tag nunca corresponde a um cartão.

reach_dropped e group_empty observam uma campanha, não uma tela. O aviso nomeia a campanha e as telas que ela alcançava antes e alcança agora, ou a tag ou pasta vazia, e traz um link para o calendário da campanha. Uma campanha pertence ao projeto, portanto --tag, --any-tag, --all-tags e --audience nunca limitam esses dois; --min-severity, --severity, --active-hours e --hold se aplicam como em qualquer condição, e ambos são warning por padrão. --reach-drop-screens N e --reach-drop-percent P enviam um aviso reach_dropped somente para uma queda de pelo menos N telas e de pelo menos P por cento das telas que a campanha alcançava quando foi publicada; uma queda precisa atender aos dois critérios, e sem eles qualquer queda gera aviso. Eles exigem reach_dropped em --conditions. Cada tag ou pasta vazia de uma campanha é um aviso próprio, e notifications deliveries o mostra como audience_group (tag:Lobby ou folder:sfd_…). Uma publicação que remove um grupo vazio do público-alvo encerra um incidente do PagerDuty e o alerta de um webhook, mas não envia e-mail nem mensagem de chat de recuperação.

O e-mail vai para o endereço verificado de cada destinatário, um e-mail por destinatário para tudo o que deve ser enviado dentro de cerca de dois minutos, com um link para cada tela e para a notificação no dashboard. Os destinatários são owner, quem for o proprietário do projeto quando o aviso é enviado, e os ids de usuário dos membros do projeto. Um destinatário sem endereço verificado, ou que saiu do projeto, é ignorado. Os e-mails de notificação e os avisos de tela são gratuitos.

Cada e-mail traz um link de cancelamento de inscrição para o próprio destinatário: o botão de cancelar inscrição dos apps de e-mail e um link no rodapé. Segui-lo interrompe os e-mails dessa notificação para essa única pessoa, sem fazer login, e a página aberta tem um botão Resubscribe. Os outros destinatários não são afetados, e a pessoa continua entre os destinatários. notifications show lista quem cancelou com unsubscribed, e notifications resubscribe volta a enviar e-mails para ela. Um aviso sem ninguém para receber o e-mail é ignorado como no_recipients.

Uma notificação por webhook envia cada aviso por POST, como JSON, e você o verifica conforme descrito em Verificar uma entrega. Com --events, ela também envia por POST eventos brutos do projeto à medida que acontecem; essas entregas são medidas conforme descrito em Webhooks.

Uma notificação do Slack, Teams, PagerDuty ou Telegram publica uma mensagem por queda e por tela, ou por grupo de telas: a tela, o que mudou, desde quando, o projeto, um link para a tela e, quando uma tela offline volta, a causa provável se já for conhecida. Uma mensagem de recuperação vem depois que a primeira foi enviada e, no PagerDuty, resolve o incidente que a primeira abriu. Você informa a credencial uma única vez (--slack recebe a URL de um webhook de entrada, --teams a URL de um webhook do Workflows, --pagerduty uma chave de roteamento da API Events v2, --telegram um token de bot com --telegram-chat); ela é selada, nunca é mostrada de novo, e destination_hint mostra só o final mascarado. Um - a lê de uma linha do stdin para que fique fora do histórico do seu shell. Uma publicação com falha é repetida por 24 horas, e uma notificação que falha por 72 horas é desativada.

Quando três ou mais telas entram na mesma condição com menos de cinco minutos de diferença e compartilham rede, localização, modelo, versão do Player ou tag, uma notificação por e-mail, Slack, Teams, PagerDuty ou Telegram envia um único aviso para elas em vez de um por tela, e um único aviso diz o grupo quando a última tela se recupera; o aviso de cada outra tela é ignorado como grouped. Um webhook continua enviando um aviso por tela.

Ler notificações e suas entregas exige o acesso Somente leitura; criar, alterar, testar e excluir uma, girar o segredo dela e reinscrever uma pessoa exigem o acesso Gerenciar.

Código do problemaSairSignificado
webhook_url_rejected8A URL não é https na porta 443 ou 8443, ou seu host não resolve apenas para endereços públicos da Internet. error.detail carrega o motivo do servidor. Nada foi criado ou alterado.
notification_destination_rejected8O destino não serve ao seu canal, ou é a URL de um conector do Office 365 descontinuado. error.detail informa a forma que serve. Nada foi criado nem alterado.
notification_limit_reached5A organização já tem 50 notificações. Exclua uma primeiro.
revision_conflict6A revisão --expect-rev estava desatualizada. Execute notifications show e tente novamente.
rate_limited7Mais de 20 chamadas notifications test em um minuto para esta organização.
invalid_request8Um destinatário de --email que não é membro do projeto, ou uma opção que pertence a outro canal, como --url em uma notificação por e-mail. Nada foi criado ou alterado.

notifications create#

Cria uma notificação por e-mail, webhook, Slack, Teams, PagerDuty ou 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âmetroTipoObrigatórioPadrãoNotas
--email RECIPIENTSstringum flag de canalnenhumEnviar e-mail para estes destinatários separados por vírgula: owner, ou o id de usuário de um membro do projeto, no máximo 20.
--webhook URLstringum flag de canalnenhumUma URL https na porta 443 (padrão) ou 8443 cujo host resolve apenas para endereços públicos da Internet. O servidor verifica a cada gravação e novamente antes de cada entrega. Uma URL que carrega credenciais (user:pass@ ou token@) ou um fragmento # é recusada localmente com saída 2.
--conditions LISTstringsim, exceto em um webhooknenhumCondições separadas por vírgula, da tabela acima. Um webhook precisa disto, de --events ou de ambos.
--slack URLstringum flag de canalnenhumPublica no Slack com a URL de um webhook de entrada em hooks.slack.com, ou - para lê-la de uma linha do stdin.
--teams URLstringum flag de canalnenhumPublica no Teams com a URL de um webhook do Workflows (o gatilho “Quando uma solicitação de webhook do Teams é recebida”), ou - para o stdin. URLs de conectores do Office 365 foram descontinuadas e são recusadas.
--pagerduty KEYstringum flag de canalnenhumAciona e resolve incidentes do PagerDuty com uma chave de roteamento da API Events v2 de 32 caracteres, ou - para stdin.
--telegram TOKENstringum flag de canalnenhumPublica no Telegram com um token de bot, ou - para o stdin. Exige --telegram-chat.
--telegram-chat CHAT_IDstringcom --telegramnenhumO chat onde publicar: seu id numérico, como -1001234567890, ou @channelname.
--events TYPESstringnãonenhumSomente webhook. Enviar também por POST estes eventos brutos do projeto: de 1 a 32 tipos exatos separados por vírgula, como screen.online, ou prefixos terminando em .*, como screen.*.
--tag TAGstringnãotela inteiraSomente telas com alguma destas tags. Repita a flag ou separe por vírgula, até 16 tags.
--hold MINUTESintegernão10Por quanto tempo uma condição deve durar antes de notificar, de 0 a 1440. crashing nunca espera.
--all-tags TAGstringnãonenhumApenas telas com todas as tags listadas. Repita a flag ou separe por vírgulas.
--any-tag TAGstringnãonenhumApenas telas com pelo menos uma das tags listadas, como --tag. Repita a flag ou separe por vírgulas.
--audience FILEstringnãotela inteiraAs telas como regra de público-alvo de campanha em JSON: inline, um arquivo ou - para stdin. Não com as opções de tag.
--min-severity LEVELstringnãonenhuminfo, warning ou error: avisos abertos abaixo dele não são enviados.
--severity CONDITION=LEVELstringnãoos padrõesDefine a severidade de uma condição para esta notificação. Repita a flag.
--active-hours SPECstringnãosempreEnviar avisos abertos somente dentro desta janela semanal, DAYS HH:MM-HH:MM como "Mon-Fri 08:00-22:00". Repita até 16 vezes. Requer --timezone.
--timezone ZONEstringcom --active-hoursnenhumA zona IANA em que o horário é lido, como America/Los_Angeles.
--outside-hours MODEstringnãoholdhold espera a próxima janela; drop ignora o aviso.
--reach-drop-screens Nintegernãoqualquer quedaSomente com reach_dropped: envia um aviso apenas quando a campanha perdeu pelo menos N telas (1 ou mais).
--reach-drop-percent Pintegernãoqualquer quedaSomente com reach_dropped: exige também uma perda de pelo menos P por cento (1 a 100) das telas que a campanha alcançava quando foi publicada.
--description TEXTstringnãonenhumNo máximo 200 caracteres.
--disabledbooleannãodesligadoCriar desativada. Nada é enviado até 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

O envelope é a notificação. O de um webhook carrega seu segredo de assinatura em data.secret (whsec_…) com a advertência webhook_secret_shown_once. Armazene o segredo imediatamente na loja de segredos do receptor. Somente notifications rotate-secret o retorna novamente, e o CLI nunca o grava em sua configuração, log de operação ou estado de recuperação de gravação. Após uma criação interrompida ou ambígua, execute novamente o comando idêntico dentro de 24 horas: ele reutiliza a chave de idempotência salva, e o servidor retorna a mesma resposta, segredo incluído. Os avisos começam com o primeiro evento após a criação da notificação.

notifications list#

Listar as notificações deste projeto, nunca seus segredos.

notifications list
screenrig notifications list

Cada linha é uma notificação de qualquer canal, da mais antiga para a mais recente, com o seu status. Uma notificação do Slack, Teams, PagerDuty ou Telegram mostra destination_hint, a credencial mascarada até o host e os últimos caracteres, na coluna TO de --human. Abaixo do acesso Gerenciar, a url de um webhook fica vazia e url_redacted é verdadeiro, e TO mostra (withheld).

notifications show#

Inspecionar uma notificação e sua saúde de entrega.

notifications show <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id de notificação ntf_ (qualquer canal exceto webhook) ou whk_ (webhook).
screenrig notifications show ntf_01EXAMPLENOTICE00000

status é active, failing enquanto nenhuma entrega teve sucesso desde failing_since, ou disabled. Após 72 horas de falha contínua, a notificação é desativada com disabled_reason: delivery_failures, e o registro de eventos grava notification.disabled. snoozed_until está presente enquanto um silenciamento estiver definido. last_success_at e last_failure_at relatam os resultados mais recentes. revision é o valor que --expect-rev protege. min_severity, severity, active_hours com outside, audience e reach_drop aparecem enquanto estiverem definidos, e uma notificação por e-mail lista unsubscribed.

notifications update#

Altera os destinatários, a URL, o destino, as condições, as telas, a espera, a pausa ou o estado de ativação de uma notificação.

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âmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id de notificação ntf_ (qualquer canal exceto webhook) ou whk_ (webhook).
--email RECIPIENTSstringpelo menos uma alteraçãoinalteradoNotificações por e-mail: substitui os destinatários.
--url URLstringpelo menos uma alteraçãoinalteradoNotificações por webhook: substitui a URL, verificada como em create.
--destination VALUEstringpelo menos uma alteraçãoinalteradoNotificações do Slack, Teams, PagerDuty e Telegram: substitui a credencial, verificada como em create. - a lê de uma linha do stdin.
--telegram-chat CHAT_IDstringpelo menos uma alteraçãoinalteradoNotificações do Telegram: substitui o chat.
--conditions LISTstringpelo menos uma alteraçãoinalteradoSubstitui as condições.
--clear-conditionsbooleanpelo menos uma alteraçãodesligadoRemover todas as condições. Um webhook então precisa de --events.
--events TYPESstringpelo menos uma alteraçãoinalteradoNotificações por webhook: substitui os eventos brutos do projeto.
--clear-eventsbooleanpelo menos uma alteraçãodesligadoNotificações por webhook: deixam de enviar por POST os eventos brutos do projeto. Elas então precisam de condições.
--tag TAGstringpelo menos uma alteraçãoinalteradoSubstitui as tags de tela e o público-alvo, se a notificação tiver um.
--all-screensbooleanpelo menos uma alteraçãodesligadoRemover as tags de tela e o público-alvo; a notificação cobre todas as telas.
--hold MINUTESintegerpelo menos uma alteraçãoinalterado0 a 1440.
--all-tags TAGstringpelo menos uma alteraçãoinalteradoSubstitui as telas por aquelas com todas as tags listadas.
--any-tag TAGstringpelo menos uma alteraçãoinalteradoSubstitui as telas por aquelas com pelo menos uma das tags listadas, como --tag.
--audience FILEstringpelo menos uma alteraçãoinalteradoSubstitui as telas por uma regra de público-alvo de campanha em JSON: inline, um arquivo ou - para stdin.
--min-severity LEVELstringpelo menos uma alteraçãoinalteradoinfo, warning ou error.
--clear-min-severitybooleanpelo menos uma alteraçãodesligadoRemover o filtro de severidade.
--severity CONDITION=LEVELstringpelo menos uma alteraçãoinalteradoSubstitui as sobrescritas de severidade por estas. Repita a flag.
--clear-severitybooleanpelo menos uma alteraçãodesligadoRemover toda sobrescrita de severidade.
--active-hours SPECstringpelo menos uma alteraçãoinalteradoSubstitui as janelas por estas. Repita até 16 vezes. --timezone usa por padrão o fuso que a notificação já tem.
--timezone ZONEstringpelo menos uma alteraçãoinalteradoA zona IANA em que o horário é lido. Sozinha, mantém as janelas atuais.
--outside-hours MODEstringpelo menos uma alteraçãoinalteradohold ou drop. Sozinho, mantém as janelas atuais.
--clear-active-hoursbooleanpelo menos uma alteraçãodesligadoRemover o horário ativo. Os avisos que estavam retidos por ele são julgados de novo na hora.
--reach-drop-screens Nintegerpelo menos uma alteraçãoinalteradoSubstitui o menor número de telas que um aviso reach_dropped exige que a campanha tenha perdido.
--reach-drop-percent Pintegerpelo menos uma alteraçãoinalteradoSubstitui a menor porcentagem de seu alcance publicado que a campanha deve ter perdido.
--clear-reach-dropbooleanpelo menos uma alteraçãodesligadoRemove o limite, de modo que qualquer queda notifica. Retire reach_dropped de --conditions somente junto com ele.
--description TEXTstringpelo menos uma alteraçãoinalteradoNo máximo 200 caracteres.
--clear-descriptionbooleanpelo menos uma alteraçãodesligadoRemover a descrição.
--enablebooleanpelo menos uma alteraçãodesligadoLimpa o estado de falha e começa no evento que registra a mudança; nada do período em que estava desativada é enviado.
--disablebooleanpelo menos uma alteraçãodesligadoInterrompe os avisos; os avisos pendentes falham com webhook_disabled.
--snooze WHENstringpelo menos uma alteraçãoinalteradoNão enviar nada até lá: uma duração como 30m, 1h ou 2d (menos de 30 dias), um instante RFC 3339 com segundos e um deslocamento, ou off para encerrar o silenciamento. Os avisos que devem ser enviados nesse intervalo são ignorados, não enviados depois.
--expect-rev REVISIONstringnãonenhumPré-condição opcional de revisão.
screenrig notifications update ntf_01EXAMPLENOTICE00000 --snooze 2h

update altera apenas os campos que você passar. O canal nunca muda: --email vale para uma notificação por e-mail, --url e --events para um webhook, e --destination e --telegram-chat para uma de chat ou pager, e uma opção de outro canal é invalid_request (saída 8). Informe no máximo uma entre --email, --url e --destination. As tags de tela e um público-alvo se excluem: definir um limpa o outro. Uma notificação por e-mail mantém pelo menos uma condição, e um webhook mantém condições ou eventos. O segredo de assinatura permanece inalterado; use notifications rotate-secret.

notifications delete#

Excluir uma notificação. Seus avisos pendentes falham com webhook_deleted.

notifications delete <id> [--expect-rev REVISION]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id de notificação ntf_ (qualquer canal exceto webhook) ou whk_ (webhook).
--expect-rev REVISIONstringnãonenhumPré-condição opcional de revisão.
screenrig notifications delete ntf_01EXAMPLENOTICE00000

Seu registro de entregas não pode ser lido depois; suas linhas expiram com a retenção de eventos.

notifications rotate-secret#

Substitui o segredo de assinatura de uma notificação de webhook e entrega o novo uma única vez. Qualquer outro canal não tem segredo e responde invalid_request (saída 8).

notifications rotate-secret <id> [--expect-rev REVISION]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id de notificação ntf_ (qualquer canal exceto webhook) ou whk_ (webhook).
--expect-rev REVISIONstringnãonenhumPré-condição opcional de revisão.
screenrig notifications rotate-secret whk_01EXAMPLEWEBHOOK00000

O envelope carrega o novo segredo em data.secret com o aviso webhook_secret_shown_once; armazene-o imediatamente. O segredo anterior para de assinar, mas no máximo uma tentativa já em andamento ainda pode chegar assinada com ele, então aceite ambos por um curto período. Após uma rotação interrompida ou ambígua, execute novamente o comando idêntico dentro de 24 horas para recuperar o mesmo segredo.

notifications test#

Envia um e-mail de teste, um POST de teste assinado ou uma mensagem de chat somente a esta notificação.

notifications test <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id de notificação ntf_ (qualquer canal exceto webhook) ou whk_ (webhook).
screenrig notifications test ntf_01EXAMPLENOTICE00000

O envelope é a entrega enfileirada. Ela é tentada uma vez, sem novas tentativas, funciona em uma notificação desativada ou silenciada e nunca altera o estado de falha da notificação. No máximo 20 entregas de teste por minuto por organização; mais que isso é rate_limited (saída 7). Leia o resultado com notifications deliveries.

Um teste do PagerDuty dispara um evento informativo com a chave screenrig:test:DELIVERY_ID e o resolve na hora, então nenhum incidente fica aberto.

notifications resubscribe#

Volta a enviar e-mails de uma notificação a uma pessoa que cancelou o recebimento.

notifications resubscribe <id> --user USER_ID
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id ntf_ de uma notificação por e-mail.
--user USER_IDstringsimnenhumO id de usuário da pessoa, como notifications show o lista em unsubscribed.
screenrig notifications resubscribe ntf_01EXAMPLENOTICE00000 --user usr_01EXAMPLEPERSON0000

O envelope é a notificação. Uma pessoa que não cancelou o recebimento não altera nada. Reinscrever uma pessoa aumenta a revisão e adiciona notification.updated. Uma notificação de outro canal ou projeto é not_found (saída 4).

notifications deliveries#

Ler o log de entrega de uma notificação, mais recente primeiro.

notifications deliveries <id> [--before CURSOR] [--limit N]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id de notificação ntf_ (qualquer canal exceto webhook) ou whk_ (webhook).
--before CURSORstringnãoo evento mais recenteO next_cursor (whc1_… ou whc2_…) da página anterior.
--limit Nintegernão50Linhas por página, de 1 a 200.
screenrig notifications deliveries ntf_01EXAMPLENOTICE00000 --limit 20

Cada linha é um evento, ou um aviso de uma condição em uma tela: event_type, state (pending, succeeded, failed ou skipped), attempts, last_status e uma classe last_error fixa como http_status, timeout, connection_failed, tls_failed, dns_failed, url_rejected, email_failed, email_rejected ou secret_unavailable. Um aviso de tela acrescenta condition, phase (opened ou resolved), screen_id, screen_name (para uma fonte de dados, uma campanha ou um cartão, o id e o nome dele) e since, e um aviso por e-mail acrescenta emailed, o número de pessoas alcançadas. Um aviso que não precisou ser enviado é skipped, com o motivo em last_error: condition_cleared (a tela saiu do estado antes do fim da espera), not_opened (nenhum aviso foi enviado para resolver), snoozed (a notificação está silenciada), acknowledged (alguém reconheceu ou adiou o alerta da tela durante a espera), muted (um silenciamento cobre a tela), outside_hours (o horário ativo da notificação estava fechado e ela descarta avisos fora dele), below_severity (o aviso está abaixo de min_severity, que foi aumentado depois de entrar na fila), planned_reboot (a tela ficou offline, desconectou o monitor ou travou enquanto reiniciava por uma reinicialização enviada pelo screenRIG, até ela terminar ou dez minutos após o envio), no_recipients (nenhum destinatário é membro do projeto com endereço verificado e sem ter cancelado a inscrição), grouped (a tela entrou na condição junto com outras, e um aviso em outra linha diz todas), ou no_longer_judged (uma condição loop_stalled, glass_blank ou glass_frozen terminou porque o screenRIG deixou de avaliar a tela, uma reach_dropped porque a campanha foi publicada de novo ou excluída, uma group_empty porque uma publicação removeu a tag ou a pasta do público dela, ou uma card_data_stale porque os dados do cartão foram excluídos, então nenhuma recuperação foi informada). O aviso que disse um grupo de telas traz group (id, attribute, value e count), e cada outra tela do grupo traz group_id; --human mostra ambos em uma coluna GROUP. As linhas nunca incluem a resposta do receptor. next_cursor é null no fim do registro. Uma tentativa com falha é repetida com espera crescente, de 30 segundos dobrando até uma hora, por 24 horas, e depois a linha fica failed.

Verificar uma entrega

O corpo de um aviso de tela é JSON: type (alert.opened ou alert.resolved), id (o id da entrega), notification_id, project_id, condition, screen (id e name), since (quando a condição começou), at (quando durou o suficiente, ou terminou), event_id e severity (info, warning ou error: o nível da condição em alert.opened, info em alert.resolved). alert.resolved para screen_offline também traz likely_cause (device_restart, app_crash, app_restart, network ou platform), null enquanto a causa é desconhecida. Para uma fonte de dados, uma campanha ou um cartão, screen o nomeia, e um aviso de campanha acrescenta reach (published e current telas) para reach_dropped ou audience_group (kind tag ou folder e value) para group_empty. Um evento bruto de --events é o mesmo objeto JSON que events list retorna. Os cabeçalhos são ScreenRig-Webhook-Id (o id da notificação), ScreenRig-Event-Id (estável entre as tentativas: o id da entrega para um aviso, o cursor do evento para um evento) e ScreenRig-Signature: t=<unix seconds>,v1=<hex>, onde v1 é HMAC-SHA256 sobre "<t>.<raw body>" usando a string secreta como chave. Calcule-o sobre os bytes brutos antes de analisar o JSON, compare em tempo constante, rejeite um t antigo e deduplique por ScreenRig-Event-Id, porque a entrega é pelo menos uma vez e fora de ordem. Responda 2xx em até 10 segundos; redirecionamentos não são seguidos.

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

Um alerta é um problema em uma tela enquanto ele durar. Ele abre quando uma tela entra em uma das condições de notificação de tela (screen_offline, display_disconnected, running_hot, on_battery, storage_full, content_stuck, not_playing, loop_stalled, glass_blank ou glass_frozen), quer uma notificação a monitore ou não, e é resolvido quando a condição termina. Uma tela tem no máximo um alerta aberto por condição. Um pico de travamentos, uma fonte de dados, um cartão e uma campanha são avisos, nunca alertas. Uma tela que reinicia por uma reinicialização enviada pelo screenRIG (screen reboot ou um agendamento de reinicialização) não abre alerta screen_offline nem display_disconnected até que a reinicialização termine ou dez minutos após o envio; uma condição que ainda persiste então abre o seu alerta. alerts list mostra o que está aberto agora.

Um alerta aberto precisa de atenção até alguém reconhecê-lo ou adiá-lo, ou até um silenciamento cobrir a tela dele. Reconhecer significa que alguém está cuidando: o alerta continua aberto, registra quem o reconheceu e quando, e não precisa de atenção até ser resolvido. Adiar reconhece até um horário no máximo 30 dias à frente, e o alerta volta a precisar de atenção nesse horário se ainda estiver aberto. Um reconhecimento ou adiamento posterior substitui o anterior. Enquanto um alerta está reconhecido ou adiado, o aviso de uma notificação sobre ele que ainda está em tempo de espera é ignorado.

Um silenciamento serve para manutenção: ele nomeia telas, tags ou ambos e termina em um momento no máximo 30 dias à frente. Ele cobre uma tela enquanto o id da tela estiver na lista ou ela tiver uma tag da lista, então uma tela marcada depois fica coberta e uma que perde a tag deixa de ser coberta. Os alertas de uma tela silenciada continuam abrindo e resolvendo, marcados muted, mas nunca precisam de atenção, e toda notificação ignora os avisos deles. Uma organização tem no máximo 50 silenciamentos vigentes em todos os seus projetos.

counts.attention em alerts list é o número que o painel mostra ao lado de Alertas. Abrir, resolver e reconhecer um alerta adiciona screen.alert_opened, screen.alert_resolved e screen.alert_acknowledged ao registro de eventos do projeto, e criar e encerrar um silenciamento adiciona alert_mute.created e alert_mute.deleted. Eles são gratuitos no stream de escuta e nos webhooks, como todo evento screen.*. Os alertas resolvidos continuam listados pelo período de retenção de eventos do plano. Ler alertas e silenciamentos exige o acesso Somente leitura; reconhecer, adiar, silenciar e remover o silenciamento exigem o acesso Gerenciar.

Código do problemaSairSignificado
alert_not_open5O alerta já foi resolvido, então não há nada para reconhecer ou adiar. Execute alerts list e use um aberto.
alert_mute_limit_reached5A organização já tem 50 silenciamentos vigentes. Encerre um com alerts unmute, ou cubra mais telas com um único silenciamento por tag.
invalid_request8O instante --until está a mais de 30 dias no futuro. Nada foi alterado.
not_found4Nenhum alerta nem silenciamento do projeto tem este id. Um alerta resolvido some após a retenção de eventos do plano, e um silenciamento assim que termina.

alerts list#

Listar os alertas deste projeto, os abertos primeiro.

alerts list [--state open|resolved|all] [--screen-id ID] [--before CURSOR] [--limit N]
            [--format json|csv|xlsx|pdf] [--output FILE]
ParâmetroTipoObrigatórioPadrãoNotas
--state STATEstringnãoopenopen, resolved ou all.
--screen-id IDstringnãotela inteiraSomente os alertas desta tela.
--before CURSORstringnãoa primeira páginaO next_cursor da página anterior.
--limit Nintegernão100Linhas por página, de 1 a 200.
--format FORMATstringnãojsonjson, ou csv, xlsx ou pdf para gravar os alertas em um arquivo em vez de exibi-los.
--output FILEcaminhonão./alerts.FORMATO arquivo a gravar com --format csv, xlsx ou pdf. Não com json.
screenrig alerts list
screenrig alerts list --state all --screen-id scr_01EXAMPLESCREEN00000000
screenrig alerts list --state all --format csv --output alerts.csv

Cada linha é um alerta: id (alr_…), screen_id, screen_name, condition, state (open ou resolved), since (quando a condição começou), resolved_at depois de resolvido, acknowledged_at e acknowledged_by (kind, id e name da pessoa ou do agente) depois de reconhecido, snoozed_until enquanto adiado, muted e attention. Os alertas abertos vêm primeiro, os mais recentes primeiro. counts traz open e attention do projeto inteiro, seja qual for a página e os filtros, e next_cursor é null no final.

Com --format csv, xlsx ou pdf, o arquivo contém todos os alertas que os filtros selecionam, até 50.000 linhas, e o envelope traz o path, os bytes e o sha256 dele. Relatórios e exportações descreve os arquivos.

alerts show#

Mostrar um alerta.

alerts show <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do alerta alr_.
screenrig alerts show alr_01EXAMPLEALERT000000

O envelope é o alerta, no formato de uma linha de alerts list.

alerts ack#

Reconhecer um alerta aberto: alguém está cuidando dele.

alerts ack <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do alerta alr_.
screenrig alerts ack alr_01EXAMPLEALERT000000

O alerta continua aberto e não precisa de atenção até ser resolvido; acknowledged_by nomeia a pessoa ou o agente e acknowledged_at o horário. O aviso de uma notificação ainda em tempo de espera é ignorado. Reconhecer de novo substitui o reconhecimento ou adiamento anterior. Um alerta resolvido retorna alert_not_open (saída 5). O envelope é o alerta, e o registro de eventos grava screen.alert_acknowledged.

alerts snooze#

Reconhecer um alerta aberto até um horário, para que ele volte a precisar de atenção nesse momento.

alerts snooze <id> (--for DURATION | --until TIME)
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do alerta alr_.
--for DURATIONduraçãoum de --for ou --untilnenhumPor quanto tempo adiar a partir de agora: uma duração como 30m, 4h ou 2d, no máximo 29d23h59m.
--until TIMEstringum de --for ou --untilnenhumQuando o adiamento termina: um instante RFC 3339 com segundos e um deslocamento, como 2026-11-01T09:00:00-07:00, no máximo 30 dias à frente.
screenrig alerts snooze alr_01EXAMPLEALERT000000 --for 4h

snoozed_until é o horário em que o adiamento termina. Até lá, o alerta não precisa de atenção e o aviso de uma notificação ainda em tempo de espera é ignorado, como em alerts ack; se o alerta ainda estiver aberto nesse horário, ele volta a precisar de atenção. Um alerta resolvido retorna alert_not_open (saída 5).

alerts mute#

Silenciar telas para manutenção.

alerts mute [--screen-id ID]... [--tag TAG]... (--for DURATION | --until TIME) [--note TEXT]
ParâmetroTipoObrigatórioPadrãoNotas
--screen-id IDstringpelo menos um de --screen-id, --tagnenhumUm scr_ id de tela. Repita-o, ou liste ids separados por vírgula; no máximo 100.
--tag TAGstringpelo menos um de --screen-id, --tagnenhumCada tela com esta tag. Repita, ou liste tags separadas por vírgula; no máximo 16.
--for DURATIONduraçãoum de --for ou --untilnenhumPor quanto tempo o silenciamento dura a partir de agora: uma duração como 30m, 4h ou 2d, no máximo 29d23h59m.
--until TIMEstringum de --for ou --untilnenhumQuando o silenciamento termina: um instante RFC 3339 com segundos e um deslocamento, como 2026-11-01T09:00:00-07:00, no máximo 30 dias à frente.
--note TEXTstringnãonenhumPor que as telas estão silenciadas, para as pessoas que veem o silenciamento; no máximo 200 caracteres.
screenrig alerts mute --tag Lobby --for 2h --note "Rewiring the lobby displays"

O envelope é o silenciamento: id (amt_…), screen_ids, tags, until, note, created_by e created_at. Os alertas de cada tela coberta passam a indicar muted imediatamente, inclusive os que já estavam abertos. Uma organização tem no máximo 50 silenciamentos vigentes em todos os seus projetos; mais um é alert_mute_limit_reached (saída 5), e um silenciamento que terminou não conta mais. Depois de um silenciamento interrompido ou ambíguo, leia alerts mutes primeiro: repetir o mesmo comando com --until em até 24 horas retorna o mesmo silenciamento, enquanto repetir com --for conta a partir de um novo momento e cria outro.

alerts mutes#

Listar os silenciamentos que não terminaram, o que termina primeiro vem antes.

alerts mutes
screenrig alerts mutes

Cada linha é um silenciamento como alerts mute o imprime.

alerts unmute#

Encerrar um silenciamento agora.

alerts unmute <mute-id>
ParâmetroTipoObrigatórioPadrãoNotas
<mute-id>stringsimnenhumO id do silenciamento amt_.
screenrig alerts unmute amt_01EXAMPLEMUTE0000000

Os alertas abertos dessas telas voltam a precisar de atenção, e os avisos seguintes não são mais ignorados por silenciamento. Um silenciamento que terminou retorna not_found (saída 4). O registro de eventos grava alert_mute.deleted.

Webhooks

Um webhook envia os próprios eventos deste projeto, como POSTs assinados, para um endpoint HTTPS que você executa, para que um evento correspondente possa acordar um agente, um bot ou seu próprio serviço. Cada evento correspondente chega como o mesmo objeto JSON que events list retorna. Um webhook é uma notificação em sua forma original: conta para o limite de 50 notificações da organização, e notifications list o mostra. Os trabalhos novos usam notifications, que também envia e-mail e avisos de tela.

Cada tentativa de entrega é gratuita e não conta no limite por hora de solicitações de agente da organização.

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 (saída 5) quando a organização já tem 50 notificações, enquanto notifications create responde notification_limit_reached. Uma URL recusada é webhook_url_rejected (saída 8) nos dois casos.

--url aceita uma URL https na porta 443 ou 8443 cujo host resolve apenas para endereços públicos da Internet, verificada como em notifications create; uma URL que traga credenciais ou um fragmento # é recusada localmente com saída 2. --event-types aceita de 1 a 32 tipos exatos separados por vírgula, como screen.online, ou prefixos terminados em .*, como screen.*. --description tem no máximo 200 caracteres. --disabled cria o webhook desativado. webhooks update --enable limpa o estado de falha e começa no evento atual, então nada do que aconteceu enquanto ele esteve desativado é enviado, e --disable faz as entregas pendentes falharem com webhook_disabled. --expect-rev protege a revisão (revision_conflict, saída 6).

webhooks create e webhooks rotate-secret imprimem o segredo de assinatura uma só vez em data.secret com o aviso webhook_secret_shown_once; após uma chamada interrompida ou ambígua, execute novamente o mesmo comando em até 24 horas para receber a mesma resposta de volta. A entrega começa com o primeiro evento depois que o webhook é criado. webhooks test enfileira uma entrega webhook.test apenas para este webhook; funciona em um webhook desativado, é tentada uma vez sem novas tentativas, é medida como qualquer entrega e é limitada a 20 por minuto por organização (rate_limited, saída 7). webhooks list mostra as notificações webhook deste projeto, da mais antiga para a mais recente, e uma credencial somente leitura recebe cada url vazio com url_redacted true. webhooks deliveries lê o registro começando pelo evento mais recente, de 1 a 200 linhas por página (padrão 50), com next_cursor (whc1_…) como --before; o state de uma linha é pending, succeeded ou failed, com last_status e uma classe last_error fixa. Verifique uma entrega como descrito em Verificar uma entrega.

Outros grupos de comandos