You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 2245e56
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: assets/playlist-write-v2.schema.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
{
2
-
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=ec469ae74ca9fe82bacdd314fb67fc57b6b6d124fdba3584dbf75ae7c5b3808d. Shape validation for the adslot page union. Run canonical playlist-write-semantics.ts next. At most 16 adslot pages and one ordinary page with no visibility remain server checks.",
2
+
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=6c916f85a19b7573dfa7af37d242a83eae074d5f924bc16230b937e25af58efe. Shape validation for the adslot page union. Run canonical playlist-write-semantics.ts next. At most 16 adslot pages and one ordinary page with no visibility remain server checks.",
Copy file name to clipboardExpand all lines: assets/playlist-write.schema.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
{
2
-
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=ec469ae74ca9fe82bacdd314fb67fc57b6b6d124fdba3584dbf75ae7c5b3808d. Shape validation only; run canonical playlist-write-semantics.ts next. Reference resolution and DNS remain server checks.",
2
+
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=6c916f85a19b7573dfa7af37d242a83eae074d5f924bc16230b937e25af58efe. Shape validation only; run canonical playlist-write-semantics.ts next. Reference resolution and DNS remain server checks.",
3
3
"$defs": {
4
4
"CanvasBackground": {
5
5
"description": "Solid canonical uppercase #RRGGBBAA, or a top-to-bottom linear gradient.",
constreboot=screen.command("reboot").description("Reboot a screen's device, or a fleet's devices")
167
+
.argument("[id...]","Screen identifier; several ids target those screens in one fleet request")
168
+
.option("--tag <TAG>","Target every active screen carrying this tag",screenTagOption)
169
+
.option("--yes","Confirm a reboot of several screens or --tag (required for a fleet)")
170
+
.option("--expect-rev <REVISION>","Optionally require this screen revision (one screen id only)",revision)
171
+
.action(bind(handleScreenReboot));
172
+
addCommandNotes(reboot,"Reboot:\n The Player reboots the device, not just itself. Only a Player that declares\n the reboot capability in its host report receives it; any other screen is\n refused with reboot_unsupported (exit 5) and nothing is sent. The request\n expires after ten minutes, and each screen accepts at most 2 reboots per 10\n minutes; a refused or failed request and an exact replay spend none. A\n fleet (several ids or --tag) requires --yes: the CLI never prompts.");
constdisplayGroup=screen.command("display").description("Turn a screen's display on or off now, or clear that override");
176
+
constdisplay=displayGroup.command("set",{isDefault: true}).description("Turn a screen's display, or a fleet's displays, on or off now (default: screen display ID --power on|off)")
177
+
.argument("[id...]","Screen identifier; several ids target those screens in one fleet request; a trailing on|off sets the power")
178
+
.option("--tag <TAG>","Target every active screen carrying this tag",screenTagOption)
179
+
.addOption(newOption("--power <POWER>","on or off").choices(["on","off"]))
180
+
.addOption(newOption("--until <TIME>","End at this RFC 3339 instant (strictly future, at most 7 days ahead)").argParser(untilOption).conflicts(["for"]))
181
+
.addOption(newOption("--for <DURATION>","End after this duration, such as 30m, 2h, or 3d (at most 6d23h59m)").argParser(durationOption).conflicts(["until"]))
182
+
.option("--expect-rev <REVISION>","Optionally require this screen revision (one screen id only)",revision)
183
+
.action(bind(handleScreenDisplay));
184
+
addCommandNotes(display,"Display power:\n A manual override of the display schedule. Without --until or --for it ends\n at the display schedule's next boundary; a later display-schedule change or\n timezone change moves that end to the new next boundary. With no schedule\n boundary in the next eight days (no enabled schedule) it holds until\n screen display clear or a replacement. The Player applies it at once and\n reports what it achieved (screen show: Display reported). At most 10\n display changes per screen per minute; refusals and replays spend none.");
constdisplayClear=displayGroup.command("clear").description("End the manual display override on a screen or a fleet; the schedule (else on) applies again")
187
+
.argument("[id...]","Screen identifier; several ids target those screens in one fleet request")
188
+
.option("--tag <TAG>","Target every active screen carrying this tag",screenTagOption)
189
+
.option("--expect-rev <REVISION>","Optionally require this screen revision (one screen id only)",revision)
constdisplaySchedule=screen.command("display-schedule").description("Show, set, or clear when a screen's display is on");
194
+
displaySchedule.command("show").description("Show a screen's display schedule and its display state")
195
+
.argument("<id>","Screen identifier")
196
+
.action(bind(handleScreenDisplayScheduleShow));
197
+
displaySchedule.command("set").description("Replace the display schedule on a screen or a fleet of screens")
198
+
.argument("[id...]","Screen identifier; several ids target those screens in one fleet request")
199
+
.option("--tag <TAG>","Target every active screen carrying this tag",screenTagOption)
200
+
.requiredOption("--file <FILE>","Display schedule JSON {\"enabled\": true, \"windows\": [...]}, or - for stdin (required)")
201
+
.option("--expect-rev <REVISION>","Optionally require this screen revision (one screen id only)",revision)
202
+
.action(bind(handleScreenDisplayScheduleSet));
203
+
displaySchedule.command("clear").description("Remove the display schedule from a screen or a fleet of screens")
204
+
.argument("[id...]","Screen identifier; several ids target those screens in one fleet request")
205
+
.option("--tag <TAG>","Target every active screen carrying this tag",screenTagOption)
206
+
.option("--expect-rev <REVISION>","Optionally require this screen revision (one screen id only)",revision)
207
+
.action(bind(handleScreenDisplayScheduleClear));
208
+
addCommandNotes(displaySchedule,"Display schedule:\n 1 to 16 windows when the display is ON, in the screen timezone (required):\n {\"enabled\": true, \"windows\": [{\"days\": [\"mon\",\"tue\"], \"start\": \"07:00\", \"end\": \"19:00\"}]}.\n end <= start crosses midnight; omit start and end for the whole day. Outside\n every window the display goes to standby. enabled false keeps the windows and\n leaves the display on. The device evaluates it offline.");
209
+
addCommandExamples(displaySchedule.commands.find((command)=>command.name()==="show")!,"screenrig screen display-schedule show scr_LOBBY");
0 commit comments