Real-time
HTTP routes and behavior for real-time.
WS /api/ws # WebSocket (JWT via subprotocol header)WebSocket events:
config_changed; payload-free invalidation after Discover visibility or instance/access changes; every session re-fetches/api/config.download_progress:{ tmdb_id, media_type, progress, status }request_status_changed:{ tmdb_id, media_type, status }(queue polling and arr webhooks; status here isavailable,partially_available,requested, orunavailable: note the longer spelling vs the RESTpartial)downloads_queue: full download-client queue snapshot{ instance_id, paused, speed_bps, items }, sent on changearr_queue_changed:{ instance_id, service_type }invalidation ping; clients refetch via REST- targeted events fanned out per user/admin:
request_pending,request_decision,request_quota_changed(user ID only; caller and admins refetch allowance state),issue_created,issue_updated,agent_action_pending,agent_action_decided,agent_autoapproval_paused,remediation_autodispatch_disabled,plex_access_request,media_server_access,issue_question,issue_fix_confirm,issue_closed,profile_change_pending,profile_change_decided(WS-only, no push; drains the other admins’ approval badges after a decision; both proposal events carry the authoritativepending_count)