seatschart 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +191 -16
- data/lib/seatschart/api/audit_api.rb +2 -2
- data/lib/seatschart/api/charts_api.rb +808 -75
- data/lib/seatschart/api/embed_api.rb +18 -7
- data/lib/seatschart/api/embed_origins_api.rb +63 -2
- data/lib/seatschart/api/event_log_api.rb +2 -2
- data/lib/seatschart/api/events_api.rb +1594 -112
- data/lib/seatschart/api/health_api.rb +244 -0
- data/lib/seatschart/api/listings_api.rb +884 -0
- data/lib/seatschart/api/map_designer_api.rb +11 -9
- data/lib/seatschart/api/object_status_api.rb +2 -2
- data/lib/seatschart/api/public_api.rb +350 -0
- data/lib/seatschart/api/sandboxes_api.rb +672 -0
- data/lib/seatschart/api/seasons_api.rb +455 -42
- data/lib/seatschart/api/seats_api.rb +13 -32
- data/lib/seatschart/api/usage_api.rb +20 -17
- data/lib/seatschart/api/webhooks_api.rb +2 -2
- data/lib/seatschart/api/workspace_api.rb +306 -20
- data/lib/seatschart/models/api_error.rb +307 -0
- data/lib/seatschart/models/api_error_params_value.rb +105 -0
- data/lib/seatschart/models/delete_api_sandboxes_by_sandbox_id200_response.rb +255 -0
- data/lib/seatschart/models/get_api_monitoring_requests200_response.rb +78 -4
- data/lib/seatschart/models/get_api_monitoring_requests200_response_concurrency.rb +318 -0
- data/lib/seatschart/models/get_api_monitoring_requests200_response_concurrency_api_keys_inner.rb +297 -0
- data/lib/seatschart/models/get_api_monitoring_requests200_response_points_inner.rb +38 -4
- data/lib/seatschart/models/get_api_sandboxes200_response.rb +239 -0
- data/lib/seatschart/models/get_api_sandboxes200_response_items_inner.rb +431 -0
- data/lib/seatschart/models/get_api_sandboxes200_response_items_inner_rate_limits.rb +270 -0
- data/lib/seatschart/models/get_api_sandboxes200_response_items_inner_usage.rb +287 -0
- data/lib/seatschart/models/get_api_status200_response.rb +387 -0
- data/lib/seatschart/models/get_api_status200_response_components_inner.rb +330 -0
- data/lib/seatschart/models/get_api_status200_response_components_inner_days_inner.rb +301 -0
- data/lib/seatschart/models/get_api_status200_response_incidents_inner.rb +374 -0
- data/lib/seatschart/models/get_api_status200_response_maintenance_inner.rb +350 -0
- data/lib/seatschart/models/get_api_status503_response.rb +271 -0
- data/lib/seatschart/models/get_api_workspace_buyer_extra_data200_response.rb +241 -0
- data/lib/seatschart/models/get_api_workspace_defaults200_response.rb +254 -0
- data/lib/seatschart/models/get_api_workspace_defaults200_response_renderer.rb +246 -0
- data/lib/seatschart/models/get_api_workspace_defaults200_response_renderer_built_in.rb +270 -0
- data/lib/seatschart/models/get_api_workspace_settings200_response_effective.rb +20 -4
- data/lib/seatschart/models/get_api_workspace_settings200_response_overrides.rb +13 -4
- data/lib/seatschart/models/get_api_workspace_settings200_response_sources.rb +32 -4
- data/lib/seatschart/models/get_api_workspaces200_response_items_inner.rb +34 -5
- data/lib/seatschart/models/patch_api_events_by_event_id_listings_by_listing_id_request.rb +379 -0
- data/lib/seatschart/models/patch_api_events_by_event_id_request.rb +16 -6
- data/lib/seatschart/models/patch_api_listing_types_by_key_request.rb +376 -0
- data/lib/seatschart/models/patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request.rb +268 -0
- data/lib/seatschart/models/patch_api_seasons_by_season_id_request.rb +41 -5
- data/lib/seatschart/models/patch_api_webhooks_by_id_request.rb +1 -1
- data/lib/seatschart/models/patch_api_workspace_chart_validation_request_severities.rb +25 -4
- data/lib/seatschart/models/patch_api_workspace_defaults_request.rb +224 -0
- data/lib/seatschart/models/patch_api_workspace_defaults_request_renderer.rb +249 -0
- data/lib/seatschart/models/patch_api_workspace_settings_request.rb +18 -7
- data/lib/seatschart/models/post_api_charts_by_chart_id_actions_copy_to_workspace_request.rb +39 -1
- data/lib/seatschart/models/post_api_charts_by_chart_id_actions_validate_request.rb +1 -0
- data/lib/seatschart/models/post_api_charts_by_chart_id_actions_validate_request_seats_inner_accessibility.rb +6 -6
- data/lib/seatschart/models/post_api_charts_by_chart_id_map_publish422_response_issues_inner.rb +64 -6
- data/lib/seatschart/models/post_api_charts_by_chart_id_map_publish_request.rb +1 -1
- data/lib/seatschart/models/post_api_embed_tokens_request.rb +18 -15
- data/lib/seatschart/models/post_api_embed_tokens_request_safe_mode_options.rb +226 -0
- data/lib/seatschart/models/post_api_events_actions_change_object_status_request_status_changes_inner.rb +0 -11
- data/lib/seatschart/models/post_api_events_actions_edit_for_sale_config_request.rb +251 -0
- data/lib/seatschart/models/post_api_events_actions_edit_for_sale_config_request_events_inner.rb +322 -0
- data/lib/seatschart/models/post_api_events_bulk_request_events_inner.rb +42 -1
- data/lib/seatschart/models/post_api_events_by_event_id_actions_change_object_status_request.rb +13 -26
- data/lib/seatschart/models/post_api_events_by_event_id_actions_change_object_status_request_listing.rb +392 -0
- data/lib/seatschart/models/post_api_events_by_event_id_actions_edit_for_sale_config_request.rb +277 -0
- data/lib/seatschart/models/post_api_events_by_event_id_actions_edit_for_sale_config_request_for_sale_inner.rb +319 -0
- data/lib/seatschart/models/post_api_events_by_event_id_actions_mark_everything_as_not_for_sale_request.rb +215 -0
- data/lib/seatschart/models/post_api_events_by_event_id_listings_by_listing_id_actions_mark_sold_request.rb +243 -0
- data/lib/seatschart/models/post_api_events_by_event_id_listings_request.rb +435 -0
- data/lib/seatschart/models/post_api_events_by_event_id_listings_request_objects_inner.rb +104 -0
- data/lib/seatschart/models/post_api_events_by_event_id_listings_request_objects_inner_any_of.rb +325 -0
- data/lib/seatschart/models/post_api_events_by_event_id_map_publish_request.rb +215 -0
- data/lib/seatschart/models/post_api_events_request.rb +42 -1
- data/lib/seatschart/models/{patch_api_events_by_event_id_request_categories_inner.rb → post_api_events_request_categories_inner.rb} +3 -3
- data/lib/seatschart/models/post_api_extract_seats200_response.rb +459 -0
- data/lib/seatschart/models/post_api_extract_seats200_response_seats_inner.rb +323 -0
- data/lib/seatschart/models/post_api_extract_seats200_response_suggested_inner.rb +320 -0
- data/lib/seatschart/models/post_api_extract_seats_request.rb +124 -4
- data/lib/seatschart/models/post_api_extract_seats_request_examples.rb +105 -0
- data/lib/seatschart/models/post_api_extract_seats_request_examples_any_of_inner.rb +293 -0
- data/lib/seatschart/models/post_api_extract_seats_request_negatives.rb +105 -0
- data/lib/seatschart/models/post_api_extract_seats_request_region.rb +105 -0
- data/lib/seatschart/models/post_api_extract_seats_request_region_any_of.rb +363 -0
- data/lib/seatschart/models/post_api_ga_confirm_request.rb +0 -44
- data/lib/seatschart/models/post_api_ga_release_request.rb +0 -11
- data/lib/seatschart/models/post_api_ga_reserve_request.rb +0 -33
- data/lib/seatschart/models/post_api_hold_tokens_request.rb +0 -22
- data/lib/seatschart/models/post_api_listing_types_request.rb +439 -0
- data/lib/seatschart/models/post_api_quotes_request.rb +0 -22
- data/lib/seatschart/models/post_api_sandboxes201_response.rb +245 -0
- data/lib/seatschart/models/post_api_sandboxes201_response_admin_key.rb +286 -0
- data/lib/seatschart/models/post_api_sandboxes201_response_copied.rb +313 -0
- data/lib/seatschart/models/post_api_sandboxes201_response_copied_charts_inner.rb +281 -0
- data/lib/seatschart/models/post_api_sandboxes201_response_copied_events_inner.rb +281 -0
- data/lib/seatschart/models/post_api_sandboxes201_response_copied_events_with_own_map_inner.rb +265 -0
- data/lib/seatschart/models/post_api_sandboxes201_response_copied_key_conflicts_inner.rb +287 -0
- data/lib/seatschart/models/post_api_sandboxes201_response_copied_seasons_inner.rb +312 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_actions_copy_from_production200_response.rb +313 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_actions_copy_from_production_request.rb +255 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_actions_join200_response.rb +271 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_actions_reset200_response.rb +268 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_actions_reset_request.rb +225 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_admin_key201_response.rb +253 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_admin_key201_response_api_key.rb +286 -0
- data/lib/seatschart/models/post_api_sandboxes_by_sandbox_id_admin_key_request.rb +252 -0
- data/lib/seatschart/models/post_api_sandboxes_request.rb +319 -0
- data/lib/seatschart/models/post_api_seasons_by_season_id_partial_seasons_request.rb +27 -1
- data/lib/seatschart/models/post_api_seasons_request.rb +40 -4
- data/lib/seatschart/models/post_api_seats_best_available_request.rb +0 -11
- data/lib/seatschart/models/post_api_seats_confirm_request.rb +5 -49
- data/lib/seatschart/models/post_api_seats_release_request.rb +5 -16
- data/lib/seatschart/models/post_api_seats_reserve_request.rb +5 -27
- data/lib/seatschart/models/post_api_viewer_tokens_request.rb +0 -11
- data/lib/seatschart/models/post_api_webhooks_request.rb +1 -1
- data/lib/seatschart/models/post_api_workspaces_request.rb +1 -1
- data/lib/seatschart/models/put_api_charts_by_chart_id_map_draft_request.rb +349 -0
- data/lib/seatschart/models/put_api_workspace_buyer_extra_data_request.rb +260 -0
- data/lib/seatschart/models/put_internal_status_notices_request.rb +242 -0
- data/lib/seatschart/models/put_internal_status_notices_request_notices_inner.rb +445 -0
- data/lib/seatschart/retry.rb +106 -7
- data/lib/seatschart/version.rb +1 -1
- data/lib/seatschart.rb +69 -2
- metadata +71 -4
- data/lib/seatschart/api/default_api.rb +0 -763
|
@@ -19,8 +19,8 @@ module SeatsChart
|
|
|
19
19
|
def initialize(api_client = ApiClient.default)
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
|
-
# Extract seat candidates
|
|
23
|
-
# Multipart
|
|
22
|
+
# Extract seat candidates from a floor-plan image
|
|
23
|
+
# Multipart image (PNG/JPEG/WebP, at most 8 MiB and 16 megapixels). Returns seat centres in source-image pixels for review in the map designer, plus the `mode` that produced them; nothing is persisted. Requires CV_SERVICE_URL. Review (`auto` and `examples`): every seat carries a `confidence` (0-1) and the uncertain ones `doubtful: true`; `review` counts them and the designer shows them for a keep/remove decision instead of keeping them silently. `legibility` is `ok`, `low_resolution` or `no_individual_seats`; when it is not `ok` every seat is doubtful and the count is not reliable. `suggested` lists places where a seat was probably missed (not part of `seats`); the designer offers them in the review. Clicks never remove a seat on weak evidence: a seat they argue against stays, flagged `doubtful`. When the clicked seats (or, without clicks, an illegible plan) are tiny, the scanner reads the plan again upscaled. Vector plans: send the PDF or SVG as `vector` (and `vector_page`) next to its rendered image; the response says whether its geometry was `used`. Modes: `auto` (default) finds the repeated seat glyphs on its own and infers size, rotation and threshold; `examples` uses 1-24 clicked seats (`examples`): a click on a missed seat adds that look, then only detections consistent with the clicked seats (their look, size and spacing, or the same drawn vector shape) stay, plus seats of another look that the scanner is confident about; every clicked seat is kept; `edges` is the legacy contour mode tuned by the `seat_diameter`/`closing_kernel` query parameters. Refinements for `auto` and `examples`: `negatives` (points the user marked as not a seat after a scan) remove that detection and its look-alikes, or the whole style when most of it looks alike; `region` limits the scan to a rectangle. `calibration` (sample patches) and `profile` (the mapa1-mapa6 regression benchmark) are kept for backward compatibility and cannot be combined with `mode`, `examples`, `negatives` or `region`. Errors: 422 for invalid parameters or work budgets, 413/415 for oversized or unsupported images (or a `vector` file that is neither PDF nor SVG), 503 when the scanner is busy or not configured, 504 on its 80-second deadline.
|
|
24
24
|
# @param post_api_extract_seats_request [PostApiExtractSeatsRequest]
|
|
25
25
|
# @param [Hash] opts the optional parameters
|
|
26
26
|
# @option opts [Float] :seat_diameter
|
|
@@ -28,14 +28,14 @@ module SeatsChart
|
|
|
28
28
|
# @option opts [Float] :canny_low
|
|
29
29
|
# @option opts [Float] :canny_high
|
|
30
30
|
# @option opts [String] :idempotency_key Required on transactional routes. Reuse the same key for every retry of one logical operation; the API replays the stored outcome.
|
|
31
|
-
# @return [
|
|
31
|
+
# @return [PostApiExtractSeats200Response]
|
|
32
32
|
def post_api_extract_seats(post_api_extract_seats_request, opts = {})
|
|
33
|
-
post_api_extract_seats_with_http_info(post_api_extract_seats_request, opts)
|
|
34
|
-
|
|
33
|
+
data, _status_code, _headers = post_api_extract_seats_with_http_info(post_api_extract_seats_request, opts)
|
|
34
|
+
data
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
# Extract seat candidates
|
|
38
|
-
# Multipart
|
|
37
|
+
# Extract seat candidates from a floor-plan image
|
|
38
|
+
# Multipart image (PNG/JPEG/WebP, at most 8 MiB and 16 megapixels). Returns seat centres in source-image pixels for review in the map designer, plus the `mode` that produced them; nothing is persisted. Requires CV_SERVICE_URL. Review (`auto` and `examples`): every seat carries a `confidence` (0-1) and the uncertain ones `doubtful: true`; `review` counts them and the designer shows them for a keep/remove decision instead of keeping them silently. `legibility` is `ok`, `low_resolution` or `no_individual_seats`; when it is not `ok` every seat is doubtful and the count is not reliable. `suggested` lists places where a seat was probably missed (not part of `seats`); the designer offers them in the review. Clicks never remove a seat on weak evidence: a seat they argue against stays, flagged `doubtful`. When the clicked seats (or, without clicks, an illegible plan) are tiny, the scanner reads the plan again upscaled. Vector plans: send the PDF or SVG as `vector` (and `vector_page`) next to its rendered image; the response says whether its geometry was `used`. Modes: `auto` (default) finds the repeated seat glyphs on its own and infers size, rotation and threshold; `examples` uses 1-24 clicked seats (`examples`): a click on a missed seat adds that look, then only detections consistent with the clicked seats (their look, size and spacing, or the same drawn vector shape) stay, plus seats of another look that the scanner is confident about; every clicked seat is kept; `edges` is the legacy contour mode tuned by the `seat_diameter`/`closing_kernel` query parameters. Refinements for `auto` and `examples`: `negatives` (points the user marked as not a seat after a scan) remove that detection and its look-alikes, or the whole style when most of it looks alike; `region` limits the scan to a rectangle. `calibration` (sample patches) and `profile` (the mapa1-mapa6 regression benchmark) are kept for backward compatibility and cannot be combined with `mode`, `examples`, `negatives` or `region`. Errors: 422 for invalid parameters or work budgets, 413/415 for oversized or unsupported images (or a `vector` file that is neither PDF nor SVG), 503 when the scanner is busy or not configured, 504 on its 80-second deadline.
|
|
39
39
|
# @param post_api_extract_seats_request [PostApiExtractSeatsRequest]
|
|
40
40
|
# @param [Hash] opts the optional parameters
|
|
41
41
|
# @option opts [Float] :seat_diameter
|
|
@@ -43,7 +43,7 @@ module SeatsChart
|
|
|
43
43
|
# @option opts [Float] :canny_low
|
|
44
44
|
# @option opts [Float] :canny_high
|
|
45
45
|
# @option opts [String] :idempotency_key Required on transactional routes. Reuse the same key for every retry of one logical operation; the API replays the stored outcome.
|
|
46
|
-
# @return [Array<(
|
|
46
|
+
# @return [Array<(PostApiExtractSeats200Response, Integer, Hash)>] PostApiExtractSeats200Response data, response status code and response headers
|
|
47
47
|
def post_api_extract_seats_with_http_info(post_api_extract_seats_request, opts = {})
|
|
48
48
|
if @api_client.config.debugging
|
|
49
49
|
@api_client.config.logger.debug 'Calling API: MapDesignerApi.post_api_extract_seats ...'
|
|
@@ -96,6 +96,8 @@ module SeatsChart
|
|
|
96
96
|
|
|
97
97
|
# header parameters
|
|
98
98
|
header_params = opts[:header_params] || {}
|
|
99
|
+
# HTTP header 'Accept' (if needed)
|
|
100
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json', 'multipart/form-data', 'text/plain']) unless header_params['Accept']
|
|
99
101
|
# HTTP header 'Content-Type'
|
|
100
102
|
content_type = @api_client.select_header_content_type(['application/json', 'multipart/form-data', 'text/plain'])
|
|
101
103
|
if !content_type.nil?
|
|
@@ -110,7 +112,7 @@ module SeatsChart
|
|
|
110
112
|
post_body = opts[:debug_body] || @api_client.object_to_http_body(post_api_extract_seats_request)
|
|
111
113
|
|
|
112
114
|
# return_type
|
|
113
|
-
return_type = opts[:debug_return_type]
|
|
115
|
+
return_type = opts[:debug_return_type] || 'PostApiExtractSeats200Response'
|
|
114
116
|
|
|
115
117
|
# auth_names
|
|
116
118
|
auth_names = opts[:debug_auth_names] || ['ApiKeyAuth', 'BearerAuth']
|
|
@@ -439,7 +439,7 @@ module SeatsChart
|
|
|
439
439
|
end
|
|
440
440
|
|
|
441
441
|
# Put booked objects up for resale
|
|
442
|
-
# Resale retains the durable owner and sold status. Optional `resaleListingId` groups the objects into one listing (extraData.resaleListingId). Optional `resalePriceCents` is stored on extraData and merged into GET /seats on the next cache rebuild. Administrative status change on the path event. One SQL transaction per event; seats are locked in id order and every precondition is evaluated under those row locks, so a concurrent hold, purchase or other change cannot slip in between the check and the write. Requires **Idempotency-Key**; a replay returns the stored response and a retry after a crash reuses the same durable booking order. **Objects** (max 64 per call, per event): seat UUID or seat label (labels are resolved per event; a label that matches several seats returns 409 `ambiguous_label`; unknown references return 404 `objects_not_found`). General admission areas are addressed by UUID or name **with `quantity`** (1–10000): - `booked`: the places are first reserved in the same Redis structure buyers hold from (capacity minus not-for-sale places), then `sold_count` is incremented in the transaction with a `sold_count + quantity <= capacity` guard; the durable receipt belongs to the administrative booking order (cancel it with POST /orders/{orderId}/cancel). - `reservedByToken` (or POST …/actions/hold, GA only): holds the places atomically against capacity minus withheld, sold and held places and issues a **GA hold token** (`hold: { holdToken, holdUserId, holdExpiresAt }`), confirmable with POST /ga/confirm (`holdToken`, `userId` = `holdUserId`). Optional `userId` (customer identity of the hold; one hold per user and area, 409 `hold_exists`) and `holdExpiresInMinutes` (1–120). 409 `insufficient_capacity`. - `RELEASE` / `free` without `holdToken`: releases places of **administrative** bookings (newest receipts first, optionally only those of `orderId`), recording a release receipt per consumed booking and decrementing `sold_count` under the GA row lock (409 `insufficient_booked_places` with `available`). Buyer purchases are never released here. - `RELEASE` with `holdToken` (GA hold token): releases that many places held by the token (409 `insufficient_held_places`, `hold_token_conflict`). Every GA operation is idempotent per Idempotency-Key (deterministic receipts/holds/markers), and capacity can never be exceeded nor `sold_count` go below zero. Response `gaAreas: { <areaId>: { areaId, label, quantity, soldCount, status, heldCount?, releasedFrom? } }`. **`allowedPreviousStatuses` / `rejectedPreviousStatuses`**: `free`, `booked`, `resale`, `reservedByToken`, `retired` or a custom status. On violation nothing is written and 409 `illegal_previous_status` lists every offending object with its current status. For GA quantities the previous status follows from the operation: `free` for book/hold, `booked` for a release, `reservedByToken` for a release by `holdToken`. **`holdToken`**: with status `booked`, books seats held by that hold token. The hold session is frozen first, so the buyer cannot confirm the same seats concurrently; seats held by another token or not held by this one return 409 `hold_token_conflict`. Remaining seats of the session stay held. With `RELEASE` it releases GA places (see above). **`ticketType`** (per object, `{ objectId, ticketType }`, status `booked` only): ticket type id recorded on the new booking (order item and reservation, like a confirmed sale) and returned per object; it shows up in reports by ticket type. Other statuses return 400. **`keepExtraData`**: keeps the stored extraData; per-object `extraData` sent with it is merged on top (without it, the object's extraData is replaced by the one sent, or cleared). **`ticketBuyerId`** (opaque, ≤ 256 chars, never an internal user id) is recorded on new bookings, object statuses, status history and GA hold tokens; query it with GET /events/{eventId}/objects?ticketBuyerId=…. **`channelKeys`** (channel secret keys or channel ids) restricts the change to public objects and objects of the named channels (409 `channel_forbidden` otherwise). Without `channelKeys`, or with `ignoreChannels: true`, channel partitions are ignored (backward-compatible default). **`events`** (max 50, must include the path event): applies the same change to each event of the tenant, labels resolved per event. By default each event is atomic on its own (no cross-event atomicity): response 200 when every event succeeded, otherwise 207 with `results[]` (`{ eventId, ok, objects | status, error, message }`), `succeeded` and `failed`. Replaying the same Idempotency-Key returns the stored per-event outcome; retry failed events (listed with their error) with a new key. **`atomic: true`** makes the whole call all-or-nothing in one SQL transaction (same engine as POST /events/actions/change-object-status; at most 512 objects across the events): 200 with `atomic: true` when everything was applied, otherwise the status of the first failing event and `results[]` with `outcome: failed` (with `error`, `message`) or `rolled_back` per event — nothing was written. GA administrative holds cannot be atomic (400 `not_atomic`). **`seasonId`** (season or partial season id; XOR with `events`): fans out by unique label to every live member in one transaction (cap 50 members, 64 seats overall). Preconditions and channelKeys apply to every member seat.
|
|
442
|
+
# Resale retains the durable owner and sold status. Optional `resaleListingId` groups the objects into one listing (extraData.resaleListingId). Optional `resalePriceCents` is stored on extraData and merged into GET /seats on the next cache rebuild. Optional `listing` also creates a server-side listing of the objects (type, sellAsWhole, price; see the listings tag): viewers then show and sell it as one listing. Administrative status change on the path event. One SQL transaction per event; seats are locked in id order and every precondition is evaluated under those row locks, so a concurrent hold, purchase or other change cannot slip in between the check and the write. Requires **Idempotency-Key**; a replay returns the stored response and a retry after a crash reuses the same durable booking order. **Objects** (max 64 per call, per event): seat UUID or seat label (labels are resolved per event; a label that matches several seats returns 409 `ambiguous_label`; unknown references return 404 `objects_not_found`). General admission areas are addressed by UUID or name **with `quantity`** (1–10000): - `booked`: the places are first reserved in the same Redis structure buyers hold from (capacity minus not-for-sale places), then `sold_count` is incremented in the transaction with a `sold_count + quantity <= capacity` guard; the durable receipt belongs to the administrative booking order (cancel it with POST /orders/{orderId}/cancel). - `reservedByToken` (or POST …/actions/hold, GA only): holds the places atomically against capacity minus withheld, sold and held places and issues a **GA hold token** (`hold: { holdToken, holdUserId, holdExpiresAt }`), confirmable with POST /ga/confirm (`holdToken`, `userId` = `holdUserId`). Optional `userId` (customer identity of the hold; one hold per user and area, 409 `hold_exists`) and `holdExpiresInMinutes` (1–120). 409 `insufficient_capacity`. - `RELEASE` / `free` without `holdToken`: releases places of **administrative** bookings (newest receipts first, optionally only those of `orderId`), recording a release receipt per consumed booking and decrementing `sold_count` under the GA row lock (409 `insufficient_booked_places` with `available`). Buyer purchases are never released here. - `RELEASE` with `holdToken` (GA hold token): releases that many places held by the token (409 `insufficient_held_places`, `hold_token_conflict`). Every GA operation is idempotent per Idempotency-Key (deterministic receipts/holds/markers), and capacity can never be exceeded nor `sold_count` go below zero. Response `gaAreas: { <areaId>: { areaId, label, quantity, soldCount, status, heldCount?, releasedFrom? } }`. **`allowedPreviousStatuses` / `rejectedPreviousStatuses`**: `free`, `booked`, `resale`, `reservedByToken`, `retired` or a custom status. On violation nothing is written and 409 `illegal_previous_status` lists every offending object with its current status. For GA quantities the previous status follows from the operation: `free` for book/hold, `booked` for a release, `reservedByToken` for a release by `holdToken`. **`holdToken`**: with status `booked`, books seats held by that hold token. The hold session is frozen first, so the buyer cannot confirm the same seats concurrently; seats held by another token or not held by this one return 409 `hold_token_conflict`. Remaining seats of the session stay held. With `RELEASE` it releases GA places (see above). **`ticketType`** (per object, `{ objectId, ticketType }`, status `booked` only): ticket type id recorded on the new booking (order item and reservation, like a confirmed sale) and returned per object; it shows up in reports by ticket type. Other statuses return 400. **`keepExtraData`**: keeps the stored extraData; per-object `extraData` sent with it is merged on top (without it, the object's extraData is replaced by the one sent, or cleared). **`ticketBuyerId`** (opaque, ≤ 256 chars, never an internal user id) is recorded on new bookings, object statuses, status history and GA hold tokens; query it with GET /events/{eventId}/objects?ticketBuyerId=…. **`channelKeys`** (channel secret keys or channel ids) restricts the change to public objects and objects of the named channels (409 `channel_forbidden` otherwise). Without `channelKeys`, or with `ignoreChannels: true`, channel partitions are ignored (backward-compatible default). **`events`** (max 50, must include the path event): applies the same change to each event of the tenant, labels resolved per event. By default each event is atomic on its own (no cross-event atomicity): response 200 when every event succeeded, otherwise 207 with `results[]` (`{ eventId, ok, objects | status, error, message }`), `succeeded` and `failed`. Replaying the same Idempotency-Key returns the stored per-event outcome; retry failed events (listed with their error) with a new key. **`atomic: true`** makes the whole call all-or-nothing in one SQL transaction (same engine as POST /events/actions/change-object-status; at most 512 objects across the events): 200 with `atomic: true` when everything was applied, otherwise the status of the first failing event and `results[]` with `outcome: failed` (with `error`, `message`) or `rolled_back` per event — nothing was written. GA administrative holds cannot be atomic (400 `not_atomic`). **`seasonId`** (season or partial season id; XOR with `events`): fans out by unique label to every live member in one transaction (cap 50 members, 64 seats overall). Preconditions and channelKeys apply to every member seat.
|
|
443
443
|
# @param event_id [String]
|
|
444
444
|
# @param post_api_events_by_event_id_actions_change_object_status_request [PostApiEventsByEventIdActionsChangeObjectStatusRequest]
|
|
445
445
|
# @param [Hash] opts the optional parameters
|
|
@@ -451,7 +451,7 @@ module SeatsChart
|
|
|
451
451
|
end
|
|
452
452
|
|
|
453
453
|
# Put booked objects up for resale
|
|
454
|
-
# Resale retains the durable owner and sold status. Optional `resaleListingId` groups the objects into one listing (extraData.resaleListingId). Optional `resalePriceCents` is stored on extraData and merged into GET /seats on the next cache rebuild. Administrative status change on the path event. One SQL transaction per event; seats are locked in id order and every precondition is evaluated under those row locks, so a concurrent hold, purchase or other change cannot slip in between the check and the write. Requires **Idempotency-Key**; a replay returns the stored response and a retry after a crash reuses the same durable booking order. **Objects** (max 64 per call, per event): seat UUID or seat label (labels are resolved per event; a label that matches several seats returns 409 `ambiguous_label`; unknown references return 404 `objects_not_found`). General admission areas are addressed by UUID or name **with `quantity`** (1–10000): - `booked`: the places are first reserved in the same Redis structure buyers hold from (capacity minus not-for-sale places), then `sold_count` is incremented in the transaction with a `sold_count + quantity <= capacity` guard; the durable receipt belongs to the administrative booking order (cancel it with POST /orders/{orderId}/cancel). - `reservedByToken` (or POST …/actions/hold, GA only): holds the places atomically against capacity minus withheld, sold and held places and issues a **GA hold token** (`hold: { holdToken, holdUserId, holdExpiresAt }`), confirmable with POST /ga/confirm (`holdToken`, `userId` = `holdUserId`). Optional `userId` (customer identity of the hold; one hold per user and area, 409 `hold_exists`) and `holdExpiresInMinutes` (1–120). 409 `insufficient_capacity`. - `RELEASE` / `free` without `holdToken`: releases places of **administrative** bookings (newest receipts first, optionally only those of `orderId`), recording a release receipt per consumed booking and decrementing `sold_count` under the GA row lock (409 `insufficient_booked_places` with `available`). Buyer purchases are never released here. - `RELEASE` with `holdToken` (GA hold token): releases that many places held by the token (409 `insufficient_held_places`, `hold_token_conflict`). Every GA operation is idempotent per Idempotency-Key (deterministic receipts/holds/markers), and capacity can never be exceeded nor `sold_count` go below zero. Response `gaAreas: { <areaId>: { areaId, label, quantity, soldCount, status, heldCount?, releasedFrom? } }`. **`allowedPreviousStatuses` / `rejectedPreviousStatuses`**: `free`, `booked`, `resale`, `reservedByToken`, `retired` or a custom status. On violation nothing is written and 409 `illegal_previous_status` lists every offending object with its current status. For GA quantities the previous status follows from the operation: `free` for book/hold, `booked` for a release, `reservedByToken` for a release by `holdToken`. **`holdToken`**: with status `booked`, books seats held by that hold token. The hold session is frozen first, so the buyer cannot confirm the same seats concurrently; seats held by another token or not held by this one return 409 `hold_token_conflict`. Remaining seats of the session stay held. With `RELEASE` it releases GA places (see above). **`ticketType`** (per object, `{ objectId, ticketType }`, status `booked` only): ticket type id recorded on the new booking (order item and reservation, like a confirmed sale) and returned per object; it shows up in reports by ticket type. Other statuses return 400. **`keepExtraData`**: keeps the stored extraData; per-object `extraData` sent with it is merged on top (without it, the object's extraData is replaced by the one sent, or cleared). **`ticketBuyerId`** (opaque, ≤ 256 chars, never an internal user id) is recorded on new bookings, object statuses, status history and GA hold tokens; query it with GET /events/{eventId}/objects?ticketBuyerId=…. **`channelKeys`** (channel secret keys or channel ids) restricts the change to public objects and objects of the named channels (409 `channel_forbidden` otherwise). Without `channelKeys`, or with `ignoreChannels: true`, channel partitions are ignored (backward-compatible default). **`events`** (max 50, must include the path event): applies the same change to each event of the tenant, labels resolved per event. By default each event is atomic on its own (no cross-event atomicity): response 200 when every event succeeded, otherwise 207 with `results[]` (`{ eventId, ok, objects | status, error, message }`), `succeeded` and `failed`. Replaying the same Idempotency-Key returns the stored per-event outcome; retry failed events (listed with their error) with a new key. **`atomic: true`** makes the whole call all-or-nothing in one SQL transaction (same engine as POST /events/actions/change-object-status; at most 512 objects across the events): 200 with `atomic: true` when everything was applied, otherwise the status of the first failing event and `results[]` with `outcome: failed` (with `error`, `message`) or `rolled_back` per event — nothing was written. GA administrative holds cannot be atomic (400 `not_atomic`). **`seasonId`** (season or partial season id; XOR with `events`): fans out by unique label to every live member in one transaction (cap 50 members, 64 seats overall). Preconditions and channelKeys apply to every member seat.
|
|
454
|
+
# Resale retains the durable owner and sold status. Optional `resaleListingId` groups the objects into one listing (extraData.resaleListingId). Optional `resalePriceCents` is stored on extraData and merged into GET /seats on the next cache rebuild. Optional `listing` also creates a server-side listing of the objects (type, sellAsWhole, price; see the listings tag): viewers then show and sell it as one listing. Administrative status change on the path event. One SQL transaction per event; seats are locked in id order and every precondition is evaluated under those row locks, so a concurrent hold, purchase or other change cannot slip in between the check and the write. Requires **Idempotency-Key**; a replay returns the stored response and a retry after a crash reuses the same durable booking order. **Objects** (max 64 per call, per event): seat UUID or seat label (labels are resolved per event; a label that matches several seats returns 409 `ambiguous_label`; unknown references return 404 `objects_not_found`). General admission areas are addressed by UUID or name **with `quantity`** (1–10000): - `booked`: the places are first reserved in the same Redis structure buyers hold from (capacity minus not-for-sale places), then `sold_count` is incremented in the transaction with a `sold_count + quantity <= capacity` guard; the durable receipt belongs to the administrative booking order (cancel it with POST /orders/{orderId}/cancel). - `reservedByToken` (or POST …/actions/hold, GA only): holds the places atomically against capacity minus withheld, sold and held places and issues a **GA hold token** (`hold: { holdToken, holdUserId, holdExpiresAt }`), confirmable with POST /ga/confirm (`holdToken`, `userId` = `holdUserId`). Optional `userId` (customer identity of the hold; one hold per user and area, 409 `hold_exists`) and `holdExpiresInMinutes` (1–120). 409 `insufficient_capacity`. - `RELEASE` / `free` without `holdToken`: releases places of **administrative** bookings (newest receipts first, optionally only those of `orderId`), recording a release receipt per consumed booking and decrementing `sold_count` under the GA row lock (409 `insufficient_booked_places` with `available`). Buyer purchases are never released here. - `RELEASE` with `holdToken` (GA hold token): releases that many places held by the token (409 `insufficient_held_places`, `hold_token_conflict`). Every GA operation is idempotent per Idempotency-Key (deterministic receipts/holds/markers), and capacity can never be exceeded nor `sold_count` go below zero. Response `gaAreas: { <areaId>: { areaId, label, quantity, soldCount, status, heldCount?, releasedFrom? } }`. **`allowedPreviousStatuses` / `rejectedPreviousStatuses`**: `free`, `booked`, `resale`, `reservedByToken`, `retired` or a custom status. On violation nothing is written and 409 `illegal_previous_status` lists every offending object with its current status. For GA quantities the previous status follows from the operation: `free` for book/hold, `booked` for a release, `reservedByToken` for a release by `holdToken`. **`holdToken`**: with status `booked`, books seats held by that hold token. The hold session is frozen first, so the buyer cannot confirm the same seats concurrently; seats held by another token or not held by this one return 409 `hold_token_conflict`. Remaining seats of the session stay held. With `RELEASE` it releases GA places (see above). **`ticketType`** (per object, `{ objectId, ticketType }`, status `booked` only): ticket type id recorded on the new booking (order item and reservation, like a confirmed sale) and returned per object; it shows up in reports by ticket type. Other statuses return 400. **`keepExtraData`**: keeps the stored extraData; per-object `extraData` sent with it is merged on top (without it, the object's extraData is replaced by the one sent, or cleared). **`ticketBuyerId`** (opaque, ≤ 256 chars, never an internal user id) is recorded on new bookings, object statuses, status history and GA hold tokens; query it with GET /events/{eventId}/objects?ticketBuyerId=…. **`channelKeys`** (channel secret keys or channel ids) restricts the change to public objects and objects of the named channels (409 `channel_forbidden` otherwise). Without `channelKeys`, or with `ignoreChannels: true`, channel partitions are ignored (backward-compatible default). **`events`** (max 50, must include the path event): applies the same change to each event of the tenant, labels resolved per event. By default each event is atomic on its own (no cross-event atomicity): response 200 when every event succeeded, otherwise 207 with `results[]` (`{ eventId, ok, objects | status, error, message }`), `succeeded` and `failed`. Replaying the same Idempotency-Key returns the stored per-event outcome; retry failed events (listed with their error) with a new key. **`atomic: true`** makes the whole call all-or-nothing in one SQL transaction (same engine as POST /events/actions/change-object-status; at most 512 objects across the events): 200 with `atomic: true` when everything was applied, otherwise the status of the first failing event and `results[]` with `outcome: failed` (with `error`, `message`) or `rolled_back` per event — nothing was written. GA administrative holds cannot be atomic (400 `not_atomic`). **`seasonId`** (season or partial season id; XOR with `events`): fans out by unique label to every live member in one transaction (cap 50 members, 64 seats overall). Preconditions and channelKeys apply to every member seat.
|
|
455
455
|
# @param event_id [String]
|
|
456
456
|
# @param post_api_events_by_event_id_actions_change_object_status_request [PostApiEventsByEventIdActionsChangeObjectStatusRequest]
|
|
457
457
|
# @param [Hash] opts the optional parameters
|
|
@@ -19,6 +19,356 @@ module SeatsChart
|
|
|
19
19
|
def initialize(api_client = ApiClient.default)
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
|
+
# Map-only embed policy of a chart
|
|
23
|
+
# Used by the Next.js map-only viewer (`/viewer/chart/{chart}?workspaceKey=…`) to build CSP frame-ancestors and validate `parent_origin`, like the event embed policy: `{ origins, chart: { id, name }, rendererDefaults }`. No tenant id. A deactivated workspace returns 403 `workspace_deactivated`; an unknown key or chart, a chart that was never published or is archived: 404 `not_found` (errors are `no-store`). CDN cache key: path + Origin + normalized Accept-Encoding.
|
|
24
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
25
|
+
# @param chart [String] Chart id or chart key.
|
|
26
|
+
# @param [Hash] opts the optional parameters
|
|
27
|
+
# @return [nil]
|
|
28
|
+
def get_api_public_by_public_key_charts_by_chart_embed_policy(public_key, chart, opts = {})
|
|
29
|
+
get_api_public_by_public_key_charts_by_chart_embed_policy_with_http_info(public_key, chart, opts)
|
|
30
|
+
nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Map-only embed policy of a chart
|
|
34
|
+
# Used by the Next.js map-only viewer (`/viewer/chart/{chart}?workspaceKey=…`) to build CSP frame-ancestors and validate `parent_origin`, like the event embed policy: `{ origins, chart: { id, name }, rendererDefaults }`. No tenant id. A deactivated workspace returns 403 `workspace_deactivated`; an unknown key or chart, a chart that was never published or is archived: 404 `not_found` (errors are `no-store`). CDN cache key: path + Origin + normalized Accept-Encoding.
|
|
35
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
36
|
+
# @param chart [String] Chart id or chart key.
|
|
37
|
+
# @param [Hash] opts the optional parameters
|
|
38
|
+
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
39
|
+
def get_api_public_by_public_key_charts_by_chart_embed_policy_with_http_info(public_key, chart, opts = {})
|
|
40
|
+
if @api_client.config.debugging
|
|
41
|
+
@api_client.config.logger.debug 'Calling API: PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy ...'
|
|
42
|
+
end
|
|
43
|
+
# verify the required parameter 'public_key' is set
|
|
44
|
+
if @api_client.config.client_side_validation && public_key.nil?
|
|
45
|
+
fail ArgumentError, "Missing the required parameter 'public_key' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy"
|
|
46
|
+
end
|
|
47
|
+
if @api_client.config.client_side_validation && public_key.to_s.length > 64
|
|
48
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy, the character length must be smaller than or equal to 64.'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
if @api_client.config.client_side_validation && public_key.to_s.length < 1
|
|
52
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy, the character length must be great than or equal to 1.'
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# verify the required parameter 'chart' is set
|
|
56
|
+
if @api_client.config.client_side_validation && chart.nil?
|
|
57
|
+
fail ArgumentError, "Missing the required parameter 'chart' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy"
|
|
58
|
+
end
|
|
59
|
+
if @api_client.config.client_side_validation && chart.to_s.length > 100
|
|
60
|
+
fail ArgumentError, 'invalid value for "chart" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy, the character length must be smaller than or equal to 100.'
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
if @api_client.config.client_side_validation && chart.to_s.length < 1
|
|
64
|
+
fail ArgumentError, 'invalid value for "chart" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy, the character length must be great than or equal to 1.'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
pattern = Regexp.new(/^[A-Za-z0-9][A-Za-z0-9_.~-]{0,99}$/)
|
|
68
|
+
if @api_client.config.client_side_validation && chart !~ pattern
|
|
69
|
+
fail ArgumentError, "invalid value for 'chart' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy, must conform to the pattern #{pattern}."
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# resource path
|
|
73
|
+
local_var_path = '/api/public/{publicKey}/charts/{chart}/embed-policy'.sub('{' + 'publicKey' + '}', CGI.escape(public_key.to_s)).sub('{' + 'chart' + '}', CGI.escape(chart.to_s))
|
|
74
|
+
|
|
75
|
+
# query parameters
|
|
76
|
+
query_params = opts[:query_params] || {}
|
|
77
|
+
|
|
78
|
+
# header parameters
|
|
79
|
+
header_params = opts[:header_params] || {}
|
|
80
|
+
|
|
81
|
+
# form parameters
|
|
82
|
+
form_params = opts[:form_params] || {}
|
|
83
|
+
|
|
84
|
+
# http body (model)
|
|
85
|
+
post_body = opts[:debug_body]
|
|
86
|
+
|
|
87
|
+
# return_type
|
|
88
|
+
return_type = opts[:debug_return_type]
|
|
89
|
+
|
|
90
|
+
# auth_names
|
|
91
|
+
auth_names = opts[:debug_auth_names] || []
|
|
92
|
+
|
|
93
|
+
new_options = opts.merge(
|
|
94
|
+
:operation => :"PublicApi.get_api_public_by_public_key_charts_by_chart_embed_policy",
|
|
95
|
+
:header_params => header_params,
|
|
96
|
+
:query_params => query_params,
|
|
97
|
+
:form_params => form_params,
|
|
98
|
+
:body => post_body,
|
|
99
|
+
:auth_names => auth_names,
|
|
100
|
+
:return_type => return_type
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
104
|
+
if @api_client.config.debugging
|
|
105
|
+
@api_client.config.logger.debug "API called: PublicApi#get_api_public_by_public_key_charts_by_chart_embed_policy\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
106
|
+
end
|
|
107
|
+
return data, status_code, headers
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Map-only chart geometry (immutable, CDN-cacheable)
|
|
111
|
+
# Content-addressed published geometry of the chart (sha256 of the canonical JSON; clients verify it), the same document as the chart preview geometry. `Cache-Control: public, max-age=31536000, immutable`. Unknown hash: 404. A deactivated workspace returns 403 `workspace_deactivated`; an unknown key or chart, a chart that was never published or is archived: 404 `not_found` (errors are `no-store`). CDN cache key: path + Origin + normalized Accept-Encoding.
|
|
112
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
113
|
+
# @param chart [String] Chart id or chart key.
|
|
114
|
+
# @param hash [String]
|
|
115
|
+
# @param [Hash] opts the optional parameters
|
|
116
|
+
# @return [nil]
|
|
117
|
+
def get_api_public_by_public_key_charts_by_chart_geometry_by_hash(public_key, chart, hash, opts = {})
|
|
118
|
+
get_api_public_by_public_key_charts_by_chart_geometry_by_hash_with_http_info(public_key, chart, hash, opts)
|
|
119
|
+
nil
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Map-only chart geometry (immutable, CDN-cacheable)
|
|
123
|
+
# Content-addressed published geometry of the chart (sha256 of the canonical JSON; clients verify it), the same document as the chart preview geometry. `Cache-Control: public, max-age=31536000, immutable`. Unknown hash: 404. A deactivated workspace returns 403 `workspace_deactivated`; an unknown key or chart, a chart that was never published or is archived: 404 `not_found` (errors are `no-store`). CDN cache key: path + Origin + normalized Accept-Encoding.
|
|
124
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
125
|
+
# @param chart [String] Chart id or chart key.
|
|
126
|
+
# @param hash [String]
|
|
127
|
+
# @param [Hash] opts the optional parameters
|
|
128
|
+
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
129
|
+
def get_api_public_by_public_key_charts_by_chart_geometry_by_hash_with_http_info(public_key, chart, hash, opts = {})
|
|
130
|
+
if @api_client.config.debugging
|
|
131
|
+
@api_client.config.logger.debug 'Calling API: PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash ...'
|
|
132
|
+
end
|
|
133
|
+
# verify the required parameter 'public_key' is set
|
|
134
|
+
if @api_client.config.client_side_validation && public_key.nil?
|
|
135
|
+
fail ArgumentError, "Missing the required parameter 'public_key' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash"
|
|
136
|
+
end
|
|
137
|
+
if @api_client.config.client_side_validation && public_key.to_s.length > 64
|
|
138
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash, the character length must be smaller than or equal to 64.'
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
if @api_client.config.client_side_validation && public_key.to_s.length < 1
|
|
142
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash, the character length must be great than or equal to 1.'
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# verify the required parameter 'chart' is set
|
|
146
|
+
if @api_client.config.client_side_validation && chart.nil?
|
|
147
|
+
fail ArgumentError, "Missing the required parameter 'chart' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash"
|
|
148
|
+
end
|
|
149
|
+
if @api_client.config.client_side_validation && chart.to_s.length > 100
|
|
150
|
+
fail ArgumentError, 'invalid value for "chart" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash, the character length must be smaller than or equal to 100.'
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
if @api_client.config.client_side_validation && chart.to_s.length < 1
|
|
154
|
+
fail ArgumentError, 'invalid value for "chart" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash, the character length must be great than or equal to 1.'
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
pattern = Regexp.new(/^[A-Za-z0-9][A-Za-z0-9_.~-]{0,99}$/)
|
|
158
|
+
if @api_client.config.client_side_validation && chart !~ pattern
|
|
159
|
+
fail ArgumentError, "invalid value for 'chart' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash, must conform to the pattern #{pattern}."
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# verify the required parameter 'hash' is set
|
|
163
|
+
if @api_client.config.client_side_validation && hash.nil?
|
|
164
|
+
fail ArgumentError, "Missing the required parameter 'hash' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash"
|
|
165
|
+
end
|
|
166
|
+
pattern = Regexp.new(/^[a-f0-9]{64}$/)
|
|
167
|
+
if @api_client.config.client_side_validation && hash !~ pattern
|
|
168
|
+
fail ArgumentError, "invalid value for 'hash' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash, must conform to the pattern #{pattern}."
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# resource path
|
|
172
|
+
local_var_path = '/api/public/{publicKey}/charts/{chart}/geometry/{hash}'.sub('{' + 'publicKey' + '}', CGI.escape(public_key.to_s)).sub('{' + 'chart' + '}', CGI.escape(chart.to_s)).sub('{' + 'hash' + '}', CGI.escape(hash.to_s))
|
|
173
|
+
|
|
174
|
+
# query parameters
|
|
175
|
+
query_params = opts[:query_params] || {}
|
|
176
|
+
|
|
177
|
+
# header parameters
|
|
178
|
+
header_params = opts[:header_params] || {}
|
|
179
|
+
|
|
180
|
+
# form parameters
|
|
181
|
+
form_params = opts[:form_params] || {}
|
|
182
|
+
|
|
183
|
+
# http body (model)
|
|
184
|
+
post_body = opts[:debug_body]
|
|
185
|
+
|
|
186
|
+
# return_type
|
|
187
|
+
return_type = opts[:debug_return_type]
|
|
188
|
+
|
|
189
|
+
# auth_names
|
|
190
|
+
auth_names = opts[:debug_auth_names] || []
|
|
191
|
+
|
|
192
|
+
new_options = opts.merge(
|
|
193
|
+
:operation => :"PublicApi.get_api_public_by_public_key_charts_by_chart_geometry_by_hash",
|
|
194
|
+
:header_params => header_params,
|
|
195
|
+
:query_params => query_params,
|
|
196
|
+
:form_params => form_params,
|
|
197
|
+
:body => post_body,
|
|
198
|
+
:auth_names => auth_names,
|
|
199
|
+
:return_type => return_type
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
203
|
+
if @api_client.config.debugging
|
|
204
|
+
@api_client.config.logger.debug "API called: PublicApi#get_api_public_by_public_key_charts_by_chart_geometry_by_hash\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
205
|
+
end
|
|
206
|
+
return data, status_code, headers
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
# Map-only chart manifest (CDN-cacheable)
|
|
210
|
+
# Published chart for a map-only render (seats.io `bringYourOwnBackend`): `{ chartId, name, eventId (= chartId), mapRevision, geometryHash, geometrySchema, seatCount, gaCount, geometryUrl, state }`. `state` is the compact state with every object free (catalog prices, GA capacities, category prices / ticket types, booking rules); the renderer overlays the statuses the host passes. No inventory, holds or event data. Every object of the chart (seats + general admission areas) counts as a used object once per chart and UTC month (see the map-only guide). ETag; `If-None-Match` returns 304. `Cache-Control: public, max-age=30, stale-while-revalidate=60`. `chart` accepts the chart id or key. A deactivated workspace returns 403 `workspace_deactivated`; an unknown key or chart, a chart that was never published or is archived: 404 `not_found` (errors are `no-store`). CDN cache key: path + Origin + normalized Accept-Encoding.
|
|
211
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
212
|
+
# @param chart [String] Chart id or chart key.
|
|
213
|
+
# @param [Hash] opts the optional parameters
|
|
214
|
+
# @return [nil]
|
|
215
|
+
def get_api_public_by_public_key_charts_by_chart_manifest(public_key, chart, opts = {})
|
|
216
|
+
get_api_public_by_public_key_charts_by_chart_manifest_with_http_info(public_key, chart, opts)
|
|
217
|
+
nil
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# Map-only chart manifest (CDN-cacheable)
|
|
221
|
+
# Published chart for a map-only render (seats.io `bringYourOwnBackend`): `{ chartId, name, eventId (= chartId), mapRevision, geometryHash, geometrySchema, seatCount, gaCount, geometryUrl, state }`. `state` is the compact state with every object free (catalog prices, GA capacities, category prices / ticket types, booking rules); the renderer overlays the statuses the host passes. No inventory, holds or event data. Every object of the chart (seats + general admission areas) counts as a used object once per chart and UTC month (see the map-only guide). ETag; `If-None-Match` returns 304. `Cache-Control: public, max-age=30, stale-while-revalidate=60`. `chart` accepts the chart id or key. A deactivated workspace returns 403 `workspace_deactivated`; an unknown key or chart, a chart that was never published or is archived: 404 `not_found` (errors are `no-store`). CDN cache key: path + Origin + normalized Accept-Encoding.
|
|
222
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
223
|
+
# @param chart [String] Chart id or chart key.
|
|
224
|
+
# @param [Hash] opts the optional parameters
|
|
225
|
+
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
226
|
+
def get_api_public_by_public_key_charts_by_chart_manifest_with_http_info(public_key, chart, opts = {})
|
|
227
|
+
if @api_client.config.debugging
|
|
228
|
+
@api_client.config.logger.debug 'Calling API: PublicApi.get_api_public_by_public_key_charts_by_chart_manifest ...'
|
|
229
|
+
end
|
|
230
|
+
# verify the required parameter 'public_key' is set
|
|
231
|
+
if @api_client.config.client_side_validation && public_key.nil?
|
|
232
|
+
fail ArgumentError, "Missing the required parameter 'public_key' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_manifest"
|
|
233
|
+
end
|
|
234
|
+
if @api_client.config.client_side_validation && public_key.to_s.length > 64
|
|
235
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_manifest, the character length must be smaller than or equal to 64.'
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
if @api_client.config.client_side_validation && public_key.to_s.length < 1
|
|
239
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_manifest, the character length must be great than or equal to 1.'
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# verify the required parameter 'chart' is set
|
|
243
|
+
if @api_client.config.client_side_validation && chart.nil?
|
|
244
|
+
fail ArgumentError, "Missing the required parameter 'chart' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_manifest"
|
|
245
|
+
end
|
|
246
|
+
if @api_client.config.client_side_validation && chart.to_s.length > 100
|
|
247
|
+
fail ArgumentError, 'invalid value for "chart" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_manifest, the character length must be smaller than or equal to 100.'
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
if @api_client.config.client_side_validation && chart.to_s.length < 1
|
|
251
|
+
fail ArgumentError, 'invalid value for "chart" when calling PublicApi.get_api_public_by_public_key_charts_by_chart_manifest, the character length must be great than or equal to 1.'
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
pattern = Regexp.new(/^[A-Za-z0-9][A-Za-z0-9_.~-]{0,99}$/)
|
|
255
|
+
if @api_client.config.client_side_validation && chart !~ pattern
|
|
256
|
+
fail ArgumentError, "invalid value for 'chart' when calling PublicApi.get_api_public_by_public_key_charts_by_chart_manifest, must conform to the pattern #{pattern}."
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
# resource path
|
|
260
|
+
local_var_path = '/api/public/{publicKey}/charts/{chart}/manifest'.sub('{' + 'publicKey' + '}', CGI.escape(public_key.to_s)).sub('{' + 'chart' + '}', CGI.escape(chart.to_s))
|
|
261
|
+
|
|
262
|
+
# query parameters
|
|
263
|
+
query_params = opts[:query_params] || {}
|
|
264
|
+
|
|
265
|
+
# header parameters
|
|
266
|
+
header_params = opts[:header_params] || {}
|
|
267
|
+
|
|
268
|
+
# form parameters
|
|
269
|
+
form_params = opts[:form_params] || {}
|
|
270
|
+
|
|
271
|
+
# http body (model)
|
|
272
|
+
post_body = opts[:debug_body]
|
|
273
|
+
|
|
274
|
+
# return_type
|
|
275
|
+
return_type = opts[:debug_return_type]
|
|
276
|
+
|
|
277
|
+
# auth_names
|
|
278
|
+
auth_names = opts[:debug_auth_names] || []
|
|
279
|
+
|
|
280
|
+
new_options = opts.merge(
|
|
281
|
+
:operation => :"PublicApi.get_api_public_by_public_key_charts_by_chart_manifest",
|
|
282
|
+
:header_params => header_params,
|
|
283
|
+
:query_params => query_params,
|
|
284
|
+
:form_params => form_params,
|
|
285
|
+
:body => post_body,
|
|
286
|
+
:auth_names => auth_names,
|
|
287
|
+
:return_type => return_type
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
291
|
+
if @api_client.config.debugging
|
|
292
|
+
@api_client.config.logger.debug "API called: PublicApi#get_api_public_by_public_key_charts_by_chart_manifest\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
293
|
+
end
|
|
294
|
+
return data, status_code, headers
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
# Published buyer extraData of an event (workspace opt-in, CDN-cacheable)
|
|
298
|
+
# Object `extraData` is private by default. When a workspace admin enables buyer publication (`PUT /api/workspace/buyer-extra-data`) with an allow-list of keys, this read returns, for the workspace's events, `{ keys, objects: { [objectId]: { key: value } } }` with only those keys and scalar values (strings up to 256 characters, numbers, booleans, null; objects, arrays and longer strings are never published). The renderer reads it once after the map for declarative rules (`match.extraData`), templates (`{extraData.key}`) and host objects. Built from one indexed query on a miss, then served from a per-event cache dropped whenever the seat map cache is invalidated (overlay writes, extraData updates) and rebuilt when the key list changes. Never part of the compact state. Not published (setting off or no keys): 404 `extra_data_not_published`. ETag; `If-None-Match` returns 304. `Cache-Control: public, max-age=5, stale-while-revalidate=10`. `eventId` also accepts the event key.
|
|
299
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
300
|
+
# @param event_id [String]
|
|
301
|
+
# @param [Hash] opts the optional parameters
|
|
302
|
+
# @return [nil]
|
|
303
|
+
def get_api_public_by_public_key_events_by_event_id_extra_data(public_key, event_id, opts = {})
|
|
304
|
+
get_api_public_by_public_key_events_by_event_id_extra_data_with_http_info(public_key, event_id, opts)
|
|
305
|
+
nil
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
# Published buyer extraData of an event (workspace opt-in, CDN-cacheable)
|
|
309
|
+
# Object `extraData` is private by default. When a workspace admin enables buyer publication (`PUT /api/workspace/buyer-extra-data`) with an allow-list of keys, this read returns, for the workspace's events, `{ keys, objects: { [objectId]: { key: value } } }` with only those keys and scalar values (strings up to 256 characters, numbers, booleans, null; objects, arrays and longer strings are never published). The renderer reads it once after the map for declarative rules (`match.extraData`), templates (`{extraData.key}`) and host objects. Built from one indexed query on a miss, then served from a per-event cache dropped whenever the seat map cache is invalidated (overlay writes, extraData updates) and rebuilt when the key list changes. Never part of the compact state. Not published (setting off or no keys): 404 `extra_data_not_published`. ETag; `If-None-Match` returns 304. `Cache-Control: public, max-age=5, stale-while-revalidate=10`. `eventId` also accepts the event key.
|
|
310
|
+
# @param public_key [String] Workspace public key (`pub_…`).
|
|
311
|
+
# @param event_id [String]
|
|
312
|
+
# @param [Hash] opts the optional parameters
|
|
313
|
+
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
314
|
+
def get_api_public_by_public_key_events_by_event_id_extra_data_with_http_info(public_key, event_id, opts = {})
|
|
315
|
+
if @api_client.config.debugging
|
|
316
|
+
@api_client.config.logger.debug 'Calling API: PublicApi.get_api_public_by_public_key_events_by_event_id_extra_data ...'
|
|
317
|
+
end
|
|
318
|
+
# verify the required parameter 'public_key' is set
|
|
319
|
+
if @api_client.config.client_side_validation && public_key.nil?
|
|
320
|
+
fail ArgumentError, "Missing the required parameter 'public_key' when calling PublicApi.get_api_public_by_public_key_events_by_event_id_extra_data"
|
|
321
|
+
end
|
|
322
|
+
if @api_client.config.client_side_validation && public_key.to_s.length > 64
|
|
323
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_events_by_event_id_extra_data, the character length must be smaller than or equal to 64.'
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
if @api_client.config.client_side_validation && public_key.to_s.length < 1
|
|
327
|
+
fail ArgumentError, 'invalid value for "public_key" when calling PublicApi.get_api_public_by_public_key_events_by_event_id_extra_data, the character length must be great than or equal to 1.'
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
# verify the required parameter 'event_id' is set
|
|
331
|
+
if @api_client.config.client_side_validation && event_id.nil?
|
|
332
|
+
fail ArgumentError, "Missing the required parameter 'event_id' when calling PublicApi.get_api_public_by_public_key_events_by_event_id_extra_data"
|
|
333
|
+
end
|
|
334
|
+
# resource path
|
|
335
|
+
local_var_path = '/api/public/{publicKey}/events/{eventId}/extra-data'.sub('{' + 'publicKey' + '}', CGI.escape(public_key.to_s)).sub('{' + 'eventId' + '}', CGI.escape(event_id.to_s))
|
|
336
|
+
|
|
337
|
+
# query parameters
|
|
338
|
+
query_params = opts[:query_params] || {}
|
|
339
|
+
|
|
340
|
+
# header parameters
|
|
341
|
+
header_params = opts[:header_params] || {}
|
|
342
|
+
|
|
343
|
+
# form parameters
|
|
344
|
+
form_params = opts[:form_params] || {}
|
|
345
|
+
|
|
346
|
+
# http body (model)
|
|
347
|
+
post_body = opts[:debug_body]
|
|
348
|
+
|
|
349
|
+
# return_type
|
|
350
|
+
return_type = opts[:debug_return_type]
|
|
351
|
+
|
|
352
|
+
# auth_names
|
|
353
|
+
auth_names = opts[:debug_auth_names] || []
|
|
354
|
+
|
|
355
|
+
new_options = opts.merge(
|
|
356
|
+
:operation => :"PublicApi.get_api_public_by_public_key_events_by_event_id_extra_data",
|
|
357
|
+
:header_params => header_params,
|
|
358
|
+
:query_params => query_params,
|
|
359
|
+
:form_params => form_params,
|
|
360
|
+
:body => post_body,
|
|
361
|
+
:auth_names => auth_names,
|
|
362
|
+
:return_type => return_type
|
|
363
|
+
)
|
|
364
|
+
|
|
365
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
366
|
+
if @api_client.config.debugging
|
|
367
|
+
@api_client.config.logger.debug "API called: PublicApi#get_api_public_by_public_key_events_by_event_id_extra_data\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
368
|
+
end
|
|
369
|
+
return data, status_code, headers
|
|
370
|
+
end
|
|
371
|
+
|
|
22
372
|
# Public immutable geometry (CDN-cacheable)
|
|
23
373
|
# Content-addressed geometry (sha256 of the canonical JSON). br/gzip negotiated from Accept-Encoding. `Cache-Control: public, max-age=31536000, immutable`. Clients must verify the hash. Unknown key, event or hash: 404 no-store. `eventId` also accepts the event key. A deactivated workspace returns 403 `workspace_deactivated` (no-store). CDN cache key: path + Origin + normalized Accept-Encoding. Never forward or key on cookies, Authorization, x-api-key, x-channel-key or the query string.
|
|
24
374
|
# @param public_key [String] Workspace public key (`pub_…`).
|