@drttix/drt-sdk 1.5.0 → 2.0.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.
Files changed (123) hide show
  1. package/README.md +36 -0
  2. package/dist/cjs/src/functions/sdkConfig.d.ts +37 -2
  3. package/dist/cjs/src/functions/sdkConfig.js +37 -3
  4. package/dist/cjs/src/generated/portal/core/OpenAPI.js +1 -1
  5. package/dist/cjs/src/generated/portal/core/request.js +4 -0
  6. package/dist/cjs/src/generated/portal/index.d.ts +3 -0
  7. package/dist/cjs/src/generated/portal/index.js +4 -2
  8. package/dist/cjs/src/generated/portal/models/AddSessionSeatResponseDto.d.ts +7 -0
  9. package/dist/cjs/src/generated/portal/models/AddSessionSeatResponseDto.js +2 -0
  10. package/dist/cjs/src/generated/portal/models/OrderRecalculateRequestDto.d.ts +4 -0
  11. package/dist/cjs/src/generated/portal/models/SessionSeatRefDto.d.ts +4 -0
  12. package/dist/cjs/src/generated/portal/models/SessionSeatRefDto.js +2 -0
  13. package/dist/cjs/src/generated/portal/models/ShowBlockedSeatResponseDto.d.ts +11 -0
  14. package/dist/cjs/src/generated/portal/models/SkippedSessionSeatDto.d.ts +17 -0
  15. package/dist/cjs/src/generated/portal/models/SkippedSessionSeatDto.js +14 -0
  16. package/dist/cjs/src/generated/portal/services/OrderLookupService.d.ts +3 -2
  17. package/dist/cjs/src/generated/portal/services/OrderLookupService.js +1 -1
  18. package/dist/cjs/src/generated/portal/types.d.ts +2 -0
  19. package/dist/cjs/src/generated/scanner/core/request.js +4 -0
  20. package/dist/cjs/src/generated/shopper/core/OpenAPI.js +1 -1
  21. package/dist/cjs/src/generated/shopper/core/request.js +4 -0
  22. package/dist/cjs/src/generated/shopper/index.d.ts +3 -2
  23. package/dist/cjs/src/generated/shopper/index.js +3 -1
  24. package/dist/cjs/src/generated/shopper/models/CapabilityManifestDto.d.ts +18 -0
  25. package/dist/cjs/src/generated/shopper/models/CapabilityManifestDto.js +2 -0
  26. package/dist/cjs/src/generated/shopper/models/CompleteBody.d.ts +1 -1
  27. package/dist/cjs/src/generated/shopper/models/CorrelatedCode.d.ts +23 -0
  28. package/dist/cjs/src/generated/shopper/models/CorrelatedCode.js +14 -0
  29. package/dist/cjs/src/generated/shopper/models/EmailUpdate.d.ts +1 -1
  30. package/dist/cjs/src/generated/shopper/models/EventFormat.d.ts +18 -0
  31. package/dist/cjs/src/generated/shopper/models/EventFormat.js +2 -0
  32. package/dist/cjs/src/generated/shopper/models/EventListItem.d.ts +3 -14
  33. package/dist/cjs/src/generated/shopper/models/GAResponse.d.ts +15 -3
  34. package/dist/cjs/src/generated/shopper/models/GaTier.d.ts +4 -1
  35. package/dist/cjs/src/generated/shopper/models/SaveDetailsBody.d.ts +0 -1
  36. package/dist/cjs/src/generated/shopper/models/SeatHoldObject.d.ts +2 -3
  37. package/dist/cjs/src/generated/shopper/models/SeatHoldReturn.d.ts +2 -3
  38. package/dist/cjs/src/generated/shopper/models/SiteTheme.d.ts +4 -0
  39. package/dist/cjs/src/generated/shopper/services/CartService.d.ts +2 -2
  40. package/dist/cjs/src/generated/shopper/services/CartService.js +2 -2
  41. package/dist/cjs/src/generated/shopper/services/OrderService.d.ts +2 -2
  42. package/dist/cjs/src/generated/shopper/services/OrderService.js +2 -2
  43. package/dist/cjs/src/generated/shopper/services/SessionService.d.ts +23 -0
  44. package/dist/cjs/src/generated/shopper/services/SessionService.js +38 -0
  45. package/dist/cjs/src/generated/shopper/types.d.ts +2 -2
  46. package/dist/esm/src/functions/sdkConfig.d.ts +37 -2
  47. package/dist/esm/src/functions/sdkConfig.js +35 -3
  48. package/dist/esm/src/generated/portal/core/OpenAPI.js +1 -1
  49. package/dist/esm/src/generated/portal/core/request.js +4 -0
  50. package/dist/esm/src/generated/portal/index.d.ts +3 -0
  51. package/dist/esm/src/generated/portal/index.js +1 -0
  52. package/dist/esm/src/generated/portal/models/AddSessionSeatResponseDto.d.ts +7 -0
  53. package/dist/esm/src/generated/portal/models/AddSessionSeatResponseDto.js +1 -0
  54. package/dist/esm/src/generated/portal/models/OrderRecalculateRequestDto.d.ts +4 -0
  55. package/dist/esm/src/generated/portal/models/SessionSeatRefDto.d.ts +4 -0
  56. package/dist/esm/src/generated/portal/models/SessionSeatRefDto.js +1 -0
  57. package/dist/esm/src/generated/portal/models/ShowBlockedSeatResponseDto.d.ts +11 -0
  58. package/dist/esm/src/generated/portal/models/SkippedSessionSeatDto.d.ts +17 -0
  59. package/dist/esm/src/generated/portal/models/SkippedSessionSeatDto.js +11 -0
  60. package/dist/esm/src/generated/portal/services/OrderLookupService.d.ts +3 -2
  61. package/dist/esm/src/generated/portal/services/OrderLookupService.js +1 -1
  62. package/dist/esm/src/generated/portal/types.d.ts +2 -0
  63. package/dist/esm/src/generated/scanner/core/request.js +4 -0
  64. package/dist/esm/src/generated/shopper/core/OpenAPI.js +1 -1
  65. package/dist/esm/src/generated/shopper/core/request.js +4 -0
  66. package/dist/esm/src/generated/shopper/index.d.ts +3 -2
  67. package/dist/esm/src/generated/shopper/index.js +1 -0
  68. package/dist/esm/src/generated/shopper/models/CapabilityManifestDto.d.ts +18 -0
  69. package/dist/esm/src/generated/shopper/models/CapabilityManifestDto.js +1 -0
  70. package/dist/esm/src/generated/shopper/models/CompleteBody.d.ts +1 -1
  71. package/dist/esm/src/generated/shopper/models/CorrelatedCode.d.ts +23 -0
  72. package/dist/esm/src/generated/shopper/models/CorrelatedCode.js +13 -1
  73. package/dist/esm/src/generated/shopper/models/EmailUpdate.d.ts +1 -1
  74. package/dist/esm/src/generated/shopper/models/EventFormat.d.ts +18 -0
  75. package/dist/esm/src/generated/shopper/models/EventFormat.js +1 -0
  76. package/dist/esm/src/generated/shopper/models/EventListItem.d.ts +3 -14
  77. package/dist/esm/src/generated/shopper/models/GAResponse.d.ts +15 -3
  78. package/dist/esm/src/generated/shopper/models/GaTier.d.ts +4 -1
  79. package/dist/esm/src/generated/shopper/models/SaveDetailsBody.d.ts +0 -1
  80. package/dist/esm/src/generated/shopper/models/SeatHoldObject.d.ts +2 -3
  81. package/dist/esm/src/generated/shopper/models/SeatHoldReturn.d.ts +2 -3
  82. package/dist/esm/src/generated/shopper/models/SiteTheme.d.ts +4 -0
  83. package/dist/esm/src/generated/shopper/services/CartService.d.ts +2 -2
  84. package/dist/esm/src/generated/shopper/services/CartService.js +2 -2
  85. package/dist/esm/src/generated/shopper/services/OrderService.d.ts +2 -2
  86. package/dist/esm/src/generated/shopper/services/OrderService.js +2 -2
  87. package/dist/esm/src/generated/shopper/services/SessionService.d.ts +23 -0
  88. package/dist/esm/src/generated/shopper/services/SessionService.js +38 -0
  89. package/dist/esm/src/generated/shopper/types.d.ts +2 -2
  90. package/package.json +1 -1
  91. package/src/custom/custom-request.txt +4 -0
  92. package/src/functions/sdkConfig.ts +56 -3
  93. package/src/generated/portal/core/OpenAPI.ts +1 -1
  94. package/src/generated/portal/core/request.ts +4 -0
  95. package/src/generated/portal/index.ts +3 -0
  96. package/src/generated/portal/models/AddSessionSeatResponseDto.ts +12 -0
  97. package/src/generated/portal/models/OrderRecalculateRequestDto.ts +4 -0
  98. package/src/generated/portal/models/SessionSeatRefDto.ts +9 -0
  99. package/src/generated/portal/models/ShowBlockedSeatResponseDto.ts +11 -0
  100. package/src/generated/portal/models/SkippedSessionSeatDto.ts +22 -0
  101. package/src/generated/portal/services/OrderLookupService.ts +3 -2
  102. package/src/generated/portal/types.ts +2 -0
  103. package/src/generated/scanner/core/request.ts +4 -0
  104. package/src/generated/shopper/core/OpenAPI.ts +1 -1
  105. package/src/generated/shopper/core/request.ts +4 -0
  106. package/src/generated/shopper/index.ts +3 -2
  107. package/src/generated/shopper/models/CapabilityManifestDto.ts +23 -0
  108. package/src/generated/shopper/models/CompleteBody.ts +1 -1
  109. package/src/generated/shopper/models/CorrelatedCode.ts +23 -0
  110. package/src/generated/shopper/models/EmailUpdate.ts +1 -1
  111. package/src/generated/shopper/models/EventFormat.ts +23 -0
  112. package/src/generated/shopper/models/EventListItem.ts +3 -14
  113. package/src/generated/shopper/models/GAResponse.ts +15 -3
  114. package/src/generated/shopper/models/GaTier.ts +4 -1
  115. package/src/generated/shopper/models/SaveDetailsBody.ts +0 -1
  116. package/src/generated/shopper/models/SeatHoldObject.ts +2 -3
  117. package/src/generated/shopper/models/SeatHoldReturn.ts +2 -3
  118. package/src/generated/shopper/models/SiteTheme.ts +4 -0
  119. package/src/generated/shopper/services/CartService.ts +2 -2
  120. package/src/generated/shopper/services/OrderService.ts +2 -2
  121. package/src/generated/shopper/services/SessionService.ts +43 -0
  122. package/src/generated/shopper/types.ts +2 -2
  123. package/src/generated/shopper/models/CartStateEnvelope.ts +0 -31
package/README.md CHANGED
@@ -50,6 +50,42 @@ await DRT.shopper.product.addProduct(productBody, {
50
50
  shopper. `shopperGuid`/`accountId` are the only values that become
51
51
  per-request. Portal and scanner are unaffected and remain singleton-scoped.
52
52
 
53
+ ### The API key
54
+
55
+ **`DRT.init({ apiKey })` is mandatory (2.0.0).** Every service call — shopper,
56
+ portal and scanner alike — throws `DRT SDK not initialized` until it has run;
57
+ there is no keyless mode. Portal-only and scanner-only consumers pass
58
+ `shopperScope: 'per-request'` so no shopper credentials are needed at init.
59
+
60
+ The shopper API refuses every request that does not carry a live key in the
61
+ `apikey` header, and only honours a key from the domains it was issued for
62
+ (`recital_ticketing.dbo.shopper_api_key`). Keys look like
63
+ `drt_shopper_de1ab347f47c…`. The convention across DRT services is to read it
64
+ from the `DRT_API_KEY` environment variable (in Azure DevOps: the `SDK`
65
+ variable group) and pass it to `DRT.init`:
66
+
67
+ ```ts
68
+ DRT.init({ apiKey: process.env.DRT_API_KEY, shopperScope: "per-request" });
69
+ ```
70
+
71
+ **Browsers** need nothing more: the browser sets the `Origin` header itself,
72
+ and that is what the API matches against the key's allowed domains.
73
+
74
+ **Servers** (a Node backend, a script) send no `Origin`, so they must declare
75
+ the domain they act as, which the SDK sends as `x-drt-domain`:
76
+
77
+ ```ts
78
+ DRT.init({
79
+ apiKey: process.env.DRT_API_KEY,
80
+ domain: "tap-to-pay.drttix.com",
81
+ shopperScope: "per-request",
82
+ });
83
+ ```
84
+
85
+ A missing key, an unknown or deactivated key, or a domain the key does not
86
+ allow all answer `401` with `errorCode` `INVALID_API_KEY` or
87
+ `API_KEY_DOMAIN_NOT_ALLOWED`.
88
+
53
89
  ---
54
90
 
55
91
  ## 🛠️ Local Development (Developer Only)
@@ -1,6 +1,29 @@
1
1
  export type ShopperScope = 'singleton' | 'per-request';
2
+ /**
3
+ * Header a non-browser caller uses to declare the domain it acts as. The
4
+ * shopper API matches it against the api key's allowed domains when no
5
+ * browser-set Origin/Referer is present.
6
+ */
7
+ export declare const DOMAIN_HEADER = "x-drt-domain";
2
8
  export interface SDKConfig {
9
+ /**
10
+ * A shopper API key issued by DRT ('drt_shopper_...'), sent as the `apikey`
11
+ * header on every call. The shopper API refuses any request without a live
12
+ * key, and only honours a key from the domains it was issued for: a browser
13
+ * is identified by the Origin header it sets itself; a server by `domain`.
14
+ *
15
+ * Read it from the DRT_API_KEY environment variable — never commit it.
16
+ */
3
17
  apiKey: string;
18
+ /**
19
+ * The domain this caller acts as (e.g. 'tap-to-pay.drttix.com'), sent as
20
+ * `x-drt-domain`. REQUIRED for callers that are not browsers — a Node
21
+ * backend, a server-side script — because they send no Origin/Referer, so
22
+ * without it the shopper API sees an empty domain and refuses the key.
23
+ * Browsers leave it unset: the API trusts the Origin the browser sets and
24
+ * ignores this header whenever an Origin/Referer is present.
25
+ */
26
+ domain?: string;
4
27
  /**
5
28
  * Required when shopperScope is 'singleton' (the default). Optional when
6
29
  * shopperScope is 'per-request' — in that mode these act only as a fallback
@@ -45,8 +68,13 @@ export interface SDKConfig {
45
68
  *
46
69
  * @example
47
70
  * ```javascript
48
- * // Backend serving many shoppers/accounts from a single SDK instance
49
- * DRT.init({ apiKey: 'your-api-key', shopperScope: 'per-request' });
71
+ * // Backend serving many shoppers/accounts from a single SDK instance.
72
+ * // A backend is not a browser, so it must also say which domain it acts as.
73
+ * DRT.init({
74
+ * apiKey: process.env.DRT_API_KEY,
75
+ * domain: 'tap-to-pay.drttix.com',
76
+ * shopperScope: 'per-request',
77
+ * });
50
78
  *
51
79
  * // Pass shopperGuid/accountId per call instead
52
80
  * await DRT.shopper.product.addProduct(body, {
@@ -60,6 +88,13 @@ export declare function init(config: SDKConfig): void;
60
88
  * Check if the SDK has been initialized with credentials.
61
89
  */
62
90
  export declare function isReady(): boolean;
91
+ /**
92
+ * Called by the shared request layer before EVERY request, for every service
93
+ * (shopper, portal, scanner). The SDK is unusable until DRT.init() has been
94
+ * given an api key — there is no keyless mode. Throwing here, rather than
95
+ * letting the request go out and fail at the API, names the fix in the error.
96
+ */
97
+ export declare function assertInitialized(baseUrl: string): void;
63
98
  /**
64
99
  * Get the current SDK configuration (if initialized).
65
100
  */
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DOMAIN_HEADER = void 0;
3
4
  exports.init = init;
4
5
  exports.isReady = isReady;
6
+ exports.assertInitialized = assertInitialized;
5
7
  exports.getConfig = getConfig;
6
8
  exports.getShopperScope = getShopperScope;
7
9
  exports.reset = reset;
@@ -10,6 +12,12 @@ exports.resolveShopperHeaders = resolveShopperHeaders;
10
12
  const OpenAPI_1 = require("../generated/shopper/core/OpenAPI");
11
13
  const OpenAPI_2 = require("../generated/scanner/core/OpenAPI");
12
14
  const OpenAPI_3 = require("../generated/portal/core/OpenAPI");
15
+ /**
16
+ * Header a non-browser caller uses to declare the domain it acts as. The
17
+ * shopper API matches it against the api key's allowed domains when no
18
+ * browser-set Origin/Referer is present.
19
+ */
20
+ exports.DOMAIN_HEADER = 'x-drt-domain';
13
21
  let isInitialized = false;
14
22
  let currentConfig = null;
15
23
  let currentShopperScope = 'singleton';
@@ -37,8 +45,13 @@ let currentShopperScope = 'singleton';
37
45
  *
38
46
  * @example
39
47
  * ```javascript
40
- * // Backend serving many shoppers/accounts from a single SDK instance
41
- * DRT.init({ apiKey: 'your-api-key', shopperScope: 'per-request' });
48
+ * // Backend serving many shoppers/accounts from a single SDK instance.
49
+ * // A backend is not a browser, so it must also say which domain it acts as.
50
+ * DRT.init({
51
+ * apiKey: process.env.DRT_API_KEY,
52
+ * domain: 'tap-to-pay.drttix.com',
53
+ * shopperScope: 'per-request',
54
+ * });
42
55
  *
43
56
  * // Pass shopperGuid/accountId per call instead
44
57
  * await DRT.shopper.product.addProduct(body, {
@@ -61,6 +74,9 @@ function init(config) {
61
74
  // Portal and scanner are always singleton-scoped: one fixed set of
62
75
  // credentials for every call, applied globally via OpenAPI.HEADERS.
63
76
  const sharedHeaders = { apikey: config.apiKey };
77
+ if (config.domain) {
78
+ sharedHeaders[exports.DOMAIN_HEADER] = config.domain;
79
+ }
64
80
  if (config.shopperGuid && config.accountId) {
65
81
  sharedHeaders.shopperguid = config.shopperGuid;
66
82
  sharedHeaders.accountid = config.accountId;
@@ -80,6 +96,20 @@ function init(config) {
80
96
  function isReady() {
81
97
  return isInitialized;
82
98
  }
99
+ /**
100
+ * Called by the shared request layer before EVERY request, for every service
101
+ * (shopper, portal, scanner). The SDK is unusable until DRT.init() has been
102
+ * given an api key — there is no keyless mode. Throwing here, rather than
103
+ * letting the request go out and fail at the API, names the fix in the error.
104
+ */
105
+ function assertInitialized(baseUrl) {
106
+ if (isInitialized) {
107
+ return;
108
+ }
109
+ throw new Error(`DRT SDK not initialized — call DRT.init({ apiKey, ... }) before using it (request to ${baseUrl}). ` +
110
+ 'The key comes from the DRT_API_KEY environment variable; a backend also passes ' +
111
+ "`domain`, and one that serves many shoppers passes shopperScope: 'per-request'.");
112
+ }
83
113
  /**
84
114
  * Get the current SDK configuration (if initialized).
85
115
  */
@@ -123,9 +153,13 @@ function resolveShopperHeaders(context) {
123
153
  ? 'No shopperGuid/accountId available for this call. DRT SDK was initialized with shopperScope: "per-request" without defaults — pass { shopperGuid, accountId } as the last argument to this call.'
124
154
  : 'DRT SDK not initialized with shopperGuid/accountId. Call DRT.init() first.');
125
155
  }
126
- return {
156
+ const headers = {
127
157
  shopperguid: shopperGuid,
128
158
  accountid: accountId,
129
159
  apikey: currentConfig.apiKey,
130
160
  };
161
+ if (currentConfig.domain) {
162
+ headers[exports.DOMAIN_HEADER] = currentConfig.domain;
163
+ }
164
+ return headers;
131
165
  }
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OpenAPI = void 0;
4
4
  exports.OpenAPI = {
5
5
  BASE: '',
6
- VERSION: '20260831.1',
6
+ VERSION: '20260902.5',
7
7
  WITH_CREDENTIALS: false,
8
8
  CREDENTIALS: 'include',
9
9
  TOKEN: undefined,
@@ -7,6 +7,9 @@ exports.request = exports.catchErrorCodes = exports.getResponseBody = exports.ge
7
7
  /* eslint-disable */
8
8
  const ApiError_1 = require("./ApiError");
9
9
  const CancelablePromise_1 = require("./CancelablePromise");
10
+ // Every service's request.ts is this same template (build-all.ts copies it),
11
+ // so this one check is what makes DRT.init() mandatory SDK-wide.
12
+ const sdkConfig_1 = require("../../../functions/sdkConfig");
10
13
  const isDefined = (value) => {
11
14
  return value !== undefined && value !== null;
12
15
  };
@@ -288,6 +291,7 @@ const storeCookie = (key, value) => {
288
291
  const request = (config, options) => {
289
292
  return new CancelablePromise_1.CancelablePromise(async (resolve, reject, onCancel) => {
290
293
  try {
294
+ (0, sdkConfig_1.assertInitialized)(config.BASE);
291
295
  const url = getUrl(config, options);
292
296
  const formData = (0, exports.getFormData)(options);
293
297
  const body = (0, exports.getRequestBody)(options);
@@ -8,6 +8,7 @@ export type { AccountDetailResponseDto } from './models/AccountDetailResponseDto
8
8
  export { AccountingTimezone } from './models/AccountingTimezone';
9
9
  export type { ActionResponseDto } from './models/ActionResponseDto';
10
10
  export type { AddSessionSeatRequestDto } from './models/AddSessionSeatRequestDto';
11
+ export type { AddSessionSeatResponseDto } from './models/AddSessionSeatResponseDto';
11
12
  export type { AddVideoAssetFormatRequestDto } from './models/AddVideoAssetFormatRequestDto';
12
13
  export type { AdminUserLevelResponseDto } from './models/AdminUserLevelResponseDto';
13
14
  export type { AdminUserResponseDto } from './models/AdminUserResponseDto';
@@ -327,6 +328,7 @@ export type { SendMailRequestDto } from './models/SendMailRequestDto';
327
328
  export type { SendReservationCodeMailRequestDto } from './models/SendReservationCodeMailRequestDto';
328
329
  export type { SendTextRequestDto } from './models/SendTextRequestDto';
329
330
  export type { SentMailResponseDto } from './models/SentMailResponseDto';
331
+ export type { SessionSeatRefDto } from './models/SessionSeatRefDto';
330
332
  export type { SetTiersRequestDto } from './models/SetTiersRequestDto';
331
333
  export type { SettingsAndWavesResponseDto } from './models/SettingsAndWavesResponseDto';
332
334
  export type { SettingsDetailsResponseDto } from './models/SettingsDetailsResponseDto';
@@ -371,6 +373,7 @@ export type { SingleFundDetailResponseDto } from './models/SingleFundDetailRespo
371
373
  export type { SingleOrderDetailResponseDto } from './models/SingleOrderDetailResponseDto';
372
374
  export type { SinglePatronCodeResponseDto } from './models/SinglePatronCodeResponseDto';
373
375
  export type { SinglePerformerRequestDto } from './models/SinglePerformerRequestDto';
376
+ export { SkippedSessionSeatDto } from './models/SkippedSessionSeatDto';
374
377
  export type { SoldTicketsResponseDto } from './models/SoldTicketsResponseDto';
375
378
  export type { StartImageUploadRequestDto } from './models/StartImageUploadRequestDto';
376
379
  export type { StartImageUploadResponseDto } from './models/StartImageUploadResponseDto';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuperUserAdvancedStudioSettingsService = exports.SuperUserAbandonedCartsService = exports.ShowsService = exports.SettingsService = exports.ReportsService = exports.OrderLookupService = exports.HelpService = exports.FeaturesProductsService = exports.FeaturesPriorityService = exports.FeaturesLandingPageService = exports.FeaturesGoldenTicketsService = exports.FeaturesGiftCardsService = exports.FeaturesDonationsService = exports.FeaturesDiscountsService = exports.FeaturesCheckoutQuestionsService = exports.FeaturesBlockedSeatsService = exports.DashboardService = exports.ClientToolsWaitlistService = exports.ClientToolsUnapprovedOrdersService = exports.ClientToolsTicketScanningService = exports.ClientToolsTicketingLinkService = exports.ClientToolsThemesLibraryService = exports.ClientToolsThemeBuilderService = exports.ClientToolsStripeOnboardingService = exports.ClientToolsSeatAssignmentToolService = exports.ClientToolsRequestChangesService = exports.ClientToolsPatronDatabaseService = exports.ClientToolsParentLetterService = exports.ClientToolsInterviewUpdateService = exports.ClientToolsGeneratedEmailsService = exports.BookmarkService = exports.AuthService = exports.AppService = exports.AgreementsService = exports.AccountingService = exports.AccountService = exports.ToggleType = exports.ThemeImageFormat = exports.StudioFeesLedgerType = exports.StripeUsageOption = exports.ShowDeployOption = exports.SalesTaxRegistrationOption = exports.CreateShowRequestDto = exports.CheckoutAnswerType = exports.AgreementStatusResponseDto = exports.AccountingTimezone = exports.OpenAPI = exports.CancelError = exports.CancelablePromise = exports.ApiError = void 0;
4
- exports.SuperUserVideoAssetsService = exports.SuperUserTimedTriggersService = exports.SuperUserSupportTicketsService = exports.SuperUserStudioManagementIntegrationService = exports.SuperUserShoppersService = exports.SuperUserReleasedTicketsService = exports.SuperUserManageImageFilesService = exports.SuperUserLaunchReadinessService = exports.SuperUserImportBlockedSeatsService = exports.SuperUserExtraService = exports.SuperUserEditCssService = exports.SuperUserDocumentLibraryService = exports.SuperUserBuyerBlacklistService = exports.SuperUserAlertsAndNotificationsService = void 0;
3
+ exports.SuperUserAbandonedCartsService = exports.ShowsService = exports.SettingsService = exports.ReportsService = exports.OrderLookupService = exports.HelpService = exports.FeaturesProductsService = exports.FeaturesPriorityService = exports.FeaturesLandingPageService = exports.FeaturesGoldenTicketsService = exports.FeaturesGiftCardsService = exports.FeaturesDonationsService = exports.FeaturesDiscountsService = exports.FeaturesCheckoutQuestionsService = exports.FeaturesBlockedSeatsService = exports.DashboardService = exports.ClientToolsWaitlistService = exports.ClientToolsUnapprovedOrdersService = exports.ClientToolsTicketScanningService = exports.ClientToolsTicketingLinkService = exports.ClientToolsThemesLibraryService = exports.ClientToolsThemeBuilderService = exports.ClientToolsStripeOnboardingService = exports.ClientToolsSeatAssignmentToolService = exports.ClientToolsRequestChangesService = exports.ClientToolsPatronDatabaseService = exports.ClientToolsParentLetterService = exports.ClientToolsInterviewUpdateService = exports.ClientToolsGeneratedEmailsService = exports.BookmarkService = exports.AuthService = exports.AppService = exports.AgreementsService = exports.AccountingService = exports.AccountService = exports.ToggleType = exports.ThemeImageFormat = exports.StudioFeesLedgerType = exports.StripeUsageOption = exports.SkippedSessionSeatDto = exports.ShowDeployOption = exports.SalesTaxRegistrationOption = exports.CreateShowRequestDto = exports.CheckoutAnswerType = exports.AgreementStatusResponseDto = exports.AccountingTimezone = exports.OpenAPI = exports.CancelError = exports.CancelablePromise = exports.ApiError = void 0;
4
+ exports.SuperUserVideoAssetsService = exports.SuperUserTimedTriggersService = exports.SuperUserSupportTicketsService = exports.SuperUserStudioManagementIntegrationService = exports.SuperUserShoppersService = exports.SuperUserReleasedTicketsService = exports.SuperUserManageImageFilesService = exports.SuperUserLaunchReadinessService = exports.SuperUserImportBlockedSeatsService = exports.SuperUserExtraService = exports.SuperUserEditCssService = exports.SuperUserDocumentLibraryService = exports.SuperUserBuyerBlacklistService = exports.SuperUserAlertsAndNotificationsService = exports.SuperUserAdvancedStudioSettingsService = void 0;
5
5
  /* generated using openapi-typescript-codegen -- do not edit */
6
6
  /* istanbul ignore file */
7
7
  /* tslint:disable */
@@ -25,6 +25,8 @@ var SalesTaxRegistrationOption_1 = require("./models/SalesTaxRegistrationOption"
25
25
  Object.defineProperty(exports, "SalesTaxRegistrationOption", { enumerable: true, get: function () { return SalesTaxRegistrationOption_1.SalesTaxRegistrationOption; } });
26
26
  var ShowDeployOption_1 = require("./models/ShowDeployOption");
27
27
  Object.defineProperty(exports, "ShowDeployOption", { enumerable: true, get: function () { return ShowDeployOption_1.ShowDeployOption; } });
28
+ var SkippedSessionSeatDto_1 = require("./models/SkippedSessionSeatDto");
29
+ Object.defineProperty(exports, "SkippedSessionSeatDto", { enumerable: true, get: function () { return SkippedSessionSeatDto_1.SkippedSessionSeatDto; } });
28
30
  var StripeUsageOption_1 = require("./models/StripeUsageOption");
29
31
  Object.defineProperty(exports, "StripeUsageOption", { enumerable: true, get: function () { return StripeUsageOption_1.StripeUsageOption; } });
30
32
  var StudioFeesLedgerType_1 = require("./models/StudioFeesLedgerType");
@@ -0,0 +1,7 @@
1
+ import type { SessionSeatRefDto } from './SessionSeatRefDto';
2
+ import type { SkippedSessionSeatDto } from './SkippedSessionSeatDto';
3
+ export type AddSessionSeatResponseDto = {
4
+ success: boolean;
5
+ added: Array<SessionSeatRefDto>;
6
+ skipped: Array<SkippedSessionSeatDto>;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -9,6 +9,10 @@ export type OrderRecalculateRequestDto = {
9
9
  * Set to 1 to include the shopper's held cart seats in the recalculation. Required for exchanges so the seats being exchanged into are priced into the new total.
10
10
  */
11
11
  addCart?: number;
12
+ /**
13
+ * Set to 1 to include the shopper's held blocked seats in the recalculation. `addCart` does not cover them: a blocked seat is held through session_blocked_seat_assoc and leaves seat_status.shopper NULL, so the cart-side recalc never sees it and prices it at zero.
14
+ */
15
+ addBlocked?: number;
12
16
  ticket: Array<ShowSeatPair>;
13
17
  tiers: Array<ShowSeatTierPair>;
14
18
  };
@@ -0,0 +1,4 @@
1
+ export type SessionSeatRefDto = {
2
+ showId: number;
3
+ seatId: number;
4
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -17,5 +17,16 @@ export type ShowBlockedSeatResponseDto = {
17
17
  dateBlocked: string | null;
18
18
  emailed: number | null;
19
19
  locked: number | null;
20
+ /**
21
+ * 1 when no other live admin session holds this blocked seat (it may already be held by the caller).
22
+ */
20
23
  available: number;
24
+ /**
25
+ * 1 when the caller's own session already holds this seat for the exchange in progress.
26
+ */
27
+ heldBySelf: number;
28
+ /**
29
+ * 1 when another live admin session holds this seat — adding it will be skipped.
30
+ */
31
+ heldByOther: number;
21
32
  };
@@ -0,0 +1,17 @@
1
+ export type SkippedSessionSeatDto = {
2
+ showId: number;
3
+ seatId: number;
4
+ /**
5
+ * HELD_BY_OTHER_SESSION: another live admin session already holds the seat. NOT_AVAILABLE: the seat is no longer a blocked seat for this studio.
6
+ */
7
+ reason: SkippedSessionSeatDto.reason;
8
+ };
9
+ export declare namespace SkippedSessionSeatDto {
10
+ /**
11
+ * HELD_BY_OTHER_SESSION: another live admin session already holds the seat. NOT_AVAILABLE: the seat is no longer a blocked seat for this studio.
12
+ */
13
+ enum reason {
14
+ HELD_BY_OTHER_SESSION = "HELD_BY_OTHER_SESSION",
15
+ NOT_AVAILABLE = "NOT_AVAILABLE"
16
+ }
17
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SkippedSessionSeatDto = void 0;
4
+ var SkippedSessionSeatDto;
5
+ (function (SkippedSessionSeatDto) {
6
+ /**
7
+ * HELD_BY_OTHER_SESSION: another live admin session already holds the seat. NOT_AVAILABLE: the seat is no longer a blocked seat for this studio.
8
+ */
9
+ let reason;
10
+ (function (reason) {
11
+ reason["HELD_BY_OTHER_SESSION"] = "HELD_BY_OTHER_SESSION";
12
+ reason["NOT_AVAILABLE"] = "NOT_AVAILABLE";
13
+ })(reason = SkippedSessionSeatDto.reason || (SkippedSessionSeatDto.reason = {}));
14
+ })(SkippedSessionSeatDto || (exports.SkippedSessionSeatDto = SkippedSessionSeatDto = {}));
@@ -1,4 +1,5 @@
1
1
  import type { AddSessionSeatRequestDto } from '../models/AddSessionSeatRequestDto';
2
+ import type { AddSessionSeatResponseDto } from '../models/AddSessionSeatResponseDto';
2
3
  import type { CancelExchangeTicketRequestDto } from '../models/CancelExchangeTicketRequestDto';
3
4
  import type { ExecuteReleaseSeatRequestDto } from '../models/ExecuteReleaseSeatRequestDto';
4
5
  import type { ExecuteSeatExchangeRequestDto } from '../models/ExecuteSeatExchangeRequestDto';
@@ -253,8 +254,8 @@ export declare class OrderLookupService {
253
254
  * To add seats to the session for the order
254
255
  * @param xStudioId The ID of the studio
255
256
  * @param requestBody Add seats to session details
256
- * @returns SuccessResponse Seats added to session successfully
257
+ * @returns AddSessionSeatResponseDto Blocked seats processed. `added` landed in the exchange session; `skipped` did not (with the reason), since a seat held by another live admin session cannot be added.
257
258
  * @throws ApiError
258
259
  */
259
- static addSeatsToSession(xStudioId: string, requestBody: AddSessionSeatRequestDto): CancelablePromise<SuccessResponse>;
260
+ static addSeatsToSession(xStudioId: string, requestBody: AddSessionSeatRequestDto): CancelablePromise<AddSessionSeatResponseDto>;
260
261
  }
@@ -489,7 +489,7 @@ class OrderLookupService {
489
489
  * To add seats to the session for the order
490
490
  * @param xStudioId The ID of the studio
491
491
  * @param requestBody Add seats to session details
492
- * @returns SuccessResponse Seats added to session successfully
492
+ * @returns AddSessionSeatResponseDto Blocked seats processed. `added` landed in the exchange session; `skipped` did not (with the reason), since a seat held by another live admin session cannot be added.
493
493
  * @throws ApiError
494
494
  */
495
495
  static addSeatsToSession(xStudioId, requestBody) {
@@ -3,6 +3,7 @@ export type { AcceptAgreementRequestDto } from './models/AcceptAgreementRequestD
3
3
  export type { AccountDetailResponseDto } from './models/AccountDetailResponseDto';
4
4
  export type { ActionResponseDto } from './models/ActionResponseDto';
5
5
  export type { AddSessionSeatRequestDto } from './models/AddSessionSeatRequestDto';
6
+ export type { AddSessionSeatResponseDto } from './models/AddSessionSeatResponseDto';
6
7
  export type { AddVideoAssetFormatRequestDto } from './models/AddVideoAssetFormatRequestDto';
7
8
  export type { AdminUserLevelResponseDto } from './models/AdminUserLevelResponseDto';
8
9
  export type { AdminUserResponseDto } from './models/AdminUserResponseDto';
@@ -318,6 +319,7 @@ export type { SendMailRequestDto } from './models/SendMailRequestDto';
318
319
  export type { SendReservationCodeMailRequestDto } from './models/SendReservationCodeMailRequestDto';
319
320
  export type { SendTextRequestDto } from './models/SendTextRequestDto';
320
321
  export type { SentMailResponseDto } from './models/SentMailResponseDto';
322
+ export type { SessionSeatRefDto } from './models/SessionSeatRefDto';
321
323
  export type { SetTiersRequestDto } from './models/SetTiersRequestDto';
322
324
  export type { SettingsAndWavesResponseDto } from './models/SettingsAndWavesResponseDto';
323
325
  export type { SettingsDetailsResponseDto } from './models/SettingsDetailsResponseDto';
@@ -7,6 +7,9 @@ exports.request = exports.catchErrorCodes = exports.getResponseBody = exports.ge
7
7
  /* eslint-disable */
8
8
  const ApiError_1 = require("./ApiError");
9
9
  const CancelablePromise_1 = require("./CancelablePromise");
10
+ // Every service's request.ts is this same template (build-all.ts copies it),
11
+ // so this one check is what makes DRT.init() mandatory SDK-wide.
12
+ const sdkConfig_1 = require("../../../functions/sdkConfig");
10
13
  const isDefined = (value) => {
11
14
  return value !== undefined && value !== null;
12
15
  };
@@ -288,6 +291,7 @@ const storeCookie = (key, value) => {
288
291
  const request = (config, options) => {
289
292
  return new CancelablePromise_1.CancelablePromise(async (resolve, reject, onCancel) => {
290
293
  try {
294
+ (0, sdkConfig_1.assertInitialized)(config.BASE);
291
295
  const url = getUrl(config, options);
292
296
  const formData = (0, exports.getFormData)(options);
293
297
  const body = (0, exports.getRequestBody)(options);
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OpenAPI = void 0;
4
4
  exports.OpenAPI = {
5
5
  BASE: 'https://api.drttix.com/shopper',
6
- VERSION: '20260831.4',
6
+ VERSION: '20260903.1',
7
7
  WITH_CREDENTIALS: false,
8
8
  CREDENTIALS: 'include',
9
9
  TOKEN: undefined,
@@ -7,6 +7,9 @@ exports.request = exports.catchErrorCodes = exports.getResponseBody = exports.ge
7
7
  /* eslint-disable */
8
8
  const ApiError_1 = require("./ApiError");
9
9
  const CancelablePromise_1 = require("./CancelablePromise");
10
+ // Every service's request.ts is this same template (build-all.ts copies it),
11
+ // so this one check is what makes DRT.init() mandatory SDK-wide.
12
+ const sdkConfig_1 = require("../../../functions/sdkConfig");
10
13
  const isDefined = (value) => {
11
14
  return value !== undefined && value !== null;
12
15
  };
@@ -288,6 +291,7 @@ const storeCookie = (key, value) => {
288
291
  const request = (config, options) => {
289
292
  return new CancelablePromise_1.CancelablePromise(async (resolve, reject, onCancel) => {
290
293
  try {
294
+ (0, sdkConfig_1.assertInitialized)(config.BASE);
291
295
  const url = getUrl(config, options);
292
296
  const formData = (0, exports.getFormData)(options);
293
297
  const body = (0, exports.getRequestBody)(options);
@@ -10,6 +10,7 @@ export type { AnswerInput } from './models/AnswerInput';
10
10
  export type { AssignNamesReturn } from './models/AssignNamesReturn';
11
11
  export type { BAHold } from './models/BAHold';
12
12
  export type { BlockOfTickets } from './models/BlockOfTickets';
13
+ export type { CapabilityManifestDto } from './models/CapabilityManifestDto';
13
14
  export type { Cart } from './models/Cart';
14
15
  export type { CartAmounts } from './models/CartAmounts';
15
16
  export type { CartClearResult } from './models/CartClearResult';
@@ -17,7 +18,6 @@ export type { CartCounts } from './models/CartCounts';
17
18
  export type { CartCountsLite } from './models/CartCountsLite';
18
19
  export type { CartHashResponse } from './models/CartHashResponse';
19
20
  export type { CartItemCounts } from './models/CartItemCounts';
20
- export type { CartStateEnvelope } from './models/CartStateEnvelope';
21
21
  export type { CartSummary } from './models/CartSummary';
22
22
  export type { CartTierOption } from './models/CartTierOption';
23
23
  export type { CartTierSeat } from './models/CartTierSeat';
@@ -39,7 +39,7 @@ export type { CheckoutSuccessResponse } from './models/CheckoutSuccessResponse';
39
39
  export type { CodeDto } from './models/CodeDto';
40
40
  export type { CompleteBody } from './models/CompleteBody';
41
41
  export type { ConnectedAccountResponse } from './models/ConnectedAccountResponse';
42
- export type { CorrelatedCode } from './models/CorrelatedCode';
42
+ export { CorrelatedCode } from './models/CorrelatedCode';
43
43
  export type { CreateCustomerResponse } from './models/CreateCustomerResponse';
44
44
  export type { CreatePaymentIntentBody } from './models/CreatePaymentIntentBody';
45
45
  export type { CreatePaymentIntentResponse } from './models/CreatePaymentIntentResponse';
@@ -55,6 +55,7 @@ export type { DonationText } from './models/DonationText';
55
55
  export type { EmailUpdate } from './models/EmailUpdate';
56
56
  export type { EngineSeat } from './models/EngineSeat';
57
57
  export type { EventDetails } from './models/EventDetails';
58
+ export type { EventFormat } from './models/EventFormat';
58
59
  export type { EventGroup } from './models/EventGroup';
59
60
  export type { EventLegend } from './models/EventLegend';
60
61
  export type { EventLegendItem } from './models/EventLegendItem';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StripeService = exports.SessionService = exports.SeatService = exports.ProductService = exports.PaymentService = exports.OrderService = exports.HealthService = exports.GiftCardService = exports.EventService = exports.DonationService = exports.CodeService = exports.CheckoutService = exports.CartService = exports.AccountService = exports.OpenAPI = exports.CancelError = exports.CancelablePromise = exports.ApiError = void 0;
3
+ exports.StripeService = exports.SessionService = exports.SeatService = exports.ProductService = exports.PaymentService = exports.OrderService = exports.HealthService = exports.GiftCardService = exports.EventService = exports.DonationService = exports.CodeService = exports.CheckoutService = exports.CartService = exports.AccountService = exports.CorrelatedCode = exports.OpenAPI = exports.CancelError = exports.CancelablePromise = exports.ApiError = void 0;
4
4
  /* generated using openapi-typescript-codegen -- do not edit */
5
5
  /* istanbul ignore file */
6
6
  /* tslint:disable */
@@ -12,6 +12,8 @@ Object.defineProperty(exports, "CancelablePromise", { enumerable: true, get: fun
12
12
  Object.defineProperty(exports, "CancelError", { enumerable: true, get: function () { return CancelablePromise_1.CancelError; } });
13
13
  var OpenAPI_1 = require("./core/OpenAPI");
14
14
  Object.defineProperty(exports, "OpenAPI", { enumerable: true, get: function () { return OpenAPI_1.OpenAPI; } });
15
+ var CorrelatedCode_1 = require("./models/CorrelatedCode");
16
+ Object.defineProperty(exports, "CorrelatedCode", { enumerable: true, get: function () { return CorrelatedCode_1.CorrelatedCode; } });
15
17
  var AccountService_1 = require("./services/AccountService");
16
18
  Object.defineProperty(exports, "AccountService", { enumerable: true, get: function () { return AccountService_1.AccountService; } });
17
19
  var CartService_1 = require("./services/CartService");
@@ -0,0 +1,18 @@
1
+ export type CapabilityManifestDto = {
2
+ /**
3
+ * True when session.logged_in = 1 AND a session_admin row exists for this (shopper, studio) — i.e. a box-office operator is driving the session.
4
+ */
5
+ operator: boolean;
6
+ /**
7
+ * True when the requesting IP appears in whitelist_ip.
8
+ */
9
+ whitelistedIp: boolean;
10
+ /**
11
+ * The IP the server saw. Null unless whitelistedIp is true.
12
+ */
13
+ ip: string | null;
14
+ /**
15
+ * What the UI may paint. A RENDERING HINT, not a permission: every entry corresponds to a server-side check that is enforced independently, and a client that fakes this list gains nothing.
16
+ */
17
+ capabilities: Array<'debug-bar' | 'cash-payment' | 'order-testing' | 'pos-defaults'>;
18
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,4 @@
1
1
  export type CompleteBody = {
2
2
  cartHash: string;
3
- ipAddress: string;
3
+ ipAddress?: string;
4
4
  };
@@ -11,4 +11,27 @@ export type CorrelatedCode = {
11
11
  * Human-readable summary of the code (shows, seats, effect).
12
12
  */
13
13
  details: string | null;
14
+ /**
15
+ * Whether the code can be applied now. The listing includes codes that cannot be, so the UI can say WHY (the legacy modal printed "Already Used" / "EXPIRED {date}" / "AVAILABLE {date}" beside a disabled button) rather than offering an Apply that will fail.
16
+ */
17
+ status: CorrelatedCode.status;
18
+ /**
19
+ * Calendar date (yyyy-MM-dd) the code becomes usable, or null if it already is. Drives the "AVAILABLE {date}" label. Naive by design: the column carries a wall clock in the studio's own time, and an instant renders a day early west of Greenwich.
20
+ */
21
+ availableFrom: string | null;
22
+ /**
23
+ * Calendar date (yyyy-MM-dd) the code expires, or null if it never does. Drives the "EXPIRED {date}" label. Naive, as availableFrom.
24
+ */
25
+ expiresAt: string | null;
14
26
  };
27
+ export declare namespace CorrelatedCode {
28
+ /**
29
+ * Whether the code can be applied now. The listing includes codes that cannot be, so the UI can say WHY (the legacy modal printed "Already Used" / "EXPIRED {date}" / "AVAILABLE {date}" beside a disabled button) rather than offering an Apply that will fail.
30
+ */
31
+ enum status {
32
+ AVAILABLE = "available",
33
+ USED = "used",
34
+ EXPIRED = "expired",
35
+ NOT_YET = "notYet"
36
+ }
37
+ }
@@ -1,2 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CorrelatedCode = void 0;
4
+ var CorrelatedCode;
5
+ (function (CorrelatedCode) {
6
+ /**
7
+ * Whether the code can be applied now. The listing includes codes that cannot be, so the UI can say WHY (the legacy modal printed "Already Used" / "EXPIRED {date}" / "AVAILABLE {date}" beside a disabled button) rather than offering an Apply that will fail.
8
+ */
9
+ let status;
10
+ (function (status) {
11
+ status["AVAILABLE"] = "available";
12
+ status["USED"] = "used";
13
+ status["EXPIRED"] = "expired";
14
+ status["NOT_YET"] = "notYet";
15
+ })(status = CorrelatedCode.status || (CorrelatedCode.status = {}));
16
+ })(CorrelatedCode || (exports.CorrelatedCode = CorrelatedCode = {}));
@@ -3,5 +3,5 @@ export type EmailUpdate = {
3
3
  tickets: Array<Ticket>;
4
4
  email: string;
5
5
  name: string;
6
- message: string;
6
+ message?: string;
7
7
  };
@@ -0,0 +1,18 @@
1
+ export type EventFormat = {
2
+ /**
3
+ * The show id of this format.
4
+ */
5
+ showId: number;
6
+ /**
7
+ * show.type_id — the format kind.
8
+ */
9
+ typeId: number;
10
+ /**
11
+ * This format's seating-chart id (PROJ-902 — lets a sibling format's pill link directly without resolving the chart on click).
12
+ */
13
+ chartId: number;
14
+ /**
15
+ * Roster (performer) count for this format (PROJ-912).
16
+ */
17
+ rosterCount: number;
18
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });