@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
@@ -1,3 +1,4 @@
1
+ import type { EventFormat } from './EventFormat';
1
2
  export type EventListItem = {
2
3
  id: number;
3
4
  chartId: number;
@@ -44,21 +45,9 @@ export type EventListItem = {
44
45
  salesTax: number;
45
46
  theatreName: string;
46
47
  /**
47
- * Show type ids of every format collapsed into this row (parallel to showIdList).
48
+ * Every format collapsed into this row (same production offered in-person/livestream/VOD/…).
48
49
  */
49
- typeIdList: Array<number>;
50
- /**
51
- * Show ids of every format collapsed into this row.
52
- */
53
- showIdList: Array<number>;
54
- /**
55
- * Chart ids parallel to showIdList (PROJ-902 — lets a sibling format's pill link directly without resolving the chart id on click).
56
- */
57
- chartIdList: Array<number>;
58
- /**
59
- * Roster (performer) counts parallel to showIdList (PROJ-912).
60
- */
61
- rosterCountList: Array<number>;
50
+ formats: Array<EventFormat>;
62
51
  /**
63
52
  * Show artwork URL (cloud URL, or the legacy local path when not clouded — dbo.ShowsAvailable derivation). Null when the show has no artwork (PROJ-901).
64
53
  */
@@ -1,5 +1,13 @@
1
- import type { CartStateEnvelope } from './CartStateEnvelope';
1
+ import type { EngineSeat } from './EngineSeat';
2
2
  export type GAResponse = {
3
+ /**
4
+ * False when the engine refused the request and held nothing. Absent on the release path, which cannot partially fail.
5
+ */
6
+ success?: boolean;
7
+ /**
8
+ * The engine's own explanation when success is false (e.g. 'No occupancy available in chart.').
9
+ */
10
+ message?: string;
3
11
  /**
4
12
  * The number of seats involved in the operation.
5
13
  */
@@ -13,7 +21,11 @@ export type GAResponse = {
13
21
  */
14
22
  seatsHeld?: number;
15
23
  /**
16
- * Post-hold/release cart state (SEAT-1C) no follow-up cart calls needed. Absent only if the state build failed.
24
+ * The seats the engine actually held/released in this call — the client applies exactly this delta to its own list (2026-08-31: seat clicks carry no cart state; totals belong to the summary pages).
25
+ */
26
+ seats?: Array<EngineSeat>;
27
+ /**
28
+ * Server processing time for this request, in ms.
17
29
  */
18
- cartState?: CartStateEnvelope;
30
+ serverTime?: number;
19
31
  };
@@ -1,6 +1,9 @@
1
1
  export type GaTier = {
2
2
  tierId: number;
3
- name: string;
3
+ /**
4
+ * The name of this price level. Null for the single implicit level a general-admission show has when it defines no tiers of its own (tierId 0) — naming that one belongs to the client, and legacy labels it "ALL TICKETS".
5
+ */
6
+ name: string | null;
4
7
  /**
5
8
  * Advance (pre-door) price.
6
9
  */
@@ -13,7 +13,6 @@ export type SaveDetailsBody = {
13
13
  billingCountry?: string;
14
14
  ccType?: string;
15
15
  ccNum?: string;
16
- ccCvn?: string;
17
16
  ccExpMonth?: string;
18
17
  ccExpYear?: string;
19
18
  studentCredit?: string;
@@ -1,10 +1,9 @@
1
- import type { CartStateEnvelope } from './CartStateEnvelope';
2
1
  import type { EngineSeat } from './EngineSeat';
3
2
  export type SeatHoldObject = {
4
3
  seats: Array<EngineSeat>;
5
4
  success: boolean;
6
5
  /**
7
- * Post-release cart state (SEAT-1C) everything the client would otherwise refetch. Absent only if the state build failed; fall back to the cart routes then.
6
+ * Server processing time for this request, in ms.
8
7
  */
9
- cartState?: CartStateEnvelope;
8
+ serverTime?: number;
10
9
  };
@@ -1,11 +1,10 @@
1
- import type { CartStateEnvelope } from './CartStateEnvelope';
2
1
  import type { EngineSeat } from './EngineSeat';
3
2
  export type SeatHoldReturn = {
4
3
  seats: Array<EngineSeat>;
5
4
  success: boolean;
6
5
  message: string;
7
6
  /**
8
- * Post-hold cart state (SEAT-1C): the GET /cart/totals, GET /cart and GET /cart/counts payloads produced after the recompute — a seat click needs NO follow-up calls. Present on failures too (the unchanged cart, for optimistic-UI rollback). Absent only if the state build itself failed.
7
+ * Server processing time for this request, in ms.
9
8
  */
10
- cartState?: CartStateEnvelope;
9
+ serverTime?: number;
11
10
  };
@@ -3,6 +3,10 @@ export type SiteTheme = {
3
3
  * Resolved studio logo URL (legacy application.cfm rule): the newest image row named logo.png with a cloud_src wins; null means fall back to the legacy on-disk path /client-content/images/{studioId}/logo.png on the legacy host.
4
4
  */
5
5
  logoSrc: string | null;
6
+ /**
7
+ * The studio's compiled stylesheet (studio_design.css) — the same text legacy rpc/theme.cfm streamed as text/css, and the authoritative theme. The Admin Portal Theme Builder regenerates the `:root{}` block on every save and re-appends the superuser Custom CSS tool's hand-written block (everything from `* Start protected content *` onward), so it carries rules the structured fields below cannot express. The site injects it verbatim and only falls back to composing from those fields when this is null — a studio whose design predates the column.
8
+ */
9
+ css: string | null;
6
10
  id: number;
7
11
  studio_id: number;
8
12
  facebook_image_id: number | null;
@@ -54,8 +54,8 @@ export declare class CartService {
54
54
  accountId?: string;
55
55
  }): CancelablePromise<CartHashResponse>;
56
56
  /**
57
- * Get Cash Payment Detail
58
- * Returns cash payment details for the current shopper session, including order total, payments total, and house card credentials.
57
+ * Get Cash Payment Detail (operator only)
58
+ * Returns cash payment details for the current shopper session, including order total, payments total, and house card credentials. Requires a logged-in operator session — returns 403 for a plain shopper.
59
59
  * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
60
60
  * @returns CashPaymentDetail Cash payment detail retrieved successfully.
61
61
  * @throws ApiError
@@ -82,8 +82,8 @@ class CartService {
82
82
  });
83
83
  }
84
84
  /**
85
- * Get Cash Payment Detail
86
- * Returns cash payment details for the current shopper session, including order total, payments total, and house card credentials.
85
+ * Get Cash Payment Detail (operator only)
86
+ * Returns cash payment details for the current shopper session, including order total, payments total, and house card credentials. Requires a logged-in operator session — returns 403 for a plain shopper.
87
87
  * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
88
88
  * @returns CashPaymentDetail Cash payment detail retrieved successfully.
89
89
  * @throws ApiError
@@ -93,8 +93,8 @@ export declare class OrderService {
93
93
  accountId?: string;
94
94
  }): CancelablePromise<LinkWithSuccess>;
95
95
  /**
96
- * Get testing guid
97
- * Fetches a testing guid for development purposes.
96
+ * Get testing guid (operator only)
97
+ * Fetches a random order guid for development purposes. Requires a logged-in operator session — returns 403 for a plain shopper.
98
98
  * @param guid Unique identifier for an order.
99
99
  * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
100
100
  * @returns GuidReturn Returns a testing guid.
@@ -121,8 +121,8 @@ class OrderService {
121
121
  });
122
122
  }
123
123
  /**
124
- * Get testing guid
125
- * Fetches a testing guid for development purposes.
124
+ * Get testing guid (operator only)
125
+ * Fetches a random order guid for development purposes. Requires a logged-in operator session — returns 403 for a plain shopper.
126
126
  * @param guid Unique identifier for an order.
127
127
  * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
128
128
  * @returns GuidReturn Returns a testing guid.
@@ -1,3 +1,4 @@
1
+ import type { CapabilityManifestDto } from '../models/CapabilityManifestDto';
1
2
  import type { CreateSessionDto } from '../models/CreateSessionDto';
2
3
  import type { ExtendTimerDto } from '../models/ExtendTimerDto';
3
4
  import type { ExtendTimerResponseDto } from '../models/ExtendTimerResponseDto';
@@ -60,4 +61,26 @@ export declare class SessionService {
60
61
  shopperGuid?: string;
61
62
  accountId?: string;
62
63
  }, requestBody?: ExtendTimerDto): CancelablePromise<ExtendTimerResponseDto>;
64
+ /**
65
+ * Shorten the cart timer
66
+ * Shortens the cart-hold timer to 5 seconds from now via the Session-Service (legacy cart-shorten), clearing show_group_id and moving the held seats’ release times with it. Staff debug tool for walking the cart-timeout flow on demand.
67
+ * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
68
+ * @returns ExtendTimerResponseDto Returns the shortened timer state.
69
+ * @throws ApiError
70
+ */
71
+ static shortenTimer(context?: {
72
+ shopperGuid?: string;
73
+ accountId?: string;
74
+ }): CancelablePromise<ExtendTimerResponseDto>;
75
+ /**
76
+ * What this caller may see
77
+ * Returns the operator flag, the debug IP-allowlist flag, and the resulting capability list for the calling session. A rendering hint for the UI — never a permission.
78
+ * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
79
+ * @returns CapabilityManifestDto Capability manifest for the calling session.
80
+ * @throws ApiError
81
+ */
82
+ static getCapabilities(context?: {
83
+ shopperGuid?: string;
84
+ accountId?: string;
85
+ }): CancelablePromise<CapabilityManifestDto>;
63
86
  }
@@ -107,5 +107,43 @@ class SessionService {
107
107
  },
108
108
  });
109
109
  }
110
+ /**
111
+ * Shorten the cart timer
112
+ * Shortens the cart-hold timer to 5 seconds from now via the Session-Service (legacy cart-shorten), clearing show_group_id and moving the held seats’ release times with it. Staff debug tool for walking the cart-timeout flow on demand.
113
+ * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
114
+ * @returns ExtendTimerResponseDto Returns the shortened timer state.
115
+ * @throws ApiError
116
+ */
117
+ static shortenTimer(context) {
118
+ return (0, request_1.request)(OpenAPI_1.OpenAPI, {
119
+ method: 'POST',
120
+ url: '/session/shorten',
121
+ headers: (0, sdkConfig_1.resolveShopperHeaders)(context),
122
+ errors: {
123
+ 400: `Bad Request error with error details.`,
124
+ 404: `Not found error with error details.`,
125
+ 500: `Internal Server Error, please contact developers.`,
126
+ },
127
+ });
128
+ }
129
+ /**
130
+ * What this caller may see
131
+ * Returns the operator flag, the debug IP-allowlist flag, and the resulting capability list for the calling session. A rendering hint for the UI — never a permission.
132
+ * @param context Optional per-call { shopperGuid, accountId } override. Falls back to the values passed to DRT.init().
133
+ * @returns CapabilityManifestDto Capability manifest for the calling session.
134
+ * @throws ApiError
135
+ */
136
+ static getCapabilities(context) {
137
+ return (0, request_1.request)(OpenAPI_1.OpenAPI, {
138
+ method: 'GET',
139
+ url: '/session/capabilities',
140
+ headers: (0, sdkConfig_1.resolveShopperHeaders)(context),
141
+ errors: {
142
+ 400: `Bad Request error with error details.`,
143
+ 404: `Not found error with error details.`,
144
+ 500: `Internal Server Error, please contact developers.`,
145
+ },
146
+ });
147
+ }
110
148
  }
111
149
  exports.SessionService = SessionService;
@@ -6,6 +6,7 @@ export type { AnswerInput } from './models/AnswerInput';
6
6
  export type { AssignNamesReturn } from './models/AssignNamesReturn';
7
7
  export type { BAHold } from './models/BAHold';
8
8
  export type { BlockOfTickets } from './models/BlockOfTickets';
9
+ export type { CapabilityManifestDto } from './models/CapabilityManifestDto';
9
10
  export type { Cart } from './models/Cart';
10
11
  export type { CartAmounts } from './models/CartAmounts';
11
12
  export type { CartClearResult } from './models/CartClearResult';
@@ -13,7 +14,6 @@ export type { CartCounts } from './models/CartCounts';
13
14
  export type { CartCountsLite } from './models/CartCountsLite';
14
15
  export type { CartHashResponse } from './models/CartHashResponse';
15
16
  export type { CartItemCounts } from './models/CartItemCounts';
16
- export type { CartStateEnvelope } from './models/CartStateEnvelope';
17
17
  export type { CartSummary } from './models/CartSummary';
18
18
  export type { CartTierOption } from './models/CartTierOption';
19
19
  export type { CartTierSeat } from './models/CartTierSeat';
@@ -35,7 +35,6 @@ export type { CheckoutSuccessResponse } from './models/CheckoutSuccessResponse';
35
35
  export type { CodeDto } from './models/CodeDto';
36
36
  export type { CompleteBody } from './models/CompleteBody';
37
37
  export type { ConnectedAccountResponse } from './models/ConnectedAccountResponse';
38
- export type { CorrelatedCode } from './models/CorrelatedCode';
39
38
  export type { CreateCustomerResponse } from './models/CreateCustomerResponse';
40
39
  export type { CreatePaymentIntentBody } from './models/CreatePaymentIntentBody';
41
40
  export type { CreatePaymentIntentResponse } from './models/CreatePaymentIntentResponse';
@@ -51,6 +50,7 @@ export type { DonationText } from './models/DonationText';
51
50
  export type { EmailUpdate } from './models/EmailUpdate';
52
51
  export type { EngineSeat } from './models/EngineSeat';
53
52
  export type { EventDetails } from './models/EventDetails';
53
+ export type { EventFormat } from './models/EventFormat';
54
54
  export type { EventGroup } from './models/EventGroup';
55
55
  export type { EventLegend } from './models/EventLegend';
56
56
  export type { EventLegendItem } from './models/EventLegendItem';
@@ -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
  */
@@ -2,6 +2,12 @@
2
2
  import { OpenAPI as ShopperAPI } from '../generated/shopper/core/OpenAPI.js';
3
3
  import { OpenAPI as ScannerAPI } from '../generated/scanner/core/OpenAPI.js';
4
4
  import { OpenAPI as PortalAPI } from '../generated/portal/core/OpenAPI.js';
5
+ /**
6
+ * Header a non-browser caller uses to declare the domain it acts as. The
7
+ * shopper API matches it against the api key's allowed domains when no
8
+ * browser-set Origin/Referer is present.
9
+ */
10
+ export const DOMAIN_HEADER = 'x-drt-domain';
5
11
  let isInitialized = false;
6
12
  let currentConfig = null;
7
13
  let currentShopperScope = 'singleton';
@@ -29,8 +35,13 @@ let currentShopperScope = 'singleton';
29
35
  *
30
36
  * @example
31
37
  * ```javascript
32
- * // Backend serving many shoppers/accounts from a single SDK instance
33
- * DRT.init({ apiKey: 'your-api-key', shopperScope: 'per-request' });
38
+ * // Backend serving many shoppers/accounts from a single SDK instance.
39
+ * // A backend is not a browser, so it must also say which domain it acts as.
40
+ * DRT.init({
41
+ * apiKey: process.env.DRT_API_KEY,
42
+ * domain: 'tap-to-pay.drttix.com',
43
+ * shopperScope: 'per-request',
44
+ * });
34
45
  *
35
46
  * // Pass shopperGuid/accountId per call instead
36
47
  * await DRT.shopper.product.addProduct(body, {
@@ -53,6 +64,9 @@ export function init(config) {
53
64
  // Portal and scanner are always singleton-scoped: one fixed set of
54
65
  // credentials for every call, applied globally via OpenAPI.HEADERS.
55
66
  const sharedHeaders = { apikey: config.apiKey };
67
+ if (config.domain) {
68
+ sharedHeaders[DOMAIN_HEADER] = config.domain;
69
+ }
56
70
  if (config.shopperGuid && config.accountId) {
57
71
  sharedHeaders.shopperguid = config.shopperGuid;
58
72
  sharedHeaders.accountid = config.accountId;
@@ -72,6 +86,20 @@ export function init(config) {
72
86
  export function isReady() {
73
87
  return isInitialized;
74
88
  }
89
+ /**
90
+ * Called by the shared request layer before EVERY request, for every service
91
+ * (shopper, portal, scanner). The SDK is unusable until DRT.init() has been
92
+ * given an api key — there is no keyless mode. Throwing here, rather than
93
+ * letting the request go out and fail at the API, names the fix in the error.
94
+ */
95
+ export function assertInitialized(baseUrl) {
96
+ if (isInitialized) {
97
+ return;
98
+ }
99
+ throw new Error(`DRT SDK not initialized — call DRT.init({ apiKey, ... }) before using it (request to ${baseUrl}). ` +
100
+ 'The key comes from the DRT_API_KEY environment variable; a backend also passes ' +
101
+ "`domain`, and one that serves many shoppers passes shopperScope: 'per-request'.");
102
+ }
75
103
  /**
76
104
  * Get the current SDK configuration (if initialized).
77
105
  */
@@ -115,9 +143,13 @@ export function resolveShopperHeaders(context) {
115
143
  ? '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.'
116
144
  : 'DRT SDK not initialized with shopperGuid/accountId. Call DRT.init() first.');
117
145
  }
118
- return {
146
+ const headers = {
119
147
  shopperguid: shopperGuid,
120
148
  accountid: accountId,
121
149
  apikey: currentConfig.apiKey,
122
150
  };
151
+ if (currentConfig.domain) {
152
+ headers[DOMAIN_HEADER] = currentConfig.domain;
153
+ }
154
+ return headers;
123
155
  }
@@ -1,6 +1,6 @@
1
1
  export const OpenAPI = {
2
2
  BASE: '',
3
- VERSION: '20260831.1',
3
+ VERSION: '20260902.5',
4
4
  WITH_CREDENTIALS: false,
5
5
  CREDENTIALS: 'include',
6
6
  TOKEN: undefined,
@@ -4,6 +4,9 @@
4
4
  /* eslint-disable */
5
5
  import { ApiError } from "./ApiError.js";
6
6
  import { CancelablePromise } from "./CancelablePromise.js";
7
+ // Every service's request.ts is this same template (build-all.ts copies it),
8
+ // so this one check is what makes DRT.init() mandatory SDK-wide.
9
+ import { assertInitialized } from "../../../functions/sdkConfig.js";
7
10
  export const isDefined = (value) => {
8
11
  return value !== undefined && value !== null;
9
12
  };
@@ -270,6 +273,7 @@ const storeCookie = (key, value) => {
270
273
  export const request = (config, options) => {
271
274
  return new CancelablePromise(async (resolve, reject, onCancel) => {
272
275
  try {
276
+ assertInitialized(config.BASE);
273
277
  const url = getUrl(config, options);
274
278
  const formData = getFormData(options);
275
279
  const body = 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';
@@ -11,6 +11,7 @@ export { CheckoutAnswerType } from './models/CheckoutAnswerType.js';
11
11
  export { CreateShowRequestDto } from './models/CreateShowRequestDto.js';
12
12
  export { SalesTaxRegistrationOption } from './models/SalesTaxRegistrationOption.js';
13
13
  export { ShowDeployOption } from './models/ShowDeployOption.js';
14
+ export { SkippedSessionSeatDto } from './models/SkippedSessionSeatDto.js';
14
15
  export { StripeUsageOption } from './models/StripeUsageOption.js';
15
16
  export { StudioFeesLedgerType } from './models/StudioFeesLedgerType.js';
16
17
  export { ThemeImageFormat } from './models/ThemeImageFormat.js';
@@ -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
+ };
@@ -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
+ };
@@ -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,11 @@
1
+ export var SkippedSessionSeatDto;
2
+ (function (SkippedSessionSeatDto) {
3
+ /**
4
+ * 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.
5
+ */
6
+ let reason;
7
+ (function (reason) {
8
+ reason["HELD_BY_OTHER_SESSION"] = "HELD_BY_OTHER_SESSION";
9
+ reason["NOT_AVAILABLE"] = "NOT_AVAILABLE";
10
+ })(reason = SkippedSessionSeatDto.reason || (SkippedSessionSeatDto.reason = {}));
11
+ })(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
  }
@@ -486,7 +486,7 @@ export class OrderLookupService {
486
486
  * To add seats to the session for the order
487
487
  * @param xStudioId The ID of the studio
488
488
  * @param requestBody Add seats to session details
489
- * @returns SuccessResponse Seats added to session successfully
489
+ * @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.
490
490
  * @throws ApiError
491
491
  */
492
492
  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';
@@ -4,6 +4,9 @@
4
4
  /* eslint-disable */
5
5
  import { ApiError } from "./ApiError.js";
6
6
  import { CancelablePromise } from "./CancelablePromise.js";
7
+ // Every service's request.ts is this same template (build-all.ts copies it),
8
+ // so this one check is what makes DRT.init() mandatory SDK-wide.
9
+ import { assertInitialized } from "../../../functions/sdkConfig.js";
7
10
  export const isDefined = (value) => {
8
11
  return value !== undefined && value !== null;
9
12
  };
@@ -270,6 +273,7 @@ const storeCookie = (key, value) => {
270
273
  export const request = (config, options) => {
271
274
  return new CancelablePromise(async (resolve, reject, onCancel) => {
272
275
  try {
276
+ assertInitialized(config.BASE);
273
277
  const url = getUrl(config, options);
274
278
  const formData = getFormData(options);
275
279
  const body = getRequestBody(options);
@@ -1,6 +1,6 @@
1
1
  export const OpenAPI = {
2
2
  BASE: 'https://api.drttix.com/shopper',
3
- VERSION: '20260831.4',
3
+ VERSION: '20260903.1',
4
4
  WITH_CREDENTIALS: false,
5
5
  CREDENTIALS: 'include',
6
6
  TOKEN: undefined,