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.
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.
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.
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.
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": trueDetailed 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.
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.
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"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": nullShort, 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"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."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": nullQualitative 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.
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": 6Estimated 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": 12Current 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"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.
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": 18Maximum 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": 30Current 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.0Current 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": 0Whether 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.
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.
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.
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.
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.
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.
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.
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.
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"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"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.98UTC 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"status object — exampleA 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.