ドキュメント

通知 CLI コマンド

スクリーンの状態が変わったら通知と webhook で人やシステムに知らせ、イベントログの追跡、アラートの処理、操作の完了待ちを行います。

ここにあるコマンドはすべて CLI リファレンスの説明どおりに動作します。グローバルフラグ、JSON 出力、終了コード、リビジョン、再試行。

操作

アップロードと公開は操作として実行されます。media upload、media replace、app uploadはデフォルトで自分の操作を待ちます。これらのコマンドは、--no-waitで実行したままにした操作を完了させるために使います。

operations show#

1件のオペレーションの現在の状態を読み込みます。

operations show <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなしそれを開始したエンベロープの操作ID。
screenrig operations show op_01EXAMPLEOPERATION00000

stateはreceiving、queued、running、succeeded、failed、cancelledのいずれかで、最後の3つが操作の終了を表します。成功した操作にはresultが含まれ、失敗した操作には問題のcodeとdetailを持つerrorが含まれます。

operations wait#

操作が完了するまでポーリングします。

operations wait <id> [--timeout MS] [--poll-ms MS]
パラメータータイプ必須デフォルトメモ
<id>stringはいなし操作ID。
--timeout MSintegerいいえ120000待機の期限です。各基底リクエストの制限にもなります。
--poll-ms MSintegerいいえ1000待機中の操作ポーリングの間隔。
screenrig operations wait op_01EXAMPLEOPERATION00000

待機は、操作がsucceeded、failed、cancelledのいずれかになると終了します。失敗またはキャンセルされた操作は、その操作自身のエラーとともに終了コード13で終わります。時間切れになった待機は終了コード11で終わり、操作は実行を続けます。エラーのnextはoperations wait IDで、操作を再起動せずに待機を再開します。

operations cancel#

コントロールプレーンに操作のキャンセルを依頼

operations cancel <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなし操作ID。
screenrig operations cancel op_01EXAMPLEOPERATION00000

キャンセルにはManageアクセスが必要です。応答はキャンセルされた操作です。

イベント

プロジェクトのイベントログはプロジェクトとフリートの動作を記録します。公開されたリリースはapplication.publishedを追加し、screenrig.emit(code)を呼ぶアプリは自身のイベントを追加します。これはスクリーンで実行された最も直接的な証拠です。

プレゼンスはログにもあります。screen.offlineはスクリーンが60秒間オフラインの後に1回書き込まれ、screen.onlineは復帰時に書き込まれます。60秒以内の再接続はどちらも書き込みません。screen.offlineはdetails.offline_sinceを含み、スクリーンが以前オンラインだった場合はdetails.last_online_atも含みます。screen.onlineはdetails.last_online_atを含み、スクリーンが復帰前にオフラインだった場合はdetails.offline_atも含みます。すべてのscreen.*イベントと同様に、これらはリッスンストリームで無料で配信されるため、エージェントはevents followを開いたままにしてフリートを監視できます。

Playerのコンテンツ更新はscreen.manifest_changed、screen.manifest_activated、screen.manifest_upgradeとして届き、そのdetailsにはmanifest_revision、state、および存在する場合はcodeとattemptが含まれます。failedのアップグレードは重大度がエラーで、retrying、blocked、partialは警告です。

events list#

プロジェクトイベントの1ページを読み込みます。

events list [--after CURSOR] [--limit N] [--type TYPE] [--source project|log] [--screen-id ID] [--playlist-id ID] [--app-id ID]
パラメータータイプ必須デフォルトメモ
--after CURSORstringいいえ最初のページ前のページのnext_cursorの続きから読み取ります。
--limit Nintegerいいえ50ページサイズ、1から200。
--type TYPEstringいいえすべてのタイプ1つのイベントタイプ、またはnote.のようなドットで終わるプレフィックスによるファミリー。
--source SOURCEstringいいえprojectprojectはプロジェクトのイベントを一覧表示します。logはスクリーンに属するPlayerログレコードを一覧表示します。--screen-idと一緒に使用してください。
--screen-id IDstringいいえすべてのスクリーンこのスクリーンをリソースとするイベント。SDKから送信されたイベントも含みます。--source logを付けると、そのスクリーンのPlayerログレコード。
--playlist-id IDstringいいえすべてのプレイリストこのプレイリストをリソースとするイベントと、details.playlist_idでこのプレイリストを指定するイベント(たとえば、スクリーンがこのプレイリストを採用した場合)。--source logとは併用できません。
--app-id IDstringいいえすべてのアプリケーションアプリケーションリソース、リリース、K/Vのイベント。SDKから送信されたイベントは含みません。--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

SDKのemit()とemitConfirmed()は、スクリーンをリソースとするapplication.eventレコードを追加します。--type application.eventで読み取り、必要に応じて--screen-idを追加します。返されるdetails.primitive_idとdetails.codeは、送信元のプリミティブと名前付きアクションを識別します。--app-idはアプリケーションリソース、リリース、K/Vのイベントを選択するため、これらのスクリーンイベントは含みません。

--source logはPlayerログを読み取ります。Playerが報告する状態で、プロジェクトのイベント保持期間の間保持されます。シーケンスを持たないため、events followには流れず、Webhookにも配信されません。また、これと一緒に指定した--playlist-idと--app-idは拒否されます(usage_error、終了コード2)。種類の違うIDはリクエスト前に拒否されます。履歴の末尾ではdata.next_cursorはnullになります。

デフォルト出力はページごとに1つのJSONエンベロープです。--human を使うとイベントごとに1つのログフォーマット行を出力します:at=、type=、severity=、およびスカラー詳細。

events follow#

イベントストリームに留まり、イベントを到着時に表示します。

events follow [--after CURSOR] [--timeout MS] [--type TYPE]
パラメータータイプ必須デフォルトメモ
--after CURSORstringいいえライブテールこのカーソルから再開する。
--timeout MSintegerいいえ期限なしフォロー全体を終了し、再接続のバックオフも含みます。
--type TYPEstringいいえすべてのタイプ1つのイベントタイプ、またはnote.のようなドットで終わるプレフィックスによるファミリー。
screenrig events follow

切断や一時的な障害はバックオフで再接続し、最後のイベントIDから再開します。再接続後のリプレイは無料です。認可や not-found の問題はコマンドを停止し、再試行しません。

--typeを付けても、ストリームはすべてのイベントを運び、CLIは一致するものだけを出力します。ストリーム自体を表すstream.*フレームは常に出力されます。screenrig events follow --type note.はプロジェクトのメモを監視します。

デフォルト出力はNDJSONです:イベントごとに1つのエンベロープを独立した行で出力します。ログフォーマット行には --human を使用してください。

通知

通知は、画面の状態が変わったときに、人または別のシステムに知らせます。メール通知は各宛先にメールを送り、Webhook 通知は署名付き HTTPS POST を送り、Slack・Teams・PagerDuty・Telegram の通知はチャットまたはページャーにメッセージを投稿します。1 つの組織で作成できるのは、すべてのチャネルとすべてのプロジェクトを合わせて最大 50 件で、すべてのプロジェクトは、画面が 10 分間オフラインのときにオーナーへ送るメール 1 件から始まります。

通知は、指定した条件を監視します:

条件開始条件終了条件
screen_offlinePlayerが60秒間オフラインです。スクリーンがオンラインに復帰します。
display_disconnectedPlayerがディスプレイの切断を報告します。ディスプレイが再接続します。
running_hotデバイスが過熱のしきい値以上の温度を報告します。温度が正常に戻ります。
on_batteryバッテリーのあるデバイスが、バッテリーで動作している(電源に接続されていない)と報告しています。デバイスが別の電源を報告しています。
storage_fullPlayerのストレージにコンテンツが収まりません。不足が解消されます。
content_stuckスクリーンのコンテンツ更新が再試行中、失敗、ブロック、または部分的な状態です。更新がそれ以外の状態になります。
not_playingPlayerがコンテンツの代わりにエラーを表示しています。ストレージ満杯は storage_full です。Playerのステータスがエラーではなくなります。
loop_stalledオンラインでスケジュール通りコンテンツも最新の画面が、ループが許容する時間より長く画像や動画を開始していません。画像または動画が再び開始されるか、screenRIG が画面の判定をやめます。
glass_blankループ全体をカバーする一連の撮影で screenRIG が取得したスクリーンショットが、すべて単一の均一な色でした。連続する 2 枚のスクリーンショットが画像を示すか、screenRIG が画面の判定をやめます。
glass_frozenループ全体をカバーする一連の撮影で screenRIG が取得したスクリーンショットが、すべて同じ画像でした。連続する 2 枚のスクリーンショットが動く画像を示すか、screenRIG が画面の判定をやめます。
crashingPlayerがクラッシュまたはレンダラーの再起動を繰り返しました。終了しません:スパイクごとに独立した通知メッセージになります。
source_failedデータソースの更新に失敗した。更新が成功した。
source_staleデータソースが失敗を続け、そのデータが期限切れになった。更新が成功した。
card_data_stale有効期限付きで書き込まれたカードのデータが、スクリーンがそのカードを表示している間に期限に達し、誰も更新しなかった。カードのデータへの書き込みが完了した。
reach_droppedスクリーンがタグやフォルダーから外れた、またはアーカイブや削除されたため、キャンペーンの到達数が最後に公開したときより減っています。キャンペーンが再び同じ数のスクリーンに到達するか、再度公開されます。
group_emptyキャンペーンのオーディエンス内のタグまたはフォルダーに、一致するスクリーンがありません。タグまたはフォルダーが再びスクリーンに一致するか、公開によってオーディエンスから外されます。

条件は --hold 分(デフォルトは10分)続くと通知されます。そのため、短時間で再接続した場合は通知されません。それより前に終了した場合は何も送信されず、通知メッセージの送信後に終了した場合は、解決済みの通知メッセージが続きます。crashing は即時に送信されます。待機時間中に誰かがそのスクリーンのアラートを確認済みにするかスヌーズした場合や、ミュートがそのスクリーンに適用されている場合も、通知メッセージはスキップされます。--tag は通知をそのタグを持つスクリーンに限定します。指定しない場合は、すべてのスクリーンが対象になります。

各通知には重大度があります。発生通知は、screen_offline では error、それ以外のすべての条件では warning、解決通知とテストは info です。--min-severity LEVEL(info、warning、error)は、そのレベルを下回る発生通知を作成せず、解決通知は対応する発生通知に従います。--severity CONDITION=LEVEL は繰り返し指定でき、この通知について1つの条件のレベルを、たとえば --severity not_playing=error のように設定します。--min-severity の判定に使われます。Teams と PagerDuty は常にこのレベルを表示し、メール、Slack、Telegram の本文には、通知が --min-severity または --severity を設定しているときに重大度が記載され、Webhook の本文には severity が含まれます。

--active-hours SPEC は、必須の --timezone ZONE で解釈される週間ウィンドウ内でのみ、発生通知を送信します。SPEC は DAYS HH:MM-HH:MM(たとえば "Mon-Fri 08:00-22:00")で、最大16回まで繰り返せます。デフォルトの --outside-hours hold では、時間外に送信期限を迎えた通知は次のウィンドウまで待機し、その時点で条件がまだ成り立っていれば送信されるため、先に条件が解消すれば何も送信されません。drop では、通知は outside_hours としてスキップされ、notifications deliveries に一覧されます。送信済みの発生通知に対する解決通知は常に送信され、crashing は他の条件と同様に時間帯に従い、スヌーズが最初に確認され、notifications test は時間帯、重大度、オーディエンスを無視します。

--audience FILE(インライン JSON、ファイル、または標準入力を表す -)は、キャンペーンのオーディエンスのルールでスクリーンを選択します。たとえば、両方のタグを持つスクリーンには {"all":[{"tag":"level2"},{"tag":"overhead"}]} を使います。--all-tags TAG と --any-tag TAG は、タグの all ルールと any ルールの短縮形で、--tag はいずれかのタグを意味します。--tag、--any-tag、--all-tags、--audience は互いに排他です。

loop_stalled、glass_blank、glass_frozen は、screenRIG が受け取った再生レポートとスクリーンショットから導く判定で、判定できないものは対象外です。オフラインの画面、ディスプレイがオフの画面、テイクオーバー中または一時停止中の画面、静止画 1 枚やビデオウォールを表示している画面、再生番号を送らない Player の画面などです。これらの状態にあると判定していた画面を screenRIG が判定しなくなると、アラートは閉じますが、画面が回復した様子が確認されたわけではないため、メール、Slack、Teams、Telegram は解決通知を送りません。PagerDuty は引き続きインシデントを解決します。

source_failed と source_stale はプロジェクトのスクリーンではなくデータソースを監視します。通知にはデータソースの名前とそのページへのリンクが含まれ、--tag がデータソースに一致することはありません。

card_data_stale はスクリーンではなくカードを監視します。カードのデータは、書き込み側のスケジュールに合わせた有効期限を付けて書き込みます (card data put --ttl 30m)。更新するジョブやエージェントが止まると、データは期限切れになり、カードはそれを表示するすべてのスクリーンで空白になり、この条件でお知らせします。通知にはカード名とデータが期限切れになった時刻が含まれ、そのカードを配置したページのページエディターへのリンクが付きます。データソースのドキュメントはここでは通知されません (source_stale が対象です)。どのスクリーンにも表示されていないカード、有効期限なしで書き込まれたデータ、削除されたデータも通知されません。--tag はカードには一致しません。

reach_dropped と group_empty は、スクリーンではなくキャンペーンを監視します。通知には、キャンペーン名と、以前と現在に到達したスクリーン、または空のタグやフォルダーが記載され、キャンペーンのカレンダーへのリンクが付きます。キャンペーンはプロジェクトに属するため、--tag、--any-tag、--all-tags、--audience がこの 2 つを制限することはありません。--min-severity、--severity、--active-hours、--hold は他の条件と同様に適用され、どちらもデフォルトで warning です。--reach-drop-screens N と --reach-drop-percent P は、キャンペーンの公開時に到達していたスクリーンのうち、N 台以上かつ P パーセント以上が減少した場合にのみ reach_dropped 通知を送ります。減少は両方を満たす必要があり、設定がなければどの減少でも通知されます。これらには --conditions の reach_dropped が必要です。キャンペーンの空のタグやフォルダーは 1 つずつ別の通知になり、notifications deliveries では audience_group(tag:Lobby または folder:sfd_…)として表示されます。空のグループをオーディエンスから外す公開を行うと、PagerDuty のインシデントと Webhook のアラートはクローズされますが、復旧メールやチャットメッセージは送信されません。

メールは各受信者の検証済みアドレスに送信されます。約2分以内に送信対象となったものは、受信者ごとに1通にまとめられ、各スクリーンへのリンクとダッシュボード内の通知へのリンクが付きます。受信者は owner(通知メッセージの送信時にプロジェクトを所有している人)と、プロジェクトメンバーのユーザーIDです。検証済みアドレスがない受信者や、プロジェクトを離れた受信者はスキップされます。通知メールとスクリーン通知メッセージは無料です。

各メールには、その受信者専用の配信停止リンクがあります。メールアプリの配信停止ボタンと、フッターのリンクです。このリンクを開いて操作すると、その通知のメールがその 1 人にだけ届かなくなります。サインインは不要で、開いたページには Resubscribe ボタンがあります。ほかの受信者には影響せず、その人は受信者に残ります。notifications show は unsubscribed で配信を停止した人を表示し、notifications resubscribe はその人にメールを再開します。メールを送る相手がいない通知は no_recipients としてスキップされます。

Webhook通知は各通知メッセージをJSONとしてPOSTします。検証は 配信を検証 の説明に従って行います。--events を指定すると、生のプロジェクトイベントも発生と同時にPOSTします。これらの配信は Webhook の説明に従って計測されます。

Slack、Teams、PagerDuty、Telegram の通知は、障害ごと、画面ごと、または画面のグループごとに 1 件のメッセージを投稿します。内容は、画面、変更内容、開始時刻、プロジェクト、画面へのリンク、そしてオフラインだった画面が復帰したときは、その時点で分かっていれば推定原因です。最初のメッセージが送信されると復旧メッセージが続き、PagerDuty では最初のメッセージが開いたインシデントを解決します。認証情報は 1 回だけ指定します(--slack は受信 Webhook の URL、--teams は Workflows Webhook の URL、--pagerduty は Events API v2 のルーティングキー、--telegram はボットトークンと --telegram-chat を受け取ります)。認証情報は封印されて二度と表示されず、destination_hint にはマスクされた末尾だけが表示されます。- を指定すると stdin の 1 行から読み取るため、シェルの履歴に残りません。投稿に失敗した場合は 24 時間再試行され、72 時間失敗し続けた通知は無効になります。

3 台以上のスクリーンが互いに 5 分以内に同じ条件に入り、ネットワーク、ロケーション、モデル、Player のバージョン、またはタグを共有しているとき、メール、Slack、Teams、PagerDuty、Telegram の通知は、スクリーンごとではなく、まとめて 1 件の通知を送り、グループの最後のスクリーンが復旧したときに 1 件の通知でそのグループを伝えます。ほかの各スクリーンの通知は grouped としてスキップされます。Webhook は引き続きスクリーンごとに 1 件の通知を送ります。

通知とその配信の閲覧には閲覧のみのアクセスが必要で、通知の作成・変更・テスト・削除、シークレットのローテーション、ユーザーの再購読には管理アクセスが必要です。

問題コード終了意味
webhook_url_rejected8URL がポート 443 または 8443 の https でないか、ホストがパブリックインターネットアドレスのみに解決しません。error.detail にサーバーの理由があります。何も作成または変更されません。
notification_destination_rejected8送信先がチャネルに合っていないか、廃止された Office 365 コネクタの URL です。error.detail に合う形式が示されます。何も作成・変更されていません。
notification_limit_reached5組織にはすでに50個の通知があります。まず1つ削除してください。
revision_conflict6--expect-revリビジョンは古くなっていました。notifications showを実行してから再試行してください。
rate_limited7この組織で1分間に20回以上の notifications test 呼び出し。
invalid_request8プロジェクトのメンバーではない --email の宛先、またはメール通知に --url を指定するなど、別のチャネルのオプション。何も作成・変更されていません。

notifications create#

メール、Webhook、Slack、Teams、PagerDuty、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]
パラメータータイプ必須デフォルトメモ
--email RECIPIENTSstringチャネルフラグ 1 つなしこれらのカンマ区切りの受信者にメールを送信します:owner、またはプロジェクトメンバーのユーザーID、最大20件。
--webhook URLstringチャネルフラグ 1 つなしポート 443(デフォルト)または 8443 の https URL で、ホストはパブリックインターネットアドレスのみに解決されます。サーバーは書き込み時と配信前に毎回チェックします。認証情報を含む URL(user:pass@ または token@)や # フラグメントはローカルで拒否され、終了コード 2 となります。
--conditions LISTstringはい(Webhook を除く)なし上の表にあるカンマ区切りの条件。Webhookにはこれか--events、またはその両方が必要です。
--slack URLstringチャネルフラグ 1 つなしhooks.slack.com の受信 Webhook の URL で Slack に投稿します。- を指定すると stdin の 1 行から読み取ります。
--teams URLstringチャネルフラグ 1 つなしWorkflows Webhook の URL(トリガー「Teams Webhook 要求の受信時」)で Teams に投稿します。- を指定すると stdin から読み取ります。Office 365 コネクタの URL は廃止されており、拒否されます。
--pagerduty KEYstringチャネルフラグ 1 つなし32 文字の Events API v2 ルーティングキーで PagerDuty のインシデントを発生・解決します。- を指定すると stdin から読み取ります。
--telegram TOKENstringチャネルフラグ 1 つなしボットトークンで Telegram に投稿します。- を指定すると stdin から読み取ります。--telegram-chat が必要です。
--telegram-chat CHAT_IDstring--telegram とともになし投稿先のチャット: 数値の ID(例: -1001234567890)、または @channelname。
--events TYPESstringいいえなしWebhookのみ。これらの生のプロジェクトイベントもPOSTします:1~32のカンマ区切りの正確なタイプ(例:screen.online)、または.*で終わるプレフィックス(例:screen.*)。
--tag TAGstringいいえすべてのスクリーンこれらのタグのいずれかを持つスクリーンのみ。フラグを繰り返すかカンマで区切って、最大16個のタグを指定できます。
--hold MINUTESintegerいいえ10条件が通知されるまでに継続しなければならない時間、0から1440まで。crashingは待機しません。
--all-tags TAGstringいいえなしリストされたすべてのタグを持つスクリーンのみ。フラグを繰り返すか、カンマで区切ります。
--any-tag TAGstringいいえなし--tag のように、リストされたタグを少なくとも1つ持つスクリーンのみ。フラグを繰り返すか、カンマで区切ります。
--audience FILEstringいいえすべてのスクリーンJSON のキャンペーンオーディエンスルールとしてのスクリーン。インライン、ファイル、または標準入力を表す -。タグオプションとは併用できません。
--min-severity LEVELstringいいえなしinfo、warning、error:これを下回る発生通知は送信されません。
--severity CONDITION=LEVELstringいいえデフォルトこの通知について1つの条件の重大度を設定します。フラグを繰り返してください。
--active-hours SPECstringいいえ常時この週間ウィンドウ内でのみ発生通知を送信します。DAYS HH:MM-HH:MM は "Mon-Fri 08:00-22:00" のように指定します。最大16回まで繰り返せます。--timezone が必要です。
--timezone ZONEstring--active-hours とともになし時間帯を解釈する IANA ゾーン。たとえば America/Los_Angeles。
--outside-hours MODEstringいいえholdhold は次のウィンドウまで待機し、drop は通知をスキップします。
--reach-drop-screens Nintegerいいえどの減少でもreach_dropped がある場合のみ: キャンペーンが N 台以上 (1 以上) のスクリーンを失ったときにだけ通知を送ります。
--reach-drop-percent Pintegerいいえどの減少でもreach_dropped がある場合のみ: キャンペーンの公開時に到達していたスクリーンのうち、P パーセント (1〜100) 以上を失っていることも条件にします。
--description TEXTstringいいえなし最大200文字。
--disabledbooleanいいえオフ無効状態で作成。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

エンベロープは通知です。Webhook通知のエンベロープは、署名シークレットをdata.secret(whsec_…)に、警告をwebhook_secret_shown_onceに含みます。受信側のシークレットストアにすぐ保存してください。再び返すのはnotifications rotate-secretだけで、CLIは設定、操作ログ、書き込み復旧状態にこれを書き込みません。中断またはあいまいな作成の後は、24時間以内に同じコマンドを再実行してください。保存された冪等キーが再利用され、サーバーはシークレットを含む同じ回答を返します。通知メッセージは、通知の作成後の最初のイベントから始まります。

notifications list#

このプロジェクトの通知一覧(シークレットは除く)

notifications list
screenrig notifications list

各行は、チャネルを問わない通知で、古い順です。status を含みます。Slack、Teams、PagerDuty、Telegram の通知では、ホストと末尾の文字までマスクされた認証情報 destination_hint が、--human の TO 列に表示されます。管理アクセス未満では、Webhook の url は空になり、url_redacted が true になり、TO には (withheld) と表示されます。

notifications show#

通知とその配信状態を検査。

notifications show <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなし通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。
screenrig notifications show ntf_01EXAMPLENOTICE00000

status は active、failing_since 以降配信が成功していない場合の failing、または disabled です。72時間連続で失敗すると通知は disabled_reason: delivery_failures で無効化され、イベントログには notification.disabled が記録されます。snoozed_until はスヌーズが設定されている間、存在します。last_success_at と last_failure_at で最新の結果を確認できます。revision は --expect-rev が照合する値です。min_severity、severity、active_hours(outside を伴う)、audience、reach_drop は設定されている間だけ表示され、メール通知には unsubscribed が一覧表示されます。

notifications update#

通知の宛先、URL、送信先、条件、画面、保留時間、スヌーズ、有効状態を変更します。

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]
パラメータータイプ必須デフォルトメモ
<id>stringはいなし通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。
--email RECIPIENTSstring少なくとも1つの変更変更なしメール通知:受信者を置き換えます。
--url URLstring少なくとも1つの変更変更なしWebhook通知:URLを置き換えます。createと同様にチェックされます。
--destination VALUEstring少なくとも1つの変更変更なしSlack、Teams、PagerDuty、Telegram の通知: 認証情報を置き換えます。create と同じ検査が行われます。- を指定すると stdin の 1 行から読み取ります。
--telegram-chat CHAT_IDstring少なくとも1つの変更変更なしTelegram の通知: チャットを置き換えます。
--conditions LISTstring少なくとも1つの変更変更なし条件を置き換えます。
--clear-conditionsboolean少なくとも1つの変更オフすべての条件を削除します。その場合、Webhookには--eventsが必要です。
--events TYPESstring少なくとも1つの変更変更なしWebhook通知:生のプロジェクトイベントを置き換えます。
--clear-eventsboolean少なくとも1つの変更オフWebhook通知:生のプロジェクトイベントのPOSTを停止します。その場合、条件が必要になります。
--tag TAGstring少なくとも1つの変更変更なしスクリーンのタグを置き換えます。通知にオーディエンスがある場合はそれも置き換えます。
--all-screensboolean少なくとも1つの変更オフスクリーンタグとオーディエンスを削除します。この通知はすべてのスクリーンを対象にします。
--hold MINUTESinteger少なくとも1つの変更変更なし0から1440まで。
--all-tags TAGstring少なくとも1つの変更変更なしリストされたすべてのタグを持つスクリーンで置き換えます。
--any-tag TAGstring少なくとも1つの変更変更なし--tag のように、リストされたタグを少なくとも1つ持つスクリーンで置き換えます。
--audience FILEstring少なくとも1つの変更変更なしスクリーンを、JSON のキャンペーンオーディエンスルールで置き換えます。インライン、ファイル、または標準入力を表す -。
--min-severity LEVELstring少なくとも1つの変更変更なしinfo、warning、または error。
--clear-min-severityboolean少なくとも1つの変更オフ重大度フィルターを削除します。
--severity CONDITION=LEVELstring少なくとも1つの変更変更なし重大度の上書きをこれらで置き換えます。フラグを繰り返してください。
--clear-severityboolean少なくとも1つの変更オフすべての重大度の上書きを削除します。
--active-hours SPECstring少なくとも1つの変更変更なしウィンドウをこれらで置き換えます。最大16回まで繰り返せます。--timezone のデフォルトは、通知がすでに持っているゾーンです。
--timezone ZONEstring少なくとも1つの変更変更なし時間帯を解釈する IANA ゾーン。単独の場合は現在のウィンドウを保持します。
--outside-hours MODEstring少なくとも1つの変更変更なしhold または drop。単独の場合は現在のウィンドウを保持します。
--clear-active-hoursboolean少なくとも1つの変更オフアクティブ時間を削除します。それによって保留されていた通知は直ちに再判定されます。
--reach-drop-screens Ninteger少なくとも1つの変更変更なしreach_dropped 通知がキャンペーンに必要とする、失ったスクリーンの最小数を置き換えます。
--reach-drop-percent Pinteger少なくとも1つの変更変更なしキャンペーンが失っているべき、公開時の到達数に対する最小の割合を置き換えます。
--clear-reach-dropboolean少なくとも1つの変更オフしきい値を削除し、どの減少でも通知されるようにします。--conditions から reach_dropped を外すのは、これと同時に行う場合に限られます。
--description TEXTstring少なくとも1つの変更変更なし最大200文字。
--clear-descriptionboolean少なくとも1つの変更オフ説明を削除
--enableboolean少なくとも1つの変更オフ障害状態をクリアし、変更を記録するイベントから開始します。無効だった間に発生したものは何も送信されません。
--disableboolean少なくとも1つの変更オフ通知メッセージの送信を停止します。保留中の通知メッセージは webhook_disabled で失敗します。
--snooze WHENstring少なくとも1つの変更変更なしそれまで何も送信しません:30m、1h、2d などの期間(30日未満)、秒とオフセットを含むRFC 3339の瞬間、またはスヌーズを終了する off。その間に送信時刻を迎えた通知メッセージはスキップされ、後から送信されることはありません。
--expect-rev REVISIONstringいいえなしオプションのリビジョン前提条件。
screenrig notifications update ntf_01EXAMPLENOTICE00000 --snooze 2h

update は指定したフィールドのみを変更します。チャネルは変わりません。--email はメール通知に、--url と --events は Webhook に、--destination と --telegram-chat はチャットまたはページャーの通知に適用され、別のチャネルのオプションは invalid_request(終了コード 8)になります。--email、--url、--destination は最大 1 つまで指定できます。スクリーンのタグとオーディエンスは排他的で、一方を設定するともう一方は消去されます。メール通知は 1 つ以上の条件を保持し、Webhook は条件またはイベントを保持します。署名シークレットは変更されません。変更するには notifications rotate-secret を使用してください。

notifications delete#

通知を削除します。保留中の通知メッセージはwebhook_deletedで失敗します。

notifications delete <id> [--expect-rev REVISION]
パラメータータイプ必須デフォルトメモ
<id>stringはいなし通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。
--expect-rev REVISIONstringいいえなしオプションのリビジョン前提条件。
screenrig notifications delete ntf_01EXAMPLENOTICE00000

配信ログは後から読み取れません。その行はイベント保持期間とともに期限切れになります。

notifications rotate-secret#

Webhook 通知の署名シークレットを置き換え、新しいシークレットを 1 回だけ受け取ります。ほかのチャネルにシークレットはなく、invalid_request(終了コード 8)を返します。

notifications rotate-secret <id> [--expect-rev REVISION]
パラメータータイプ必須デフォルトメモ
<id>stringはいなし通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。
--expect-rev REVISIONstringいいえなしオプションのリビジョン前提条件。
screenrig notifications rotate-secret whk_01EXAMPLEWEBHOOK00000

エンベロープは警告webhook_secret_shown_once付きで新しいシークレットをdata.secretに運びます。すぐに保存してください。以前のシークレットは署名を停止しますが、最大で1回の進行中の試行はまだそれで署名されて到着する可能性があるため、短期間は両方を受け入れてください。中断またはあいまいなローテーション後は、24時間以内に同じコマンドを再実行すると同じシークレットが戻ります。

notifications test#

この通知だけにテストメール、署名付きテスト POST、またはチャットメッセージを送ります。

notifications test <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなし通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。
screenrig notifications test ntf_01EXAMPLENOTICE00000

エンベロープはキューに入った配信です。リトライなしで1回試行され、無効またはスヌーズ中の通知でも動作し、通知の失敗状態は変更しません。組織ごとに1分あたり最大20回のテスト配信。超過はrate_limited(終了コード7)。結果はnotifications deliveriesで読み取ります。

PagerDuty のテストは、キー screenrig:test:DELIVERY_ID の情報イベントを発生させてすぐに解決するため、開いたままのインシデントは残りません。

notifications resubscribe#

通知のメールの配信を停止した人に、再びメールを送ります。

notifications resubscribe <id> --user USER_ID
パラメータータイプ必須デフォルトメモ
<id>stringはいなしメール通知の ntf_ ID。
--user USER_IDstringはいなしnotifications show が unsubscribed に表示する、その人のユーザーID。
screenrig notifications resubscribe ntf_01EXAMPLENOTICE00000 --user usr_01EXAMPLEPERSON0000

エンベロープは通知です。配信を停止していない人を指定しても何も変わりません。人を再購読すると、リビジョンが上がり、notification.updated が追加されます。別のチャンネルまたは別のプロジェクトの通知は not_found です(終了コード 4)。

notifications deliveries#

通知の配信ログを新しい順に読み取ります。

notifications deliveries <id> [--before CURSOR] [--limit N]
パラメータータイプ必須デフォルトメモ
<id>stringはいなし通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。
--before CURSORstringいいえ最新のイベント前のページのnext_cursor(whc1_… または whc2_…)
--limit Nintegerいいえ50ページあたりの行数、1から200。
screenrig notifications deliveries ntf_01EXAMPLENOTICE00000 --limit 20

各行は 1 件のイベント、またはスクリーン上の 1 つの条件に対する 1 件の通知です:event_type、state(pending、succeeded、failed、skipped)、attempts、last_status、および http_status、timeout、connection_failed、tls_failed、dns_failed、url_rejected、email_failed、email_rejected、secret_unavailable などの固定の last_error クラス。スクリーン通知にはさらに condition、phase(opened または resolved)、screen_id、screen_name(データソース、キャンペーン、カードではその ID と名前)、since が加わり、メール通知には届いた人数を示す emailed が加わります。送信する必要がなかった通知は skipped で、理由は last_error に入ります:condition_cleared(待機が終わる前にスクリーンがその状態を抜けた)、not_opened(解決すべき通知が送られていなかった)、snoozed(通知がスヌーズ中)、acknowledged(待機中に誰かがスクリーンのアラートを確認済みにした、またはスヌーズした)、muted(ミュートがスクリーンを対象にしている)、outside_hours(通知の稼働時間が閉じており、時間外の通知を破棄する設定)、below_severity(キューに入れた後に引き上げられた min_severity を通知が下回っている)、planned_reboot(screenRIG が送った再起動でスクリーンが再起動中に、オフラインになった、ディスプレイが切断された、またはクラッシュした。再起動の完了、または送信から10分後まで)、no_recipients(受信者に、確認済みアドレスを持ち配信停止していないプロジェクトメンバーがいない)、grouped(スクリーンが他のスクリーンと一緒にその条件に入り、別の行の通知がまとめて伝えている)、または no_longer_judged(loop_stalled、glass_blank、glass_frozen の条件は screenRIG がスクリーンの判定をやめたために終了し、reach_dropped はキャンペーンが再公開または削除されたために、group_empty は公開によりタグまたはフォルダーがオーディエンスから外されたために、card_data_stale はカードのデータが削除されたために終了したので、復旧は伝えられていない)。スクリーンのグループを伝えた通知には group(id、attribute、value、count)が付き、グループの他の各スクリーンには group_id が付きます。--human は両方を GROUP 列に表示します。行には受信側の応答は含まれません。next_cursor はログの末尾で null になります。失敗した試行は、30 秒から 1 時間まで倍々に延びるバックオフで 24 時間再試行され、その後その行は failed になります。

配信を検証

スクリーン通知メッセージの本文は JSON です:type(alert.opened または alert.resolved)、id(配信ID)、notification_id、project_id、condition、screen(id と name)、since(条件が始まった時刻)、at(待機時間を満たした時刻、または解消した時刻)、event_id、severity(info、warning、error のいずれか。alert.opened では条件のレベル、alert.resolved では info)。screen_offline の alert.resolved には likely_cause(device_restart、app_crash、app_restart、network、platform のいずれか)も含まれ、原因が不明な間は null です。データソース、キャンペーン、カードの場合は screen がそれを指し、キャンペーンの通知には、reach_dropped では reach(published と current のスクリーン数)、group_empty では audience_group(kind は tag または folder、および value)が追加されます。--events からの生のイベントは、events list が返すものと同じ JSON オブジェクトです。ヘッダーは ScreenRig-Webhook-Id(通知ID)、ScreenRig-Event-Id(リトライ間で安定:通知メッセージでは配信ID、イベントではイベントカーソル)、ScreenRig-Signature: t=<unix seconds>,v1=<hex> で、v1 は "<t>.<raw body>" に対する HMAC-SHA256 でシークレット文字列をキーにしています。JSON を解析する前に生のバイトで計算し、定数時間で比較し、古い t を拒否し、ScreenRig-Event-Id で重複排除します。これは、配信が少なくとも1回で順不同のためです。10秒以内に 2xx で応答し、リダイレクトは追いません。

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);
}

アラート

アラートは、1つのスクリーンで続いている1つの問題です。スクリーンが、スクリーンの通知の条件(screen_offline、display_disconnected、running_hot、on_battery、storage_full、content_stuck、not_playing、loop_stalled、glass_blank、glass_frozen)のいずれかに入ると、通知が監視しているかどうかにかかわらずアラートが発生し、条件が終了すると解決されます。スクリーンには条件ごとに最大1件の未解決アラートがあります。クラッシュの急増、データソース、カード、キャンペーンは通知メッセージであり、アラートにはなりません。screenRIG が送った再起動(screen reboot または再起動スケジュール)で再起動中のスクリーンは、再起動が完了するか、送信から10分が経つまで、screen_offline と display_disconnected のアラートを発生させません。その時点でも条件が続いていれば、アラートが発生します。alerts list で現在未解決のものを確認できます。

未解決のアラートは、誰かが確認済みにするかスヌーズするか、ミュートがそのスクリーンに適用されるまで、対応が必要な状態です。確認済みにすると、誰かが対応中であることを示します。アラートは未解決のままですが、誰がいつ確認したかが記録され、解決するまで対応は不要になります。スヌーズは最長30日先までの時刻まで確認済みにすることで、その時刻にアラートがまだ未解決なら再び対応が必要になります。後から行った確認やスヌーズは、前のものを置き換えます。アラートが確認済みまたはスヌーズ中の間は、そのアラートに関する通知のうち待機時間中の通知メッセージはスキップされます。

ミュートはメンテナンス用です。スクリーン、タグ、またはその両方を指定し、最長30日先までの時刻で終了します。ミュートは、スクリーンのIDが指定されているか、指定されたタグを持っている間、そのスクリーンに適用されます。そのため、後からタグを付けたスクリーンも対象になり、タグを外したスクリーンは対象外になります。ミュート中のスクリーンのアラートも発生・解決されますが、muted と表示され、対応が必要になることはなく、すべての通知がそのアラートの通知メッセージをスキップします。1つの組織で有効なミュートは、すべてのプロジェクトを合わせて最大50件です。

alerts list の counts.attention は、ダッシュボードがアラートの横に表示する数です。アラートの発生・解決・確認では screen.alert_opened、screen.alert_resolved、screen.alert_acknowledged が、ミュートの作成・終了では alert_mute.created、alert_mute.deleted がプロジェクトのイベントログに追加されます。これらは、すべての screen.* イベントと同様に、リッスンストリームと Webhook で無料です。解決済みのアラートは、プランのイベント保持期間の間、一覧に残ります。アラートとミュートの閲覧には閲覧のみのアクセスが必要で、確認済みにする・スヌーズ・ミュート・ミュート解除には管理アクセスが必要です。

問題コード終了意味
alert_not_open5アラートはすでに解決済みのため、確認済みにもスヌーズにもできません。alerts list を実行し、未解決のものを使ってください。
alert_mute_limit_reached5組織にはすでに有効なミュートが50件あります。alerts unmute で1件終了するか、タグで1件のミュートにより多くのスクリーンを含めてください。
invalid_request8--until の時刻が30日より先です。何も変更されていません。
not_found4このIDのアラートまたはミュートは、プロジェクトにありません。解決済みのアラートはプランのイベント保持期間を過ぎると、ミュートは終了すると見つからなくなります。

alerts list#

このプロジェクトのアラートを、未解決のものを先に一覧表示します。

alerts list [--state open|resolved|all] [--screen-id ID] [--before CURSOR] [--limit N]
            [--format json|csv|xlsx|pdf] [--output FILE]
パラメータータイプ必須デフォルトメモ
--state STATEstringいいえopenopen、resolved、または all。
--screen-id IDstringいいえすべてのスクリーンこのスクリーンのアラートのみ。
--before CURSORstringいいえ最初のページ前のページのnext_cursor
--limit Nintegerいいえ100ページあたりの行数、1から200。
--format FORMATstringいいえjsonjson、または csv、xlsx、pdf を指定すると、アラートを表示せずファイルに書き出します。
--output FILEパスいいえ./alerts.FORMAT--format csv、xlsx、pdf で書き出すファイル。json とは併用できません。
screenrig alerts list
screenrig alerts list --state all --screen-id scr_01EXAMPLESCREEN00000000
screenrig alerts list --state all --format csv --output alerts.csv

各行は1件のアラートです:id(alr_…)、screen_id、screen_name、condition、state(open または resolved)、since(条件が始まった時刻)、解決後は resolved_at、確認済みの場合は acknowledged_at と acknowledged_by(kind、id、name は担当した人またはエージェントのもの)、スヌーズ中は snoozed_until、そして muted と attention。未解決のアラートが先に、新しい順に並びます。counts には、ページやフィルターに関係なくプロジェクト全体の open と attention が入り、next_cursor は最後で null になります。

--format csv、xlsx、pdf を指定すると、ファイルにはフィルターに一致するすべてのアラートが最大 50,000 行まで入り、エンベロープにはそのファイルの path、bytes、sha256 が含まれます。ファイルについてはレポートとエクスポートを参照してください。

alerts show#

アラートを1件表示します。

alerts show <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなしalr_アラートID
screenrig alerts show alr_01EXAMPLEALERT000000

エンベロープはアラートで、alerts list の行と同じ形式です。

alerts ack#

未解決のアラートを確認済みにします。誰かが対応中です。

alerts ack <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなしalr_アラートID
screenrig alerts ack alr_01EXAMPLEALERT000000

アラートは未解決のまま残り、解決するまで対応は不要になります。acknowledged_by は担当した人またはエージェントを、acknowledged_at は時刻を示します。待機時間中の通知の通知メッセージはスキップされます。もう一度確認済みにすると、前の確認やスヌーズが置き換えられます。解決済みのアラートは alert_not_open(終了コード 5)になります。エンベロープはアラートで、イベントログには screen.alert_acknowledged が記録されます。

alerts snooze#

未解決のアラートを指定した時刻まで確認済みにし、その時刻に再び対応が必要になるようにします。

alerts snooze <id> (--for DURATION | --until TIME)
パラメータータイプ必須デフォルトメモ
<id>stringはいなしalr_アラートID
--for DURATION期間--for、--until のいずれかなし今からスヌーズする時間:30m、4h、2d などの期間。最大 29d23h59m。
--until TIMEstring--for、--until のいずれかなしスヌーズの終了時刻:2026-11-01T09:00:00-07:00 のような、秒とオフセットを含むRFC 3339の瞬間。最大30日先まで。
screenrig alerts snooze alr_01EXAMPLEALERT000000 --for 4h

snoozed_until はスヌーズが終了する時刻です。それまでアラートは対応不要で、待機時間中の通知の通知メッセージは alerts ack と同様にスキップされます。その時刻にアラートがまだ未解決なら、再び対応が必要になります。解決済みのアラートは alert_not_open(終了コード 5)になります。

alerts mute#

メンテナンスのためにスクリーンをミュートします。

alerts mute [--screen-id ID]... [--tag TAG]... (--for DURATION | --until TIME) [--note TEXT]
パラメータータイプ必須デフォルトメモ
--screen-id IDstring--screen-id、--tag のうち少なくとも1つなしscr_ スクリーンIDです。同じIDを繰り返すか、カンマ区切りで複数指定できます(最大100件)。
--tag TAGstring--screen-id、--tag のうち少なくとも1つなしこのタグを持つすべてのスクリーン。繰り返すか、カンマ区切りでタグを列挙してください。最大16個まで。
--for DURATION期間--for、--until のいずれかなし今からミュートが続く時間:30m、4h、2d などの期間。最大 29d23h59m。
--until TIMEstring--for、--until のいずれかなしミュートの終了時刻:2026-11-01T09:00:00-07:00 のような、秒とオフセットを含むRFC 3339の瞬間。最大30日先まで。
--note TEXTstringいいえなしスクリーンをミュートする理由。ミュートを見る人向け。最大200文字。
screenrig alerts mute --tag Lobby --for 2h --note "Rewiring the lobby displays"

エンベロープはミュートです:id(amt_…)、screen_ids、tags、until、note、created_by、created_at。対象となるすべてのスクリーンのアラートは、すでに未解決のものを含め、ただちに muted と表示されます。1つの組織で有効なミュートは、すべてのプロジェクトを合わせて最大50件で、それを超えると alert_mute_limit_reached(終了コード 5)になります。終了したミュートは数に含まれません。中断または結果が不明なミュートの後は、まず alerts mutes を確認してください。--until を付けた同じコマンドを24時間以内に再実行すると同じミュートが返りますが、--for を付けて再実行すると新しい時刻から数え直され、別のミュートが作成されます。

alerts mutes#

終了していないミュートを、終了が早い順に一覧表示します。

alerts mutes
screenrig alerts mutes

各行は、alerts mute が出力するミュートです。

alerts unmute#

ミュートを今すぐ終了します。

alerts unmute <mute-id>
パラメータータイプ必須デフォルトメモ
<mute-id>stringはいなしamt_ミュートID
screenrig alerts unmute amt_01EXAMPLEMUTE0000000

それらのスクリーンの未解決アラートは再び対応が必要になり、以降の通知メッセージはミュートを理由にスキップされなくなります。終了したミュートは not_found(終了コード 4)になります。イベントログには alert_mute.deleted が記録されます。

Webhook

Webhook はこのプロジェクト自身のイベントを署名付きPOSTとして運用中のHTTPSエンドポイントに送信するため、一致するイベントでエージェント、ボット、または独自サービスを起動できます。一致する各イベントは、events list が返すものと同じJSONオブジェクトとして到着します。Webhook は元の形の 通知 です。組織の通知上限50件に含まれ、notifications list に表示されます。新しい作業には、メールとスクリーン通知メッセージも送信する notifications を使用します。

配信の試行は無料で、組織の1時間あたりのエージェントリクエスト上限に数えられません。

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]

組織にすでに50個の通知がある場合、webhooks create は webhook_limit_reached(終了コード5)で応答し、notifications create は notification_limit_reached で応答します。拒否されたURLは、どちらも webhook_url_rejected(終了コード8)です。

--url には、ホストがパブリックインターネットアドレスのみに解決するポート 443 または 8443 の https URL を指定します。検証は notifications create と同様です。認証情報または # フラグメントを含む URL は、ローカルで終了コード 2 で拒否されます。--event-types には、screen.online のような完全一致の種別、または .* で終わる screen.* のようなプレフィックスを、カンマ区切りで 1 から 32 個指定します。--description は 200 文字までです。--disabled は無効な状態で Webhook を作成します。webhooks update --enable は失敗状態を解除して現在のイベントから開始するため、無効だった間のものは送信されず、--disable は保留中の配信を webhook_disabled で失敗させます。--expect-rev はリビジョンを保護します(revision_conflict、終了コード 6)。

webhooks create と webhooks rotate-secret は、署名シークレットを data.secret に一度だけ出力し、警告 webhook_secret_shown_once を付けます。中断またはあいまいな呼び出しの後は、24 時間以内に同じコマンドを再実行すると、同じ応答が返ります。配信は、Webhook の作成後に発生した最初のイベントから始まります。webhooks test は、この Webhook だけに webhook.test 配信を 1 件キューに入れます。無効な Webhook でも動作し、再試行なしで 1 回だけ試行され、ほかの配信と同様に計測され、組織ごとに 1 分あたり 20 件までに制限されます(rate_limited、終了コード 7)。webhooks list はこのプロジェクトの Webhook 通知を古い順に表示し、閲覧のみの認証情報では各 url が空になり url_redacted が true になります。webhooks deliveries はログを最新のイベントから読み取り、1 ページあたり 1〜200 行(既定は 50)で、next_cursor(whc1_…)を --before として渡します。各行の state は pending、succeeded、failed のいずれかで、last_status と固定の last_error クラスを持ちます。配信の検証は 配信を検証 のとおりです。

ほかのコマンドグループ