Class: SeatLayer::Sessions
- Defined in:
- lib/seatlayer/inventory.rb
Overview
Short-lived, origin-bound browser tokens.
The governing rule: the SDK mints tokens, widgets consume them. Your secret key never reaches a browser.
Constant Summary collapse
- CAPABILITIES =
[ "event:view", "event:block", "event:cancel", "event:reports", "event:channels:view", "event:channels:manage", "event:orders:read", "event:refund", "event:tickets:send", "event:door:view", "event:door:checkin", "event:boxoffice" ].freeze
Constants inherited from Resource
Instance Method Summary collapse
-
#create_designer_session(workspace_id:, chart_id:, allowed_origin:, authority: nil, can_publish: nil, mode: nil, safe_mode_options: nil, features: nil, expires_in_seconds: nil) ⇒ Object
Mint a designer token so an organiser can edit a chart inside your own UI.
-
#create_manage_session(event_key, allowed_origin:, capabilities:, expires_in_seconds: nil, workspace_id: nil) ⇒ Object
Mint a manage-session token for the control room.
-
#revoke_designer_session(session_id) ⇒ Object
rubocop:enable Metrics/ParameterLists.
- #revoke_manage_session(event_key, session_id) ⇒ Object
Methods inherited from Resource
Constructor Details
This class inherits a constructor from SeatLayer::Resource
Instance Method Details
#create_designer_session(workspace_id:, chart_id:, allowed_origin:, authority: nil, can_publish: nil, mode: nil, safe_mode_options: nil, features: nil, expires_in_seconds: nil) ⇒ Object
Mint a designer token so an organiser can edit a chart inside your own UI. Requires a chart id that already exists — create or copy one first. Explicit keywords keep each security and feature-policy boundary visible. rubocop:disable Metrics/ParameterLists
190 191 192 193 194 195 196 197 198 199 |
# File 'lib/seatlayer/inventory.rb', line 190 def create_designer_session(workspace_id:, chart_id:, allowed_origin:, authority: nil, can_publish: nil, mode: nil, safe_mode_options: nil, features: nil, expires_in_seconds: nil) body = compact({ "workspaceId" => workspace_id, "chartId" => chart_id, "allowedOrigin" => allowed_origin, "authority" => , "canPublish" => can_publish, "mode" => mode, "safeModeOptions" => , "features" => features, "expiresInSeconds" => expires_in_seconds }) @client.post("/v1/designer/sessions", body) end |
#create_manage_session(event_key, allowed_origin:, capabilities:, expires_in_seconds: nil, workspace_id: nil) ⇒ Object
Mint a manage-session token for the control room.
The raw API defaults an omitted list to view-only (+event:view+). This SDK still requires an explicit set so browser authority is visible at each call.
167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/seatlayer/inventory.rb', line 167 def create_manage_session(event_key, allowed_origin:, capabilities:, expires_in_seconds: nil, workspace_id: nil) if capabilities.nil? || capabilities.empty? raise ArgumentError, 'capabilities is required: pass the smallest set the page needs, e.g. ["event:view"].' end unknown = capabilities - CAPABILITIES raise ArgumentError, "unsupported manage capabilities: #{unknown.join(", ")}" unless unknown.empty? body = compact({ "allowedOrigin" => allowed_origin, "capabilities" => capabilities, "expiresInSeconds" => expires_in_seconds, "workspaceId" => workspace_id }) @client.post("/v1/events/#{encode(event_key)}/manage-sessions", body) end |
#revoke_designer_session(session_id) ⇒ Object
rubocop:enable Metrics/ParameterLists
202 203 204 |
# File 'lib/seatlayer/inventory.rb', line 202 def revoke_designer_session(session_id) @client.delete("/v1/designer/sessions/#{encode(session_id)}") end |
#revoke_manage_session(event_key, session_id) ⇒ Object
182 183 184 |
# File 'lib/seatlayer/inventory.rb', line 182 def revoke_manage_session(event_key, session_id) @client.delete("/v1/events/#{encode(event_key)}/manage-sessions/#{encode(session_id)}") end |