seatschart 0.1.1 → 0.2.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 +31 -3
- data/lib/seatschart/api/charts_api.rb +9 -9
- data/lib/seatschart/api/embed_api.rb +13 -2
- data/lib/seatschart/api/event_log_api.rb +2 -2
- data/lib/seatschart/api/events_api.rb +186 -20
- data/lib/seatschart/api/listings_api.rb +884 -0
- data/lib/seatschart/api/object_status_api.rb +2 -2
- data/lib/seatschart/api/seasons_api.rb +113 -8
- data/lib/seatschart/api/seats_api.rb +3 -22
- data/lib/seatschart/api/usage_api.rb +4 -4
- data/lib/seatschart/api/webhooks_api.rb +2 -2
- data/lib/seatschart/api/workspace_api.rb +4 -4
- data/lib/seatschart/models/api_error.rb +307 -0
- data/lib/seatschart/models/api_error_params_value.rb +105 -0
- data/lib/seatschart/models/get_api_monitoring_requests200_response.rb +17 -1
- 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 +21 -4
- 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/patch_api_events_by_event_id_listings_by_listing_id_request.rb +379 -0
- 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 +27 -1
- data/lib/seatschart/models/patch_api_webhooks_by_id_request.rb +1 -1
- data/lib/seatschart/models/patch_api_workspace_settings_request.rb +12 -1
- 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_events_actions_change_object_status_request_status_changes_inner.rb +0 -11
- 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_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_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_seasons_by_season_id_partial_seasons_request.rb +27 -1
- data/lib/seatschart/models/post_api_seasons_request.rb +27 -1
- data/lib/seatschart/models/post_api_seats_best_available_request.rb +0 -11
- data/lib/seatschart/models/post_api_seats_confirm_request.rb +0 -44
- data/lib/seatschart/models/post_api_seats_release_request.rb +0 -11
- data/lib/seatschart/models/post_api_seats_reserve_request.rb +0 -22
- 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/put_api_charts_by_chart_id_map_draft_request.rb +348 -0
- data/lib/seatschart/version.rb +1 -1
- data/lib/seatschart.rb +16 -0
- metadata +17 -1
|
@@ -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
|
|
@@ -479,7 +479,7 @@ module SeatsChart
|
|
|
479
479
|
end
|
|
480
480
|
|
|
481
481
|
# List partial seasons of a season
|
|
482
|
-
# Response `{ partialSeasons: [{ id, seasonId, name, eventIds, createdAt }] }`. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
482
|
+
# Response `{ partialSeasons: [{ id, seasonId, key, name, eventIds, createdAt }] }`. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
483
483
|
# @param season_id [String]
|
|
484
484
|
# @param [Hash] opts the optional parameters
|
|
485
485
|
# @return [nil]
|
|
@@ -489,7 +489,7 @@ module SeatsChart
|
|
|
489
489
|
end
|
|
490
490
|
|
|
491
491
|
# List partial seasons of a season
|
|
492
|
-
# Response `{ partialSeasons: [{ id, seasonId, name, eventIds, createdAt }] }`. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
492
|
+
# Response `{ partialSeasons: [{ id, seasonId, key, name, eventIds, createdAt }] }`. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
493
493
|
# @param season_id [String]
|
|
494
494
|
# @param [Hash] opts the optional parameters
|
|
495
495
|
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
@@ -548,7 +548,7 @@ module SeatsChart
|
|
|
548
548
|
end
|
|
549
549
|
|
|
550
550
|
# Get one partial season
|
|
551
|
-
# Response `{ partialSeason: { id, seasonId, name, eventIds, createdAt } }`; 404 when it is not a partial season of this season. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
551
|
+
# Response `{ partialSeason: { id, seasonId, key, name, eventIds, createdAt } }`; 404 when it is not a partial season of this season. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
552
552
|
# @param season_id [String]
|
|
553
553
|
# @param partial_season_id [String]
|
|
554
554
|
# @param [Hash] opts the optional parameters
|
|
@@ -559,7 +559,7 @@ module SeatsChart
|
|
|
559
559
|
end
|
|
560
560
|
|
|
561
561
|
# Get one partial season
|
|
562
|
-
# Response `{ partialSeason: { id, seasonId, name, eventIds, createdAt } }`; 404 when it is not a partial season of this season. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
562
|
+
# Response `{ partialSeason: { id, seasonId, key, name, eventIds, createdAt } }`; 404 when it is not a partial season of this season. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
563
563
|
# @param season_id [String]
|
|
564
564
|
# @param partial_season_id [String]
|
|
565
565
|
# @param [Hash] opts the optional parameters
|
|
@@ -4330,7 +4330,7 @@ module SeatsChart
|
|
|
4330
4330
|
end
|
|
4331
4331
|
|
|
4332
4332
|
# Update season
|
|
4333
|
-
# Rename or set sourceEventId (must be a member). Clearing source blocks sync until reset.
|
|
4333
|
+
# Rename, set / rename / clear the partner `key` (409 `season_key_taken`), or set sourceEventId (must be a member). Clearing source blocks sync until reset.
|
|
4334
4334
|
# @param season_id [String]
|
|
4335
4335
|
# @param patch_api_seasons_by_season_id_request [PatchApiSeasonsBySeasonIdRequest]
|
|
4336
4336
|
# @param [Hash] opts the optional parameters
|
|
@@ -4342,7 +4342,7 @@ module SeatsChart
|
|
|
4342
4342
|
end
|
|
4343
4343
|
|
|
4344
4344
|
# Update season
|
|
4345
|
-
# Rename or set sourceEventId (must be a member). Clearing source blocks sync until reset.
|
|
4345
|
+
# Rename, set / rename / clear the partner `key` (409 `season_key_taken`), or set sourceEventId (must be a member). Clearing source blocks sync until reset.
|
|
4346
4346
|
# @param season_id [String]
|
|
4347
4347
|
# @param patch_api_seasons_by_season_id_request [PatchApiSeasonsBySeasonIdRequest]
|
|
4348
4348
|
# @param [Hash] opts the optional parameters
|
|
@@ -4525,6 +4525,111 @@ module SeatsChart
|
|
|
4525
4525
|
return data, status_code, headers
|
|
4526
4526
|
end
|
|
4527
4527
|
|
|
4528
|
+
# Rename a partial season or set its key
|
|
4529
|
+
# Changes `name` and/or `key` (a key sets or renames it; `null` or `\"\"` clears it; 409 `partial_season_key_taken`). Response `{ partialSeason }`. Partner `key`: unique within the season, 1–100 URL-safe characters, never UUID-shaped; usable in place of the partial season id in every partial season path (`/seasons/{seasonIdOrKey}/partial-seasons/{partialSeasonIdOrKey}`), and as body `seasonId` of booking and status changes when no season and no other partial season of the workspace uses it.
|
|
4530
|
+
# @param season_id [String]
|
|
4531
|
+
# @param partial_season_id [String]
|
|
4532
|
+
# @param patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request [PatchApiSeasonsBySeasonIdPartialSeasonsByPartialSeasonIdRequest]
|
|
4533
|
+
# @param [Hash] opts the optional parameters
|
|
4534
|
+
# @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.
|
|
4535
|
+
# @return [nil]
|
|
4536
|
+
def patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id(season_id, partial_season_id, patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request, opts = {})
|
|
4537
|
+
patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_with_http_info(season_id, partial_season_id, patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request, opts)
|
|
4538
|
+
nil
|
|
4539
|
+
end
|
|
4540
|
+
|
|
4541
|
+
# Rename a partial season or set its key
|
|
4542
|
+
# Changes `name` and/or `key` (a key sets or renames it; `null` or `\"\"` clears it; 409 `partial_season_key_taken`). Response `{ partialSeason }`. Partner `key`: unique within the season, 1–100 URL-safe characters, never UUID-shaped; usable in place of the partial season id in every partial season path (`/seasons/{seasonIdOrKey}/partial-seasons/{partialSeasonIdOrKey}`), and as body `seasonId` of booking and status changes when no season and no other partial season of the workspace uses it.
|
|
4543
|
+
# @param season_id [String]
|
|
4544
|
+
# @param partial_season_id [String]
|
|
4545
|
+
# @param patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request [PatchApiSeasonsBySeasonIdPartialSeasonsByPartialSeasonIdRequest]
|
|
4546
|
+
# @param [Hash] opts the optional parameters
|
|
4547
|
+
# @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.
|
|
4548
|
+
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
4549
|
+
def patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_with_http_info(season_id, partial_season_id, patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request, opts = {})
|
|
4550
|
+
if @api_client.config.debugging
|
|
4551
|
+
@api_client.config.logger.debug 'Calling API: SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id ...'
|
|
4552
|
+
end
|
|
4553
|
+
# verify the required parameter 'season_id' is set
|
|
4554
|
+
if @api_client.config.client_side_validation && season_id.nil?
|
|
4555
|
+
fail ArgumentError, "Missing the required parameter 'season_id' when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id"
|
|
4556
|
+
end
|
|
4557
|
+
if @api_client.config.client_side_validation && season_id.to_s.length > 36
|
|
4558
|
+
fail ArgumentError, 'invalid value for "season_id" when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id, the character length must be smaller than or equal to 36.'
|
|
4559
|
+
end
|
|
4560
|
+
|
|
4561
|
+
if @api_client.config.client_side_validation && season_id.to_s.length < 36
|
|
4562
|
+
fail ArgumentError, 'invalid value for "season_id" when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id, the character length must be great than or equal to 36.'
|
|
4563
|
+
end
|
|
4564
|
+
|
|
4565
|
+
# verify the required parameter 'partial_season_id' is set
|
|
4566
|
+
if @api_client.config.client_side_validation && partial_season_id.nil?
|
|
4567
|
+
fail ArgumentError, "Missing the required parameter 'partial_season_id' when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id"
|
|
4568
|
+
end
|
|
4569
|
+
if @api_client.config.client_side_validation && partial_season_id.to_s.length > 36
|
|
4570
|
+
fail ArgumentError, 'invalid value for "partial_season_id" when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id, the character length must be smaller than or equal to 36.'
|
|
4571
|
+
end
|
|
4572
|
+
|
|
4573
|
+
if @api_client.config.client_side_validation && partial_season_id.to_s.length < 36
|
|
4574
|
+
fail ArgumentError, 'invalid value for "partial_season_id" when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id, the character length must be great than or equal to 36.'
|
|
4575
|
+
end
|
|
4576
|
+
|
|
4577
|
+
# verify the required parameter 'patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request' is set
|
|
4578
|
+
if @api_client.config.client_side_validation && patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request.nil?
|
|
4579
|
+
fail ArgumentError, "Missing the required parameter 'patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request' when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id"
|
|
4580
|
+
end
|
|
4581
|
+
if @api_client.config.client_side_validation && !opts[:'idempotency_key'].nil? && opts[:'idempotency_key'].to_s.length > 255
|
|
4582
|
+
fail ArgumentError, 'invalid value for "opts[:"idempotency_key"]" when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id, the character length must be smaller than or equal to 255.'
|
|
4583
|
+
end
|
|
4584
|
+
|
|
4585
|
+
if @api_client.config.client_side_validation && !opts[:'idempotency_key'].nil? && opts[:'idempotency_key'].to_s.length < 1
|
|
4586
|
+
fail ArgumentError, 'invalid value for "opts[:"idempotency_key"]" when calling SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id, the character length must be great than or equal to 1.'
|
|
4587
|
+
end
|
|
4588
|
+
|
|
4589
|
+
# resource path
|
|
4590
|
+
local_var_path = '/api/seasons/{seasonId}/partial-seasons/{partialSeasonId}'.sub('{' + 'seasonId' + '}', CGI.escape(season_id.to_s)).sub('{' + 'partialSeasonId' + '}', CGI.escape(partial_season_id.to_s))
|
|
4591
|
+
|
|
4592
|
+
# query parameters
|
|
4593
|
+
query_params = opts[:query_params] || {}
|
|
4594
|
+
|
|
4595
|
+
# header parameters
|
|
4596
|
+
header_params = opts[:header_params] || {}
|
|
4597
|
+
# HTTP header 'Content-Type'
|
|
4598
|
+
content_type = @api_client.select_header_content_type(['application/json', 'multipart/form-data', 'text/plain'])
|
|
4599
|
+
if !content_type.nil?
|
|
4600
|
+
header_params['Content-Type'] = content_type
|
|
4601
|
+
end
|
|
4602
|
+
header_params[:'Idempotency-Key'] = opts[:'idempotency_key'] if !opts[:'idempotency_key'].nil?
|
|
4603
|
+
|
|
4604
|
+
# form parameters
|
|
4605
|
+
form_params = opts[:form_params] || {}
|
|
4606
|
+
|
|
4607
|
+
# http body (model)
|
|
4608
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id_request)
|
|
4609
|
+
|
|
4610
|
+
# return_type
|
|
4611
|
+
return_type = opts[:debug_return_type]
|
|
4612
|
+
|
|
4613
|
+
# auth_names
|
|
4614
|
+
auth_names = opts[:debug_auth_names] || ['ApiKeyAuth', 'BearerAuth']
|
|
4615
|
+
|
|
4616
|
+
new_options = opts.merge(
|
|
4617
|
+
:operation => :"SeasonsApi.patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id",
|
|
4618
|
+
:header_params => header_params,
|
|
4619
|
+
:query_params => query_params,
|
|
4620
|
+
:form_params => form_params,
|
|
4621
|
+
:body => post_body,
|
|
4622
|
+
:auth_names => auth_names,
|
|
4623
|
+
:return_type => return_type
|
|
4624
|
+
)
|
|
4625
|
+
|
|
4626
|
+
data, status_code, headers = @api_client.call_api(:PATCH, local_var_path, new_options)
|
|
4627
|
+
if @api_client.config.debugging
|
|
4628
|
+
@api_client.config.logger.debug "API called: SeasonsApi#patch_api_seasons_by_season_id_partial_seasons_by_partial_season_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
4629
|
+
end
|
|
4630
|
+
return data, status_code, headers
|
|
4631
|
+
end
|
|
4632
|
+
|
|
4528
4633
|
# Override the season status of objects in an event (OVERRIDE_SEASON_STATUS)
|
|
4529
4634
|
# Requires **Idempotency-Key**. The objects of the path event (a non-source season member) stop following the season status. Idempotent per object. Response `{ ok, eventId, seasonId, overridden, added, released, objects? }`. **No overbooking.** Every object keeps exactly one authority per event (its seat row and Redis key), so an override only changes which (event, object) pairs the season fan-outs touch: season booking (`seasonId` on reserve), season status changes (`seasonId` on change-object-status), season inventory sync and the season booking view skip overridden pairs. Overriding never changes the status: a seat booked for the season stays booked in the event. `release: true` frees the objects in this event only. Unsold objects go through the administrative transition engine (held seats and accepted orders are refused, 409 `inventory_conflict`). Sold objects are refused with 409 `season_booked` (`objects: [{ objectId, label, orderId, seasonTicket }]`) unless `allowBookedRelease: true` is sent explicitly; then only seats of a season (multi-event) order are given back for this event, under the seat row lock: the reservation and the order item of this event are cancelled (`season_status_override`), the seat becomes available and its Redis confirmed marker is cleared; the order stays confirmed for its other events (refunds are up to you). The event's own sales are never released here (409 `event_sale`: cancel the order). Nothing changes on any refusal. The season source event cannot override (409 `season_source_event`); events outside a season get 409 `not_season_member`.
|
|
4530
4635
|
# @param event_id [String]
|
|
@@ -5240,7 +5345,7 @@ module SeatsChart
|
|
|
5240
5345
|
end
|
|
5241
5346
|
|
|
5242
5347
|
# Create a partial season
|
|
5243
|
-
# Every event must already be a member of the parent season (400 `not_season_member` lists the others). Max 100 partial seasons per season. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
5348
|
+
# Every event must already be a member of the parent season (400 `not_season_member` lists the others). Max 100 partial seasons per season. 409 `partial_season_key_taken`. Partner `key`: unique within the season, 1–100 URL-safe characters, never UUID-shaped; usable in place of the partial season id in every partial season path (`/seasons/{seasonIdOrKey}/partial-seasons/{partialSeasonIdOrKey}`), and as body `seasonId` of booking and status changes when no season and no other partial season of the workspace uses it. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
5244
5349
|
# @param season_id [String]
|
|
5245
5350
|
# @param post_api_seasons_by_season_id_partial_seasons_request [PostApiSeasonsBySeasonIdPartialSeasonsRequest]
|
|
5246
5351
|
# @param [Hash] opts the optional parameters
|
|
@@ -5252,7 +5357,7 @@ module SeatsChart
|
|
|
5252
5357
|
end
|
|
5253
5358
|
|
|
5254
5359
|
# Create a partial season
|
|
5255
|
-
# Every event must already be a member of the parent season (400 `not_season_member` lists the others). Max 100 partial seasons per season. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
5360
|
+
# Every event must already be a member of the parent season (400 `not_season_member` lists the others). Max 100 partial seasons per season. 409 `partial_season_key_taken`. Partner `key`: unique within the season, 1–100 URL-safe characters, never UUID-shaped; usable in place of the partial season id in every partial season path (`/seasons/{seasonIdOrKey}/partial-seasons/{partialSeasonIdOrKey}`), and as body `seasonId` of booking and status changes when no season and no other partial season of the workspace uses it. Booking or releasing with `seasonId` set to a partial season id on POST /api/events/:eventId/actions/change-object-status fans out to the partial season members only, atomically, exactly like a full season.
|
|
5256
5361
|
# @param season_id [String]
|
|
5257
5362
|
# @param post_api_seasons_by_season_id_partial_seasons_request [PostApiSeasonsBySeasonIdPartialSeasonsRequest]
|
|
5258
5363
|
# @param [Hash] opts the optional parameters
|
|
@@ -699,33 +699,27 @@ module SeatsChart
|
|
|
699
699
|
|
|
700
700
|
# Accept a durable confirmation intent before asynchronous seat materialization
|
|
701
701
|
# Server-to-server only (`x-api-key`). **Pricing source** (workspace integration mode or event sales rules): `partner` events confirm the declared `seatTicketTypes` and `seatPrices` (or `paidAmountCents`) without a quote; `synced_catalog` events validate them against the pushed price table (409 `price_mismatch`, `price_table_missing`, `ticket_type_required`); `seatschart_catalog` events require a durable catalog quote created before external payment. Final ticket types are re-checked against the event quotas and buyer limit (409 `quota_exceeded`, `buyer_limit_exceeded`, `lot_sold_out`). Configure event currency before quoting. The organizer's booking limits are re-checked (defence in depth; holds enforce them atomically): 409 `booking_limit_exceeded` (`limit`, `requested`), except for holds placed before the current limits were published. After verifying payment with your provider, send quoteId, externalPaymentId, paidAmountCents, paidCurrency and the **`holdToken`** capability returned via `POST /api/seats/reserve`. These payment fields are the authenticated partner's attestation, not gateway verification by SeatsChart. Retries of already accepted legacy decisions remain supported without a quote. Consumer JWTs are rejected — confirmation must not run from the browser. Validates Redis holds, then commits the order and requested items in PostgreSQL before 202. Stream delivery is a best-effort trigger; pending SQL items are reconciled by the worker. Provide externalOrderId for stable partner identity. Legacy callers use a durable tenant-scoped Idempotency-Key identity. Season/group holds require scope=hold and the full source seatIds set; all frozen destinations form one atomic order. GET /api/orders/:orderId reports the atomic cart outcome. HTTP keys are durably bound to the authenticated credential and request; changed payload returns 409. Optional `ticketBuyerId` (opaque partner buyer id) is stored on the order, its reservations and object statuses; when omitted it is inherited from the hold token. Quote failures return 409 with `error: quote_required` (no quoteId) or `error: quote_mismatch` (quote or payment attestation does not match).
|
|
702
|
-
# @param x_api_key [String] Partner B2B API key (required for payment commit).
|
|
703
702
|
# @param idempotency_key [String] Required key (max 255 chars after trim); durable fallback identity when externalOrderId is omitted.
|
|
704
703
|
# @param post_api_seats_confirm_request [PostApiSeatsConfirmRequest]
|
|
705
704
|
# @param [Hash] opts the optional parameters
|
|
706
705
|
# @option opts [String] :x_tenant_id Ignored for bootstrap env keys (bound to DEFAULT_TENANT_ID). Dashboard `sk_live_…` keys are tenant-scoped by hash.
|
|
707
706
|
# @return [nil]
|
|
708
|
-
def post_api_seats_confirm(
|
|
709
|
-
post_api_seats_confirm_with_http_info(
|
|
707
|
+
def post_api_seats_confirm(idempotency_key, post_api_seats_confirm_request, opts = {})
|
|
708
|
+
post_api_seats_confirm_with_http_info(idempotency_key, post_api_seats_confirm_request, opts)
|
|
710
709
|
nil
|
|
711
710
|
end
|
|
712
711
|
|
|
713
712
|
# Accept a durable confirmation intent before asynchronous seat materialization
|
|
714
713
|
# Server-to-server only (`x-api-key`). **Pricing source** (workspace integration mode or event sales rules): `partner` events confirm the declared `seatTicketTypes` and `seatPrices` (or `paidAmountCents`) without a quote; `synced_catalog` events validate them against the pushed price table (409 `price_mismatch`, `price_table_missing`, `ticket_type_required`); `seatschart_catalog` events require a durable catalog quote created before external payment. Final ticket types are re-checked against the event quotas and buyer limit (409 `quota_exceeded`, `buyer_limit_exceeded`, `lot_sold_out`). Configure event currency before quoting. The organizer's booking limits are re-checked (defence in depth; holds enforce them atomically): 409 `booking_limit_exceeded` (`limit`, `requested`), except for holds placed before the current limits were published. After verifying payment with your provider, send quoteId, externalPaymentId, paidAmountCents, paidCurrency and the **`holdToken`** capability returned via `POST /api/seats/reserve`. These payment fields are the authenticated partner's attestation, not gateway verification by SeatsChart. Retries of already accepted legacy decisions remain supported without a quote. Consumer JWTs are rejected — confirmation must not run from the browser. Validates Redis holds, then commits the order and requested items in PostgreSQL before 202. Stream delivery is a best-effort trigger; pending SQL items are reconciled by the worker. Provide externalOrderId for stable partner identity. Legacy callers use a durable tenant-scoped Idempotency-Key identity. Season/group holds require scope=hold and the full source seatIds set; all frozen destinations form one atomic order. GET /api/orders/:orderId reports the atomic cart outcome. HTTP keys are durably bound to the authenticated credential and request; changed payload returns 409. Optional `ticketBuyerId` (opaque partner buyer id) is stored on the order, its reservations and object statuses; when omitted it is inherited from the hold token. Quote failures return 409 with `error: quote_required` (no quoteId) or `error: quote_mismatch` (quote or payment attestation does not match).
|
|
715
|
-
# @param x_api_key [String] Partner B2B API key (required for payment commit).
|
|
716
714
|
# @param idempotency_key [String] Required key (max 255 chars after trim); durable fallback identity when externalOrderId is omitted.
|
|
717
715
|
# @param post_api_seats_confirm_request [PostApiSeatsConfirmRequest]
|
|
718
716
|
# @param [Hash] opts the optional parameters
|
|
719
717
|
# @option opts [String] :x_tenant_id Ignored for bootstrap env keys (bound to DEFAULT_TENANT_ID). Dashboard `sk_live_…` keys are tenant-scoped by hash.
|
|
720
718
|
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
721
|
-
def post_api_seats_confirm_with_http_info(
|
|
719
|
+
def post_api_seats_confirm_with_http_info(idempotency_key, post_api_seats_confirm_request, opts = {})
|
|
722
720
|
if @api_client.config.debugging
|
|
723
721
|
@api_client.config.logger.debug 'Calling API: SeatsApi.post_api_seats_confirm ...'
|
|
724
722
|
end
|
|
725
|
-
# verify the required parameter 'x_api_key' is set
|
|
726
|
-
if @api_client.config.client_side_validation && x_api_key.nil?
|
|
727
|
-
fail ArgumentError, "Missing the required parameter 'x_api_key' when calling SeatsApi.post_api_seats_confirm"
|
|
728
|
-
end
|
|
729
723
|
# verify the required parameter 'idempotency_key' is set
|
|
730
724
|
if @api_client.config.client_side_validation && idempotency_key.nil?
|
|
731
725
|
fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SeatsApi.post_api_seats_confirm"
|
|
@@ -749,7 +743,6 @@ module SeatsChart
|
|
|
749
743
|
if !content_type.nil?
|
|
750
744
|
header_params['Content-Type'] = content_type
|
|
751
745
|
end
|
|
752
|
-
header_params[:'x-api-key'] = x_api_key
|
|
753
746
|
header_params[:'Idempotency-Key'] = idempotency_key
|
|
754
747
|
header_params[:'x-tenant-id'] = opts[:'x_tenant_id'] if !opts[:'x_tenant_id'].nil?
|
|
755
748
|
|
|
@@ -941,8 +934,6 @@ module SeatsChart
|
|
|
941
934
|
# @param idempotency_key [String] Required deduplication key (max 255 chars after trim); 24h cache replay in Redis per tenant + route.
|
|
942
935
|
# @param post_api_seats_release_request [PostApiSeatsReleaseRequest]
|
|
943
936
|
# @param [Hash] opts the optional parameters
|
|
944
|
-
# @option opts [String] :x_api_key Partner B2B API key (alternative to Bearer).
|
|
945
|
-
# @option opts [String] :authorization Bearer + HS256 JWT for B2C clients.
|
|
946
937
|
# @option opts [String] :x_tenant_id Tenant id for partner integrations.
|
|
947
938
|
# @return [nil]
|
|
948
939
|
def post_api_seats_release(idempotency_key, post_api_seats_release_request, opts = {})
|
|
@@ -955,8 +946,6 @@ module SeatsChart
|
|
|
955
946
|
# @param idempotency_key [String] Required deduplication key (max 255 chars after trim); 24h cache replay in Redis per tenant + route.
|
|
956
947
|
# @param post_api_seats_release_request [PostApiSeatsReleaseRequest]
|
|
957
948
|
# @param [Hash] opts the optional parameters
|
|
958
|
-
# @option opts [String] :x_api_key Partner B2B API key (alternative to Bearer).
|
|
959
|
-
# @option opts [String] :authorization Bearer + HS256 JWT for B2C clients.
|
|
960
949
|
# @option opts [String] :x_tenant_id Tenant id for partner integrations.
|
|
961
950
|
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
962
951
|
def post_api_seats_release_with_http_info(idempotency_key, post_api_seats_release_request, opts = {})
|
|
@@ -985,8 +974,6 @@ module SeatsChart
|
|
|
985
974
|
header_params['Content-Type'] = content_type
|
|
986
975
|
end
|
|
987
976
|
header_params[:'Idempotency-Key'] = idempotency_key
|
|
988
|
-
header_params[:'x-api-key'] = opts[:'x_api_key'] if !opts[:'x_api_key'].nil?
|
|
989
|
-
header_params[:'Authorization'] = opts[:'authorization'] if !opts[:'authorization'].nil?
|
|
990
977
|
header_params[:'x-tenant-id'] = opts[:'x_tenant_id'] if !opts[:'x_tenant_id'].nil?
|
|
991
978
|
|
|
992
979
|
# form parameters
|
|
@@ -1023,8 +1010,6 @@ module SeatsChart
|
|
|
1023
1010
|
# @param idempotency_key [String] Required deduplication key (max 255 chars after trim; UUID v4 recommended). 24h idempotent cache replay in Redis per tenant.
|
|
1024
1011
|
# @param post_api_seats_reserve_request [PostApiSeatsReserveRequest]
|
|
1025
1012
|
# @param [Hash] opts the optional parameters
|
|
1026
|
-
# @option opts [String] :x_api_key Partner B2B API key (alternative to Bearer).
|
|
1027
|
-
# @option opts [String] :authorization Bearer + HS256 JWT for B2C clients.
|
|
1028
1013
|
# @option opts [String] :x_tenant_id Tenant id for partner integrations.
|
|
1029
1014
|
# @return [nil]
|
|
1030
1015
|
def post_api_seats_reserve(idempotency_key, post_api_seats_reserve_request, opts = {})
|
|
@@ -1037,8 +1022,6 @@ module SeatsChart
|
|
|
1037
1022
|
# @param idempotency_key [String] Required deduplication key (max 255 chars after trim; UUID v4 recommended). 24h idempotent cache replay in Redis per tenant.
|
|
1038
1023
|
# @param post_api_seats_reserve_request [PostApiSeatsReserveRequest]
|
|
1039
1024
|
# @param [Hash] opts the optional parameters
|
|
1040
|
-
# @option opts [String] :x_api_key Partner B2B API key (alternative to Bearer).
|
|
1041
|
-
# @option opts [String] :authorization Bearer + HS256 JWT for B2C clients.
|
|
1042
1025
|
# @option opts [String] :x_tenant_id Tenant id for partner integrations.
|
|
1043
1026
|
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
1044
1027
|
def post_api_seats_reserve_with_http_info(idempotency_key, post_api_seats_reserve_request, opts = {})
|
|
@@ -1067,8 +1050,6 @@ module SeatsChart
|
|
|
1067
1050
|
header_params['Content-Type'] = content_type
|
|
1068
1051
|
end
|
|
1069
1052
|
header_params[:'Idempotency-Key'] = idempotency_key
|
|
1070
|
-
header_params[:'x-api-key'] = opts[:'x_api_key'] if !opts[:'x_api_key'].nil?
|
|
1071
|
-
header_params[:'Authorization'] = opts[:'authorization'] if !opts[:'authorization'].nil?
|
|
1072
1053
|
header_params[:'x-tenant-id'] = opts[:'x_tenant_id'] if !opts[:'x_tenant_id'].nil?
|
|
1073
1054
|
|
|
1074
1055
|
# form parameters
|
|
@@ -19,8 +19,8 @@ module SeatsChart
|
|
|
19
19
|
def initialize(api_client = ApiClient.default)
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
|
-
# Request monitoring per rate-limit lane
|
|
23
|
-
# Peak requests per minute and 429 counts per lane for the last 10 minutes, hour, 24 hours or 7 days. The **sales lane** carries the buyer path (seat map reads, manifest/geometry/state, the live stream, holds, renewals, best-available, releases, quotes, confirmations); the **api lane** carries everything else (reports, events, charts, workspaces, webhooks, keys), so reporting bursts never starve sales. Counters are written by the rate limiter in its existing Redis call (no extra round trip); minute data is kept 25 hours, hourly peaks 8 days. 10m/1h: one bucket per minute; 24h: 15-minute buckets (peak minute); 7d: hourly buckets. Dashboard session (any role) or an API key with the `reports` scope.
|
|
22
|
+
# Request monitoring per rate-limit lane, with in-flight (concurrent) requests
|
|
23
|
+
# Peak requests per minute and 429 counts per lane for the last 10 minutes, hour, 24 hours or 7 days. The **sales lane** carries the buyer path (seat map reads, manifest/geometry/state, the live stream, holds, renewals, best-available, releases, quotes, confirmations); the **api lane** carries everything else (reports, events, charts, workspaces, webhooks, keys), so reporting bursts never starve sales. Counters are written by the rate limiter in its existing Redis call (no extra round trip); minute data is kept 25 hours, hourly peaks 8 days. 10m/1h: one bucket per minute; 24h: 15-minute buckets (peak minute); 7d: hourly buckets. `concurrency` reports requests in flight now and the highest number of concurrent requests in the last hour and day, for the workspace and per API key (live SSE streams are connections and are not counted). Each API instance counts in memory and stores a new per-minute peak in the same limiter call, so with several instances the peaks are summed (an upper bound) and `current` is the instance that answered. Dashboard session (any role) or an API key with the `reports` scope.
|
|
24
24
|
# @param [Hash] opts the optional parameters
|
|
25
25
|
# @option opts [String] :range Time range (default `1h`).
|
|
26
26
|
# @return [GetApiMonitoringRequests200Response]
|
|
@@ -29,8 +29,8 @@ module SeatsChart
|
|
|
29
29
|
data
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
# Request monitoring per rate-limit lane
|
|
33
|
-
# Peak requests per minute and 429 counts per lane for the last 10 minutes, hour, 24 hours or 7 days. The **sales lane** carries the buyer path (seat map reads, manifest/geometry/state, the live stream, holds, renewals, best-available, releases, quotes, confirmations); the **api lane** carries everything else (reports, events, charts, workspaces, webhooks, keys), so reporting bursts never starve sales. Counters are written by the rate limiter in its existing Redis call (no extra round trip); minute data is kept 25 hours, hourly peaks 8 days. 10m/1h: one bucket per minute; 24h: 15-minute buckets (peak minute); 7d: hourly buckets. Dashboard session (any role) or an API key with the `reports` scope.
|
|
32
|
+
# Request monitoring per rate-limit lane, with in-flight (concurrent) requests
|
|
33
|
+
# Peak requests per minute and 429 counts per lane for the last 10 minutes, hour, 24 hours or 7 days. The **sales lane** carries the buyer path (seat map reads, manifest/geometry/state, the live stream, holds, renewals, best-available, releases, quotes, confirmations); the **api lane** carries everything else (reports, events, charts, workspaces, webhooks, keys), so reporting bursts never starve sales. Counters are written by the rate limiter in its existing Redis call (no extra round trip); minute data is kept 25 hours, hourly peaks 8 days. 10m/1h: one bucket per minute; 24h: 15-minute buckets (peak minute); 7d: hourly buckets. `concurrency` reports requests in flight now and the highest number of concurrent requests in the last hour and day, for the workspace and per API key (live SSE streams are connections and are not counted). Each API instance counts in memory and stores a new per-minute peak in the same limiter call, so with several instances the peaks are summed (an upper bound) and `current` is the instance that answered. Dashboard session (any role) or an API key with the `reports` scope.
|
|
34
34
|
# @param [Hash] opts the optional parameters
|
|
35
35
|
# @option opts [String] :range Time range (default `1h`).
|
|
36
36
|
# @return [Array<(GetApiMonitoringRequests200Response, Integer, Hash)>] GetApiMonitoringRequests200Response data, response status code and response headers
|
|
@@ -332,7 +332,7 @@ module SeatsChart
|
|
|
332
332
|
end
|
|
333
333
|
|
|
334
334
|
# List subscribable webhook event types
|
|
335
|
-
# Event types an endpoint can subscribe to through `eventTypes`. `webhook.test` is sent only by `POST /api/webhooks/{id}/test` and cannot be subscribed to.
|
|
335
|
+
# Event types an endpoint can subscribe to through `eventTypes`. `webhook.test` is sent only by `POST /api/webhooks/{id}/test` and cannot be subscribed to. `aliases`: seats.io-named aliases (`{ type, aliasOf }`), opt-in per endpoint: the aliased event is delivered again under the alias name to endpoints that list it explicitly (same payload, `type` = alias); `[\"*\"]` does not include aliases.
|
|
336
336
|
# @param [Hash] opts the optional parameters
|
|
337
337
|
# @return [nil]
|
|
338
338
|
def get_api_webhooks_event_types(opts = {})
|
|
@@ -341,7 +341,7 @@ module SeatsChart
|
|
|
341
341
|
end
|
|
342
342
|
|
|
343
343
|
# List subscribable webhook event types
|
|
344
|
-
# Event types an endpoint can subscribe to through `eventTypes`. `webhook.test` is sent only by `POST /api/webhooks/{id}/test` and cannot be subscribed to.
|
|
344
|
+
# Event types an endpoint can subscribe to through `eventTypes`. `webhook.test` is sent only by `POST /api/webhooks/{id}/test` and cannot be subscribed to. `aliases`: seats.io-named aliases (`{ type, aliasOf }`), opt-in per endpoint: the aliased event is delivered again under the alias name to endpoints that list it explicitly (same payload, `type` = alias); `[\"*\"]` does not include aliases.
|
|
345
345
|
# @param [Hash] opts the optional parameters
|
|
346
346
|
# @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
|
|
347
347
|
def get_api_webhooks_event_types_with_http_info(opts = {})
|
|
@@ -269,7 +269,7 @@ module SeatsChart
|
|
|
269
269
|
end
|
|
270
270
|
|
|
271
271
|
# Get workspace settings (effective value and source)
|
|
272
|
-
# Effective value of every workspace setting, the default it inherits and whether it is overridden. Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
272
|
+
# Effective value of every workspace setting, the default it inherits and whether it is overridden. Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`); `newEventsNotForSale` (default off) — new events start with every seat and GA area not for sale (seats.io workspace for-sale mode; an explicit `forSaleConfig` at creation wins, season members still follow the season source). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
273
273
|
# @param [Hash] opts the optional parameters
|
|
274
274
|
# @return [GetApiWorkspaceSettings200Response]
|
|
275
275
|
def get_api_workspace_settings(opts = {})
|
|
@@ -278,7 +278,7 @@ module SeatsChart
|
|
|
278
278
|
end
|
|
279
279
|
|
|
280
280
|
# Get workspace settings (effective value and source)
|
|
281
|
-
# Effective value of every workspace setting, the default it inherits and whether it is overridden. Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
281
|
+
# Effective value of every workspace setting, the default it inherits and whether it is overridden. Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`); `newEventsNotForSale` (default off) — new events start with every seat and GA area not for sale (seats.io workspace for-sale mode; an explicit `forSaleConfig` at creation wins, season members still follow the season source). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
282
282
|
# @param [Hash] opts the optional parameters
|
|
283
283
|
# @return [Array<(GetApiWorkspaceSettings200Response, Integer, Hash)>] GetApiWorkspaceSettings200Response data, response status code and response headers
|
|
284
284
|
def get_api_workspace_settings_with_http_info(opts = {})
|
|
@@ -683,7 +683,7 @@ module SeatsChart
|
|
|
683
683
|
end
|
|
684
684
|
|
|
685
685
|
# Override workspace settings or return them to the default
|
|
686
|
-
# Workspace admins only (dashboard session). A value overrides the default for this workspace; `null` returns the setting to the default; omitted settings are unchanged. Takes effect immediately on this API instance and within 5 seconds on the others (read from the tenant config cache; no per-request query). Every change is audited (`workspace.settings.update`). Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
686
|
+
# Workspace admins only (dashboard session). A value overrides the default for this workspace; `null` returns the setting to the default; omitted settings are unchanged. Takes effect immediately on this API instance and within 5 seconds on the others (read from the tenant config cache; no per-request query). Every change is audited (`workspace.settings.update`). Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`); `newEventsNotForSale` (default off) — new events start with every seat and GA area not for sale (seats.io workspace for-sale mode; an explicit `forSaleConfig` at creation wins, season members still follow the season source). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
687
687
|
# @param patch_api_workspace_settings_request [PatchApiWorkspaceSettingsRequest]
|
|
688
688
|
# @param [Hash] opts the optional parameters
|
|
689
689
|
# @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.
|
|
@@ -694,7 +694,7 @@ module SeatsChart
|
|
|
694
694
|
end
|
|
695
695
|
|
|
696
696
|
# Override workspace settings or return them to the default
|
|
697
|
-
# Workspace admins only (dashboard session). A value overrides the default for this workspace; `null` returns the setting to the default; omitted settings are unchanged. Takes effect immediately on this API instance and within 5 seconds on the others (read from the tenant config cache; no per-request query). Every change is audited (`workspace.settings.update`). Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
697
|
+
# Workspace admins only (dashboard session). A value overrides the default for this workspace; `null` returns the setting to the default; omitted settings are unchanged. Takes effect immediately on this API instance and within 5 seconds on the others (read from the tenant config cache; no per-request query). Every change is audited (`workspace.settings.update`). Settings: `holdPeriodMinutes` (1–120; default `SEAT_HOLD_TTL_SEC`, 10 min) — TTL of new and renewed seat/GA holds; `maxSeatsPerHoldToken` (1–64; default 64) — seats one hold token may hold across appends; `ticketBuyerValidation` (default off) — buyer tokens are minted only for a registered ticket buyer id (`POST /ticket-buyers`) and bind it, buyer holds must carry it; `gaPlacesToChannels` (default on) — inventory channels may receive GA place quotas (`areaPlaces`); `newEventsNotForSale` (default off) — new events start with every seat and GA area not for sale (seats.io workspace for-sale mode; an explicit `forSaleConfig` at creation wins, season members still follow the season source). Each setting either uses the platform default or is overridden for this workspace; `sources` says which.
|
|
698
698
|
# @param patch_api_workspace_settings_request [PatchApiWorkspaceSettingsRequest]
|
|
699
699
|
# @param [Hash] opts the optional parameters
|
|
700
700
|
# @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.
|