venue.set
- Command
venue.set- Area
- display (
venue) - Profile
- optional
- Response
ok, with the next opening day as calculated
Everything the display needs to know about the library – and what is not tied to an individual person. The data applies until it is changed: a controlling program sends it once at start-up and after that only when something changes.
This is how the display knows what to show when nobody is standing in front of it – and how it can form sentences nobody would otherwise have to supply: "Open until 6 pm today", "Next open on Tuesday, 18 August".
Request#
{"v":1,"cmd":"venue.set",
"name":"St Mary's Library",
"hours":[{"day":2,"from":"15:00","to":"18:00"},
{"day":7,"from":"10:00","to":"12:00"}],
"closures":[{"from":"2026-12-24","to":"2027-01-06","reason":"Christmas break"}],
"extras":[{"date":"2026-09-19","from":"10:00","to":"16:00","reason":"Parish fair"}],
"events":[{"from":"2026-10-31T18:00:00+01:00","title":"Reading night",
"note":"Free entry, no booking required."}]}
| Field | Required | Content |
|---|---|---|
name |
no | name of the library |
hours |
no | regular opening hours |
closures |
no | periods during which the library is closed |
extras |
no | individual days on which it opens in addition |
events |
no | forthcoming events |
hours – the opening hours#
| Field | Content |
|---|---|
day |
weekday per ISO 8601: 1 Monday to 7 Sunday |
from, to |
time of day as HH:MM in local time |
A weekday may appear more than once – for a midday break, say 10:00–12:30 and
15:00–18:00.
closures and extras – the exceptions#
closures override hours, extras override closures. This covers the usual
case of being closed over a holiday period but opening on a single day within
it after all.
| Field | Content |
|---|---|
closures[].from, closures[].to |
first and last day of the closure; without to: that day only |
closures[].reason |
occasion, e.g. "Christmas break" |
extras[].date |
the additional opening day |
extras[].from, extras[].to |
its opening hours |
extras[].reason |
occasion |
events – events#
| Field | Content |
|---|---|
from, to |
start and end as points in time |
title |
name |
note |
one line of addition |
The display chooses how many of them it shows and from when. It drops past events itself – the controlling program therefore does not have to revise the list daily.
Response#
{"v":1,"ok":true,"result":{"next_open":"2026-08-18"}}
next_open is the day the display has calculated from hours, closures and
extras. It is the simplest check that the deposited times really add up to
what the library means.
Complete, not incremental#
Every request replaces the existing library data completely. An empty list clears that part; a field that is absent leaves it unchanged.
Relation to the session#
Library data and session data differ in their lifetime:
| Kind | Applies | Command |
|---|---|---|
| session data | while the person is standing there | session.* |
| library data | until it is changed | venue.set |
If the display knows the library data,
session.close
needs neither dates.next_open nor event: it already knows both. A
controlling program that does not support venue.set, or that meets a display
without venue, keeps sending the data there.