{"openapi":"3.1.0","info":{"title":"Nexus API","version":"1.0.0","description":"API for Nexus — a private, invite-only video calling platform for small organisations. Supports up to 8 participants per room with waiting room, screen share, file transfer, chat, noise cancellation, and virtual backgrounds.","contact":{"email":"admin@nexusroom.app"},"license":{"name":"Proprietary"}},"components":{"schemas":{}},"paths":{"/auth/google":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/auth/google/callback":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/auth/refresh":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/auth/exchange":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/auth/logout":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/auth/me":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/auth/mock-login":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/rooms":{"get":{"responses":{"200":{"description":"Default Response"}}},"post":{"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000},"chatPersistence":{"type":"string","enum":["full","session","none"]},"maxParticipants":{"type":"integer","minimum":1,"maximum":8},"scheduleDayOfWeek":{"type":["integer","null"],"minimum":0,"maximum":6},"scheduleStartTime":{"type":["string","null"]},"scheduleEndTime":{"type":["string","null"]},"scheduleTimezone":{"type":"string","maxLength":64},"scheduleEnabled":{"type":"boolean"},"customDomain":{"type":["string","null"],"maxLength":253}}}}}},"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}":{"put":{"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000},"chatPersistence":{"type":"string","enum":["full","session","none"]},"maxParticipants":{"type":"integer","minimum":1,"maximum":8},"accentColor":{"type":["string","null"],"pattern":"^#[0-9a-fA-F]{6}$"},"recordingEnabled":{"type":"boolean"},"scheduleDayOfWeek":{"type":["integer","null"],"minimum":0,"maximum":6},"scheduleStartTime":{"type":["string","null"]},"scheduleEndTime":{"type":["string","null"]},"scheduleTimezone":{"type":"string","maxLength":64},"scheduleEnabled":{"type":"boolean"},"customDomain":{"type":["string","null"],"maxLength":253}}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/revoke-link":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/lock":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/unlock":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/config":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{id}/logo":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{id}/invite":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/by-domain/{domain}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"domain","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/join/{linkId}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"linkId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/password":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/livekit/token":{"post":{"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["roomName"],"properties":{"roomName":{"type":"string","minLength":1},"participantName":{"type":"string","minLength":1}}}}}},"responses":{"200":{"description":"Default Response"}}}},"/livekit/guest-token":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/livekit/rooms/{roomName}/participants/{identity}/mute":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomName","required":true},{"schema":{"type":"string"},"in":"path","name":"identity","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/livekit/rooms/{roomName}/participants/{identity}/remove":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomName","required":true},{"schema":{"type":"string"},"in":"path","name":"identity","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{linkId}/join":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"linkId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/admit/{guestId}":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"guestId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/reject/{guestId}":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"guestId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/admit-all":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/waiting":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/hosts/me/rooms/{roomId}/notifications":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/messages":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{id}/state":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/audit":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{id}/attendance":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/gdpr/export/{email}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"email","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/gdpr/erase/{email}":{"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"email","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/hosts":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/hosts/{hostId}/rooms":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"hostId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/hosts/{hostId}/rooms/{roomId}":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"hostId","required":true},{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"hostId","required":true},{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/pending-invitations":{"get":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}}},"/admin/invite":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/admin/hosts/{hostId}/status":{"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"hostId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/ws/presence":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/purchase/create-checkout-session":{"post":{"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tier","email"],"properties":{"tier":{"type":"integer","enum":[5,10,20,50]},"email":{"type":"string","format":"email","minLength":5,"maxLength":255}}}}}},"responses":{"200":{"description":"Default Response"}}}},"/purchase/tiers":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/purchased-rooms":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{id}/change-tier":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{id}/transfer":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/webhooks/stripe":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/billing/room/{roomId}/status":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/billing/room/{roomId}/portal":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/billing/room/{roomId}/change-tier":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/billing/room/{roomId}/cancel":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/billing/room/{roomId}/reactivate":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/billing/create-checkout-session":{"post":{"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tier","roomName","hostEmail"],"properties":{"tier":{"type":"string","enum":["circle","group","club","pro","business","corporate"]},"roomName":{"type":"string","minLength":1},"hostEmail":{"type":"string","format":"email"}}}}}},"responses":{"200":{"description":"Default Response"}}}},"/billing/portal":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/billing/webhook":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/admin/servers/provisioning":{"get":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/admin/servers":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/servers/{serverId}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"serverId","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"serverId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/servers/provision":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/livekit/webhook":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/usage":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/summary":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/rooms/{roomId}/history":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/top-rooms":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/heatmap":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/tier-averages":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/participant-averages":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/approaching-cap":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/suspended":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/monthly-trend":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/nudge/{roomId}":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/usage/export":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/status":{"get":{"responses":{"200":{"description":"Default Response"}}},"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/accounts":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/auth/login":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/accounts/me":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/accounts/from-sso":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/checkout/create-session":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/subscriptions/{sessionId}/status":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"sessionId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/webhooks/stripe":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/billing/portal-session":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/subscriptions/mine":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/rooms/{id}":{"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/domains/{roomId}/status":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/admin/reprovision/{subscriptionId}":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"subscriptionId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/admin/rooms/{roomId}/extended-use":{"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/subscriptions/{id}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/tickets":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/tickets/{id}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/admin/tickets":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/commercial/admin/tickets/{id}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/commercial/tickets/{id}/messages":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/name":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/description":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/subdomain":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/logo":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/accent-color":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/custom-domain":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/seats":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/seats/temporary":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/rooms/{roomId}/seats/permanent":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/store/status":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/store/status":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/trials/status":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/trials/status":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/admin/overview":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{roomId}/detail":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{roomId}":{"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{roomId}/suspend":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/rooms/{roomId}/unsuspend":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/servers/pool":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/subscriptions/{roomId}/extend-trial":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/subscriptions/{roomId}/change-tier":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/subscriptions/{roomId}/apply-discount":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"roomId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/admin/notifications":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/notifications/count":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/admin/notifications/{id}/resolve":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/broadcast/events":{"post":{"responses":{"200":{"description":"Default Response"}}},"get":{"responses":{"200":{"description":"Default Response"}}}},"/broadcast/events/{eventId}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"eventId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/broadcast/events/{eventId}/cancel":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"eventId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/broadcast/events/{eventId}/public":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"eventId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/broadcast/events/{eventId}/tickets":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"eventId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/broadcast/join/{token}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/broadcast/events/{eventId}/refund":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"eventId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/broadcast/events/{eventId}/attendees":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"eventId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/config/public":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/health":{"get":{"tags":["health"],"responses":{"200":{"description":"Default Response"}}}},"/openapi.json":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/.well-known/agent.json":{"get":{"responses":{"200":{"description":"Default Response"}}}}},"servers":[{"url":"https://nexusroom.app/api","description":"Production"},{"url":"http://localhost:3001","description":"Local development"}],"tags":[{"name":"health","description":"Service health checks"},{"name":"auth","description":"Authentication (Google OAuth, JWT)"},{"name":"rooms","description":"Room management"},{"name":"livekit","description":"LiveKit token generation"},{"name":"admin","description":"Admin operations"},{"name":"gdpr","description":"GDPR data export and erasure"},{"name":"config","description":"Public configuration"},{"name":"commercial","description":"Commercial / billing"}]}