@drttix/drt-sdk 1.3.5 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -4
- package/azure-pipelines.yml +2 -0
- package/dist/cjs/src/functions/sdkConfig.d.ts +47 -16
- package/dist/cjs/src/functions/sdkConfig.js +63 -43
- package/dist/cjs/src/generated/portal/core/OpenAPI.js +1 -1
- package/dist/cjs/src/generated/portal/core/request.js +41 -7
- package/dist/cjs/src/generated/scanner/core/OpenAPI.js +1 -1
- package/dist/cjs/src/generated/scanner/core/request.js +41 -7
- package/dist/cjs/src/generated/scanner/index.d.ts +1 -0
- package/dist/cjs/src/generated/scanner/models/OrderScan.d.ts +9 -0
- package/dist/cjs/src/generated/scanner/models/OrderScan.js +2 -0
- package/dist/cjs/src/generated/scanner/models/TicketScan.d.ts +1 -0
- package/dist/cjs/src/generated/scanner/services/ScanningService.d.ts +16 -0
- package/dist/cjs/src/generated/scanner/services/ScanningService.js +28 -0
- package/dist/cjs/src/generated/scanner/types.d.ts +1 -0
- package/dist/cjs/src/generated/shopper/core/OpenAPI.js +1 -1
- package/dist/cjs/src/generated/shopper/core/request.js +41 -7
- package/dist/cjs/src/generated/shopper/index.d.ts +29 -1
- package/dist/cjs/src/generated/shopper/models/AnswerInput.d.ts +6 -0
- package/dist/cjs/src/generated/shopper/models/AnswerInput.js +2 -0
- package/dist/cjs/src/generated/shopper/models/CartAmounts.d.ts +38 -0
- package/dist/cjs/src/generated/shopper/models/CartAmounts.js +2 -0
- package/dist/cjs/src/generated/shopper/models/CartClearResult.d.ts +14 -0
- package/dist/cjs/src/generated/shopper/models/CartClearResult.js +2 -0
- package/dist/cjs/src/generated/shopper/models/CartCountsLite.d.ts +14 -0
- package/dist/cjs/src/generated/shopper/models/CartCountsLite.js +2 -0
- package/dist/cjs/src/generated/shopper/models/CartTotals.d.ts +22 -0
- package/dist/cjs/src/generated/shopper/models/CartTotals.js +2 -0
- package/dist/cjs/src/generated/shopper/models/CheckoutStep.d.ts +10 -0
- package/dist/cjs/src/generated/shopper/models/CheckoutStep.js +2 -0
- package/dist/cjs/src/generated/shopper/models/CheckoutStepsResponse.d.ts +7 -0
- package/dist/cjs/src/generated/shopper/models/CheckoutStepsResponse.js +2 -0
- package/dist/cjs/src/generated/shopper/models/CheckoutSubmitBody.d.ts +3 -13
- package/dist/cjs/src/generated/shopper/models/CorrelatedCode.d.ts +14 -0
- package/dist/cjs/src/generated/shopper/models/CorrelatedCode.js +2 -0
- package/dist/cjs/src/generated/shopper/models/EventLegend.d.ts +12 -0
- package/dist/cjs/src/generated/shopper/models/EventLegend.js +2 -0
- package/dist/cjs/src/generated/shopper/models/EventLegendItem.d.ts +9 -0
- package/dist/cjs/src/generated/shopper/models/EventLegendItem.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeAnswersBody.d.ts +4 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeAnswersBody.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeCancelSeatResponse.d.ts +7 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeCancelSeatResponse.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeShow.d.ts +12 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeShow.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeShowsResponse.d.ts +8 -0
- package/dist/cjs/src/generated/shopper/models/ExchangeShowsResponse.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ExtendTimerDto.d.ts +6 -0
- package/dist/cjs/src/generated/shopper/models/ExtendTimerDto.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ExtendTimerResponseDto.d.ts +10 -0
- package/dist/cjs/src/generated/shopper/models/ExtendTimerResponseDto.js +2 -0
- package/dist/cjs/src/generated/shopper/models/FullEventDetails.d.ts +2 -0
- package/dist/cjs/src/generated/shopper/models/GaSelection.d.ts +24 -0
- package/dist/cjs/src/generated/shopper/models/GaSelection.js +2 -0
- package/dist/cjs/src/generated/shopper/models/GaTier.d.ts +27 -0
- package/dist/cjs/src/generated/shopper/models/GaTier.js +2 -0
- package/dist/cjs/src/generated/shopper/models/LandingPageResponse.d.ts +10 -0
- package/dist/cjs/src/generated/shopper/models/LandingProduct.d.ts +11 -0
- package/dist/cjs/src/generated/shopper/models/LandingProduct.js +2 -0
- package/dist/cjs/src/generated/shopper/models/LandingShow.d.ts +16 -0
- package/dist/cjs/src/generated/shopper/models/LandingShow.js +2 -0
- package/dist/cjs/src/generated/shopper/models/LandingVenue.d.ts +10 -0
- package/dist/cjs/src/generated/shopper/models/LandingVenue.js +2 -0
- package/dist/cjs/src/generated/shopper/models/NextStepResponse.d.ts +7 -0
- package/dist/cjs/src/generated/shopper/models/NextStepResponse.js +2 -0
- package/dist/cjs/src/generated/shopper/models/OrderBalance.d.ts +26 -0
- package/dist/cjs/src/generated/shopper/models/OrderBalance.js +2 -0
- package/dist/cjs/src/generated/shopper/models/OrderPaymentStatus.d.ts +14 -0
- package/dist/cjs/src/generated/shopper/models/OrderPaymentStatus.js +2 -0
- package/dist/cjs/src/generated/shopper/models/PosDefaultInfoResponse.d.ts +7 -0
- package/dist/cjs/src/generated/shopper/models/PosDefaultInfoResponse.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ProductAddResponse.d.ts +4 -0
- package/dist/cjs/src/generated/shopper/models/SeatInCart.d.ts +8 -0
- package/dist/cjs/src/generated/shopper/models/SetLanguageDto.d.ts +6 -0
- package/dist/cjs/src/generated/shopper/models/SetLanguageDto.js +2 -0
- package/dist/cjs/src/generated/shopper/models/ShowExtras.d.ts +14 -0
- package/dist/cjs/src/generated/shopper/models/ShowExtras.js +2 -0
- package/dist/cjs/src/generated/shopper/models/StreamDetails.d.ts +25 -0
- package/dist/cjs/src/generated/shopper/models/StreamDetails.js +2 -0
- package/dist/cjs/src/generated/shopper/models/StreamDownloadLink.d.ts +4 -0
- package/dist/cjs/src/generated/shopper/models/StreamDownloadLink.js +2 -0
- package/dist/cjs/src/generated/shopper/services/AccountService.d.ts +20 -4
- package/dist/cjs/src/generated/shopper/services/AccountService.js +13 -4
- package/dist/cjs/src/generated/shopper/services/CartService.d.ts +76 -7
- package/dist/cjs/src/generated/shopper/services/CartService.js +98 -7
- package/dist/cjs/src/generated/shopper/services/CheckoutService.d.ts +47 -14
- package/dist/cjs/src/generated/shopper/services/CheckoutService.js +50 -19
- package/dist/cjs/src/generated/shopper/services/CodeService.d.ts +38 -5
- package/dist/cjs/src/generated/shopper/services/CodeService.js +39 -5
- package/dist/cjs/src/generated/shopper/services/DonationService.d.ts +23 -2
- package/dist/cjs/src/generated/shopper/services/DonationService.js +29 -2
- package/dist/cjs/src/generated/shopper/services/EventService.d.ts +46 -4
- package/dist/cjs/src/generated/shopper/services/EventService.js +59 -4
- package/dist/cjs/src/generated/shopper/services/GiftCardService.d.ts +25 -5
- package/dist/cjs/src/generated/shopper/services/GiftCardService.js +16 -5
- package/dist/cjs/src/generated/shopper/services/OrderService.d.ts +209 -16
- package/dist/cjs/src/generated/shopper/services/OrderService.js +276 -16
- package/dist/cjs/src/generated/shopper/services/PaymentService.d.ts +15 -3
- package/dist/cjs/src/generated/shopper/services/PaymentService.js +10 -3
- package/dist/cjs/src/generated/shopper/services/ProductService.d.ts +15 -3
- package/dist/cjs/src/generated/shopper/services/ProductService.js +10 -3
- package/dist/cjs/src/generated/shopper/services/SeatService.d.ts +30 -6
- package/dist/cjs/src/generated/shopper/services/SeatService.js +19 -6
- package/dist/cjs/src/generated/shopper/services/SessionService.d.ts +37 -2
- package/dist/cjs/src/generated/shopper/services/SessionService.js +51 -2
- package/dist/cjs/src/generated/shopper/types.d.ts +29 -1
- package/dist/cjs/src/scripts/build-all.js +83 -19
- package/dist/esm/src/functions/sdkConfig.d.ts +47 -16
- package/dist/esm/src/functions/sdkConfig.js +61 -41
- package/dist/esm/src/generated/portal/core/OpenAPI.js +1 -1
- package/dist/esm/src/generated/portal/core/request.js +41 -7
- package/dist/esm/src/generated/scanner/core/OpenAPI.js +1 -1
- package/dist/esm/src/generated/scanner/core/request.js +41 -7
- package/dist/esm/src/generated/scanner/index.d.ts +1 -0
- package/dist/esm/src/generated/scanner/models/OrderScan.d.ts +9 -0
- package/dist/esm/src/generated/scanner/models/OrderScan.js +1 -0
- package/dist/esm/src/generated/scanner/models/TicketScan.d.ts +1 -0
- package/dist/esm/src/generated/scanner/services/ScanningService.d.ts +16 -0
- package/dist/esm/src/generated/scanner/services/ScanningService.js +28 -0
- package/dist/esm/src/generated/scanner/types.d.ts +1 -0
- package/dist/esm/src/generated/shopper/core/OpenAPI.js +1 -1
- package/dist/esm/src/generated/shopper/core/request.js +41 -7
- package/dist/esm/src/generated/shopper/index.d.ts +29 -1
- package/dist/esm/src/generated/shopper/models/AnswerInput.d.ts +6 -0
- package/dist/esm/src/generated/shopper/models/AnswerInput.js +1 -0
- package/dist/esm/src/generated/shopper/models/CartAmounts.d.ts +38 -0
- package/dist/esm/src/generated/shopper/models/CartAmounts.js +1 -0
- package/dist/esm/src/generated/shopper/models/CartClearResult.d.ts +14 -0
- package/dist/esm/src/generated/shopper/models/CartClearResult.js +1 -0
- package/dist/esm/src/generated/shopper/models/CartCountsLite.d.ts +14 -0
- package/dist/esm/src/generated/shopper/models/CartCountsLite.js +1 -0
- package/dist/esm/src/generated/shopper/models/CartTotals.d.ts +22 -0
- package/dist/esm/src/generated/shopper/models/CartTotals.js +1 -0
- package/dist/esm/src/generated/shopper/models/CheckoutStep.d.ts +10 -0
- package/dist/esm/src/generated/shopper/models/CheckoutStep.js +1 -0
- package/dist/esm/src/generated/shopper/models/CheckoutStepsResponse.d.ts +7 -0
- package/dist/esm/src/generated/shopper/models/CheckoutStepsResponse.js +1 -0
- package/dist/esm/src/generated/shopper/models/CheckoutSubmitBody.d.ts +3 -13
- package/dist/esm/src/generated/shopper/models/CorrelatedCode.d.ts +14 -0
- package/dist/esm/src/generated/shopper/models/CorrelatedCode.js +1 -0
- package/dist/esm/src/generated/shopper/models/EventLegend.d.ts +12 -0
- package/dist/esm/src/generated/shopper/models/EventLegend.js +1 -0
- package/dist/esm/src/generated/shopper/models/EventLegendItem.d.ts +9 -0
- package/dist/esm/src/generated/shopper/models/EventLegendItem.js +1 -0
- package/dist/esm/src/generated/shopper/models/ExchangeAnswersBody.d.ts +4 -0
- package/dist/esm/src/generated/shopper/models/ExchangeAnswersBody.js +1 -0
- package/dist/esm/src/generated/shopper/models/ExchangeCancelSeatResponse.d.ts +7 -0
- package/dist/esm/src/generated/shopper/models/ExchangeCancelSeatResponse.js +1 -0
- package/dist/esm/src/generated/shopper/models/ExchangeShow.d.ts +12 -0
- package/dist/esm/src/generated/shopper/models/ExchangeShow.js +1 -0
- package/dist/esm/src/generated/shopper/models/ExchangeShowsResponse.d.ts +8 -0
- package/dist/esm/src/generated/shopper/models/ExchangeShowsResponse.js +1 -0
- package/dist/esm/src/generated/shopper/models/ExtendTimerDto.d.ts +6 -0
- package/dist/esm/src/generated/shopper/models/ExtendTimerDto.js +1 -0
- package/dist/esm/src/generated/shopper/models/ExtendTimerResponseDto.d.ts +10 -0
- package/dist/esm/src/generated/shopper/models/ExtendTimerResponseDto.js +1 -0
- package/dist/esm/src/generated/shopper/models/FullEventDetails.d.ts +2 -0
- package/dist/esm/src/generated/shopper/models/GaSelection.d.ts +24 -0
- package/dist/esm/src/generated/shopper/models/GaSelection.js +1 -0
- package/dist/esm/src/generated/shopper/models/GaTier.d.ts +27 -0
- package/dist/esm/src/generated/shopper/models/GaTier.js +1 -0
- package/dist/esm/src/generated/shopper/models/LandingPageResponse.d.ts +10 -0
- package/dist/esm/src/generated/shopper/models/LandingProduct.d.ts +11 -0
- package/dist/esm/src/generated/shopper/models/LandingProduct.js +1 -0
- package/dist/esm/src/generated/shopper/models/LandingShow.d.ts +16 -0
- package/dist/esm/src/generated/shopper/models/LandingShow.js +1 -0
- package/dist/esm/src/generated/shopper/models/LandingVenue.d.ts +10 -0
- package/dist/esm/src/generated/shopper/models/LandingVenue.js +1 -0
- package/dist/esm/src/generated/shopper/models/NextStepResponse.d.ts +7 -0
- package/dist/esm/src/generated/shopper/models/NextStepResponse.js +1 -0
- package/dist/esm/src/generated/shopper/models/OrderBalance.d.ts +26 -0
- package/dist/esm/src/generated/shopper/models/OrderBalance.js +1 -0
- package/dist/esm/src/generated/shopper/models/OrderPaymentStatus.d.ts +14 -0
- package/dist/esm/src/generated/shopper/models/OrderPaymentStatus.js +1 -0
- package/dist/esm/src/generated/shopper/models/PosDefaultInfoResponse.d.ts +7 -0
- package/dist/esm/src/generated/shopper/models/PosDefaultInfoResponse.js +1 -0
- package/dist/esm/src/generated/shopper/models/ProductAddResponse.d.ts +4 -0
- package/dist/esm/src/generated/shopper/models/SeatInCart.d.ts +8 -0
- package/dist/esm/src/generated/shopper/models/SetLanguageDto.d.ts +6 -0
- package/dist/esm/src/generated/shopper/models/SetLanguageDto.js +1 -0
- package/dist/esm/src/generated/shopper/models/ShowExtras.d.ts +14 -0
- package/dist/esm/src/generated/shopper/models/ShowExtras.js +1 -0
- package/dist/esm/src/generated/shopper/models/StreamDetails.d.ts +25 -0
- package/dist/esm/src/generated/shopper/models/StreamDetails.js +1 -0
- package/dist/esm/src/generated/shopper/models/StreamDownloadLink.d.ts +4 -0
- package/dist/esm/src/generated/shopper/models/StreamDownloadLink.js +1 -0
- package/dist/esm/src/generated/shopper/services/AccountService.d.ts +20 -4
- package/dist/esm/src/generated/shopper/services/AccountService.js +13 -4
- package/dist/esm/src/generated/shopper/services/CartService.d.ts +76 -7
- package/dist/esm/src/generated/shopper/services/CartService.js +98 -7
- package/dist/esm/src/generated/shopper/services/CheckoutService.d.ts +47 -14
- package/dist/esm/src/generated/shopper/services/CheckoutService.js +50 -19
- package/dist/esm/src/generated/shopper/services/CodeService.d.ts +38 -5
- package/dist/esm/src/generated/shopper/services/CodeService.js +39 -5
- package/dist/esm/src/generated/shopper/services/DonationService.d.ts +23 -2
- package/dist/esm/src/generated/shopper/services/DonationService.js +29 -2
- package/dist/esm/src/generated/shopper/services/EventService.d.ts +46 -4
- package/dist/esm/src/generated/shopper/services/EventService.js +59 -4
- package/dist/esm/src/generated/shopper/services/GiftCardService.d.ts +25 -5
- package/dist/esm/src/generated/shopper/services/GiftCardService.js +16 -5
- package/dist/esm/src/generated/shopper/services/OrderService.d.ts +209 -16
- package/dist/esm/src/generated/shopper/services/OrderService.js +276 -16
- package/dist/esm/src/generated/shopper/services/PaymentService.d.ts +15 -3
- package/dist/esm/src/generated/shopper/services/PaymentService.js +10 -3
- package/dist/esm/src/generated/shopper/services/ProductService.d.ts +15 -3
- package/dist/esm/src/generated/shopper/services/ProductService.js +10 -3
- package/dist/esm/src/generated/shopper/services/SeatService.d.ts +30 -6
- package/dist/esm/src/generated/shopper/services/SeatService.js +19 -6
- package/dist/esm/src/generated/shopper/services/SessionService.d.ts +37 -2
- package/dist/esm/src/generated/shopper/services/SessionService.js +51 -2
- package/dist/esm/src/generated/shopper/types.d.ts +29 -1
- package/dist/esm/src/scripts/build-all.js +83 -19
- package/package.json +3 -2
- package/pnpm-workspace.yaml +2 -0
- package/src/custom/custom-request.txt +43 -9
- package/src/functions/sdkConfig.ts +91 -54
- package/src/generated/portal/core/OpenAPI.ts +1 -1
- package/src/generated/portal/core/request.ts +43 -9
- package/src/generated/scanner/core/OpenAPI.ts +1 -1
- package/src/generated/scanner/core/request.ts +43 -9
- package/src/generated/scanner/index.ts +1 -0
- package/src/generated/scanner/models/OrderScan.ts +14 -0
- package/src/generated/scanner/models/TicketScan.ts +1 -0
- package/src/generated/scanner/services/ScanningService.ts +38 -0
- package/src/generated/scanner/types.ts +1 -0
- package/src/generated/shopper/core/OpenAPI.ts +1 -1
- package/src/generated/shopper/core/request.ts +43 -9
- package/src/generated/shopper/index.ts +29 -1
- package/src/generated/shopper/models/AnswerInput.ts +11 -0
- package/src/generated/shopper/models/CartAmounts.ts +43 -0
- package/src/generated/shopper/models/CartClearResult.ts +19 -0
- package/src/generated/shopper/models/CartCountsLite.ts +19 -0
- package/src/generated/shopper/models/CartTotals.ts +27 -0
- package/src/generated/shopper/models/CheckoutStep.ts +15 -0
- package/src/generated/shopper/models/CheckoutStepsResponse.ts +12 -0
- package/src/generated/shopper/models/CheckoutSubmitBody.ts +3 -13
- package/src/generated/shopper/models/CorrelatedCode.ts +19 -0
- package/src/generated/shopper/models/EventLegend.ts +17 -0
- package/src/generated/shopper/models/EventLegendItem.ts +14 -0
- package/src/generated/shopper/models/ExchangeAnswersBody.ts +9 -0
- package/src/generated/shopper/models/ExchangeCancelSeatResponse.ts +12 -0
- package/src/generated/shopper/models/ExchangeShow.ts +17 -0
- package/src/generated/shopper/models/ExchangeShowsResponse.ts +13 -0
- package/src/generated/shopper/models/ExtendTimerDto.ts +11 -0
- package/src/generated/shopper/models/ExtendTimerResponseDto.ts +15 -0
- package/src/generated/shopper/models/FullEventDetails.ts +2 -0
- package/src/generated/shopper/models/GaSelection.ts +29 -0
- package/src/generated/shopper/models/GaTier.ts +32 -0
- package/src/generated/shopper/models/LandingPageResponse.ts +10 -0
- package/src/generated/shopper/models/LandingProduct.ts +16 -0
- package/src/generated/shopper/models/LandingShow.ts +21 -0
- package/src/generated/shopper/models/LandingVenue.ts +15 -0
- package/src/generated/shopper/models/NextStepResponse.ts +12 -0
- package/src/generated/shopper/models/OrderBalance.ts +31 -0
- package/src/generated/shopper/models/OrderPaymentStatus.ts +19 -0
- package/src/generated/shopper/models/PosDefaultInfoResponse.ts +12 -0
- package/src/generated/shopper/models/ProductAddResponse.ts +4 -0
- package/src/generated/shopper/models/SeatInCart.ts +8 -0
- package/src/generated/shopper/models/SetLanguageDto.ts +11 -0
- package/src/generated/shopper/models/ShowExtras.ts +19 -0
- package/src/generated/shopper/models/StreamDetails.ts +30 -0
- package/src/generated/shopper/models/StreamDownloadLink.ts +9 -0
- package/src/generated/shopper/services/AccountService.ts +22 -9
- package/src/generated/shopper/services/CartService.ts +123 -14
- package/src/generated/shopper/services/CheckoutService.ts +69 -29
- package/src/generated/shopper/services/CodeService.ts +58 -15
- package/src/generated/shopper/services/DonationService.ts +38 -5
- package/src/generated/shopper/services/EventService.ts +77 -10
- package/src/generated/shopper/services/GiftCardService.ts +28 -12
- package/src/generated/shopper/services/OrderService.ts +356 -41
- package/src/generated/shopper/services/PaymentService.ts +19 -9
- package/src/generated/shopper/services/ProductService.ts +19 -9
- package/src/generated/shopper/services/SeatService.ts +38 -19
- package/src/generated/shopper/services/SessionService.ts +65 -5
- package/src/generated/shopper/types.ts +29 -1
- package/src/scripts/build-all.ts +127 -26
- package/src/generated/shopper/models/SaveNonceBody.ts +0 -15
|
@@ -260,14 +260,16 @@ export const getResponseBody = async (response: Response): Promise<any> => {
|
|
|
260
260
|
const contentType = response.headers.get("Content-Type");
|
|
261
261
|
if (contentType) {
|
|
262
262
|
const jsonTypes = ["application/json", "application/problem+json"];
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
);
|
|
263
|
+
const lc = contentType.toLowerCase();
|
|
264
|
+
const isJSON = jsonTypes.some((type) => lc.startsWith(type));
|
|
266
265
|
if (isJSON) {
|
|
267
266
|
return await response.json();
|
|
268
|
-
} else {
|
|
269
|
-
return await response.text();
|
|
270
267
|
}
|
|
268
|
+
// Return Blob for PDF / binary responses
|
|
269
|
+
if (lc.startsWith('application/pdf') || lc.startsWith('application/octet-stream')) {
|
|
270
|
+
return await response.blob();
|
|
271
|
+
}
|
|
272
|
+
return await response.text();
|
|
271
273
|
}
|
|
272
274
|
} catch (error) {
|
|
273
275
|
console.error(error);
|
|
@@ -315,7 +317,37 @@ export const catchErrorCodes = (
|
|
|
315
317
|
}
|
|
316
318
|
};
|
|
317
319
|
|
|
318
|
-
|
|
320
|
+
// Cookies are cached per request "identity" rather than in one shared slot.
|
|
321
|
+
// Shopper calls carry shopperguid/accountid in options.headers (resolved
|
|
322
|
+
// per-call by resolveShopperHeaders()), so each shopper gets its own cookie
|
|
323
|
+
// jar instead of one shopper's session leaking into another's requests when
|
|
324
|
+
// a single SDK instance serves many shoppers concurrently (shopperScope:
|
|
325
|
+
// 'per-request'). Portal/scanner calls carry no such header and fall back to
|
|
326
|
+
// the single default slot, matching prior behavior.
|
|
327
|
+
const DEFAULT_COOKIE_KEY = "__default__";
|
|
328
|
+
const MAX_COOKIE_ENTRIES = 10_000;
|
|
329
|
+
const cookiesByKey = new Map<string, string>();
|
|
330
|
+
|
|
331
|
+
const getCookieKey = (options: ApiRequestOptions): string => {
|
|
332
|
+
const shopperguid = options.headers?.["shopperguid"];
|
|
333
|
+
const accountid = options.headers?.["accountid"];
|
|
334
|
+
if (isStringWithValue(shopperguid)) {
|
|
335
|
+
return `${shopperguid}:${isStringWithValue(accountid) ? accountid : ""}`;
|
|
336
|
+
}
|
|
337
|
+
return DEFAULT_COOKIE_KEY;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
const storeCookie = (key: string, value: string): void => {
|
|
341
|
+
if (!cookiesByKey.has(key) && cookiesByKey.size >= MAX_COOKIE_ENTRIES) {
|
|
342
|
+
// Evict the oldest entry (Map preserves insertion order) to bound memory
|
|
343
|
+
// on a long-running, many-shopper backend process.
|
|
344
|
+
const oldestKey = cookiesByKey.keys().next().value;
|
|
345
|
+
if (oldestKey !== undefined) {
|
|
346
|
+
cookiesByKey.delete(oldestKey);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
cookiesByKey.set(key, value);
|
|
350
|
+
};
|
|
319
351
|
|
|
320
352
|
/**
|
|
321
353
|
* Wraps sendRequest to capture cookies on login
|
|
@@ -330,6 +362,7 @@ export const request = <T>(
|
|
|
330
362
|
const url = getUrl(config, options);
|
|
331
363
|
const formData = getFormData(options);
|
|
332
364
|
const body = getRequestBody(options);
|
|
365
|
+
const cookieKey = getCookieKey(options);
|
|
333
366
|
|
|
334
367
|
// Before making headers, possibly attach cookie if we have it
|
|
335
368
|
const baseHeaders = await getHeaders(config, options);
|
|
@@ -338,9 +371,10 @@ export const request = <T>(
|
|
|
338
371
|
baseHeaders.forEach((value, key) => {
|
|
339
372
|
headerObj[key] = value;
|
|
340
373
|
});
|
|
341
|
-
|
|
374
|
+
const storedCookie = cookiesByKey.get(cookieKey);
|
|
375
|
+
if (storedCookie) {
|
|
342
376
|
// Attach stored cookie
|
|
343
|
-
headerObj["Cookie"] =
|
|
377
|
+
headerObj["Cookie"] = storedCookie;
|
|
344
378
|
}
|
|
345
379
|
const headers = new Headers(headerObj);
|
|
346
380
|
|
|
@@ -359,7 +393,7 @@ export const request = <T>(
|
|
|
359
393
|
const setCookie = response.headers.get("set-cookie");
|
|
360
394
|
if (setCookie) {
|
|
361
395
|
// Overwrite or append as needed
|
|
362
|
-
|
|
396
|
+
storeCookie(cookieKey, setCookie);
|
|
363
397
|
}
|
|
364
398
|
|
|
365
399
|
const responseBody = await getResponseBody(response);
|
|
@@ -3,14 +3,34 @@ import { OpenAPI as ShopperAPI } from '../generated/shopper/core/OpenAPI';
|
|
|
3
3
|
import { OpenAPI as ScannerAPI } from '../generated/scanner/core/OpenAPI';
|
|
4
4
|
import { OpenAPI as PortalAPI } from '../generated/portal/core/OpenAPI';
|
|
5
5
|
|
|
6
|
+
export type ShopperScope = 'singleton' | 'per-request';
|
|
7
|
+
|
|
6
8
|
export interface SDKConfig {
|
|
7
|
-
shopperGuid: string;
|
|
8
|
-
accountId: string;
|
|
9
9
|
apiKey: string;
|
|
10
|
+
/**
|
|
11
|
+
* Required when shopperScope is 'singleton' (the default). Optional when
|
|
12
|
+
* shopperScope is 'per-request' — in that mode these act only as a fallback
|
|
13
|
+
* default, and every shopper call may override them via a trailing
|
|
14
|
+
* `{ shopperGuid, accountId }` context argument.
|
|
15
|
+
*/
|
|
16
|
+
shopperGuid?: string;
|
|
17
|
+
accountId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* 'singleton' (default): shopperGuid/accountId are fixed for the lifetime of
|
|
20
|
+
* the process, exactly like today.
|
|
21
|
+
*
|
|
22
|
+
* 'per-request': shopperGuid/accountId become optional at init() time, and
|
|
23
|
+
* every shopper service method accepts an optional trailing context argument
|
|
24
|
+
* ({ shopperGuid, accountId }) so a single SDK instance can serve requests
|
|
25
|
+
* for many shoppers/accounts concurrently — the intended shape for a backend
|
|
26
|
+
* that proxies calls on behalf of arbitrary shoppers.
|
|
27
|
+
*/
|
|
28
|
+
shopperScope?: ShopperScope;
|
|
10
29
|
}
|
|
11
30
|
|
|
12
31
|
let isInitialized = false;
|
|
13
32
|
let currentConfig: SDKConfig | null = null;
|
|
33
|
+
let currentShopperScope: ShopperScope = 'singleton';
|
|
14
34
|
|
|
15
35
|
/**
|
|
16
36
|
* Initialize the DRT SDK with credentials.
|
|
@@ -23,7 +43,7 @@ let currentConfig: SDKConfig | null = null;
|
|
|
23
43
|
* ```javascript
|
|
24
44
|
* import { DRT } from '@drttix/drt-sdk';
|
|
25
45
|
*
|
|
26
|
-
* // Initialize once
|
|
46
|
+
* // Initialize once (default: singleton shopper scope)
|
|
27
47
|
* DRT.init({
|
|
28
48
|
* shopperGuid: 'your-shopper-guid',
|
|
29
49
|
* accountId: 'your-account-id',
|
|
@@ -33,26 +53,50 @@ let currentConfig: SDKConfig | null = null;
|
|
|
33
53
|
* // Now make calls without passing credentials
|
|
34
54
|
* const theme = await DRT.shopper.account.getTheme();
|
|
35
55
|
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```javascript
|
|
59
|
+
* // Backend serving many shoppers/accounts from a single SDK instance
|
|
60
|
+
* DRT.init({ apiKey: 'your-api-key', shopperScope: 'per-request' });
|
|
61
|
+
*
|
|
62
|
+
* // Pass shopperGuid/accountId per call instead
|
|
63
|
+
* await DRT.shopper.product.addProduct(body, {
|
|
64
|
+
* shopperGuid: req.shopperGuid,
|
|
65
|
+
* accountId: req.accountId,
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
36
68
|
*/
|
|
37
69
|
export function init(config: SDKConfig): void {
|
|
38
|
-
if (!config.
|
|
70
|
+
if (!config.apiKey) {
|
|
71
|
+
throw new Error('DRT SDK init requires apiKey');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const shopperScope = config.shopperScope ?? 'singleton';
|
|
75
|
+
|
|
76
|
+
if (shopperScope === 'singleton' && (!config.shopperGuid || !config.accountId)) {
|
|
39
77
|
throw new Error(
|
|
40
|
-
'DRT SDK init requires shopperGuid
|
|
78
|
+
'DRT SDK init requires shopperGuid and accountId (or pass shopperScope: "per-request" to supply them per shopper call instead)',
|
|
41
79
|
);
|
|
42
80
|
}
|
|
43
81
|
|
|
44
82
|
currentConfig = config;
|
|
83
|
+
currentShopperScope = shopperScope;
|
|
45
84
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
85
|
+
// Portal and scanner are always singleton-scoped: one fixed set of
|
|
86
|
+
// credentials for every call, applied globally via OpenAPI.HEADERS.
|
|
87
|
+
const sharedHeaders: Record<string, string> = { apikey: config.apiKey };
|
|
88
|
+
if (config.shopperGuid && config.accountId) {
|
|
89
|
+
sharedHeaders.shopperguid = config.shopperGuid;
|
|
90
|
+
sharedHeaders.accountid = config.accountId;
|
|
91
|
+
}
|
|
92
|
+
ScannerAPI.HEADERS = sharedHeaders;
|
|
93
|
+
PortalAPI.HEADERS = sharedHeaders;
|
|
51
94
|
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
95
|
+
// Shopper credentials are resolved per-call by resolveShopperHeaders()
|
|
96
|
+
// (see generated shopper services), so no global header is set here —
|
|
97
|
+
// that's what lets shopperScope: 'per-request' override per call without
|
|
98
|
+
// a global value silently taking precedence.
|
|
99
|
+
ShopperAPI.HEADERS = undefined;
|
|
56
100
|
|
|
57
101
|
isInitialized = true;
|
|
58
102
|
}
|
|
@@ -71,11 +115,19 @@ export function getConfig(): SDKConfig | null {
|
|
|
71
115
|
return currentConfig;
|
|
72
116
|
}
|
|
73
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Get the shopperScope the SDK was initialized with ('singleton' if not yet initialized).
|
|
120
|
+
*/
|
|
121
|
+
export function getShopperScope(): ShopperScope {
|
|
122
|
+
return currentShopperScope;
|
|
123
|
+
}
|
|
124
|
+
|
|
74
125
|
/**
|
|
75
126
|
* Reset the SDK configuration.
|
|
76
127
|
*/
|
|
77
128
|
export function reset(): void {
|
|
78
129
|
currentConfig = null;
|
|
130
|
+
currentShopperScope = 'singleton';
|
|
79
131
|
isInitialized = false;
|
|
80
132
|
ShopperAPI.HEADERS = undefined;
|
|
81
133
|
ScannerAPI.HEADERS = undefined;
|
|
@@ -83,50 +135,35 @@ export function reset(): void {
|
|
|
83
135
|
}
|
|
84
136
|
|
|
85
137
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
138
|
+
* Resolves the shopperguid/accountid/apikey headers for a single shopper API call.
|
|
139
|
+
*
|
|
140
|
+
* Used internally by every generated shopper service method. `context`, when
|
|
141
|
+
* provided, overrides the shopperGuid/accountId set at DRT.init() — this is
|
|
142
|
+
* what makes shopperScope: 'per-request' work. apiKey always comes from
|
|
143
|
+
* DRT.init(), since it identifies the calling backend, not the shopper.
|
|
88
144
|
*/
|
|
89
|
-
export function
|
|
90
|
-
shopperGuid
|
|
91
|
-
accountId
|
|
92
|
-
|
|
93
|
-
} {
|
|
145
|
+
export function resolveShopperHeaders(context?: {
|
|
146
|
+
shopperGuid?: string;
|
|
147
|
+
accountId?: string;
|
|
148
|
+
}): Record<string, string> {
|
|
94
149
|
if (!currentConfig) {
|
|
95
150
|
throw new Error('DRT SDK not initialized. Call DRT.init() first.');
|
|
96
151
|
}
|
|
152
|
+
|
|
153
|
+
const shopperGuid = context?.shopperGuid ?? currentConfig.shopperGuid;
|
|
154
|
+
const accountId = context?.accountId ?? currentConfig.accountId;
|
|
155
|
+
|
|
156
|
+
if (!shopperGuid || !accountId) {
|
|
157
|
+
throw new Error(
|
|
158
|
+
currentShopperScope === 'per-request'
|
|
159
|
+
? 'No shopperGuid/accountId available for this call. DRT SDK was initialized with shopperScope: "per-request" without defaults — pass { shopperGuid, accountId } as the last argument to this call.'
|
|
160
|
+
: 'DRT SDK not initialized with shopperGuid/accountId. Call DRT.init() first.',
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
|
|
97
164
|
return {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
165
|
+
shopperguid: shopperGuid,
|
|
166
|
+
accountid: accountId,
|
|
167
|
+
apikey: currentConfig.apiKey,
|
|
101
168
|
};
|
|
102
169
|
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Creates a proxy that auto-injects credentials for service methods.
|
|
106
|
-
* Methods that take (shopperguid, accountid, apikey, ...rest) as first 3 params
|
|
107
|
-
* will have those auto-filled from the SDK config.
|
|
108
|
-
*/
|
|
109
|
-
export function createAutoCredentialsProxy<T extends object>(service: T): T {
|
|
110
|
-
return new Proxy(service, {
|
|
111
|
-
get(target, prop) {
|
|
112
|
-
const value = (target as any)[prop];
|
|
113
|
-
if (typeof value === 'function') {
|
|
114
|
-
return (...args: any[]) => {
|
|
115
|
-
// If SDK is initialized, prepend credentials
|
|
116
|
-
if (isInitialized && currentConfig) {
|
|
117
|
-
return value.call(
|
|
118
|
-
target,
|
|
119
|
-
currentConfig.shopperGuid,
|
|
120
|
-
currentConfig.accountId,
|
|
121
|
-
currentConfig.apiKey,
|
|
122
|
-
...args,
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
// Otherwise call with original args
|
|
126
|
-
return value.apply(target, args);
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
return value;
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
}
|
|
@@ -260,14 +260,16 @@ export const getResponseBody = async (response: Response): Promise<any> => {
|
|
|
260
260
|
const contentType = response.headers.get("Content-Type");
|
|
261
261
|
if (contentType) {
|
|
262
262
|
const jsonTypes = ["application/json", "application/problem+json"];
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
);
|
|
263
|
+
const lc = contentType.toLowerCase();
|
|
264
|
+
const isJSON = jsonTypes.some((type) => lc.startsWith(type));
|
|
266
265
|
if (isJSON) {
|
|
267
266
|
return await response.json();
|
|
268
|
-
} else {
|
|
269
|
-
return await response.text();
|
|
270
267
|
}
|
|
268
|
+
// Return Blob for PDF / binary responses
|
|
269
|
+
if (lc.startsWith('application/pdf') || lc.startsWith('application/octet-stream')) {
|
|
270
|
+
return await response.blob();
|
|
271
|
+
}
|
|
272
|
+
return await response.text();
|
|
271
273
|
}
|
|
272
274
|
} catch (error) {
|
|
273
275
|
console.error(error);
|
|
@@ -315,7 +317,37 @@ export const catchErrorCodes = (
|
|
|
315
317
|
}
|
|
316
318
|
};
|
|
317
319
|
|
|
318
|
-
|
|
320
|
+
// Cookies are cached per request "identity" rather than in one shared slot.
|
|
321
|
+
// Shopper calls carry shopperguid/accountid in options.headers (resolved
|
|
322
|
+
// per-call by resolveShopperHeaders()), so each shopper gets its own cookie
|
|
323
|
+
// jar instead of one shopper's session leaking into another's requests when
|
|
324
|
+
// a single SDK instance serves many shoppers concurrently (shopperScope:
|
|
325
|
+
// 'per-request'). Portal/scanner calls carry no such header and fall back to
|
|
326
|
+
// the single default slot, matching prior behavior.
|
|
327
|
+
const DEFAULT_COOKIE_KEY = "__default__";
|
|
328
|
+
const MAX_COOKIE_ENTRIES = 10_000;
|
|
329
|
+
const cookiesByKey = new Map<string, string>();
|
|
330
|
+
|
|
331
|
+
const getCookieKey = (options: ApiRequestOptions): string => {
|
|
332
|
+
const shopperguid = options.headers?.["shopperguid"];
|
|
333
|
+
const accountid = options.headers?.["accountid"];
|
|
334
|
+
if (isStringWithValue(shopperguid)) {
|
|
335
|
+
return `${shopperguid}:${isStringWithValue(accountid) ? accountid : ""}`;
|
|
336
|
+
}
|
|
337
|
+
return DEFAULT_COOKIE_KEY;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
const storeCookie = (key: string, value: string): void => {
|
|
341
|
+
if (!cookiesByKey.has(key) && cookiesByKey.size >= MAX_COOKIE_ENTRIES) {
|
|
342
|
+
// Evict the oldest entry (Map preserves insertion order) to bound memory
|
|
343
|
+
// on a long-running, many-shopper backend process.
|
|
344
|
+
const oldestKey = cookiesByKey.keys().next().value;
|
|
345
|
+
if (oldestKey !== undefined) {
|
|
346
|
+
cookiesByKey.delete(oldestKey);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
cookiesByKey.set(key, value);
|
|
350
|
+
};
|
|
319
351
|
|
|
320
352
|
/**
|
|
321
353
|
* Wraps sendRequest to capture cookies on login
|
|
@@ -330,6 +362,7 @@ export const request = <T>(
|
|
|
330
362
|
const url = getUrl(config, options);
|
|
331
363
|
const formData = getFormData(options);
|
|
332
364
|
const body = getRequestBody(options);
|
|
365
|
+
const cookieKey = getCookieKey(options);
|
|
333
366
|
|
|
334
367
|
// Before making headers, possibly attach cookie if we have it
|
|
335
368
|
const baseHeaders = await getHeaders(config, options);
|
|
@@ -338,9 +371,10 @@ export const request = <T>(
|
|
|
338
371
|
baseHeaders.forEach((value, key) => {
|
|
339
372
|
headerObj[key] = value;
|
|
340
373
|
});
|
|
341
|
-
|
|
374
|
+
const storedCookie = cookiesByKey.get(cookieKey);
|
|
375
|
+
if (storedCookie) {
|
|
342
376
|
// Attach stored cookie
|
|
343
|
-
headerObj["Cookie"] =
|
|
377
|
+
headerObj["Cookie"] = storedCookie;
|
|
344
378
|
}
|
|
345
379
|
const headers = new Headers(headerObj);
|
|
346
380
|
|
|
@@ -359,7 +393,7 @@ export const request = <T>(
|
|
|
359
393
|
const setCookie = response.headers.get("set-cookie");
|
|
360
394
|
if (setCookie) {
|
|
361
395
|
// Overwrite or append as needed
|
|
362
|
-
|
|
396
|
+
storeCookie(cookieKey, setCookie);
|
|
363
397
|
}
|
|
364
398
|
|
|
365
399
|
const responseBody = await getResponseBody(response);
|
|
@@ -260,14 +260,16 @@ export const getResponseBody = async (response: Response): Promise<any> => {
|
|
|
260
260
|
const contentType = response.headers.get("Content-Type");
|
|
261
261
|
if (contentType) {
|
|
262
262
|
const jsonTypes = ["application/json", "application/problem+json"];
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
);
|
|
263
|
+
const lc = contentType.toLowerCase();
|
|
264
|
+
const isJSON = jsonTypes.some((type) => lc.startsWith(type));
|
|
266
265
|
if (isJSON) {
|
|
267
266
|
return await response.json();
|
|
268
|
-
} else {
|
|
269
|
-
return await response.text();
|
|
270
267
|
}
|
|
268
|
+
// Return Blob for PDF / binary responses
|
|
269
|
+
if (lc.startsWith('application/pdf') || lc.startsWith('application/octet-stream')) {
|
|
270
|
+
return await response.blob();
|
|
271
|
+
}
|
|
272
|
+
return await response.text();
|
|
271
273
|
}
|
|
272
274
|
} catch (error) {
|
|
273
275
|
console.error(error);
|
|
@@ -315,7 +317,37 @@ export const catchErrorCodes = (
|
|
|
315
317
|
}
|
|
316
318
|
};
|
|
317
319
|
|
|
318
|
-
|
|
320
|
+
// Cookies are cached per request "identity" rather than in one shared slot.
|
|
321
|
+
// Shopper calls carry shopperguid/accountid in options.headers (resolved
|
|
322
|
+
// per-call by resolveShopperHeaders()), so each shopper gets its own cookie
|
|
323
|
+
// jar instead of one shopper's session leaking into another's requests when
|
|
324
|
+
// a single SDK instance serves many shoppers concurrently (shopperScope:
|
|
325
|
+
// 'per-request'). Portal/scanner calls carry no such header and fall back to
|
|
326
|
+
// the single default slot, matching prior behavior.
|
|
327
|
+
const DEFAULT_COOKIE_KEY = "__default__";
|
|
328
|
+
const MAX_COOKIE_ENTRIES = 10_000;
|
|
329
|
+
const cookiesByKey = new Map<string, string>();
|
|
330
|
+
|
|
331
|
+
const getCookieKey = (options: ApiRequestOptions): string => {
|
|
332
|
+
const shopperguid = options.headers?.["shopperguid"];
|
|
333
|
+
const accountid = options.headers?.["accountid"];
|
|
334
|
+
if (isStringWithValue(shopperguid)) {
|
|
335
|
+
return `${shopperguid}:${isStringWithValue(accountid) ? accountid : ""}`;
|
|
336
|
+
}
|
|
337
|
+
return DEFAULT_COOKIE_KEY;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
const storeCookie = (key: string, value: string): void => {
|
|
341
|
+
if (!cookiesByKey.has(key) && cookiesByKey.size >= MAX_COOKIE_ENTRIES) {
|
|
342
|
+
// Evict the oldest entry (Map preserves insertion order) to bound memory
|
|
343
|
+
// on a long-running, many-shopper backend process.
|
|
344
|
+
const oldestKey = cookiesByKey.keys().next().value;
|
|
345
|
+
if (oldestKey !== undefined) {
|
|
346
|
+
cookiesByKey.delete(oldestKey);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
cookiesByKey.set(key, value);
|
|
350
|
+
};
|
|
319
351
|
|
|
320
352
|
/**
|
|
321
353
|
* Wraps sendRequest to capture cookies on login
|
|
@@ -330,6 +362,7 @@ export const request = <T>(
|
|
|
330
362
|
const url = getUrl(config, options);
|
|
331
363
|
const formData = getFormData(options);
|
|
332
364
|
const body = getRequestBody(options);
|
|
365
|
+
const cookieKey = getCookieKey(options);
|
|
333
366
|
|
|
334
367
|
// Before making headers, possibly attach cookie if we have it
|
|
335
368
|
const baseHeaders = await getHeaders(config, options);
|
|
@@ -338,9 +371,10 @@ export const request = <T>(
|
|
|
338
371
|
baseHeaders.forEach((value, key) => {
|
|
339
372
|
headerObj[key] = value;
|
|
340
373
|
});
|
|
341
|
-
|
|
374
|
+
const storedCookie = cookiesByKey.get(cookieKey);
|
|
375
|
+
if (storedCookie) {
|
|
342
376
|
// Attach stored cookie
|
|
343
|
-
headerObj["Cookie"] =
|
|
377
|
+
headerObj["Cookie"] = storedCookie;
|
|
344
378
|
}
|
|
345
379
|
const headers = new Headers(headerObj);
|
|
346
380
|
|
|
@@ -359,7 +393,7 @@ export const request = <T>(
|
|
|
359
393
|
const setCookie = response.headers.get("set-cookie");
|
|
360
394
|
if (setCookie) {
|
|
361
395
|
// Overwrite or append as needed
|
|
362
|
-
|
|
396
|
+
storeCookie(cookieKey, setCookie);
|
|
363
397
|
}
|
|
364
398
|
|
|
365
399
|
const responseBody = await getResponseBody(response);
|
|
@@ -16,6 +16,7 @@ export type { EventSkin } from './models/EventSkin';
|
|
|
16
16
|
export type { MobileReceiptResponse } from './models/MobileReceiptResponse';
|
|
17
17
|
export type { OrderDetails } from './models/OrderDetails';
|
|
18
18
|
export type { OrderProduct } from './models/OrderProduct';
|
|
19
|
+
export type { OrderScan } from './models/OrderScan';
|
|
19
20
|
export type { OrderSeat } from './models/OrderSeat';
|
|
20
21
|
export type { OrderSummary } from './models/OrderSummary';
|
|
21
22
|
export type { Product } from './models/Product';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* generated using openapi-typescript-codegen -- do not edit */
|
|
2
|
+
/* istanbul ignore file */
|
|
3
|
+
/* tslint:disable */
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
import type { TicketScan } from './TicketScan';
|
|
6
|
+
export type OrderScan = {
|
|
7
|
+
valid: boolean;
|
|
8
|
+
message: string;
|
|
9
|
+
oid: number;
|
|
10
|
+
scannedCount: number;
|
|
11
|
+
remainingTickets: number;
|
|
12
|
+
tickets: Array<TicketScan>;
|
|
13
|
+
};
|
|
14
|
+
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import type { EventResponse } from '../models/EventResponse';
|
|
6
6
|
import type { MobileReceiptResponse } from '../models/MobileReceiptResponse';
|
|
7
7
|
import type { OrderDetails } from '../models/OrderDetails';
|
|
8
|
+
import type { OrderScan } from '../models/OrderScan';
|
|
8
9
|
import type { ProductQR } from '../models/ProductQR';
|
|
9
10
|
import type { ProductScan } from '../models/ProductScan';
|
|
10
11
|
import type { ReceiptResponse } from '../models/ReceiptResponse';
|
|
@@ -276,6 +277,43 @@ export class ScanningService {
|
|
|
276
277
|
},
|
|
277
278
|
});
|
|
278
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Used to scan every remaining ticket in an order
|
|
282
|
+
* Scans all unscanned tickets in an order and returns an OrderScan object summarizing the results
|
|
283
|
+
* @param c Show code
|
|
284
|
+
* @param devicename The name of the device issuing the request
|
|
285
|
+
* @param requestBody The order to scan, identified by orderId
|
|
286
|
+
* @param lang Language for error messages to be returned in
|
|
287
|
+
* @returns OrderScan Scans the order and returns the scan information.
|
|
288
|
+
* @throws ApiError
|
|
289
|
+
*/
|
|
290
|
+
public static appControllerScanEntireOrder(
|
|
291
|
+
c: string,
|
|
292
|
+
devicename: string,
|
|
293
|
+
requestBody: {
|
|
294
|
+
orderId?: {
|
|
295
|
+
oid?: number;
|
|
296
|
+
};
|
|
297
|
+
},
|
|
298
|
+
lang?: string,
|
|
299
|
+
): CancelablePromise<OrderScan> {
|
|
300
|
+
return __request(OpenAPI, {
|
|
301
|
+
method: 'POST',
|
|
302
|
+
url: '/order',
|
|
303
|
+
query: {
|
|
304
|
+
'c': c,
|
|
305
|
+
'devicename': devicename,
|
|
306
|
+
'lang': lang,
|
|
307
|
+
},
|
|
308
|
+
body: requestBody,
|
|
309
|
+
mediaType: 'application/json',
|
|
310
|
+
errors: {
|
|
311
|
+
400: `Bad Request error with error details.`,
|
|
312
|
+
404: `Not found error with error details.`,
|
|
313
|
+
500: `Internal Server Error, please contact developers.`,
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
}
|
|
279
317
|
/**
|
|
280
318
|
* Used to get a show by its showCode
|
|
281
319
|
* Returns details for a single event.
|
|
@@ -10,6 +10,7 @@ export type { EventSkin } from './models/EventSkin';
|
|
|
10
10
|
export type { MobileReceiptResponse } from './models/MobileReceiptResponse';
|
|
11
11
|
export type { OrderDetails } from './models/OrderDetails';
|
|
12
12
|
export type { OrderProduct } from './models/OrderProduct';
|
|
13
|
+
export type { OrderScan } from './models/OrderScan';
|
|
13
14
|
export type { OrderSeat } from './models/OrderSeat';
|
|
14
15
|
export type { OrderSummary } from './models/OrderSummary';
|
|
15
16
|
export type { Product } from './models/Product';
|