status

Live State

The real-time operational layer of the WIM record. When status changes — a department closes, a queue grows, an incident occurs — every downstream channel updates automatically from one source. No bilateral syncs, no stale signs, no conflicting messages across channels.

WIM v1.0 29 fields 5 required
29
Total fields
5
Required
24
Optional
7
Field groups
real-time
Update frequency
Purpose
Real-time operational state

The status object carries everything that changes in real time — open/closed, queue depth, capacity, disruptions, and live messages. One status update propagates simultaneously to physical signs, screens, mobile, kiosk, and voice AI.

Hierarchy position
Root-level · highest change frequency

The status object sits at root level alongside place and topology. It has the highest expected update frequency of any WIM object — consumers should respect expiry_time and re-fetch on a tight TTL when status is active.

Standards alignment
WIM-native · ISO 8601 · OSM hours

Status fields are WIM-native constructs designed for real-time wayfinding. Temporal fields follow ISO 8601. Opening-hours logic aligns with OSM opening_hours convention for machine-parseable schedules.

ISO 8601 (Datetimes) OSM opening_hours RFC 7232 (Cache)
01 Operational State 3 fields
open
boolean required

Whether this destination is currently open and accessible to visitors. The primary binary signal consumed by all channel renderers — false causes physical signs to switch to a "closed" state, removes the destination from active routing, and triggers a closed message on voice AI and mobile.

Effects when false: routing suppressed, channels render closed state, live_message shown — Updated by: schedule engine or manual override

"open": true
operational_status
enum required

Detailed operational classification of this destination's current state. More granular than the binary open flag — allows channel renderers to surface specific states such as reduced service or appointment-only access rather than a simple open/closed binary.

open closed open_reduced appointment_only emergency_only staff_only temporarily_suspended relocated
"operational_status": "open"
availability_status
enum optional

Current availability level of the destination's service capacity. Distinct from operational_status — a destination can be open but fully_booked. Channel renderers use this to surface availability context alongside route instructions.

available limited fully_booked walk_in_only pre_booked_only unknown
"availability_status": "available"
02 Validity Window 2 fields
valid_from
datetime required

UTC timestamp marking the start of the period during which this status record is authoritative. Consumers must not apply this status before this timestamp. Used to pre-schedule status transitions — e.g. a planned closure that activates at midnight.

Format: ISO 8601 — Timezone: always UTC (Z)

"valid_from": "2026-01-01T00:00:00Z"
valid_until
datetime optional

UTC timestamp marking the end of this status record's validity. Consumers must re-fetch the status after this point. Null for indefinite status (e.g. a permanent closure or a standard operating schedule with no defined end). Distinct from expiry_time, which is a cache directive — valid_until is a business rule.

Format: ISO 8601 — null means indefinite

"valid_until": null
03 Messaging 3 fields
live_message
string optional

Short, channel-neutral status message broadcast to all output channels simultaneously. Intended for brief operational notices visible across physical signs, screens, kiosk, and voice AI. When set, all channels render this alongside their standard wayfinding output. Keep under 80 characters for sign compatibility.

Max: 80 chars — Rendered by: all channels — Language: follows wim.language_default

"live_message": "Normal access"
public_message
string optional

Extended message for public-facing channels — mobile app, kiosk, and digital screens. May include contextual guidance beyond a brief status notice (e.g. instructions on where to check in, alternate department locations, or appointment reminders). Longer than live_message; not rendered on physical signage.

Max: 512 chars — Rendered by: mobile, kiosk, digital screen — Not rendered on physical signage

"public_message": "Cardiology Clinic is open. Please check in at reception on arrival."
staff_message
string optional

Internal message visible only to staff-facing channel consumers (back-office dashboards, staff kiosks, and estate management systems). Contains operational detail unsuitable for public display — e.g. "Escort required past security door" or "Reduced staffing — expect delays." Never rendered in public channels.

Max: 512 chars — Rendered by: staff channels only — Never in public output

"staff_message": null
04 Queue & Capacity 8 fields
queue_status
enum optional

Qualitative queue state for this destination. Rendered directly in channel output — mobile apps show a queue indicator, voice AI says "There is currently a moderate queue." Routing engines may factor this into route recommendations when alternative destinations with shorter queues exist.

none short moderate long very_long unknown
"queue_status": "moderate"
queue_length
integer optional

Number of people currently in the queue or waiting area for this destination. Updated by queue management systems, ticket dispensers, or sensor feeds. Used alongside queue_status for numeric display in kiosk and mobile channels.

Min: 0 — Units: persons — Source: queue management or sensor system

"queue_length": 6
queue_wait_time_minutes
integer optional

Estimated waiting time in minutes for a new arrival joining the current queue. Computed by the queue management system from historical throughput and current queue length. Voice AI renders this as "Estimated wait time is approximately 12 minutes." Update frequency should match queue polling rate.

Min: 0 — Units: minutes — Estimate, not guaranteed

"queue_wait_time_minutes": 12
now_serving
string optional

Current ticket number or identifier being served, as broadcast by the queue management system. Rendered on digital screens and kiosk displays ("Now serving: A047"). Null when no ticketed queue system is in use at this destination.

Max: 16 chars — Format: alphanumeric ticket identifier or null

"now_serving": "A047"
capacity_status
enum optional

Qualitative occupancy level of this destination's physical space. Derived from occupancy_percentage thresholds configured per destination. Channel renderers use this for colour-coded capacity indicators — green for low, amber for moderate, red for full.

low moderate high full over_capacity unknown
"capacity_status": "moderate"
current_capacity
integer optional

Number of people currently present in this destination's physical space, as reported by occupancy sensors, badge readers, or manual count. Used alongside maximum_capacity to compute occupancy_percentage when not directly available.

Min: 0 — Units: persons — Source: occupancy sensor or badge system

"current_capacity": 18
maximum_capacity
integer optional

Maximum permitted occupancy of this space as defined by fire safety regulations or operational policy. This is the denominator used when computing occupancy_percentage. Should reflect the regulatory permitted maximum, not a preferred comfort level. Set once and rarely changed; changes require an estate or fire-safety review.

Min: 1 — Units: persons — Source: estate management / fire safety register

"maximum_capacity": 30
occupancy_percentage
float optional

Current occupancy as a percentage of maximum capacity. Computed as (current_capacity / maximum_capacity) × 100. Channel renderers use this for proportional visual indicators and threshold-based colour coding. Values above 100 indicate over-capacity conditions.

Range: 0.0 – 100.0+ — Units: percent — Computed or sensor-derived

"occupancy_percentage": 60.0
05 Disruptions & Delays 6 fields
delay_minutes
integer optional

Current service delay in minutes beyond the expected or scheduled service time. 0 indicates on schedule; positive values indicate delays. Channel renderers append this to routing output — "Cardiology Clinic — approx. 4 min walk. Current delay: 15 min." Null when no scheduled service time is defined.

Min: 0 — Units: minutes — 0 means on schedule

"delay_minutes": 0
service_disruption
boolean optional

Whether a service disruption is currently active at this destination. true triggers a disruption indicator across all channels and increases the urgency of routing engine re-computation. Always set alongside a descriptive live_message explaining the nature of the disruption.

"service_disruption": false
temporary_closure
boolean optional

Whether this destination is temporarily closed — e.g. for an emergency, a cleaning session, or an unplanned event. Distinct from a scheduled closure reflected in operational_status. When true, routing suppresses this destination and channels display a temporary closure message. Use valid_until to set the expected re-opening time.

"temporary_closure": false
temporary_route_active
boolean optional

Whether a temporary alternative route to this destination is currently active — e.g. due to corridor maintenance, a spillage, or a security event. true causes routing engines to re-compute paths using only non-affected graph edges and surfaces the alternative route across all channels simultaneously.

"temporary_route_active": false
maintenance_status
enum optional

Current maintenance state of this destination or its primary access route. Triggered by planned preventive maintenance, reactive works, or an automated alert from the Building Management System. When in_progress, routing may be affected.

none scheduled in_progress completed
"maintenance_status": "none"
incident_status
enum optional

Current incident state for this destination. Populated by incident management systems or security operations. An active incident immediately triggers routing suppression and surfaces an alert across all channels. Cleared automatically when the incident management system resolves the event.

none active contained monitoring resolved
"incident_status": "none"
06 Environmental Status 3 fields
cleaning_status
enum optional

Current cleaning state of this destination or its primary facilities (toilet, waiting area). Populated by cleaning management systems or IoT sensors. When in_progress or closed_for_cleaning, accessibility routing may re-route to alternative amenities.

clean in_progress closed_for_cleaning inspection_required unknown
"cleaning_status": "clean"
security_status
enum optional

Current security posture for this destination. Elevated states — heightened or lockdown — cause routing engines to suppress public access and channel renderers to display an appropriate security notice. Populated by the building security operations system.

normal heightened lockdown controlled_access evacuation
"security_status": "normal"
weather_impact
enum optional

Impact of current weather conditions on access to or operation of this destination. Relevant for any node with outdoor components — external entrances, covered walkways, car parks, or open-air routes. Populated by weather monitoring integration. Routing engines use this to deprioritise affected outdoor edges.

none minor moderate severe access_disrupted
"weather_impact": "none"
07 Metadata & Confidence 4 fields
last_status_update
datetime required

UTC timestamp of the most recent status change for this object. Set automatically on every write to any field in the status object. Consumers use this to assess data freshness — a last_status_update older than cache_ttl should trigger a re-fetch regardless of expiry_time.

Format: ISO 8601 — Timezone: always UTC (Z) — Set on every write

"last_status_update": "2026-05-06T10:15:00Z"
status_source
string optional

Identifier of the system or agent that last updated this status record. Used for data lineage tracing and conflict resolution when multiple systems feed status data. A manual override by a staff member should set this to a user identifier; an automated feed should set a system identifier.

Max: 64 chars — Convention: SYSTEM-ID or usr-UUID

"status_source": "building_management_system"
status_confidence
float optional

Confidence score for the accuracy of the current status data, expressed as a float between 0.0 and 1.0. Computed from source reliability, data age relative to expected update frequency, and sensor signal quality. Scores below 0.6 indicate stale or uncertain status — channel renderers may suppress live indicators and fall back to last known good state.

Range: 0.0 – 1.0 — Uncertainty threshold: < 0.6 — Computed, not editable

"status_confidence": 0.98
expiry_time
datetime required

UTC timestamp after which consumers must treat this status as stale and re-fetch from the API. A hard cache directive specific to the status object — more granular than the record-level wim.cache_ttl. For live queue and capacity data, this is typically set 60–300 seconds ahead. For stable operational schedules, it may be set hours ahead.

Format: ISO 8601 UTC — Must always be in the future when served

"expiry_time": "2026-05-06T10:20:00Z"
Complete status object — example

A fully populated Live State object for the Cardiology Clinic at UMC Utrecht — open, moderate queue, normal conditions. Required fields always present; optional fields shown with representative values.

status-dept-cardiology-001.json