@drttix/drt-sdk 0.9.6 → 0.9.7

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 (573) hide show
  1. package/README.md +59 -59
  2. package/azure-pipelines.yml +80 -80
  3. package/demo/README.md +28 -28
  4. package/demo/default.html +35 -35
  5. package/demo/test.html +1426 -870
  6. package/demo/with-base.html +39 -39
  7. package/dist/bundle/drt-sdk.js +1 -0
  8. package/dist/cjs/src/generated/portal/models/StudentCreditBuyerResponseDto.d.ts +12 -0
  9. package/dist/cjs/src/generated/portal/models/StudentCreditBuyerResponseDto.js +2 -0
  10. package/dist/esm/src/generated/portal/models/StudentCreditBuyerResponseDto.d.ts +12 -0
  11. package/dist/esm/src/generated/portal/models/StudentCreditBuyerResponseDto.js +1 -0
  12. package/drt-api-specs.json +14 -14
  13. package/package.json +40 -40
  14. package/public/sdk/latest/drt-sdk.js +1 -1
  15. package/scripts/fix-import-extensions.mjs +88 -88
  16. package/src/custom/custom-request.txt +387 -387
  17. package/src/functions/sdkConfig.ts +132 -132
  18. package/src/functions/setBaseURL.ts +47 -47
  19. package/src/generated/portal/core/ApiError.ts +1 -1
  20. package/src/generated/portal/core/ApiRequestOptions.ts +1 -1
  21. package/src/generated/portal/core/ApiResult.ts +1 -1
  22. package/src/generated/portal/core/CancelablePromise.ts +1 -1
  23. package/src/generated/portal/core/OpenAPI.ts +1 -1
  24. package/src/generated/portal/core/request.ts +387 -387
  25. package/src/generated/portal/models/AbandonedCartResponseDto.ts +13 -13
  26. package/src/generated/portal/models/AccountDetailResponseDto.ts +10 -10
  27. package/src/generated/portal/models/AddSessionSeatRequestDto.ts +9 -9
  28. package/src/generated/portal/models/AdminUserLevelResponseDto.ts +9 -9
  29. package/src/generated/portal/models/AdminUserResponseDto.ts +13 -13
  30. package/src/generated/portal/models/AdvancedPricing.ts +14 -14
  31. package/src/generated/portal/models/AlbumImageResponseDto.ts +9 -9
  32. package/src/generated/portal/models/AnswerOrder.ts +10 -10
  33. package/src/generated/portal/models/ApproveOrderRequestDto.ts +9 -9
  34. package/src/generated/portal/models/ApproveRefundRequestDto.ts +10 -10
  35. package/src/generated/portal/models/ApproveShowRequestDto.ts +8 -8
  36. package/src/generated/portal/models/AssignSeatsRequestDto.ts +13 -13
  37. package/src/generated/portal/models/AssignWaitlistRequestDto.ts +11 -11
  38. package/src/generated/portal/models/AutoDiscounts.ts +8 -8
  39. package/src/generated/portal/models/AvaliableSeats.ts +12 -12
  40. package/src/generated/portal/models/BankDetails.ts +24 -24
  41. package/src/generated/portal/models/BlockChartSeatRequestDto.ts +12 -12
  42. package/src/generated/portal/models/BlockGeneralSeatResponseDto.ts +11 -11
  43. package/src/generated/portal/models/BlockGeneralSeatsRequestDto.ts +9 -9
  44. package/src/generated/portal/models/BlockSeatsRequestDto.ts +8 -8
  45. package/src/generated/portal/models/BlockedSeatDetailResponseDto.ts +15 -15
  46. package/src/generated/portal/models/BookmarkResponseDto.ts +12 -12
  47. package/src/generated/portal/models/BugReportRequestDto.ts +9 -9
  48. package/src/generated/portal/models/BulkCreateGiftCardRequestDto.ts +20 -20
  49. package/src/generated/portal/models/BulkEditRequestDto.ts +18 -18
  50. package/src/generated/portal/models/BuyerResponseDto.ts +17 -17
  51. package/src/generated/portal/models/CancelExchangeTicketRequestDto.ts +9 -9
  52. package/src/generated/portal/models/CartCountResponseDto.ts +8 -8
  53. package/src/generated/portal/models/CartToggleTickerResponseDto.ts +8 -8
  54. package/src/generated/portal/models/ChangePasswordRequestDto.ts +10 -10
  55. package/src/generated/portal/models/ChartReviewRequestDto.ts +9 -9
  56. package/src/generated/portal/models/ChartReviewValidationResponseDto.ts +9 -9
  57. package/src/generated/portal/models/CheckBookmarkResponseDto.ts +10 -10
  58. package/src/generated/portal/models/CheckSelectedSeatResponseDto.ts +10 -10
  59. package/src/generated/portal/models/CheckoutAnswerOrderRequestDto.ts +9 -9
  60. package/src/generated/portal/models/CheckoutAnswerOrderResponseDto.ts +19 -19
  61. package/src/generated/portal/models/CheckoutAnswerQuestionResponseDto.ts +11 -11
  62. package/src/generated/portal/models/CheckoutQuestionResponseDto.ts +29 -29
  63. package/src/generated/portal/models/CheckoutResponseShowResponseDto.ts +10 -10
  64. package/src/generated/portal/models/CodeDetailResponseDto.ts +29 -29
  65. package/src/generated/portal/models/CodeDetailsResponseDto.ts +11 -11
  66. package/src/generated/portal/models/CodeShopperDetail.ts +10 -10
  67. package/src/generated/portal/models/CodeUsageDetail.ts +16 -16
  68. package/src/generated/portal/models/CodeUsageResponseDto.ts +12 -12
  69. package/src/generated/portal/models/CollectionDetailsRequestDto.ts +8 -8
  70. package/src/generated/portal/models/CollectionDetailsResponseDto.ts +14 -14
  71. package/src/generated/portal/models/CouponCodeResponseDto.ts +14 -14
  72. package/src/generated/portal/models/CouponDataResponseDto.ts +17 -17
  73. package/src/generated/portal/models/CouponDetailResponseDto.ts +35 -35
  74. package/src/generated/portal/models/CouponFilterResponseDto.ts +11 -11
  75. package/src/generated/portal/models/CouponType.ts +10 -10
  76. package/src/generated/portal/models/CreateAccountRequestDto.ts +11 -11
  77. package/src/generated/portal/models/CreateAccountResponseDto.ts +8 -8
  78. package/src/generated/portal/models/CreatePatronCodeRequestDto.ts +9 -9
  79. package/src/generated/portal/models/CreatePatronTagsRequestDto.ts +9 -9
  80. package/src/generated/portal/models/CreatePerformersRequestDto.ts +10 -10
  81. package/src/generated/portal/models/CreatePriorityCodeRequestDto.ts +26 -26
  82. package/src/generated/portal/models/CreateProductResponseDto.ts +8 -8
  83. package/src/generated/portal/models/CreateProductVariantRequestDto.ts +9 -9
  84. package/src/generated/portal/models/CreateUpdateAdminUserRequestDto.ts +12 -12
  85. package/src/generated/portal/models/CreateUpdateAlbumRequestDto.ts +8 -8
  86. package/src/generated/portal/models/CreateUpdateFundRequestDto.ts +24 -24
  87. package/src/generated/portal/models/CreateUpdateGiftCardRequestDto.ts +15 -15
  88. package/src/generated/portal/models/CreateUpdateGoldenTicketRequestDto.ts +12 -12
  89. package/src/generated/portal/models/CreateUpdateProductRequestDto.ts +35 -35
  90. package/src/generated/portal/models/CreateUpdateQuestionRequestDto.ts +23 -23
  91. package/src/generated/portal/models/CreateUpdateWaitlistRequestDto.ts +15 -15
  92. package/src/generated/portal/models/CreateYoutubeVideoRequestDto.ts +11 -11
  93. package/src/generated/portal/models/CustomLogicResponseDto.ts +9 -9
  94. package/src/generated/portal/models/DashboardResponseDto.ts +11 -11
  95. package/src/generated/portal/models/DeleteAbandonedCartsRequestDto.ts +11 -11
  96. package/src/generated/portal/models/DeleteAlbumImageRequestDto.ts +8 -8
  97. package/src/generated/portal/models/DeleteCodesRequestDto.ts +9 -9
  98. package/src/generated/portal/models/DeleteCouponCodeRequestDto.ts +8 -8
  99. package/src/generated/portal/models/DeleteMailRequestDto.ts +8 -8
  100. package/src/generated/portal/models/DeletePatronCodeRequestDto.ts +8 -8
  101. package/src/generated/portal/models/DeletePriorityCodeRequestDto.ts +8 -8
  102. package/src/generated/portal/models/DeleteProductVariantRequestDto.ts +9 -9
  103. package/src/generated/portal/models/DigitalAssetLogResponseDto.ts +10 -10
  104. package/src/generated/portal/models/DigitalAssetsListResponseDto.ts +16 -16
  105. package/src/generated/portal/models/DiscountAccessRequestDto.ts +33 -33
  106. package/src/generated/portal/models/DisputeResponseDTO.ts +21 -21
  107. package/src/generated/portal/models/DonationFundsResponseDto.ts +9 -9
  108. package/src/generated/portal/models/DonationReportResponseDto.ts +18 -18
  109. package/src/generated/portal/models/DonationRequestDto.ts +9 -9
  110. package/src/generated/portal/models/DonationResponseDto.ts +14 -14
  111. package/src/generated/portal/models/DownloadLog.ts +10 -10
  112. package/src/generated/portal/models/DuplicateFundRequestDto.ts +8 -8
  113. package/src/generated/portal/models/DuplicateProductRequestDto.ts +8 -8
  114. package/src/generated/portal/models/EditMailRequestDto.ts +10 -10
  115. package/src/generated/portal/models/EditShowRequestDto.ts +23 -23
  116. package/src/generated/portal/models/EmailBuyersListResponseDto.ts +11 -11
  117. package/src/generated/portal/models/EmailBuyersRequestDto.ts +13 -13
  118. package/src/generated/portal/models/EmailDetailResponseDto.ts +9 -9
  119. package/src/generated/portal/models/ExchangeShowDetailResponseDto.ts +30 -30
  120. package/src/generated/portal/models/ExchangeTierDetailResponseDto.ts +14 -14
  121. package/src/generated/portal/models/ExecuteReleaseSeatRequestDto.ts +16 -16
  122. package/src/generated/portal/models/ExecuteSeatExchangeRequestDto.ts +11 -11
  123. package/src/generated/portal/models/ExpireHiddenCodesRequestDto.ts +8 -8
  124. package/src/generated/portal/models/FilterShowsResponseDto.ts +14 -14
  125. package/src/generated/portal/models/ForgotPasswordRequestDto.ts +9 -9
  126. package/src/generated/portal/models/FundListResponseDto.ts +13 -13
  127. package/src/generated/portal/models/FundResponseDto.ts +34 -34
  128. package/src/generated/portal/models/FutureMailResponseDto.ts +13 -13
  129. package/src/generated/portal/models/GatewayStatus.ts +16 -16
  130. package/src/generated/portal/models/GenerateCodeRequestDto.ts +23 -23
  131. package/src/generated/portal/models/GenerateGroupCodeRequestDto.ts +12 -12
  132. package/src/generated/portal/models/GetSettingsResponseDto.ts +14 -14
  133. package/src/generated/portal/models/GiftCardResponseDto.ts +19 -19
  134. package/src/generated/portal/models/GiftCardTransactionsResponseDto.ts +13 -13
  135. package/src/generated/portal/models/GoldenTicketDetailResponseDto.ts +10 -10
  136. package/src/generated/portal/models/GoldenTicketShowsResponseDto.ts +10 -10
  137. package/src/generated/portal/models/GroupCodeResponseDto.ts +17 -17
  138. package/src/generated/portal/models/HashLoginResponseDto.ts +20 -20
  139. package/src/generated/portal/models/HashTicketingLinkResponseDto.ts +15 -15
  140. package/src/generated/portal/models/HiddenCodeResponseDto.ts +8 -8
  141. package/src/generated/portal/models/HoldChartSeatResponseDto.ts +14 -14
  142. package/src/generated/portal/models/HoldSeatDetailsResponseDto.ts +7 -7
  143. package/src/generated/portal/models/IconShowGroupResponseDto.ts +11 -11
  144. package/src/generated/portal/models/InterviewDetailResponseDto.ts +12 -12
  145. package/src/generated/portal/models/InterviewResponseDto.ts +16 -16
  146. package/src/generated/portal/models/LandingPageAlbumResponseDto.ts +12 -12
  147. package/src/generated/portal/models/LandingPageResponseDto.ts +28 -28
  148. package/src/generated/portal/models/LoginRequestDto.ts +9 -9
  149. package/src/generated/portal/models/MailDetailResponseDto.ts +12 -12
  150. package/src/generated/portal/models/MailResponseDto.ts +11 -11
  151. package/src/generated/portal/models/ManagedShowResponseDto.ts +13 -13
  152. package/src/generated/portal/models/MappedPortalObjectPermission.ts +13 -13
  153. package/src/generated/portal/models/MappedPortalObjectSimple.ts +10 -10
  154. package/src/generated/portal/models/MessageSettingResponseDto.ts +10 -10
  155. package/src/generated/portal/models/MigrateTicketDetails.ts +13 -13
  156. package/src/generated/portal/models/MigrateTicketRequestDto.ts +10 -10
  157. package/src/generated/portal/models/MigrationPossibleShow.ts +13 -13
  158. package/src/generated/portal/models/ModifyTicketRequestDto.ts +11 -11
  159. package/src/generated/portal/models/NotificationDto.ts +10 -10
  160. package/src/generated/portal/models/NotificationResponseDto.ts +13 -13
  161. package/src/generated/portal/models/NotificationSettingRequestDto.ts +9 -9
  162. package/src/generated/portal/models/NotificationSettingsResponseDto.ts +13 -13
  163. package/src/generated/portal/models/OTPResponseDto.ts +9 -9
  164. package/src/generated/portal/models/OrderActionsResponseDto.ts +13 -13
  165. package/src/generated/portal/models/OrderDetails.ts +13 -13
  166. package/src/generated/portal/models/OrderEmailBuyersRequestDto.ts +16 -16
  167. package/src/generated/portal/models/OrderFiltersResponseDto.ts +10 -10
  168. package/src/generated/portal/models/OrderLedgerDetailsResponseDto.ts +20 -20
  169. package/src/generated/portal/models/OrderListRequestDto.ts +10 -10
  170. package/src/generated/portal/models/OrderListResponseDto.ts +24 -24
  171. package/src/generated/portal/models/OrderRecalculateRequestDto.ts +15 -15
  172. package/src/generated/portal/models/OrderSeatDetailsResponseDto.ts +15 -15
  173. package/src/generated/portal/models/OrderTicketDetailResponseDto.ts +21 -21
  174. package/src/generated/portal/models/OtherResponseDto.ts +14 -14
  175. package/src/generated/portal/models/PartialShowDetail.ts +12 -12
  176. package/src/generated/portal/models/PartialTicketResponseDto.ts +20 -20
  177. package/src/generated/portal/models/PatronAccessRequestDto.ts +26 -26
  178. package/src/generated/portal/models/PatronCodeSendMailRequestDto.ts +14 -14
  179. package/src/generated/portal/models/PatronCodesResponseDto.ts +18 -18
  180. package/src/generated/portal/models/PatronManifestDetailResponseDto.ts +28 -28
  181. package/src/generated/portal/models/PatronShowGroupResponseDto.ts +21 -21
  182. package/src/generated/portal/models/PatronStatsResponseDto.ts +21 -21
  183. package/src/generated/portal/models/PaymentGatewayResponseDto.ts +17 -17
  184. package/src/generated/portal/models/PerformerCreditOrderRequestDto.ts +9 -9
  185. package/src/generated/portal/models/Performers.ts +9 -9
  186. package/src/generated/portal/models/PerformersListRequestDto.ts +9 -9
  187. package/src/generated/portal/models/PerformersListResponseDto.ts +11 -11
  188. package/src/generated/portal/models/PolicyDetailResponseDto.ts +15 -15
  189. package/src/generated/portal/models/PolicyDto.ts +9 -9
  190. package/src/generated/portal/models/PolicyRequestDto.ts +9 -9
  191. package/src/generated/portal/models/PolicyResponseDto.ts +12 -12
  192. package/src/generated/portal/models/PortalObjectRequestDto.ts +13 -13
  193. package/src/generated/portal/models/PosSettingsRequestDto.ts +13 -13
  194. package/src/generated/portal/models/PosSettingsResponseDto.ts +13 -13
  195. package/src/generated/portal/models/PriorityCode.ts +10 -10
  196. package/src/generated/portal/models/PriorityCodeResponseDto.ts +13 -13
  197. package/src/generated/portal/models/PriorityWaveDetail.ts +12 -12
  198. package/src/generated/portal/models/ProductDetailResponseDto.ts +35 -35
  199. package/src/generated/portal/models/ProductIconResponseDto.ts +11 -11
  200. package/src/generated/portal/models/ProductListResponseDto.ts +17 -17
  201. package/src/generated/portal/models/ProductRecipientResponseDto.ts +11 -11
  202. package/src/generated/portal/models/ProductResponseDto.ts +14 -14
  203. package/src/generated/portal/models/ProductSalesRequestDto.ts +11 -11
  204. package/src/generated/portal/models/ProductSalesResponseDto.ts +11 -11
  205. package/src/generated/portal/models/ProductSendMailRequestDto.ts +18 -18
  206. package/src/generated/portal/models/ProductVariantResponseDto.ts +18 -18
  207. package/src/generated/portal/models/QuestionDetailsResponseDto.ts +16 -16
  208. package/src/generated/portal/models/QuestionResponseDto.ts +9 -9
  209. package/src/generated/portal/models/QuestionShowGroupAndProductResponse.ts +9 -9
  210. package/src/generated/portal/models/QuestionShowResponse.ts +13 -13
  211. package/src/generated/portal/models/QuestionTypeResponse.ts +10 -10
  212. package/src/generated/portal/models/RecalculateOrderResponseDto.ts +35 -35
  213. package/src/generated/portal/models/RefundDetailResponseDto.ts +33 -33
  214. package/src/generated/portal/models/RefundOrderDetail.ts +17 -17
  215. package/src/generated/portal/models/RefundResponseDto.ts +24 -24
  216. package/src/generated/portal/models/RefundSetting.ts +9 -9
  217. package/src/generated/portal/models/RefundSettingsResponseDto.ts +7 -7
  218. package/src/generated/portal/models/ReleaseSeatDetailResponseDto.ts +29 -29
  219. package/src/generated/portal/models/RemoveReservationCodeRequestDto.ts +10 -10
  220. package/src/generated/portal/models/RemoveSeatsRequestDto.ts +11 -11
  221. package/src/generated/portal/models/ReorderBookmarkRequestDto.ts +11 -11
  222. package/src/generated/portal/models/ReorderImageRequestDto.ts +8 -8
  223. package/src/generated/portal/models/ReportProductSalesResponseDto.ts +30 -30
  224. package/src/generated/portal/models/ResendMailRequestDto.ts +9 -9
  225. package/src/generated/portal/models/ReservationCodeResponseDto.ts +20 -20
  226. package/src/generated/portal/models/ReservationDetailResponseDto.ts +18 -18
  227. package/src/generated/portal/models/ResetTaxPaymentRequestDto.ts +9 -9
  228. package/src/generated/portal/models/RevenueByShowRequestDto.ts +10 -10
  229. package/src/generated/portal/models/RevenueShowCalculationsResponseDto.ts +19 -19
  230. package/src/generated/portal/models/SaleDetail.ts +14 -14
  231. package/src/generated/portal/models/SalesByTierReponseDto.ts +17 -17
  232. package/src/generated/portal/models/SalesProductResponseDto.ts +11 -11
  233. package/src/generated/portal/models/SaveAdministrativeNoteRequestDto.ts +9 -9
  234. package/src/generated/portal/models/ScannedTicketOrderResponseDto.ts +22 -22
  235. package/src/generated/portal/models/ScannedTicketResponseDto.ts +10 -10
  236. package/src/generated/portal/models/SearchCodeResponseDto.ts +9 -9
  237. package/src/generated/portal/models/SearchFeatureResponseDto.ts +18 -18
  238. package/src/generated/portal/models/SearchOrderResponseDto.ts +15 -15
  239. package/src/generated/portal/models/SearchResponseDto.ts +15 -15
  240. package/src/generated/portal/models/SeatDetails.ts +22 -22
  241. package/src/generated/portal/models/SeatDetailsResponseDto.ts +10 -10
  242. package/src/generated/portal/models/SeatResponseDto.ts +17 -17
  243. package/src/generated/portal/models/SectionDetail.ts +10 -10
  244. package/src/generated/portal/models/SectionRule.ts +12 -12
  245. package/src/generated/portal/models/SelectedSeatExchangeResponseDto.ts +11 -11
  246. package/src/generated/portal/models/SendBlockedSeatsMailRequestDto.ts +12 -12
  247. package/src/generated/portal/models/SendMailRequestDto.ts +10 -10
  248. package/src/generated/portal/models/SendReservationCodeMailRequestDto.ts +12 -12
  249. package/src/generated/portal/models/SentMailResponseDto.ts +14 -14
  250. package/src/generated/portal/models/SettingsAndWavesResponseDto.ts +13 -13
  251. package/src/generated/portal/models/SettingsDetailsResponseDto.ts +57 -57
  252. package/src/generated/portal/models/Show.ts +11 -11
  253. package/src/generated/portal/models/ShowAndGroupResponseDto.ts +14 -14
  254. package/src/generated/portal/models/ShowBlockedSeatResponseDto.ts +26 -26
  255. package/src/generated/portal/models/ShowChartPreviewResponseDto.ts +10 -10
  256. package/src/generated/portal/models/ShowDetailDto.ts +71 -71
  257. package/src/generated/portal/models/ShowDetails.ts +12 -12
  258. package/src/generated/portal/models/ShowDetailsResponseDto.ts +16 -16
  259. package/src/generated/portal/models/ShowGroupResponseDto.ts +9 -9
  260. package/src/generated/portal/models/ShowGroups.ts +9 -9
  261. package/src/generated/portal/models/ShowListResponseDto.ts +15 -15
  262. package/src/generated/portal/models/ShowOrders.ts +11 -11
  263. package/src/generated/portal/models/ShowPricing.ts +17 -17
  264. package/src/generated/portal/models/ShowPricingDetail.ts +11 -11
  265. package/src/generated/portal/models/ShowReportListResponseDto.ts +14 -14
  266. package/src/generated/portal/models/ShowSeatDetailResponseDto.ts +11 -11
  267. package/src/generated/portal/models/ShowSeatPair.ts +9 -9
  268. package/src/generated/portal/models/ShowSeatTierPair.ts +10 -10
  269. package/src/generated/portal/models/ShowSectionDetail.ts +14 -14
  270. package/src/generated/portal/models/ShowSnapshotResponseDto.ts +22 -22
  271. package/src/generated/portal/models/ShowStatDetail.ts +34 -34
  272. package/src/generated/portal/models/ShowTicketSectionListResponseDto.ts +11 -11
  273. package/src/generated/portal/models/ShowTierRequestDto.ts +8 -8
  274. package/src/generated/portal/models/ShowTierResponseDto.ts +30 -30
  275. package/src/generated/portal/models/ShowTiers.ts +32 -32
  276. package/src/generated/portal/models/ShowTypeResponseDto.ts +10 -10
  277. package/src/generated/portal/models/ShowTypes.ts +10 -10
  278. package/src/generated/portal/models/Shows.ts +13 -13
  279. package/src/generated/portal/models/ShowsList.ts +32 -32
  280. package/src/generated/portal/models/ShowsResponseDto.ts +17 -17
  281. package/src/generated/portal/models/SingleFundDetailResponseDto.ts +11 -11
  282. package/src/generated/portal/models/SingleOrderDetailResponseDto.ts +21 -21
  283. package/src/generated/portal/models/SinglePatronCodeResponseDto.ts +23 -23
  284. package/src/generated/portal/models/SinglePerformerRequestDto.ts +9 -9
  285. package/src/generated/portal/models/SoldTicketsResponseDto.ts +32 -32
  286. package/src/generated/portal/models/StartImageUploadRequestDto.ts +8 -8
  287. package/src/generated/portal/models/StartImageUploadResponseDto.ts +9 -9
  288. package/src/generated/portal/models/StopShowRequestDto.ts +11 -11
  289. package/src/generated/portal/models/StringValidation.ts +13 -13
  290. package/src/generated/portal/models/StripeResponseDto.ts +13 -13
  291. package/src/generated/portal/models/StripeSettingsResponseDto.ts +13 -13
  292. package/src/generated/portal/models/StudentCreditOrdersResponseDto.ts +13 -13
  293. package/src/generated/portal/models/StudentCreditResponseDto.ts +10 -10
  294. package/src/generated/portal/models/StudioIntegratorDetailResponseDto.ts +11 -11
  295. package/src/generated/portal/models/SuccessResponse.ts +8 -8
  296. package/src/generated/portal/models/TaxAndBankDetailsResponseDto.ts +11 -11
  297. package/src/generated/portal/models/TaxByMonthRequestDto.ts +9 -9
  298. package/src/generated/portal/models/TaxByMonthResponseDto.ts +19 -19
  299. package/src/generated/portal/models/TaxDocuments.ts +9 -9
  300. package/src/generated/portal/models/TaxResponseDto.ts +14 -14
  301. package/src/generated/portal/models/TemplateResponseDto.ts +9 -9
  302. package/src/generated/portal/models/TheatreList.ts +8 -8
  303. package/src/generated/portal/models/ThemeBannerImageResponseDto.ts +11 -11
  304. package/src/generated/portal/models/ThemeCategoryResponseDto.ts +10 -10
  305. package/src/generated/portal/models/ThemeDesignResponseDto.ts +37 -37
  306. package/src/generated/portal/models/ThemeDetailResponseDto.ts +10 -10
  307. package/src/generated/portal/models/ThemeLinkResponseDto.ts +11 -11
  308. package/src/generated/portal/models/ThemeResponseDto.ts +11 -11
  309. package/src/generated/portal/models/TicketDetail.ts +24 -24
  310. package/src/generated/portal/models/TicketDetails.ts +18 -18
  311. package/src/generated/portal/models/TicketRequestDto.ts +9 -9
  312. package/src/generated/portal/models/TicketResponseDto.ts +19 -19
  313. package/src/generated/portal/models/TicketScanningShowResponseDto.ts +18 -18
  314. package/src/generated/portal/models/TicketSeatDetailResponseDto.ts +27 -27
  315. package/src/generated/portal/models/TicketingShowResponseDto.ts +13 -13
  316. package/src/generated/portal/models/TierDetail.ts +14 -14
  317. package/src/generated/portal/models/TierRequestDto.ts +10 -10
  318. package/src/generated/portal/models/TieredPrice.ts +17 -17
  319. package/src/generated/portal/models/TimeZoneResponse.ts +9 -9
  320. package/src/generated/portal/models/ToggleModifyTierRequestDto.ts +10 -10
  321. package/src/generated/portal/models/ToggleModifyTierResponseDto.ts +10 -10
  322. package/src/generated/portal/models/ToggleTierRequestDto.ts +9 -9
  323. package/src/generated/portal/models/ToggleTierResponseDto.ts +12 -12
  324. package/src/generated/portal/models/TransactionDetail.ts +14 -14
  325. package/src/generated/portal/models/UnApprovedOrderSeatDetailResponseDto.ts +12 -12
  326. package/src/generated/portal/models/UnAvailableSeating.ts +14 -14
  327. package/src/generated/portal/models/UnapprovedOrderDetailResponseDto.ts +10 -10
  328. package/src/generated/portal/models/UnapprovedOrderResponseDto.ts +17 -17
  329. package/src/generated/portal/models/UnblockSeatsRequestDto.ts +9 -9
  330. package/src/generated/portal/models/UnsoldTicketsResponseDto.ts +21 -21
  331. package/src/generated/portal/models/UpdateBankingRequestDto.ts +21 -21
  332. package/src/generated/portal/models/UpdateDiscountCodeRequestDto.ts +21 -21
  333. package/src/generated/portal/models/UpdateEmailRequestDto.ts +8 -8
  334. package/src/generated/portal/models/UpdateImageUploadRequestDto.ts +10 -10
  335. package/src/generated/portal/models/UpdateLandingPageConfigSettingRequestDto.ts +23 -23
  336. package/src/generated/portal/models/UpdateLandingPageRequestDto.ts +13 -13
  337. package/src/generated/portal/models/UpdateMessageRequestDto.ts +10 -10
  338. package/src/generated/portal/models/UpdatePatronCodeRequestDto.ts +15 -15
  339. package/src/generated/portal/models/UpdatePatronSettingsRequestDto.ts +11 -11
  340. package/src/generated/portal/models/UpdatePatronTagsRequestDto.ts +10 -10
  341. package/src/generated/portal/models/UpdatePriorityCodeRequestDto.ts +19 -19
  342. package/src/generated/portal/models/UpdateProductVariantRequestDto.ts +15 -15
  343. package/src/generated/portal/models/UpdateSearchLogRequestDto.ts +9 -9
  344. package/src/generated/portal/models/UpdateStudioSettingsRequestDto.ts +16 -16
  345. package/src/generated/portal/models/UpdateTaxRequestDto.ts +12 -12
  346. package/src/generated/portal/models/UpdateThemeDesignRequestDto.ts +32 -32
  347. package/src/generated/portal/models/ValidateEmailRequestDto.ts +8 -8
  348. package/src/generated/portal/models/ValidateEmailResponseDto.ts +9 -9
  349. package/src/generated/portal/models/VerifyOtpRequestDto.ts +9 -9
  350. package/src/generated/portal/models/VideoStreamResponseDto.ts +19 -19
  351. package/src/generated/portal/models/VirtualStreamResponseDto.ts +15 -15
  352. package/src/generated/portal/models/WaitlistDetailResponseDto.ts +18 -18
  353. package/src/generated/portal/models/WaitlistShowFilterResponseDto.ts +9 -9
  354. package/src/generated/portal/models/WaitlistShowResponseDto.ts +22 -22
  355. package/src/generated/portal/models/WavesResponseDto.ts +9 -9
  356. package/src/generated/portal/models/WeeklyResponseDto.ts +15 -15
  357. package/src/generated/portal/models/createServiceAgreementRequestDto.ts +9 -9
  358. package/src/generated/portal/models/seatShowIdPair.ts +9 -9
  359. package/src/generated/portal/models/tierIdQuantityPair.ts +9 -9
  360. package/src/generated/portal/services/AccountService.ts +140 -140
  361. package/src/generated/portal/services/AccountingService.ts +493 -493
  362. package/src/generated/portal/services/AppService.ts +33 -33
  363. package/src/generated/portal/services/AuthService.ts +183 -183
  364. package/src/generated/portal/services/BookmarkService.ts +127 -127
  365. package/src/generated/portal/services/ClientToolsGeneratedEmailsService.ts +109 -109
  366. package/src/generated/portal/services/ClientToolsParentLetterService.ts +28 -28
  367. package/src/generated/portal/services/ClientToolsPatronDatabaseService.ts +441 -441
  368. package/src/generated/portal/services/ClientToolsSeatAssignmentToolService.ts +28 -28
  369. package/src/generated/portal/services/ClientToolsStripeOnboardingService.ts +28 -28
  370. package/src/generated/portal/services/ClientToolsThemeBuilderService.ts +149 -149
  371. package/src/generated/portal/services/ClientToolsThemesLibraryService.ts +63 -63
  372. package/src/generated/portal/services/ClientToolsTicketScanningService.ts +71 -71
  373. package/src/generated/portal/services/ClientToolsTicketingLinkService.ts +58 -58
  374. package/src/generated/portal/services/ClientToolsUnapprovedOrdersService.ts +81 -81
  375. package/src/generated/portal/services/ClientToolsWaitlistService.ts +204 -204
  376. package/src/generated/portal/services/DashboardService.ts +71 -71
  377. package/src/generated/portal/services/FeaturesBlockedSeatsService.ts +548 -548
  378. package/src/generated/portal/services/FeaturesCheckoutQuestionsService.ts +144 -144
  379. package/src/generated/portal/services/FeaturesDiscountsService.ts +319 -319
  380. package/src/generated/portal/services/FeaturesDonationsService.ts +247 -247
  381. package/src/generated/portal/services/FeaturesGiftCardsService.ts +177 -177
  382. package/src/generated/portal/services/FeaturesGoldenTicketsService.ts +208 -208
  383. package/src/generated/portal/services/FeaturesLandingPageService.ts +299 -299
  384. package/src/generated/portal/services/FeaturesPriorityService.ts +255 -255
  385. package/src/generated/portal/services/FeaturesProductsService.ts +441 -441
  386. package/src/generated/portal/services/OrderLookupService.ts +615 -615
  387. package/src/generated/portal/services/ReportsService.ts +488 -488
  388. package/src/generated/portal/services/SettingsService.ts +377 -377
  389. package/src/generated/portal/services/ShowsService.ts +658 -658
  390. package/src/generated/portal/services/SuperUserAbandonedCartsService.ts +52 -52
  391. package/src/generated/scanner/core/ApiError.ts +1 -1
  392. package/src/generated/scanner/core/ApiRequestOptions.ts +1 -1
  393. package/src/generated/scanner/core/ApiResult.ts +1 -1
  394. package/src/generated/scanner/core/CancelablePromise.ts +1 -1
  395. package/src/generated/scanner/core/OpenAPI.ts +1 -1
  396. package/src/generated/scanner/core/request.ts +387 -387
  397. package/src/generated/scanner/models/DatabaseUpload.ts +10 -10
  398. package/src/generated/scanner/models/DatabaseUploadData.ts +10 -10
  399. package/src/generated/scanner/models/DisplayMessage.ts +10 -10
  400. package/src/generated/scanner/models/EventResponse.ts +16 -16
  401. package/src/generated/scanner/models/EventResponseStats.ts +11 -11
  402. package/src/generated/scanner/models/EventSkin.ts +23 -23
  403. package/src/generated/scanner/models/MobileReceiptResponse.ts +21 -21
  404. package/src/generated/scanner/models/OrderDetails.ts +15 -15
  405. package/src/generated/scanner/models/OrderProduct.ts +15 -15
  406. package/src/generated/scanner/models/OrderSeat.ts +19 -19
  407. package/src/generated/scanner/models/OrderSummary.ts +11 -11
  408. package/src/generated/scanner/models/Product.ts +15 -15
  409. package/src/generated/scanner/models/ProductQR.ts +8 -8
  410. package/src/generated/scanner/models/ProductScan.ts +16 -16
  411. package/src/generated/scanner/models/QueryDatabaseUnionResult.ts +13 -13
  412. package/src/generated/scanner/models/ReceiptBuyerDetails.ts +11 -11
  413. package/src/generated/scanner/models/ReceiptEventDetails.ts +12 -12
  414. package/src/generated/scanner/models/ReceiptProductDetails.ts +19 -19
  415. package/src/generated/scanner/models/ReceiptResponse.ts +21 -21
  416. package/src/generated/scanner/models/ReceiptSeatDetails.ts +15 -15
  417. package/src/generated/scanner/models/ResultMessage.ts +9 -9
  418. package/src/generated/scanner/models/RowResult.ts +8 -8
  419. package/src/generated/scanner/models/SeatQR.ts +8 -8
  420. package/src/generated/scanner/models/SeatResponse.ts +12 -12
  421. package/src/generated/scanner/models/SeatResult.ts +8 -8
  422. package/src/generated/scanner/models/SectionResult.ts +8 -8
  423. package/src/generated/scanner/models/TicketDatabase.ts +19 -19
  424. package/src/generated/scanner/models/TicketScan.ts +24 -24
  425. package/src/generated/scanner/models/TicketScanStats.ts +10 -10
  426. package/src/generated/scanner/models/TicketSeats.ts +14 -14
  427. package/src/generated/scanner/models/UploadDatabaseResponse.ts +10 -10
  428. package/src/generated/scanner/services/DatabaseService.ts +110 -110
  429. package/src/generated/scanner/services/OrdersService.ts +114 -114
  430. package/src/generated/scanner/services/ScanningService.ts +331 -331
  431. package/src/generated/shopper/core/ApiError.ts +1 -1
  432. package/src/generated/shopper/core/ApiRequestOptions.ts +1 -1
  433. package/src/generated/shopper/core/ApiResult.ts +1 -1
  434. package/src/generated/shopper/core/CancelablePromise.ts +1 -1
  435. package/src/generated/shopper/core/OpenAPI.ts +1 -1
  436. package/src/generated/shopper/core/request.ts +387 -387
  437. package/src/generated/shopper/models/Account.ts +57 -57
  438. package/src/generated/shopper/models/Album.ts +13 -13
  439. package/src/generated/shopper/models/AlbumImage.ts +13 -13
  440. package/src/generated/shopper/models/AlbumWithImages.ts +11 -11
  441. package/src/generated/shopper/models/AssignNamesReturn.ts +9 -9
  442. package/src/generated/shopper/models/BAHold.ts +10 -10
  443. package/src/generated/shopper/models/BlockOfTickets.ts +18 -18
  444. package/src/generated/shopper/models/Cart.ts +13 -13
  445. package/src/generated/shopper/models/CartCounts.ts +11 -11
  446. package/src/generated/shopper/models/CartWithTime.ts +10 -10
  447. package/src/generated/shopper/models/Chart.ts +13 -13
  448. package/src/generated/shopper/models/CheckoutDonation.ts +9 -9
  449. package/src/generated/shopper/models/CheckoutFailResponse.ts +10 -10
  450. package/src/generated/shopper/models/CheckoutGiftCard.ts +9 -9
  451. package/src/generated/shopper/models/CheckoutPageData.ts +23 -23
  452. package/src/generated/shopper/models/CheckoutProduct.ts +14 -14
  453. package/src/generated/shopper/models/CheckoutQuestion.ts +20 -20
  454. package/src/generated/shopper/models/CheckoutSessionData.ts +35 -35
  455. package/src/generated/shopper/models/CheckoutSubmitBody.ts +35 -35
  456. package/src/generated/shopper/models/CheckoutSuccessResponse.ts +8 -8
  457. package/src/generated/shopper/models/CodeDto.ts +11 -11
  458. package/src/generated/shopper/models/CompleteBody.ts +9 -9
  459. package/src/generated/shopper/models/CreateCustomerResponse.ts +9 -9
  460. package/src/generated/shopper/models/CreateSessionDto.ts +15 -15
  461. package/src/generated/shopper/models/DigitalAsset.ts +21 -21
  462. package/src/generated/shopper/models/DonationContribution.ts +10 -10
  463. package/src/generated/shopper/models/DonationFund.ts +34 -34
  464. package/src/generated/shopper/models/DonationInCart.ts +19 -19
  465. package/src/generated/shopper/models/DonationResult.ts +23 -23
  466. package/src/generated/shopper/models/DonationText.ts +9 -9
  467. package/src/generated/shopper/models/DonationsandContributions.ts +17 -17
  468. package/src/generated/shopper/models/EmailUpdate.ts +12 -12
  469. package/src/generated/shopper/models/EngineSeat.ts +7 -7
  470. package/src/generated/shopper/models/EventDetails.ts +51 -51
  471. package/src/generated/shopper/models/EventGroup.ts +16 -16
  472. package/src/generated/shopper/models/ExistingRefundDetails.ts +9 -9
  473. package/src/generated/shopper/models/FullEventDetails.ts +17 -17
  474. package/src/generated/shopper/models/GAHold.ts +11 -11
  475. package/src/generated/shopper/models/GAResponse.ts +19 -19
  476. package/src/generated/shopper/models/GASeatRelease.ts +10 -10
  477. package/src/generated/shopper/models/GetEventsResponse.ts +11 -11
  478. package/src/generated/shopper/models/GiftCardApplyDto.ts +23 -23
  479. package/src/generated/shopper/models/GiftCardApplyResponse.ts +35 -35
  480. package/src/generated/shopper/models/GiftCardCheckoutInfo.ts +35 -35
  481. package/src/generated/shopper/models/GiftCardEditFormResponse.ts +15 -15
  482. package/src/generated/shopper/models/GiftCardLookupResponse.ts +23 -23
  483. package/src/generated/shopper/models/GiftCardRemoveResponse.ts +19 -19
  484. package/src/generated/shopper/models/GuidReturn.ts +8 -8
  485. package/src/generated/shopper/models/HasAccessResponse.ts +8 -8
  486. package/src/generated/shopper/models/LandingConfig.ts +27 -27
  487. package/src/generated/shopper/models/LandingPageResponse.ts +17 -17
  488. package/src/generated/shopper/models/LinkWithSuccess.ts +9 -9
  489. package/src/generated/shopper/models/NameUpdate.ts +9 -9
  490. package/src/generated/shopper/models/OrderDetails.ts +42 -42
  491. package/src/generated/shopper/models/OrderRecalc.ts +11 -11
  492. package/src/generated/shopper/models/OrderRefundDetails.ts +10 -10
  493. package/src/generated/shopper/models/OrderSeat.ts +30 -30
  494. package/src/generated/shopper/models/OrderStream.ts +16 -16
  495. package/src/generated/shopper/models/OrderTicketReceipt.ts +30 -30
  496. package/src/generated/shopper/models/PatronName.ts +10 -10
  497. package/src/generated/shopper/models/PaymentDetail.ts +40 -40
  498. package/src/generated/shopper/models/PaymentFail.ts +23 -23
  499. package/src/generated/shopper/models/PaymentSuccess.ts +23 -23
  500. package/src/generated/shopper/models/PerformerEventList.ts +9 -9
  501. package/src/generated/shopper/models/PickupReturn.ts +11 -11
  502. package/src/generated/shopper/models/PriorityCode.ts +10 -10
  503. package/src/generated/shopper/models/Product.ts +28 -28
  504. package/src/generated/shopper/models/ProductAddResponse.ts +12 -12
  505. package/src/generated/shopper/models/ProductBody.ts +12 -12
  506. package/src/generated/shopper/models/ProductData.ts +11 -11
  507. package/src/generated/shopper/models/ProductDeleteBody.ts +11 -11
  508. package/src/generated/shopper/models/ProductDetails.ts +16 -16
  509. package/src/generated/shopper/models/ProductInCart.ts +17 -17
  510. package/src/generated/shopper/models/ProductUpdateResponse.ts +10 -10
  511. package/src/generated/shopper/models/ProductVariant.ts +18 -18
  512. package/src/generated/shopper/models/RecalcResponse.ts +10 -10
  513. package/src/generated/shopper/models/RecalcReturn.ts +31 -31
  514. package/src/generated/shopper/models/Receipt.ts +38 -38
  515. package/src/generated/shopper/models/ReceiptMessages.ts +8 -8
  516. package/src/generated/shopper/models/ReceiptQuestions.ts +12 -12
  517. package/src/generated/shopper/models/Refund.ts +12 -12
  518. package/src/generated/shopper/models/RefundPolicy.ts +8 -8
  519. package/src/generated/shopper/models/RefundReason.ts +12 -12
  520. package/src/generated/shopper/models/RefundRequest.ts +13 -13
  521. package/src/generated/shopper/models/RefundRequestInfo.ts +15 -15
  522. package/src/generated/shopper/models/RegisterStreamRequest.ts +9 -9
  523. package/src/generated/shopper/models/RegisterStreamResponse.ts +10 -10
  524. package/src/generated/shopper/models/RootConfigResponse.ts +22 -22
  525. package/src/generated/shopper/models/SaveDetailsBody.ts +26 -26
  526. package/src/generated/shopper/models/SaveNonceBody.ts +15 -15
  527. package/src/generated/shopper/models/SeatData.ts +9 -9
  528. package/src/generated/shopper/models/SeatHoldReturn.ts +11 -11
  529. package/src/generated/shopper/models/SeatInCart.ts +26 -26
  530. package/src/generated/shopper/models/SeatingTier.ts +27 -27
  531. package/src/generated/shopper/models/Section.ts +20 -20
  532. package/src/generated/shopper/models/SectionRule.ts +15 -15
  533. package/src/generated/shopper/models/SessionHeartbeatDto.ts +9 -9
  534. package/src/generated/shopper/models/SessionInfoDto.ts +20 -20
  535. package/src/generated/shopper/models/SiteDisposition.ts +10 -10
  536. package/src/generated/shopper/models/SiteTheme.ts +40 -40
  537. package/src/generated/shopper/models/StudioOrderSettings.ts +14 -14
  538. package/src/generated/shopper/models/StudioSettings.ts +12 -12
  539. package/src/generated/shopper/models/SuccessResponse.ts +8 -8
  540. package/src/generated/shopper/models/SuccessWithTime.ts +15 -15
  541. package/src/generated/shopper/models/SummaryBody.ts +8 -8
  542. package/src/generated/shopper/models/TheatreAddresses.ts +15 -15
  543. package/src/generated/shopper/models/Ticket.ts +9 -9
  544. package/src/generated/shopper/models/TicketBlock.ts +18 -18
  545. package/src/generated/shopper/models/TicketInstructions.ts +8 -8
  546. package/src/generated/shopper/models/UniversalCodeResponse.ts +27 -27
  547. package/src/generated/shopper/models/UpdateTierData.ts +10 -10
  548. package/src/generated/shopper/models/UpdateTierFail.ts +10 -10
  549. package/src/generated/shopper/models/WaitlistResponse.ts +9 -9
  550. package/src/generated/shopper/models/WaitlistUpdate.ts +14 -14
  551. package/src/generated/shopper/services/AccountService.ts +129 -129
  552. package/src/generated/shopper/services/CartService.ts +68 -68
  553. package/src/generated/shopper/services/CheckoutService.ts +171 -171
  554. package/src/generated/shopper/services/CodeService.ts +180 -180
  555. package/src/generated/shopper/services/DonationService.ts +77 -77
  556. package/src/generated/shopper/services/EventService.ts +144 -144
  557. package/src/generated/shopper/services/GiftCardService.ts +172 -172
  558. package/src/generated/shopper/services/OrderService.ts +513 -513
  559. package/src/generated/shopper/services/PaymentService.ts +109 -109
  560. package/src/generated/shopper/services/ProductService.ts +109 -109
  561. package/src/generated/shopper/services/SeatService.ts +231 -231
  562. package/src/generated/shopper/services/SessionService.ts +92 -92
  563. package/src/scripts/build-all.ts +129 -129
  564. package/src/scripts/check-version-not-published.ts +28 -28
  565. package/src/scripts/generate-definition.ts +89 -89
  566. package/src/staging/index.ts +39 -39
  567. package/src/staging/portal.ts +73 -73
  568. package/src/staging/wrapService.ts +51 -51
  569. package/staging.ts +2 -2
  570. package/test.ts +31 -31
  571. package/tsconfig.cjs.json +11 -11
  572. package/tsconfig.esm.json +11 -11
  573. package/tsconfig.json +16 -16
package/demo/test.html CHANGED
@@ -1,870 +1,1426 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <title>DRT SDK Test Page</title>
6
- <link rel="icon" href="data:," />
7
- <style>
8
- * {
9
- box-sizing: border-box;
10
- }
11
- body {
12
- font-family: system-ui, sans-serif;
13
- margin: 0;
14
- padding: 0;
15
- display: flex;
16
- height: 100vh;
17
- overflow: hidden;
18
- }
19
- .main-container {
20
- display: flex;
21
- width: 100%;
22
- height: 100vh;
23
- background: #fff;
24
- }
25
- .left-panel {
26
- flex: 1;
27
- overflow-y: auto;
28
- padding: 1rem 2rem;
29
- }
30
- .right-panel {
31
- flex: 1;
32
- background: #1e1e1e;
33
- color: #d4d4d4;
34
- display: flex;
35
- flex-direction: column;
36
- border-left: 1px solid #333;
37
- position: sticky;
38
- top: 0;
39
- height: 100vh;
40
- }
41
- .right-panel h2 {
42
- color: #fff;
43
- margin: 0;
44
- padding: 1rem;
45
- background: #2d2d2d;
46
- border-bottom: 1px solid #444;
47
- font-size: 1rem;
48
- }
49
- h1 {
50
- color: #333;
51
- margin-top: 0;
52
- }
53
- h2 {
54
- color: #555;
55
- margin-top: 2rem;
56
- border-bottom: 1px solid #ddd;
57
- padding-bottom: 0.5rem;
58
- }
59
- h3 {
60
- color: #666;
61
- margin-top: 1.5rem;
62
- }
63
- button {
64
- padding: 0.5rem 1rem;
65
- font-size: 0.9rem;
66
- cursor: pointer;
67
- margin: 0.25rem;
68
- border: 1px solid #ccc;
69
- border-radius: 4px;
70
- background: #fff;
71
- }
72
- button:hover {
73
- background: #f0f0f0;
74
- }
75
- button:disabled {
76
- opacity: 0.5;
77
- cursor: not-allowed;
78
- }
79
- #output-container {
80
- flex: 1;
81
- overflow: auto;
82
- padding: 1rem;
83
- }
84
- pre {
85
- background: transparent;
86
- margin: 0;
87
- white-space: pre-wrap;
88
- word-wrap: break-word;
89
- font-size: 0.85rem;
90
- font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
91
- }
92
- .success {
93
- color: #4ec9b0;
94
- }
95
- .error {
96
- color: #f48771;
97
- }
98
- #status {
99
- padding: 0.5rem 1rem;
100
- font-weight: bold;
101
- background: #252526;
102
- border-bottom: 1px solid #444;
103
- }
104
- .config-form {
105
- background: #f9f9f9;
106
- padding: 1rem;
107
- border-radius: 4px;
108
- margin-bottom: 1rem;
109
- }
110
- .config-form label {
111
- display: block;
112
- margin: 0.5rem 0 0.25rem;
113
- font-weight: 500;
114
- }
115
- .config-form input {
116
- width: 100%;
117
- padding: 0.5rem;
118
- font-size: 1rem;
119
- box-sizing: border-box;
120
- border: 1px solid #ccc;
121
- border-radius: 4px;
122
- }
123
- .btn-group {
124
- display: flex;
125
- flex-wrap: wrap;
126
- gap: 0.5rem;
127
- margin: 0.5rem 0;
128
- }
129
- .input-row {
130
- display: flex;
131
- gap: 0.5rem;
132
- align-items: center;
133
- margin: 0.5rem 0;
134
- }
135
- .input-row input {
136
- flex: 1;
137
- padding: 0.4rem;
138
- font-size: 0.9rem;
139
- }
140
- .input-row label {
141
- min-width: 80px;
142
- font-size: 0.85rem;
143
- }
144
- .tab-container {
145
- border-bottom: 2px solid #ddd;
146
- margin-bottom: 1rem;
147
- }
148
- .tab {
149
- padding: 0.5rem 1rem;
150
- border: none;
151
- background: none;
152
- cursor: pointer;
153
- font-size: 1rem;
154
- }
155
- .tab.active {
156
- border-bottom: 2px solid #007bff;
157
- color: #007bff;
158
- margin-bottom: -2px;
159
- }
160
- .tab-content {
161
- display: none;
162
- }
163
- .tab-content.active {
164
- display: block;
165
- }
166
- code {
167
- background: #e9e9e9;
168
- padding: 0.2rem 0.4rem;
169
- border-radius: 3px;
170
- font-size: 0.85rem;
171
- }
172
- </style>
173
- </head>
174
- <body>
175
- <div class="main-container">
176
- <div class="left-panel">
177
- <h1>DRT SDK Test Page</h1>
178
-
179
- <h2>1. Create or Initialize SDK</h2>
180
- <div class="config-form">
181
- <div
182
- style="
183
- background: #e8f5e9;
184
- padding: 0.75rem;
185
- border-radius: 4px;
186
- margin-bottom: 1rem;
187
- "
188
- >
189
- <strong>Quick Start:</strong> Create a new shopper
190
- session
191
- <div class="input-row" style="margin-top: 0.5rem">
192
- <label>Studio ID:</label>
193
- <input
194
- type="number"
195
- id="createStudioId"
196
- placeholder="e.g., 508"
197
- style="flex: 1"
198
- />
199
- <label>API Key:</label>
200
- <input
201
- type="text"
202
- id="createApiKey"
203
- placeholder="API key"
204
- style="flex: 1"
205
- />
206
- <button id="btn-create-shopper">
207
- Create Shopper
208
- </button>
209
- </div>
210
- </div>
211
-
212
- <label for="shopperGuid">Shopper GUID:</label>
213
- <input
214
- type="text"
215
- id="shopperGuid"
216
- placeholder="e.g., F1199DCD-BB45-4BD0-8DED600A3A234C75"
217
- />
218
-
219
- <label for="accountId">Account ID:</label>
220
- <input type="text" id="accountId" placeholder="e.g., 508" />
221
-
222
- <label for="apiKey">API Key:</label>
223
- <input
224
- type="text"
225
- id="apiKey"
226
- placeholder="e.g., your-api-key"
227
- />
228
-
229
- <div style="margin-top: 1rem">
230
- <button id="btn-init">Initialize SDK</button>
231
- <button id="btn-check-sdk">Check SDK Status</button>
232
- <button id="btn-reset">Reset SDK</button>
233
- </div>
234
- </div>
235
-
236
- <h2>2. Test API Calls</h2>
237
-
238
- <div class="tab-container">
239
- <button class="tab active" data-tab="shopper">
240
- Shopper API
241
- </button>
242
- <button class="tab" data-tab="scanner">Scanner API</button>
243
- </div>
244
-
245
- <!-- SHOPPER API -->
246
- <div id="tab-shopper" class="tab-content active">
247
- <h3>Account</h3>
248
- <p>
249
- Basic account/site configuration.
250
- <code>DRT.shopper.account</code>
251
- </p>
252
- <div class="btn-group">
253
- <button id="btn-theme">Get Theme</button>
254
- <button id="btn-disposition">Get Disposition</button>
255
- <button id="btn-root">Get Root Config</button>
256
- <button id="btn-landing">Get Landing Page</button>
257
- </div>
258
-
259
- <h3>Events</h3>
260
- <p>
261
- Event listings and details.
262
- <code>DRT.shopper.event</code>
263
- </p>
264
- <div class="btn-group">
265
- <button id="btn-events">Get All Events</button>
266
- </div>
267
- <div class="input-row">
268
- <label>Event:</label>
269
- <select
270
- id="eventSelect"
271
- style="flex: 1; padding: 0.4rem"
272
- >
273
- <option value="">
274
- -- Click "Get All Events" first --
275
- </option>
276
- </select>
277
- <button id="btn-event-details">
278
- Get Event Details
279
- </button>
280
- </div>
281
-
282
- <h3>Cart</h3>
283
- <p>
284
- Shopping cart operations. <code>DRT.shopper.cart</code>
285
- </p>
286
- <div class="btn-group">
287
- <button id="btn-cart">Get Cart</button>
288
- <button id="btn-delete-cart">Delete Cart</button>
289
- </div>
290
-
291
- <h3>Orders</h3>
292
- <p>
293
- Order receipts and management.
294
- <code>DRT.shopper.order</code>
295
- </p>
296
- <div class="input-row">
297
- <label>Order GUID:</label>
298
- <input
299
- type="text"
300
- id="orderGuid"
301
- placeholder="e.g., ABC123-..."
302
- />
303
- <button id="btn-receipt">Get Receipt</button>
304
- </div>
305
-
306
- <h3>Codes/Discounts</h3>
307
- <p>
308
- Promo codes and discounts. <code>DRT.shopper.code</code>
309
- </p>
310
- <div class="input-row">
311
- <label>Code:</label>
312
- <input
313
- type="text"
314
- id="promoCode"
315
- placeholder="e.g., SAVE10"
316
- />
317
- <button id="btn-validate-code">Validate Code</button>
318
- </div>
319
-
320
- <h3>Gift Cards</h3>
321
- <p>
322
- Gift card operations. <code>DRT.shopper.giftCard</code>
323
- </p>
324
- <div class="input-row">
325
- <label>Card #:</label>
326
- <input
327
- type="text"
328
- id="giftCardNumber"
329
- placeholder="Gift card number"
330
- />
331
- <button id="btn-gift-balance">Check Balance</button>
332
- </div>
333
- </div>
334
-
335
- <!-- SCANNER API -->
336
- <div id="tab-scanner" class="tab-content">
337
- <h3>Scanning</h3>
338
- <p>
339
- Scanner app strings and utilities.
340
- <code>DRT.scanner.scanning</code>
341
- </p>
342
- <div class="btn-group">
343
- <button id="btn-strings">
344
- Get App Strings (no auth)
345
- </button>
346
- </div>
347
-
348
- <h3>Database</h3>
349
- <p>
350
- Scanner database operations.
351
- <code>DRT.scanner.database</code>
352
- </p>
353
- <div class="input-row">
354
- <label>Show Code:</label>
355
- <input
356
- type="text"
357
- id="scannerShowCode"
358
- placeholder="e.g., ABC123"
359
- />
360
- </div>
361
- <div class="input-row">
362
- <label>Device:</label>
363
- <input
364
- type="text"
365
- id="scannerDevice"
366
- placeholder="device name"
367
- value="test-device"
368
- />
369
- <label>User:</label>
370
- <input
371
- type="text"
372
- id="scannerUser"
373
- placeholder="username"
374
- value="test-user"
375
- />
376
- </div>
377
- <div class="btn-group">
378
- <button id="btn-scanner-db">Download Database</button>
379
- <button id="btn-scanner-query">Query Sections</button>
380
- </div>
381
-
382
- <h3>Orders</h3>
383
- <p>
384
- Order lookup for scanning.
385
- <code>DRT.scanner.orders</code>
386
- </p>
387
- <div class="input-row">
388
- <label>Phone:</label>
389
- <input
390
- type="text"
391
- id="scannerPhone"
392
- placeholder="Phone number"
393
- />
394
- <button id="btn-scanner-by-phone">
395
- Search by Phone
396
- </button>
397
- </div>
398
- <div class="input-row">
399
- <label>Name:</label>
400
- <input
401
- type="text"
402
- id="scannerName"
403
- placeholder="Buyer name"
404
- />
405
- <button id="btn-scanner-by-name">Search by Name</button>
406
- </div>
407
- </div>
408
- </div>
409
-
410
- <div class="right-panel">
411
- <h2>Output</h2>
412
- <div id="status">
413
- SDK loaded! Initialize with your credentials.
414
- </div>
415
- <div id="output-container">
416
- <pre id="output">
417
- Initialize the SDK, then click a button to test...</pre
418
- >
419
- </div>
420
- </div>
421
- </div>
422
-
423
- <script type="module">
424
- import { DRT } from '/public/sdk/latest/drt-sdk.js';
425
-
426
- const out = document.getElementById('output');
427
- const status = document.getElementById('status');
428
-
429
- // Expose DRT globally for console testing
430
- window.DRT = DRT;
431
-
432
- function setStatus(msg, isError = false) {
433
- status.textContent = msg;
434
- status.className = isError ? 'error' : 'success';
435
- }
436
-
437
- function setOutput(data) {
438
- out.textContent =
439
- typeof data === 'string'
440
- ? data
441
- : JSON.stringify(data, null, 4);
442
- }
443
-
444
- function requireInit() {
445
- if (!DRT.isReady()) {
446
- setStatus(
447
- 'SDK not initialized! Please initialize first.',
448
- true,
449
- );
450
- return false;
451
- }
452
- return true;
453
- }
454
-
455
- async function callApi(fn, description) {
456
- setStatus(`Fetching ${description}...`, false);
457
- try {
458
- const result = await fn();
459
- setStatus('Success!', false);
460
- setOutput(result);
461
- } catch (err) {
462
- setStatus(`Error: ${err.message}`, true);
463
- setOutput({
464
- error: err.message,
465
- details: err.body || err.toString(),
466
- });
467
- console.error(err);
468
- }
469
- }
470
-
471
- // Tab switching
472
- document.querySelectorAll('.tab').forEach((tab) => {
473
- tab.addEventListener('click', () => {
474
- document
475
- .querySelectorAll('.tab')
476
- .forEach((t) => t.classList.remove('active'));
477
- document
478
- .querySelectorAll('.tab-content')
479
- .forEach((c) => c.classList.remove('active'));
480
- tab.classList.add('active');
481
- document
482
- .getElementById(`tab-${tab.dataset.tab}`)
483
- .classList.add('active');
484
- });
485
- });
486
-
487
- // Initialize SDK
488
- document
489
- .getElementById('btn-init')
490
- .addEventListener('click', () => {
491
- const shopperGuid = document
492
- .getElementById('shopperGuid')
493
- .value.trim();
494
- const accountId = document
495
- .getElementById('accountId')
496
- .value.trim();
497
- const apiKey = document
498
- .getElementById('apiKey')
499
- .value.trim();
500
-
501
- if (!shopperGuid || !accountId || !apiKey) {
502
- setStatus('Please fill in all fields', true);
503
- return;
504
- }
505
-
506
- try {
507
- DRT.init({ shopperGuid, accountId, apiKey });
508
- setStatus('SDK Initialized!', false);
509
- setOutput({
510
- message: 'SDK initialized successfully!',
511
- config: { shopperGuid, accountId, apiKey: '***' },
512
- });
513
- } catch (err) {
514
- setStatus('Init failed: ' + err.message, true);
515
- setOutput({ error: err.message });
516
- }
517
- });
518
-
519
- // Check SDK status
520
- document
521
- .getElementById('btn-check-sdk')
522
- .addEventListener('click', () => {
523
- setStatus('SDK Status', false);
524
- const config = DRT.getConfig();
525
- setOutput({
526
- isReady: DRT.isReady(),
527
- config: config
528
- ? {
529
- shopperGuid: config.shopperGuid,
530
- accountId: config.accountId,
531
- apiKey: '***',
532
- }
533
- : null,
534
- availableServices: {
535
- shopper: Object.keys(DRT.shopper),
536
- scanner: Object.keys(DRT.scanner),
537
- portal: Object.keys(DRT.portal),
538
- },
539
- });
540
- });
541
-
542
- // Reset SDK
543
- document
544
- .getElementById('btn-reset')
545
- .addEventListener('click', () => {
546
- DRT.reset();
547
- setStatus('SDK Reset!', false);
548
- setOutput({
549
- message: 'SDK has been reset. Initialize again to use.',
550
- });
551
- });
552
-
553
- // Create Shopper
554
- document
555
- .getElementById('btn-create-shopper')
556
- .addEventListener('click', async () => {
557
- const studioId = parseInt(
558
- document.getElementById('createStudioId').value,
559
- );
560
- const apiKey = document
561
- .getElementById('createApiKey')
562
- .value.trim();
563
-
564
- if (!studioId) {
565
- setStatus('Please enter a Studio ID', true);
566
- return;
567
- }
568
- if (!apiKey) {
569
- setStatus('Please enter an API Key', true);
570
- return;
571
- }
572
-
573
- setStatus('Creating shopper session...', false);
574
- try {
575
- const result = await DRT.shopper.session.createSession({
576
- studioId,
577
- });
578
- setStatus('Shopper created!', false);
579
- setOutput(result);
580
-
581
- // Populate the form fields
582
- document.getElementById('shopperGuid').value =
583
- result.shopperGuid;
584
- document.getElementById('accountId').value =
585
- result.studioId;
586
- document.getElementById('apiKey').value = apiKey;
587
-
588
- // Auto-initialize
589
- DRT.init({
590
- shopperGuid: result.shopperGuid,
591
- accountId: String(result.studioId),
592
- apiKey,
593
- });
594
- setStatus(
595
- 'Shopper created and SDK initialized!',
596
- false,
597
- );
598
- } catch (err) {
599
- setStatus(`Error: ${err.message}`, true);
600
- setOutput({
601
- error: err.message,
602
- details: err.body || err.toString(),
603
- });
604
- }
605
- });
606
-
607
- // ==================== SHOPPER API ====================
608
-
609
- // Account
610
- document
611
- .getElementById('btn-theme')
612
- .addEventListener('click', () => {
613
- if (!requireInit()) return;
614
- callApi(() => DRT.shopper.account.getTheme(), 'theme');
615
- });
616
-
617
- document
618
- .getElementById('btn-disposition')
619
- .addEventListener('click', () => {
620
- if (!requireInit()) return;
621
- callApi(
622
- () => DRT.shopper.account.getDisposition(),
623
- 'disposition',
624
- );
625
- });
626
-
627
- document
628
- .getElementById('btn-root')
629
- .addEventListener('click', () => {
630
- if (!requireInit()) return;
631
- callApi(() => DRT.shopper.account.getRoot(), 'root config');
632
- });
633
-
634
- document
635
- .getElementById('btn-landing')
636
- .addEventListener('click', () => {
637
- if (!requireInit()) return;
638
- callApi(
639
- () => DRT.shopper.account.getLanding(),
640
- 'landing page',
641
- );
642
- });
643
-
644
- // Events
645
- document
646
- .getElementById('btn-events')
647
- .addEventListener('click', async () => {
648
- if (!requireInit()) return;
649
- setStatus('Fetching events...', false);
650
- try {
651
- const result = await DRT.shopper.event.getEvents();
652
- setStatus('Success!', false);
653
- setOutput(result);
654
-
655
- // Populate the dropdown
656
- const select = document.getElementById('eventSelect');
657
- select.innerHTML =
658
- '<option value="">-- Select an event --</option>';
659
- const events = result.events || result || [];
660
- events.forEach((event) => {
661
- const opt = document.createElement('option');
662
- opt.value = event.eventId || event.id;
663
- opt.textContent = `${event.eventId || event.id}: ${event.eventName || event.name || 'Unnamed'}`;
664
- select.appendChild(opt);
665
- });
666
- setStatus(`Loaded ${events.length} events`, false);
667
- } catch (err) {
668
- setStatus(`Error: ${err.message}`, true);
669
- setOutput({
670
- error: err.message,
671
- details: err.body || err.toString(),
672
- });
673
- }
674
- });
675
-
676
- document
677
- .getElementById('btn-event-details')
678
- .addEventListener('click', () => {
679
- if (!requireInit()) return;
680
- const id = parseInt(
681
- document.getElementById('eventSelect').value,
682
- );
683
- if (!id) {
684
- setStatus(
685
- 'Please select an event from the dropdown',
686
- true,
687
- );
688
- return;
689
- }
690
- callApi(
691
- () => DRT.shopper.event.getEventById(id),
692
- `event ${id}`,
693
- );
694
- });
695
-
696
- // Cart
697
- document
698
- .getElementById('btn-cart')
699
- .addEventListener('click', () => {
700
- if (!requireInit()) return;
701
- callApi(() => DRT.shopper.cart.getCart(), 'cart');
702
- });
703
-
704
- document
705
- .getElementById('btn-delete-cart')
706
- .addEventListener('click', () => {
707
- if (!requireInit()) return;
708
- callApi(() => DRT.shopper.cart.deleteCart(), 'delete cart');
709
- });
710
-
711
- // Orders
712
- document
713
- .getElementById('btn-receipt')
714
- .addEventListener('click', () => {
715
- if (!requireInit()) return;
716
- const guid = document
717
- .getElementById('orderGuid')
718
- .value.trim();
719
- if (!guid) {
720
- setStatus('Please enter an Order GUID', true);
721
- return;
722
- }
723
- callApi(
724
- () => DRT.shopper.order.getReceipt(guid),
725
- 'receipt',
726
- );
727
- });
728
-
729
- // Codes
730
- document
731
- .getElementById('btn-validate-code')
732
- .addEventListener('click', () => {
733
- if (!requireInit()) return;
734
- const code = document
735
- .getElementById('promoCode')
736
- .value.trim();
737
- if (!code) {
738
- setStatus('Please enter a code', true);
739
- return;
740
- }
741
- callApi(
742
- () => DRT.shopper.code.validateCode(code),
743
- `code validation`,
744
- );
745
- });
746
-
747
- // Gift Cards
748
- document
749
- .getElementById('btn-gift-balance')
750
- .addEventListener('click', () => {
751
- if (!requireInit()) return;
752
- const num = document
753
- .getElementById('giftCardNumber')
754
- .value.trim();
755
- if (!num) {
756
- setStatus('Please enter a gift card number', true);
757
- return;
758
- }
759
- callApi(
760
- () => DRT.shopper.giftCard.getBalance(num),
761
- 'gift card balance',
762
- );
763
- });
764
-
765
- // ==================== SCANNER API ====================
766
-
767
- document
768
- .getElementById('btn-strings')
769
- .addEventListener('click', () => {
770
- callApi(
771
- () => DRT.scanner.scanning.appControllerGetStrings(),
772
- 'scanner strings',
773
- );
774
- });
775
-
776
- document
777
- .getElementById('btn-scanner-db')
778
- .addEventListener('click', () => {
779
- const showCode = document
780
- .getElementById('scannerShowCode')
781
- .value.trim();
782
- const device = document
783
- .getElementById('scannerDevice')
784
- .value.trim();
785
- const user = document
786
- .getElementById('scannerUser')
787
- .value.trim();
788
- if (!showCode) {
789
- setStatus('Please enter a Show Code', true);
790
- return;
791
- }
792
- callApi(
793
- () =>
794
- DRT.scanner.database.download(
795
- showCode,
796
- device,
797
- user,
798
- 'en',
799
- ),
800
- `scanner database`,
801
- );
802
- });
803
-
804
- document
805
- .getElementById('btn-scanner-query')
806
- .addEventListener('click', () => {
807
- const showCode = document
808
- .getElementById('scannerShowCode')
809
- .value.trim();
810
- if (!showCode) {
811
- setStatus('Please enter a Show Code', true);
812
- return;
813
- }
814
- callApi(
815
- () => DRT.scanner.database.query(showCode, 'sections'),
816
- `sections query`,
817
- );
818
- });
819
-
820
- document
821
- .getElementById('btn-scanner-by-phone')
822
- .addEventListener('click', () => {
823
- const showCode = document
824
- .getElementById('scannerShowCode')
825
- .value.trim();
826
- const phone = document
827
- .getElementById('scannerPhone')
828
- .value.trim();
829
- if (!showCode || !phone) {
830
- setStatus('Please enter Show Code and Phone', true);
831
- return;
832
- }
833
- callApi(
834
- () =>
835
- DRT.scanner.orders.ordersControllerGetOrdersByPhone(
836
- showCode,
837
- phone,
838
- ),
839
- `orders by phone`,
840
- );
841
- });
842
-
843
- document
844
- .getElementById('btn-scanner-by-name')
845
- .addEventListener('click', () => {
846
- const showCode = document
847
- .getElementById('scannerShowCode')
848
- .value.trim();
849
- const name = document
850
- .getElementById('scannerName')
851
- .value.trim();
852
- if (!showCode || !name) {
853
- setStatus('Please enter Show Code and Name', true);
854
- return;
855
- }
856
- callApi(
857
- () =>
858
- DRT.scanner.orders.ordersControllerGetOrdersByName(
859
- showCode,
860
- name,
861
- ),
862
- `orders by name`,
863
- );
864
- });
865
-
866
- // Auto-check on load
867
- console.log('DRT SDK available at window.DRT for console testing');
868
- </script>
869
- </body>
870
- </html>
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>DRT SDK Test Page</title>
6
+ <link rel="icon" href="data:," />
7
+ <style>
8
+ * {
9
+ box-sizing: border-box;
10
+ }
11
+ body {
12
+ font-family: system-ui, sans-serif;
13
+ margin: 0;
14
+ padding: 0;
15
+ display: flex;
16
+ height: 100vh;
17
+ overflow: hidden;
18
+ }
19
+ .main-container {
20
+ display: flex;
21
+ width: 100%;
22
+ height: 100vh;
23
+ background: #fff;
24
+ }
25
+ .left-panel {
26
+ width: 50%;
27
+ min-width: 50%;
28
+ max-width: 50%;
29
+ overflow-y: auto;
30
+ padding: 1rem 2rem;
31
+ }
32
+ .right-panel {
33
+ width: 50%;
34
+ min-width: 50%;
35
+ max-width: 50%;
36
+ background: #1e1e1e;
37
+ color: #d4d4d4;
38
+ display: flex;
39
+ flex-direction: column;
40
+ border-left: 1px solid #333;
41
+ position: sticky;
42
+ top: 0;
43
+ height: 100vh;
44
+ }
45
+ .right-panel h2 {
46
+ color: #fff;
47
+ margin: 0;
48
+ padding: 1rem;
49
+ background: #2d2d2d;
50
+ border-bottom: 1px solid #444;
51
+ font-size: 1rem;
52
+ }
53
+ h1 {
54
+ color: #333;
55
+ margin-top: 0;
56
+ }
57
+ h2 {
58
+ color: #555;
59
+ margin-top: 2rem;
60
+ border-bottom: 1px solid #ddd;
61
+ padding-bottom: 0.5rem;
62
+ }
63
+ h3 {
64
+ color: #666;
65
+ margin-top: 1.5rem;
66
+ }
67
+ button {
68
+ padding: 0.5rem 1rem;
69
+ font-size: 0.9rem;
70
+ cursor: pointer;
71
+ margin: 0.25rem;
72
+ border: 1px solid #ccc;
73
+ border-radius: 4px;
74
+ background: #fff;
75
+ }
76
+ button:hover {
77
+ background: #f0f0f0;
78
+ }
79
+ button:disabled {
80
+ opacity: 0.5;
81
+ cursor: not-allowed;
82
+ }
83
+ #output-container {
84
+ flex: 1;
85
+ overflow: auto;
86
+ padding: 1rem;
87
+ min-width: 0;
88
+ max-width: 100%;
89
+ }
90
+ pre {
91
+ background: transparent;
92
+ margin: 0;
93
+ white-space: pre-wrap;
94
+ word-wrap: break-word;
95
+ overflow-wrap: break-word;
96
+ font-size: 0.85rem;
97
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
98
+ }
99
+ .success {
100
+ color: #4ec9b0;
101
+ }
102
+ .error {
103
+ color: #f48771;
104
+ }
105
+ #status {
106
+ padding: 0.5rem 1rem;
107
+ font-weight: bold;
108
+ background: #252526;
109
+ border-bottom: 1px solid #444;
110
+ }
111
+ .config-form {
112
+ background: #f9f9f9;
113
+ padding: 1rem;
114
+ border-radius: 4px;
115
+ margin-bottom: 1rem;
116
+ }
117
+ .config-form label {
118
+ display: block;
119
+ margin: 0.5rem 0 0.25rem;
120
+ font-weight: 500;
121
+ }
122
+ .config-form input {
123
+ width: 100%;
124
+ padding: 0.5rem;
125
+ font-size: 1rem;
126
+ box-sizing: border-box;
127
+ border: 1px solid #ccc;
128
+ border-radius: 4px;
129
+ }
130
+ .btn-group {
131
+ display: flex;
132
+ flex-wrap: wrap;
133
+ gap: 0.5rem;
134
+ margin: 0.5rem 0;
135
+ }
136
+ .input-row {
137
+ display: flex;
138
+ gap: 0.5rem;
139
+ align-items: center;
140
+ margin: 0.5rem 0;
141
+ }
142
+ .input-row input {
143
+ flex: 1;
144
+ padding: 0.4rem;
145
+ font-size: 0.9rem;
146
+ }
147
+ .input-row label {
148
+ min-width: 80px;
149
+ font-size: 0.85rem;
150
+ }
151
+ .tab-container {
152
+ border-bottom: 2px solid #ddd;
153
+ margin-bottom: 1rem;
154
+ }
155
+ .tab {
156
+ padding: 0.5rem 1rem;
157
+ border: none;
158
+ background: none;
159
+ cursor: pointer;
160
+ font-size: 1rem;
161
+ }
162
+ .tab.active {
163
+ border-bottom: 2px solid #007bff;
164
+ color: #007bff;
165
+ margin-bottom: -2px;
166
+ }
167
+ .tab-content {
168
+ display: none;
169
+ }
170
+ .tab-content.active {
171
+ display: block;
172
+ }
173
+ code {
174
+ background: #e9e9e9;
175
+ padding: 0.2rem 0.4rem;
176
+ border-radius: 3px;
177
+ font-size: 0.85rem;
178
+ }
179
+ details.api-section {
180
+ border: 1px solid #ddd;
181
+ border-radius: 6px;
182
+ margin-bottom: 0.75rem;
183
+ background: #fff;
184
+ }
185
+ details.api-section > summary {
186
+ padding: 0.6rem 1rem;
187
+ font-weight: 600;
188
+ font-size: 0.95rem;
189
+ cursor: pointer;
190
+ background: #f7f7f7;
191
+ border-radius: 6px;
192
+ user-select: none;
193
+ list-style: none;
194
+ display: flex;
195
+ align-items: center;
196
+ gap: 0.5rem;
197
+ }
198
+ details.api-section > summary::-webkit-details-marker {
199
+ display: none;
200
+ }
201
+ details.api-section > summary::before {
202
+ content: '\u25B6';
203
+ font-size: 0.7rem;
204
+ transition: transform 0.15s;
205
+ color: #999;
206
+ }
207
+ details.api-section[open] > summary::before {
208
+ transform: rotate(90deg);
209
+ }
210
+ details.api-section > .section-body {
211
+ padding: 0.5rem 1rem 1rem;
212
+ border-top: 1px solid #eee;
213
+ }
214
+ details.api-section[open] > summary {
215
+ border-radius: 6px 6px 0 0;
216
+ }
217
+ details.api-section.hidden-section {
218
+ display: none;
219
+ }
220
+ .section-badge {
221
+ font-size: 0.7rem;
222
+ padding: 0.15rem 0.4rem;
223
+ border-radius: 3px;
224
+ font-weight: 500;
225
+ margin-left: auto;
226
+ }
227
+ .badge-ga {
228
+ background: #e8f5e9;
229
+ color: #2e7d32;
230
+ }
231
+ .badge-reserved {
232
+ background: #e3f2fd;
233
+ color: #1565c0;
234
+ }
235
+ .badge-ready {
236
+ background: #e8f5e9;
237
+ color: #2e7d32;
238
+ }
239
+ .badge-locked {
240
+ background: #fff3e0;
241
+ color: #e65100;
242
+ }
243
+ </style>
244
+ </head>
245
+ <body>
246
+ <div class="main-container">
247
+ <div class="left-panel">
248
+ <h1>DRT SDK Test Page</h1>
249
+
250
+ <h2>1. Create or Initialize SDK</h2>
251
+ <div class="config-form">
252
+ <div
253
+ style="
254
+ background: #e8f5e9;
255
+ padding: 0.75rem;
256
+ border-radius: 4px;
257
+ margin-bottom: 1rem;
258
+ "
259
+ >
260
+ <strong>Quick Start:</strong> Create a new shopper
261
+ session
262
+ <div class="input-row" style="margin-top: 0.5rem">
263
+ <label>Studio ID:</label>
264
+ <input
265
+ type="number"
266
+ id="createStudioId"
267
+ placeholder="e.g., 508"
268
+ style="flex: 1"
269
+ />
270
+ <label>API Key:</label>
271
+ <input
272
+ type="text"
273
+ id="createApiKey"
274
+ placeholder="API key"
275
+ style="flex: 1"
276
+ />
277
+ <button id="btn-create-shopper">
278
+ Create Shopper
279
+ </button>
280
+ </div>
281
+ </div>
282
+
283
+ <label for="shopperGuid">Shopper GUID:</label>
284
+ <input
285
+ type="text"
286
+ id="shopperGuid"
287
+ placeholder="e.g., F1199DCD-BB45-4BD0-8DED600A3A234C75"
288
+ />
289
+
290
+ <label for="accountId">Account ID:</label>
291
+ <input type="text" id="accountId" placeholder="e.g., 508" />
292
+
293
+ <label for="apiKey">API Key:</label>
294
+ <input
295
+ type="text"
296
+ id="apiKey"
297
+ placeholder="e.g., your-api-key"
298
+ />
299
+
300
+ <div style="margin-top: 1rem">
301
+ <button id="btn-init">Initialize SDK</button>
302
+ <button id="btn-check-sdk">Check SDK Status</button>
303
+ <button id="btn-reset">Reset SDK</button>
304
+ </div>
305
+ </div>
306
+
307
+ <h2>2. Test API Calls</h2>
308
+
309
+ <div class="tab-container">
310
+ <button class="tab active" data-tab="shopper">
311
+ Shopper API
312
+ </button>
313
+ <button class="tab" data-tab="scanner">Scanner API</button>
314
+ </div>
315
+
316
+ <!-- SHOPPER API -->
317
+ <div id="tab-shopper" class="tab-content active">
318
+ <details class="api-section" open>
319
+ <summary>
320
+ Account <code>DRT.shopper.account</code>
321
+ </summary>
322
+ <div class="section-body">
323
+ <div class="btn-group">
324
+ <button id="btn-theme">Get Theme</button>
325
+ <button id="btn-disposition">
326
+ Get Disposition
327
+ </button>
328
+ <button id="btn-root">Get Root Config</button>
329
+ <button id="btn-landing">
330
+ Get Landing Page
331
+ </button>
332
+ </div>
333
+ </div>
334
+ </details>
335
+
336
+ <details class="api-section" open>
337
+ <summary>Events <code>DRT.shopper.event</code></summary>
338
+ <div class="section-body">
339
+ <div class="btn-group">
340
+ <button id="btn-events">Get All Events</button>
341
+ </div>
342
+ <div class="input-row">
343
+ <label>Event:</label>
344
+ <select
345
+ id="eventSelect"
346
+ style="flex: 1; padding: 0.4rem"
347
+ >
348
+ <option value="">
349
+ -- Click "Get All Events" first --
350
+ </option>
351
+ </select>
352
+ <button id="btn-event-details">
353
+ Get Event Details
354
+ </button>
355
+ </div>
356
+ </div>
357
+ </details>
358
+
359
+ <details
360
+ id="section-seats"
361
+ class="api-section hidden-section"
362
+ >
363
+ <summary>
364
+ Seats
365
+ <code>DRT.shopper.seat</code>
366
+ <span id="seat-badge" class="section-badge"></span>
367
+ </summary>
368
+ <div class="section-body">
369
+ <div
370
+ id="seat-type-info"
371
+ style="
372
+ margin: 0 0 0.5rem;
373
+ padding: 0.5rem;
374
+ background: #f0f0f0;
375
+ border-radius: 4px;
376
+ font-size: 0.85rem;
377
+ color: #666;
378
+ "
379
+ >
380
+ Loading...
381
+ </div>
382
+ <div id="seat-ga-controls" style="display: none">
383
+ <div class="input-row">
384
+ <label>Tier:</label>
385
+ <select
386
+ id="tierSelect"
387
+ style="width: 200px"
388
+ ></select>
389
+ <label>Qty:</label>
390
+ <input
391
+ type="number"
392
+ id="gaQty"
393
+ placeholder="1"
394
+ value="1"
395
+ style="width: 60px"
396
+ />
397
+ <button id="btn-hold-ga">
398
+ Hold GA Seat
399
+ </button>
400
+ </div>
401
+ </div>
402
+ <div id="seat-ba-controls" style="display: none">
403
+ <div class="input-row">
404
+ <label>Seat #:</label>
405
+ <input
406
+ type="number"
407
+ id="reservedSeatNum"
408
+ placeholder="e.g., 1"
409
+ style="width: 80px"
410
+ />
411
+ <button id="btn-hold-reserved">
412
+ Hold Reserved Seat
413
+ </button>
414
+ </div>
415
+ <div
416
+ style="
417
+ margin-top: 0.25rem;
418
+ font-size: 0.8rem;
419
+ color: #888;
420
+ "
421
+ >
422
+ Use section rules from event details to find
423
+ valid seat numbers.
424
+ </div>
425
+ </div>
426
+ </div>
427
+ </details>
428
+
429
+ <details
430
+ id="section-update-tier"
431
+ class="api-section hidden-section"
432
+ >
433
+ <summary>
434
+ Update Tier
435
+ <code>DRT.shopper.seat.updateTier</code>
436
+ <span id="tier-badge" class="section-badge"></span>
437
+ </summary>
438
+ <div class="section-body">
439
+ <p
440
+ style="
441
+ margin: 0 0 0.5rem;
442
+ font-size: 0.85rem;
443
+ color: #666;
444
+ "
445
+ >
446
+ Change the pricing tier for a held seat.
447
+ </p>
448
+ <div class="input-row">
449
+ <label>Seat #:</label>
450
+ <input
451
+ type="number"
452
+ id="updateTierSeatNum"
453
+ placeholder="seat number"
454
+ style="width: 80px"
455
+ />
456
+ <label>New Tier:</label>
457
+ <select
458
+ id="updateTierSelect"
459
+ style="width: 200px"
460
+ ></select>
461
+ <button id="btn-update-tier">
462
+ Update Tier
463
+ </button>
464
+ </div>
465
+ </div>
466
+ </details>
467
+
468
+ <details
469
+ id="section-products"
470
+ class="api-section hidden-section"
471
+ >
472
+ <summary>
473
+ Products
474
+ <code>DRT.shopper.product</code>
475
+ <span
476
+ id="product-badge"
477
+ class="section-badge"
478
+ ></span>
479
+ </summary>
480
+ <div class="section-body">
481
+ <div class="btn-group">
482
+ <button id="btn-get-products">
483
+ Get Products
484
+ </button>
485
+ </div>
486
+ <div class="input-row">
487
+ <label>Product ID:</label>
488
+ <input
489
+ type="number"
490
+ id="productId"
491
+ placeholder="id"
492
+ style="width: 70px"
493
+ />
494
+ <label>Hash:</label>
495
+ <input
496
+ type="text"
497
+ id="productHash"
498
+ placeholder="hash"
499
+ style="width: 100px"
500
+ />
501
+ <label>Variant:</label>
502
+ <input
503
+ type="number"
504
+ id="productVariant"
505
+ placeholder="0"
506
+ value="0"
507
+ style="width: 60px"
508
+ />
509
+ <label>Qty:</label>
510
+ <input
511
+ type="number"
512
+ id="productQty"
513
+ placeholder="1"
514
+ value="1"
515
+ style="width: 60px"
516
+ />
517
+ <button id="btn-add-product">
518
+ Add Product
519
+ </button>
520
+ </div>
521
+ </div>
522
+ </details>
523
+
524
+ <details class="api-section">
525
+ <summary>Cart <code>DRT.shopper.cart</code></summary>
526
+ <div class="section-body">
527
+ <div class="btn-group">
528
+ <button id="btn-cart">Get Cart</button>
529
+ <button id="btn-delete-cart">
530
+ Delete Cart
531
+ </button>
532
+ </div>
533
+ </div>
534
+ </details>
535
+
536
+ <details class="api-section">
537
+ <summary>Orders <code>DRT.shopper.order</code></summary>
538
+ <div class="section-body">
539
+ <div class="input-row">
540
+ <label>Order GUID:</label>
541
+ <input
542
+ type="text"
543
+ id="orderGuid"
544
+ placeholder="e.g., ABC123-..."
545
+ />
546
+ <button id="btn-receipt">Get Receipt</button>
547
+ </div>
548
+ </div>
549
+ </details>
550
+
551
+ <details class="api-section">
552
+ <summary>
553
+ Codes / Discounts <code>DRT.shopper.code</code>
554
+ </summary>
555
+ <div class="section-body">
556
+ <div class="input-row">
557
+ <label>Code:</label>
558
+ <input
559
+ type="text"
560
+ id="promoCode"
561
+ placeholder="e.g., SAVE10"
562
+ />
563
+ <button id="btn-validate-code">
564
+ Validate Code
565
+ </button>
566
+ </div>
567
+ </div>
568
+ </details>
569
+
570
+ <details class="api-section">
571
+ <summary>
572
+ Gift Cards <code>DRT.shopper.giftCard</code>
573
+ </summary>
574
+ <div class="section-body">
575
+ <div class="input-row">
576
+ <label>Card #:</label>
577
+ <input
578
+ type="text"
579
+ id="giftCardNumber"
580
+ placeholder="Gift card number"
581
+ />
582
+ <button id="btn-gift-balance">
583
+ Check Balance
584
+ </button>
585
+ </div>
586
+ </div>
587
+ </details>
588
+ </div>
589
+
590
+ <!-- SCANNER API -->
591
+ <div id="tab-scanner" class="tab-content">
592
+ <h3>Scanning</h3>
593
+ <p>
594
+ Scanner app strings and utilities.
595
+ <code>DRT.scanner.scanning</code>
596
+ </p>
597
+ <div class="btn-group">
598
+ <button id="btn-strings">
599
+ Get App Strings (no auth)
600
+ </button>
601
+ </div>
602
+
603
+ <h3>Database</h3>
604
+ <p>
605
+ Scanner database operations.
606
+ <code>DRT.scanner.database</code>
607
+ </p>
608
+ <div class="input-row">
609
+ <label>Show Code:</label>
610
+ <input
611
+ type="text"
612
+ id="scannerShowCode"
613
+ placeholder="e.g., ABC123"
614
+ />
615
+ </div>
616
+ <div class="input-row">
617
+ <label>Device:</label>
618
+ <input
619
+ type="text"
620
+ id="scannerDevice"
621
+ placeholder="device name"
622
+ value="test-device"
623
+ />
624
+ <label>User:</label>
625
+ <input
626
+ type="text"
627
+ id="scannerUser"
628
+ placeholder="username"
629
+ value="test-user"
630
+ />
631
+ </div>
632
+ <div class="btn-group">
633
+ <button id="btn-scanner-db">Download Database</button>
634
+ <button id="btn-scanner-query">Query Sections</button>
635
+ </div>
636
+
637
+ <h3>Orders</h3>
638
+ <p>
639
+ Order lookup for scanning.
640
+ <code>DRT.scanner.orders</code>
641
+ </p>
642
+ <div class="input-row">
643
+ <label>Phone:</label>
644
+ <input
645
+ type="text"
646
+ id="scannerPhone"
647
+ placeholder="Phone number"
648
+ />
649
+ <button id="btn-scanner-by-phone">
650
+ Search by Phone
651
+ </button>
652
+ </div>
653
+ <div class="input-row">
654
+ <label>Name:</label>
655
+ <input
656
+ type="text"
657
+ id="scannerName"
658
+ placeholder="Buyer name"
659
+ />
660
+ <button id="btn-scanner-by-name">Search by Name</button>
661
+ </div>
662
+ </div>
663
+ </div>
664
+
665
+ <div class="right-panel">
666
+ <h2>Output</h2>
667
+ <div id="status">
668
+ SDK loaded! Initialize with your credentials.
669
+ </div>
670
+ <div id="output-container">
671
+ <pre id="output">
672
+ Initialize the SDK, then click a button to test...</pre
673
+ >
674
+ </div>
675
+ </div>
676
+ </div>
677
+
678
+ <script type="module">
679
+ import { DRT } from '/public/sdk/latest/drt-sdk.js';
680
+
681
+ const out = document.getElementById('output');
682
+ const status = document.getElementById('status');
683
+
684
+ // Expose DRT globally for console testing
685
+ window.DRT = DRT;
686
+
687
+ function setStatus(msg, isError = false) {
688
+ status.textContent = msg;
689
+ status.className = isError ? 'error' : 'success';
690
+ }
691
+
692
+ function setOutput(data) {
693
+ out.textContent =
694
+ typeof data === 'string'
695
+ ? data
696
+ : JSON.stringify(data, null, 4);
697
+ }
698
+
699
+ function requireInit() {
700
+ if (!DRT.isReady()) {
701
+ setStatus(
702
+ 'SDK not initialized! Please initialize first.',
703
+ true,
704
+ );
705
+ return false;
706
+ }
707
+ return true;
708
+ }
709
+
710
+ async function callApi(fn, description) {
711
+ setStatus(`Fetching ${description}...`, false);
712
+ try {
713
+ const result = await fn();
714
+ setStatus('Success!', false);
715
+ setOutput(result);
716
+ } catch (err) {
717
+ setStatus(`Error: ${err.message}`, true);
718
+ setOutput({
719
+ error: err.message,
720
+ details: err.body || err.toString(),
721
+ });
722
+ console.error(err);
723
+ }
724
+ }
725
+
726
+ // Tab switching
727
+ document.querySelectorAll('.tab').forEach((tab) => {
728
+ tab.addEventListener('click', () => {
729
+ document
730
+ .querySelectorAll('.tab')
731
+ .forEach((t) => t.classList.remove('active'));
732
+ document
733
+ .querySelectorAll('.tab-content')
734
+ .forEach((c) => c.classList.remove('active'));
735
+ tab.classList.add('active');
736
+ document
737
+ .getElementById(`tab-${tab.dataset.tab}`)
738
+ .classList.add('active');
739
+ });
740
+ });
741
+
742
+ // Initialize SDK
743
+ document
744
+ .getElementById('btn-init')
745
+ .addEventListener('click', () => {
746
+ const shopperGuid = document
747
+ .getElementById('shopperGuid')
748
+ .value.trim();
749
+ const accountId = document
750
+ .getElementById('accountId')
751
+ .value.trim();
752
+ const apiKey = document
753
+ .getElementById('apiKey')
754
+ .value.trim();
755
+
756
+ if (!shopperGuid || !accountId || !apiKey) {
757
+ setStatus('Please fill in all fields', true);
758
+ return;
759
+ }
760
+
761
+ try {
762
+ DRT.init({ shopperGuid, accountId, apiKey });
763
+ setStatus('SDK Initialized!', false);
764
+ setOutput({
765
+ message: 'SDK initialized successfully!',
766
+ config: { shopperGuid, accountId, apiKey: '***' },
767
+ });
768
+ } catch (err) {
769
+ setStatus('Init failed: ' + err.message, true);
770
+ setOutput({ error: err.message });
771
+ }
772
+ });
773
+
774
+ // Check SDK status
775
+ document
776
+ .getElementById('btn-check-sdk')
777
+ .addEventListener('click', () => {
778
+ setStatus('SDK Status', false);
779
+ const config = DRT.getConfig();
780
+ setOutput({
781
+ isReady: DRT.isReady(),
782
+ config: config
783
+ ? {
784
+ shopperGuid: config.shopperGuid,
785
+ accountId: config.accountId,
786
+ apiKey: '***',
787
+ }
788
+ : null,
789
+ availableServices: {
790
+ shopper: Object.keys(DRT.shopper),
791
+ scanner: Object.keys(DRT.scanner),
792
+ portal: Object.keys(DRT.portal),
793
+ },
794
+ });
795
+ });
796
+
797
+ // Reset SDK
798
+ document
799
+ .getElementById('btn-reset')
800
+ .addEventListener('click', () => {
801
+ DRT.reset();
802
+ setStatus('SDK Reset!', false);
803
+ setOutput({
804
+ message: 'SDK has been reset. Initialize again to use.',
805
+ });
806
+ });
807
+
808
+ // Create Shopper
809
+ document
810
+ .getElementById('btn-create-shopper')
811
+ .addEventListener('click', async () => {
812
+ const studioId = parseInt(
813
+ document.getElementById('createStudioId').value,
814
+ );
815
+ const apiKey = document
816
+ .getElementById('createApiKey')
817
+ .value.trim();
818
+
819
+ if (!studioId) {
820
+ setStatus('Please enter a Studio ID', true);
821
+ return;
822
+ }
823
+ if (!apiKey) {
824
+ setStatus('Please enter an API Key', true);
825
+ return;
826
+ }
827
+
828
+ setStatus('Creating shopper session...', false);
829
+ try {
830
+ const result = await DRT.shopper.session.createSession({
831
+ studioId,
832
+ });
833
+ setStatus('Shopper created!', false);
834
+ setOutput(result);
835
+
836
+ // Populate the form fields
837
+ document.getElementById('shopperGuid').value =
838
+ result.shopperGuid;
839
+ document.getElementById('accountId').value =
840
+ result.studioId;
841
+ document.getElementById('apiKey').value = apiKey;
842
+
843
+ // Auto-initialize
844
+ DRT.init({
845
+ shopperGuid: result.shopperGuid,
846
+ accountId: String(result.studioId),
847
+ apiKey,
848
+ });
849
+ setStatus(
850
+ 'Shopper created and SDK initialized!',
851
+ false,
852
+ );
853
+ } catch (err) {
854
+ setStatus(`Error: ${err.message}`, true);
855
+ setOutput({
856
+ error: err.message,
857
+ details: err.body || err.toString(),
858
+ });
859
+ }
860
+ });
861
+
862
+ // ==================== SHOPPER API ====================
863
+
864
+ // Account
865
+ document
866
+ .getElementById('btn-theme')
867
+ .addEventListener('click', () => {
868
+ if (!requireInit()) return;
869
+ callApi(() => DRT.shopper.account.getTheme(), 'theme');
870
+ });
871
+
872
+ document
873
+ .getElementById('btn-disposition')
874
+ .addEventListener('click', () => {
875
+ if (!requireInit()) return;
876
+ callApi(
877
+ () => DRT.shopper.account.getDisposition(),
878
+ 'disposition',
879
+ );
880
+ });
881
+
882
+ document
883
+ .getElementById('btn-root')
884
+ .addEventListener('click', () => {
885
+ if (!requireInit()) return;
886
+ callApi(() => DRT.shopper.account.getRoot(), 'root config');
887
+ });
888
+
889
+ document
890
+ .getElementById('btn-landing')
891
+ .addEventListener('click', () => {
892
+ if (!requireInit()) return;
893
+ callApi(
894
+ () => DRT.shopper.account.getLandingPage(),
895
+ 'landing page',
896
+ );
897
+ });
898
+
899
+ // Events
900
+ document
901
+ .getElementById('btn-events')
902
+ .addEventListener('click', async () => {
903
+ if (!requireInit()) return;
904
+ setStatus('Fetching events...', false);
905
+ try {
906
+ const result = await DRT.shopper.event.getEvents();
907
+
908
+ // Populate the dropdown
909
+ const select = document.getElementById('eventSelect');
910
+ select.innerHTML =
911
+ '<option value="">-- Select an event --</option>';
912
+ const events = result.events || result || [];
913
+ events.forEach((event) => {
914
+ const opt = document.createElement('option');
915
+ opt.value = event.eventId || event.id;
916
+ opt.textContent = `${event.eventId || event.id}: ${event.eventName || event.name || 'Unnamed'}`;
917
+ select.appendChild(opt);
918
+ });
919
+
920
+ // Show a compact summary instead of the full response
921
+ const summary = events.map((e) => ({
922
+ id: e.eventId || e.id,
923
+ name: e.eventName || e.name || 'Unnamed',
924
+ date: e.eventDate || e.date || '',
925
+ venue: e.venueName || e.venue || '',
926
+ }));
927
+ setStatus(`Loaded ${events.length} events`, false);
928
+ setOutput({
929
+ eventCount: events.length,
930
+ events: summary,
931
+ });
932
+ } catch (err) {
933
+ setStatus(`Error: ${err.message}`, true);
934
+ setOutput({
935
+ error: err.message,
936
+ details: err.body || err.toString(),
937
+ });
938
+ }
939
+ });
940
+
941
+ document
942
+ .getElementById('btn-event-details')
943
+ .addEventListener('click', async () => {
944
+ if (!requireInit()) return;
945
+ const id = parseInt(
946
+ document.getElementById('eventSelect').value,
947
+ );
948
+ if (!id) {
949
+ setStatus(
950
+ 'Please select an event from the dropdown',
951
+ true,
952
+ );
953
+ return;
954
+ }
955
+ setStatus(`Fetching event ${id} details...`, false);
956
+ try {
957
+ const result = await DRT.shopper.event.getEventById(id);
958
+ setStatus('Success!', false);
959
+
960
+ // Determine seating type from sections
961
+ const sections = result.sections || [];
962
+ const tiers = result.tiers || [];
963
+ const isGA =
964
+ result.event && result.event.isGeneralSeating === 1;
965
+
966
+ // Show the seats section
967
+ const seatSection =
968
+ document.getElementById('section-seats');
969
+ seatSection.classList.remove('hidden-section');
970
+ seatSection.open = true;
971
+
972
+ const infoEl =
973
+ document.getElementById('seat-type-info');
974
+ const gaControls =
975
+ document.getElementById('seat-ga-controls');
976
+ const baControls =
977
+ document.getElementById('seat-ba-controls');
978
+ const seatBadge = document.getElementById('seat-badge');
979
+
980
+ if (isGA) {
981
+ infoEl.innerHTML = `<strong>General Admission</strong> — ${tiers.length} tier(s), ${sections.length} section(s)`;
982
+ infoEl.style.background = '#e8f5e9';
983
+ gaControls.style.display = 'block';
984
+ baControls.style.display = 'none';
985
+ seatBadge.textContent = 'GA';
986
+ seatBadge.className = 'section-badge badge-ga';
987
+ // Populate tier dropdown
988
+ const tierSel =
989
+ document.getElementById('tierSelect');
990
+ tierSel.innerHTML = '';
991
+ tiers.forEach((t) => {
992
+ const opt = document.createElement('option');
993
+ opt.value = t.id;
994
+ opt.textContent = `${t.name} — $${t.price} (id: ${t.id})`;
995
+ tierSel.appendChild(opt);
996
+ });
997
+ } else {
998
+ infoEl.innerHTML = `<strong>Reserved Seating</strong> — ${sections.length} section(s), ${tiers.length} tier(s)`;
999
+ infoEl.style.background = '#e3f2fd';
1000
+ gaControls.style.display = 'none';
1001
+ baControls.style.display = 'block';
1002
+ seatBadge.textContent = 'Reserved';
1003
+ seatBadge.className =
1004
+ 'section-badge badge-reserved';
1005
+ }
1006
+
1007
+ // Show Update Tier section if there are tiers
1008
+ const tierSection = document.getElementById(
1009
+ 'section-update-tier',
1010
+ );
1011
+ if (tiers.length > 0) {
1012
+ tierSection.classList.remove('hidden-section');
1013
+ const tierBadge =
1014
+ document.getElementById('tier-badge');
1015
+ tierBadge.textContent = `${tiers.length} tier(s)`;
1016
+ tierBadge.className = 'section-badge badge-ready';
1017
+ const updateTierSel =
1018
+ document.getElementById('updateTierSelect');
1019
+ updateTierSel.innerHTML = '';
1020
+ tiers.forEach((t) => {
1021
+ const opt = document.createElement('option');
1022
+ opt.value = t.id;
1023
+ opt.textContent = `${t.name} — $${t.price} (id: ${t.id})`;
1024
+ updateTierSel.appendChild(opt);
1025
+ });
1026
+ } else {
1027
+ tierSection.classList.add('hidden-section');
1028
+ }
1029
+
1030
+ // Show Products section
1031
+ document
1032
+ .getElementById('section-products')
1033
+ .classList.remove('hidden-section');
1034
+ document.getElementById('product-badge').textContent =
1035
+ 'Ready';
1036
+ document.getElementById('product-badge').className =
1037
+ 'section-badge badge-ready';
1038
+
1039
+ // Show compact summary in output
1040
+ const sectionRules = result.sectionRules || [];
1041
+ setOutput({
1042
+ event: {
1043
+ id: result.event?.id,
1044
+ name: result.event?.name,
1045
+ title: result.event?.title,
1046
+ isGeneralSeating:
1047
+ result.event?.isGeneralSeating,
1048
+ statusId: result.event?.statusId,
1049
+ },
1050
+ sections: sections.map((s) => ({
1051
+ id: s.id,
1052
+ name: s.name,
1053
+ isGA: s.is_general_seating,
1054
+ gaCapacity: s.ga_capacity,
1055
+ })),
1056
+ sectionRules: sectionRules.map((r) => ({
1057
+ section: r.section,
1058
+ sectionId: r.section_id,
1059
+ rowLow: r.row_low,
1060
+ rowHigh: r.row_high,
1061
+ seatLow: r.seat_low,
1062
+ seatHigh: r.seat_high,
1063
+ })),
1064
+ tiers: tiers.map((t) => ({
1065
+ id: t.id,
1066
+ name: t.name,
1067
+ price: t.price,
1068
+ sectionId: t.section_id,
1069
+ })),
1070
+ });
1071
+ } catch (err) {
1072
+ setStatus(`Error: ${err.message}`, true);
1073
+ setOutput({
1074
+ error: err.message,
1075
+ details: err.body || err.toString(),
1076
+ });
1077
+ }
1078
+ });
1079
+
1080
+ // Seats
1081
+ document
1082
+ .getElementById('btn-hold-ga')
1083
+ .addEventListener('click', () => {
1084
+ if (!requireInit()) return;
1085
+ const eventId = parseInt(
1086
+ document.getElementById('eventSelect').value,
1087
+ );
1088
+ if (!eventId) {
1089
+ setStatus('Please select an event first', true);
1090
+ return;
1091
+ }
1092
+ const tierId = parseInt(
1093
+ document.getElementById('tierSelect').value,
1094
+ );
1095
+ if (!tierId) {
1096
+ setStatus(
1097
+ 'Please load event details first to populate tiers',
1098
+ true,
1099
+ );
1100
+ return;
1101
+ }
1102
+ const qty =
1103
+ parseInt(document.getElementById('gaQty').value) || 1;
1104
+ callApi(
1105
+ () =>
1106
+ DRT.shopper.seat.holdGaSeat(
1107
+ undefined,
1108
+ undefined,
1109
+ undefined,
1110
+ {
1111
+ eventId,
1112
+ allOrNone: true,
1113
+ tierId,
1114
+ qty,
1115
+ },
1116
+ ),
1117
+ `hold ${qty} GA seat(s) for event ${eventId}`,
1118
+ );
1119
+ });
1120
+
1121
+ document
1122
+ .getElementById('btn-hold-reserved')
1123
+ .addEventListener('click', () => {
1124
+ if (!requireInit()) return;
1125
+ const eventId = parseInt(
1126
+ document.getElementById('eventSelect').value,
1127
+ );
1128
+ if (!eventId) {
1129
+ setStatus('Please select an event first', true);
1130
+ return;
1131
+ }
1132
+ const seatNum = parseInt(
1133
+ document.getElementById('reservedSeatNum').value,
1134
+ );
1135
+ if (!seatNum) {
1136
+ setStatus(
1137
+ 'Please enter a seat number (check section rules in event details)',
1138
+ true,
1139
+ );
1140
+ return;
1141
+ }
1142
+ callApi(
1143
+ () =>
1144
+ DRT.shopper.seat.holdReservedSeat(
1145
+ undefined,
1146
+ undefined,
1147
+ undefined,
1148
+ {
1149
+ eventId,
1150
+ seatNum,
1151
+ },
1152
+ ),
1153
+ `hold reserved seat #${seatNum} for event ${eventId}`,
1154
+ );
1155
+ });
1156
+
1157
+ // Update Tier
1158
+ document
1159
+ .getElementById('btn-update-tier')
1160
+ .addEventListener('click', () => {
1161
+ if (!requireInit()) return;
1162
+ const eventId = parseInt(
1163
+ document.getElementById('eventSelect').value,
1164
+ );
1165
+ if (!eventId) {
1166
+ setStatus('Please select an event first', true);
1167
+ return;
1168
+ }
1169
+ const seatNum = parseInt(
1170
+ document.getElementById('updateTierSeatNum').value,
1171
+ );
1172
+ if (!seatNum) {
1173
+ setStatus('Please enter a seat number', true);
1174
+ return;
1175
+ }
1176
+ const tierId = parseInt(
1177
+ document.getElementById('updateTierSelect').value,
1178
+ );
1179
+ if (!tierId) {
1180
+ setStatus('Please select a tier', true);
1181
+ return;
1182
+ }
1183
+ callApi(
1184
+ () =>
1185
+ DRT.shopper.seat.updateTier(
1186
+ undefined,
1187
+ undefined,
1188
+ undefined,
1189
+ {
1190
+ eventId,
1191
+ seatNum,
1192
+ tierId,
1193
+ },
1194
+ ),
1195
+ `update seat #${seatNum} to tier ${tierId}`,
1196
+ );
1197
+ });
1198
+
1199
+ // Products
1200
+ document
1201
+ .getElementById('btn-get-products')
1202
+ .addEventListener('click', () => {
1203
+ if (!requireInit()) return;
1204
+ callApi(
1205
+ () => DRT.shopper.product.getProducts(),
1206
+ 'products',
1207
+ );
1208
+ });
1209
+
1210
+ document
1211
+ .getElementById('btn-add-product')
1212
+ .addEventListener('click', () => {
1213
+ if (!requireInit()) return;
1214
+ const id = parseInt(
1215
+ document.getElementById('productId').value,
1216
+ );
1217
+ const hash = document
1218
+ .getElementById('productHash')
1219
+ .value.trim();
1220
+ const variantId =
1221
+ parseInt(
1222
+ document.getElementById('productVariant').value,
1223
+ ) || 0;
1224
+ const quantity =
1225
+ parseInt(document.getElementById('productQty').value) ||
1226
+ 1;
1227
+ if (!id || !hash) {
1228
+ setStatus(
1229
+ 'Please enter Product ID and Hash (get them from Get Products)',
1230
+ true,
1231
+ );
1232
+ return;
1233
+ }
1234
+ callApi(
1235
+ () =>
1236
+ DRT.shopper.product.addProduct(
1237
+ undefined,
1238
+ undefined,
1239
+ undefined,
1240
+ {
1241
+ id,
1242
+ hash,
1243
+ text: '',
1244
+ quantity,
1245
+ variantId,
1246
+ },
1247
+ ),
1248
+ `add product ${id}`,
1249
+ );
1250
+ });
1251
+
1252
+ // Cart
1253
+ document
1254
+ .getElementById('btn-cart')
1255
+ .addEventListener('click', () => {
1256
+ if (!requireInit()) return;
1257
+ callApi(() => DRT.shopper.cart.getCart(), 'cart');
1258
+ });
1259
+
1260
+ document
1261
+ .getElementById('btn-delete-cart')
1262
+ .addEventListener('click', () => {
1263
+ if (!requireInit()) return;
1264
+ callApi(() => DRT.shopper.cart.deleteCart(), 'delete cart');
1265
+ });
1266
+
1267
+ // Orders
1268
+ document
1269
+ .getElementById('btn-receipt')
1270
+ .addEventListener('click', () => {
1271
+ if (!requireInit()) return;
1272
+ const guid = document
1273
+ .getElementById('orderGuid')
1274
+ .value.trim();
1275
+ if (!guid) {
1276
+ setStatus('Please enter an Order GUID', true);
1277
+ return;
1278
+ }
1279
+ callApi(
1280
+ () => DRT.shopper.order.getReceipt(guid),
1281
+ 'receipt',
1282
+ );
1283
+ });
1284
+
1285
+ // Codes
1286
+ document
1287
+ .getElementById('btn-validate-code')
1288
+ .addEventListener('click', () => {
1289
+ if (!requireInit()) return;
1290
+ const code = document
1291
+ .getElementById('promoCode')
1292
+ .value.trim();
1293
+ if (!code) {
1294
+ setStatus('Please enter a code', true);
1295
+ return;
1296
+ }
1297
+ callApi(
1298
+ () => DRT.shopper.code.validateCode(code),
1299
+ `code validation`,
1300
+ );
1301
+ });
1302
+
1303
+ // Gift Cards
1304
+ document
1305
+ .getElementById('btn-gift-balance')
1306
+ .addEventListener('click', () => {
1307
+ if (!requireInit()) return;
1308
+ const num = document
1309
+ .getElementById('giftCardNumber')
1310
+ .value.trim();
1311
+ if (!num) {
1312
+ setStatus('Please enter a gift card number', true);
1313
+ return;
1314
+ }
1315
+ callApi(
1316
+ () => DRT.shopper.giftCard.getBalance(num),
1317
+ 'gift card balance',
1318
+ );
1319
+ });
1320
+
1321
+ // ==================== SCANNER API ====================
1322
+
1323
+ document
1324
+ .getElementById('btn-strings')
1325
+ .addEventListener('click', () => {
1326
+ callApi(
1327
+ () => DRT.scanner.scanning.appControllerGetStrings(),
1328
+ 'scanner strings',
1329
+ );
1330
+ });
1331
+
1332
+ document
1333
+ .getElementById('btn-scanner-db')
1334
+ .addEventListener('click', () => {
1335
+ const showCode = document
1336
+ .getElementById('scannerShowCode')
1337
+ .value.trim();
1338
+ const device = document
1339
+ .getElementById('scannerDevice')
1340
+ .value.trim();
1341
+ const user = document
1342
+ .getElementById('scannerUser')
1343
+ .value.trim();
1344
+ if (!showCode) {
1345
+ setStatus('Please enter a Show Code', true);
1346
+ return;
1347
+ }
1348
+ callApi(
1349
+ () =>
1350
+ DRT.scanner.database.download(
1351
+ showCode,
1352
+ device,
1353
+ user,
1354
+ 'en',
1355
+ ),
1356
+ `scanner database`,
1357
+ );
1358
+ });
1359
+
1360
+ document
1361
+ .getElementById('btn-scanner-query')
1362
+ .addEventListener('click', () => {
1363
+ const showCode = document
1364
+ .getElementById('scannerShowCode')
1365
+ .value.trim();
1366
+ if (!showCode) {
1367
+ setStatus('Please enter a Show Code', true);
1368
+ return;
1369
+ }
1370
+ callApi(
1371
+ () => DRT.scanner.database.query(showCode, 'sections'),
1372
+ `sections query`,
1373
+ );
1374
+ });
1375
+
1376
+ document
1377
+ .getElementById('btn-scanner-by-phone')
1378
+ .addEventListener('click', () => {
1379
+ const showCode = document
1380
+ .getElementById('scannerShowCode')
1381
+ .value.trim();
1382
+ const phone = document
1383
+ .getElementById('scannerPhone')
1384
+ .value.trim();
1385
+ if (!showCode || !phone) {
1386
+ setStatus('Please enter Show Code and Phone', true);
1387
+ return;
1388
+ }
1389
+ callApi(
1390
+ () =>
1391
+ DRT.scanner.orders.ordersControllerGetOrdersByPhone(
1392
+ showCode,
1393
+ phone,
1394
+ ),
1395
+ `orders by phone`,
1396
+ );
1397
+ });
1398
+
1399
+ document
1400
+ .getElementById('btn-scanner-by-name')
1401
+ .addEventListener('click', () => {
1402
+ const showCode = document
1403
+ .getElementById('scannerShowCode')
1404
+ .value.trim();
1405
+ const name = document
1406
+ .getElementById('scannerName')
1407
+ .value.trim();
1408
+ if (!showCode || !name) {
1409
+ setStatus('Please enter Show Code and Name', true);
1410
+ return;
1411
+ }
1412
+ callApi(
1413
+ () =>
1414
+ DRT.scanner.orders.ordersControllerGetOrdersByName(
1415
+ showCode,
1416
+ name,
1417
+ ),
1418
+ `orders by name`,
1419
+ );
1420
+ });
1421
+
1422
+ // Auto-check on load
1423
+ console.log('DRT SDK available at window.DRT for console testing');
1424
+ </script>
1425
+ </body>
1426
+ </html>