ruvnet/RuView · error · HTTPException
Zone '{zone_id}' is disabled
Error message
Zone '{zone_id}' is disabled What it means
validate_zone_access raises 403 "Zone '<zone_id>' is disabled" when the zone exists in domain configuration but has enabled=False. Existence was already confirmed; this is an administrative off-switch per zone.
Source
Thrown at archive/v1/src/api/dependencies.py:190
# Zone access dependencies
async def validate_zone_access(
zone_id: str,
current_user: Optional[Dict[str, Any]] = Depends(get_current_user)
) -> str:
"""Validate user access to a specific zone."""
domain_config = get_domain_config()
# Check if zone exists
zone = domain_config.get_zone(zone_id)
if not zone:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"Zone '{zone_id}' not found"
)
# Check if zone is enabled
if not zone.enabled:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=f"Zone '{zone_id}' is disabled"
)
# If authentication is enabled, check user access
if current_user:
# Admin users have access to all zones
if current_user.get("is_admin", False):
return zone_id
# Check user's zone permissions
user_zones = current_user.get("zones", [])
if user_zones and zone_id not in user_zones:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=f"Access denied to zone '{zone_id}'"
)
View on GitHub (pinned to 4685618388)
Solutions
- Set enabled=True for the zone in the domain configuration and reload
- Point clients at an enabled zone in the meantime
- Have clients treat 403-disabled distinctly from 404 so operators see the real state
Defensive patterns
Strategy: validation
Validate before calling
# Skip disabled zones up front
zones = client.get('/api/zones', headers=auth).json()
enabled = [z['id'] for z in zones if z.get('enabled', True)]
if zone_id not in enabled:
pick_another_zone(enabled) Try / catch
try:
r = client.get(f'/api/zones/{zone_id}/pose', headers=auth)
r.raise_for_status()
except httpx.HTTPStatusError as e:
if e.response.status_code == 403 and 'disabled' in e.response.text:
mark_zone_disabled(zone_id) # stop polling it; operator action needed
raise Prevention
- Filter client-side zone lists on the enabled flag
- Distinguish 'disabled' 403 from 'access denied' 403 in monitoring
- Remove disabled zones from polling loops to avoid log noise
When it happens
Trigger: A zone deliberately disabled in config (enabled: false) receiving traffic; a zone toggled off during maintenance while clients keep polling it.
Common situations: Per-zone rollout flags; temporarily disabling a room/sensor zone; config edits accidentally flipping enabled.
Related errors
- Zone '{zone_id}' not found
- Access denied to zone '{zone_id}'
- Router '{router_id}' is disabled
- JWT authentication is not configured. In development mode, e
- Inactive user
AI-assisted analysis of ruvnet/RuView@4685618388 (2026-08-16).
Data as JSON: /api/errors/2fdcadc01834f949.
Report an issue: GitHub.