@voucherify/sdk 2.5.0 → 2.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"voucherifysdk.esm.js","sources":["../src/types/DiscountVoucher.ts","../src/VoucherifyError.ts","../src/RequestController.ts","../src/helpers.ts","../src/AsyncActions.ts","../src/Campaigns.ts","../src/Distributions.ts","../src/Exports.ts","../src/Events.ts","../src/Balance.ts","../src/Vouchers.ts","../src/Validations.ts","../src/Redemptions.ts","../src/PromotionTiers.ts","../src/Promotions.ts","../src/Customers.ts","../src/Consents.ts","../src/Orders.ts","../src/Products.ts","../src/Rewards.ts","../src/Loyalties.ts","../src/ValidationRules.ts","../src/Segments.ts","../src/ApiLimitsHandler.ts","../src/MetadataSchemas.ts","../src/Categories.ts","../src/ProductCollections.ts","../src/VoucherifyServerSide.ts","../src/ClientSide.ts","../src/VoucherifyClientSide.ts"],"sourcesContent":["export type DiscountVouchersTypes = 'AMOUNT' | 'PERCENT' | 'UNIT' | 'FIXED'\n\nexport enum DiscountVouchersTypesEnum {\n\tAMOUNT = 'AMOUNT',\n\tPERCENT = 'PERCENT',\n\tUNIT = 'UNIT',\n\tFIXED = 'FIXED',\n}\n\nexport type DiscountVouchersEffectTypes =\n\t| 'ADD_MISSING_ITEMS'\n\t| 'ADD_NEW_ITEMS'\n\t| 'ADD_MANY_ITEMS'\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\nexport type DiscountUnitVouchersEffectTypes = 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS'\n\nexport type DiscountAmountVouchersEffectTypes =\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\nexport type DiscountPercentVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\nexport type DiscountFixedVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\ninterface SimpleSkuDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tsku: string\n}\n\ninterface SimpleProductDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tname: string\n}\n\nexport interface DiscountUnit {\n\ttype?: DiscountVouchersTypesEnum.UNIT\n\tunit_off?: number\n\tunit_off_formula?: string\n\teffect?: DiscountUnitVouchersEffectTypes\n\tunit_type?: string\n\tproduct?: SimpleProductDiscountUnit\n\tsku?: SimpleSkuDiscountUnit\n}\n\nexport interface DiscountAmount {\n\ttype?: DiscountVouchersTypesEnum.AMOUNT\n\tamount_off?: number\n\tamount_off_formula?: string\n\teffect?: DiscountAmountVouchersEffectTypes\n}\n\nexport interface DiscountPercent {\n\ttype?: DiscountVouchersTypesEnum.PERCENT\n\tpercent_off?: number\n\tpercent_off_formula?: string\n\tamount_limit?: number\n\teffect?: DiscountPercentVouchersEffectTypes\n}\nexport interface DiscountFixed {\n\ttype?: DiscountVouchersTypesEnum.FIXED\n\tfixed_amount?: number\n\tfixed_amount_formula?: string\n\teffect?: DiscountFixedVouchersEffectTypes\n}\n","import { AxiosError } from 'axios'\n\n/**\n * @internal\n */\nexport class VoucherifyError extends Error {\n\tpublic code: number\n\tpublic key: string\n\tpublic details?: string\n\tpublic request_id?: string\n\tpublic resource_id?: string\n\tpublic resource_type?: string\n\tpublic related_object_ids?: string[]\n\tpublic related_object_type?: string\n\tpublic related_object_total?: number\n\tpublic cause?: AxiosError\n\n\tconstructor(statusCode: number, body?: unknown, axiosError?: AxiosError) {\n\t\tbody = body ?? {}\n\n\t\tconst message = (<any>body)?.message || generateMessage(body, statusCode)\n\n\t\tsuper(message)\n\n\t\tthis.code = (<any>body).code\n\t\tthis.key = (<any>body).key\n\t\tthis.details = (<any>body).details\n\t\tthis.request_id = (<any>body).request_id\n\t\tthis.resource_id = (<any>body).resource_id\n\t\tthis.resource_type = (<any>body).resource_type\n\t\tthis.related_object_ids = (<any>body).related_object_ids\n\t\tthis.related_object_type = (<any>body).related_object_type\n\t\tthis.related_object_total = (<any>body).related_object_total\n\t\tthis.cause = axiosError\n\t}\n}\n\nfunction generateMessage(body: unknown, statusCode: number) {\n\tbody = typeof body === 'string' ? body : JSON.stringify(body, null, 2)\n\n\treturn `Unexpected status code: ${statusCode} - Details: ${body}`\n}\n","import axios, { AxiosError, AxiosInstance } from 'axios'\n\nimport Qs from 'qs'\nimport { VoucherifyError } from './VoucherifyError'\n\nexport interface RequestControllerOptions {\n\tbaseURL: string\n\tbasePath: string\n\theaders: Record<string, any>\n\texposeErrorCause: boolean\n\ttimeoutMs: number\n}\n\n/**\n * @internal\n */\nexport class RequestController {\n\tprivate baseURL: string\n\tprivate basePath: string\n\tprivate headers: Record<string, any>\n\tprivate request: AxiosInstance\n\tprivate lastResponseHeaders: Record<string, string>\n\tprivate isLastResponseHeadersSet: boolean\n\tprivate exposeErrorCause: boolean\n\tprivate timeoutMs: number\n\n\tconstructor({ basePath, baseURL, headers, exposeErrorCause, timeoutMs }: RequestControllerOptions) {\n\t\tthis.basePath = basePath\n\t\tthis.baseURL = baseURL\n\t\tthis.headers = headers\n\t\tthis.exposeErrorCause = exposeErrorCause\n\t\tthis.lastResponseHeaders = {}\n\t\tthis.isLastResponseHeadersSet = false\n\t\tthis.timeoutMs = timeoutMs\n\n\t\tthis.request = axios.create({\n\t\t\tbaseURL: `${this.baseURL}/${this.basePath}/`,\n\t\t\theaders: this.headers,\n\t\t\tresponseType: 'json',\n\t\t})\n\t\tthis.request.interceptors.response.use(void 0, (error: AxiosError<unknown>) => {\n\t\t\t/**\n\t\t\t * Handle any HTTP response error (status code outside of 2xx) as a VoucherifyError\n\t\t\t */\n\t\t\tif (error?.response?.status) {\n\t\t\t\treturn Promise.reject(\n\t\t\t\t\tnew VoucherifyError(\n\t\t\t\t\t\terror.response.status,\n\t\t\t\t\t\terror.response.data,\n\t\t\t\t\t\tthis.exposeErrorCause === true ? error : undefined,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Promise.reject(error)\n\t\t})\n\t}\n\tpublic isLastReponseHeadersSet(): boolean {\n\t\treturn this.isLastResponseHeadersSet\n\t}\n\tpublic getLastResponseHeaders(): Record<string, string> {\n\t\treturn this.lastResponseHeaders\n\t}\n\tprivate setLastResponseHeaders(headers: Record<string, string>) {\n\t\tthis.lastResponseHeaders = headers\n\t\tthis.isLastResponseHeadersSet = true\n\t}\n\tpublic setBaseUrl(baseURL: string) {\n\t\tthis.baseURL = baseURL\n\t\tthis.request.defaults.baseURL = `${baseURL}/${this.basePath}/`\n\t}\n\tpublic async get<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.get<T>(path, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t\ttimeout: this.timeoutMs,\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async post<T>(\n\t\tpath: string,\n\t\tbody: Record<string, any>,\n\t\tparams?: Record<string, any>,\n\t\theaders?: Record<string, any>,\n\t): Promise<T> {\n\t\tconst response = await this.request.post<T>(path, body, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t\theaders,\n\t\t\ttimeout: this.timeoutMs,\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async put<T>(path: string, body: Record<string, any>, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.put<T>(path, body, { params, timeout: this.timeoutMs })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async delete<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.delete<T>(path, { params, timeout: this.timeoutMs })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n}\n","export function encode(value: string = '') {\n\treturn encodeURIComponent(value)\n}\nexport function isNumber(value: any): value is number {\n\t// eslint-disable-next-line no-self-compare\n\treturn typeof value === 'number' && value === value\n}\nexport function isString(value: any): value is string {\n\treturn typeof value === 'string'\n}\nexport function isOptionalString(value: any): value is string | undefined {\n\treturn value == null || isString(value)\n}\nexport function isObject<T extends Record<string, any> = Record<string, any>>(value: any): value is T {\n\treturn typeof value === 'object' && !Array.isArray(value) && value !== null\n}\nexport function isOptionalObject<T extends Record<string, any> = Record<string, any>>(\n\tvalue: any,\n): value is T | null | undefined {\n\treturn value == null || isObject(value)\n}\nexport function isFunction(value: any): value is Function {\n\treturn typeof value === 'function'\n}\nexport function exists<T extends any>(value: T): value is NonNullable<T> {\n\treturn typeof value !== 'undefined' && value !== null\n}\n\nexport function environment(): string {\n\tif (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n\t\treturn 'Browser'\n\t\t// eslint-disable-next-line no-restricted-globals\n\t} else if (typeof self === 'object' && self.constructor && self.constructor.name === 'DedicatedWorkerGlobalScope') {\n\t\treturn 'WebWorker'\n\t} else if (typeof process !== 'undefined' && process.versions != null && process.versions.node != null) {\n\t\treturn `Node.js-${process.version}`\n\t} else if (\n\t\t(typeof window !== 'undefined' && window.name === 'nodejs') ||\n\t\tnavigator.userAgent.includes('Node.js') ||\n\t\tnavigator.userAgent.includes('jsdom')\n\t) {\n\t\treturn 'JsDom'\n\t}\n\n\treturn 'Unknown'\n}\n\nexport function assert(condition: any, message?: string): asserts condition {\n\tif (condition) return\n\tthrow new Error(message)\n}\n\n/**\n * Return an object containing all properties of `obj` excluding the ones in `keys` array\n * e.g:\n * ```javascript\n * omit({ a: 1, b: 2, c: 3, d: 4 }, ['b', 'd']) // output: { a: 1, c: 3 }\n * ```\n */\nexport function omit<T extends {}, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {\n\treturn Object.fromEntries(\n\t\tObject.entries(obj).filter(([propertyKey]) => {\n\t\t\treturn !keys.includes(propertyKey as K)\n\t\t}),\n\t) as Omit<T, K>\n}\n","import * as T from './types/AsyncActions'\n\nimport { encode } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nclass AsyncActions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-async-actions-1\n\t */\n\tpublic get(asyncActionId: string) {\n\t\treturn this.client.get<T.AsyncActionsGetResponse>(`/async-actions/${encode(asyncActionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-async-actions\n\t */\n\tpublic list(params: T.AsyncActionsListParams) {\n\t\treturn this.client.get<T.AsyncActionsListResponse>('/async-actions', params)\n\t}\n}\n\nexport { AsyncActions }\n","import * as T from './types/Campaigns'\nimport * as AAT from './types/AsyncActions'\n\nimport type { RequestController } from './RequestController'\nimport { assert, encode, environment } from './helpers'\nimport FormData from 'form-data'\n\nclass CampaignsQualifications {\n\tconstructor(private client: RequestController) {}\n\n\tpublic examine(body: T.CampaignsQualificationsBody = {}, params?: T.CampaignsQualificationsParams) {\n\t\treturn this.client.post<T.CampaignsQualificationsResponse>('/campaigns/qualification', body, params)\n\t}\n}\n\nexport class Campaigns {\n\tpublic qualifications: CampaignsQualifications\n\n\tconstructor(private client: RequestController) {\n\t\tthis.qualifications = new CampaignsQualifications(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-campaign\n\t */\n\tpublic create(campaign: T.CampaignsCreateCampaign) {\n\t\treturn this.client.post<T.CampaignsCreateCampaignResponse>('/campaigns', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-campaign\n\t */\n\tpublic update(nameOrId: string, campaign: T.CampaignsUpdateCampaign) {\n\t\treturn this.client.put<T.CampaignsUpdateCampaignResponse>(`/campaigns/${encode(nameOrId)}`, campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-campaign\n\t */\n\tpublic get(name: string) {\n\t\treturn this.client.get<T.CampaignsGetCampaignResponse>(`/campaigns/${encode(name)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-campaign\n\t */\n\tpublic delete(name: string, params: T.CampaignsDeleteParams = {}) {\n\t\treturn this.client.delete(`/campaigns/${encode(name)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-to-campaign\n\t */\n\n\tpublic addVoucher(name: string, body: T.CampaignsAddVoucherBody = {}, params: T.CampaignsAddVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddVoucherResponse | {}>(`/campaigns/${encode(name)}/vouchers`, body, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-with-certain-code-to-campaign\n\t */\n\n\tpublic addCertainVoucher(name: string, code: string, body: T.CampaignsAddCertainVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddCertainVoucherResponse>(\n\t\t\t`/campaigns/${encode(name)}/vouchers/${encode(code)}`,\n\t\t\tbody,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers\n\t */\n\tpublic importVouchers(campaignName: string, vouchers: T.CampaignsImportVouchers[]) {\n\t\treturn this.client.post<T.CampaignsVouchersImportResponse>(`/campaigns/${encode(campaignName)}/import`, vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-campaigns\n\t */\n\tpublic list(params: T.CampaignsListParams = {}) {\n\t\treturn this.client.get<T.CampaignsListResponse>('/campaigns', params)\n\t}\n\t/**\n\t * @see https://api.voucherify.io/v1/campaigns/{campaignId}/importCSV\n\t */\n\tpublic async importVouchersCSV(campaignId: string, filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.campaigns.importVouchersCSV(campaignId, filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/campaigns/${campaignId}/importCSV`, form)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-campaign\n\t */\n\tpublic enable(campaignId: string) {\n\t\treturn this.client.post<{}>(`/campaigns/${encode(campaignId)}/enable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-campaign\n\t */\n\tpublic disable(campaignId: string) {\n\t\treturn this.client.post<{}>(`/campaigns/${encode(campaignId)}/disable`, {})\n\t}\n}\n","import * as T from './types/Distributions'\n\nimport type { Exports } from './Exports'\nimport type { RequestController } from './RequestController'\n\nclass DistributionsPublications {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-publications\n\t */\n\tpublic list(params: T.DistributionsPublicationsListParams = {}) {\n\t\treturn this.client.get<T.DistributionsPublicationsListResponse>('/publications', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic create(params: T.DistributionsPublicationsCreateParams) {\n\t\treturn this.client.post<T.DistributionsPublicationsCreateResponse>('/publications', params)\n\t}\n}\n\nexport class Distributions {\n\tpublic publications: DistributionsPublications\n\n\tconstructor(private client: RequestController, public exports: Exports) {\n\t\tthis.publications = new DistributionsPublications(this.client)\n\t}\n}\n","import * as T from './types/Exports'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Exports {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-export\n\t */\n\tpublic create(exportResource: T.ExportResource) {\n\t\treturn this.client.post<T.ExportsCreateResponse>('/exports', exportResource)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-exports\n\t */\n\tpublic list(query: T.ExportsListRequestQuery = {}) {\n\t\treturn this.client.get<T.ExportsListResponseBody>('/exports', query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-export\n\t */\n\tpublic get(exportResourceId: string) {\n\t\treturn this.client.get<T.ExportsGetResponse>(`/exports/${encode(exportResourceId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-export\n\t */\n\tpublic delete(exportResourceId: string) {\n\t\treturn this.client.delete(`/exports/${encode(exportResourceId)}`)\n\t}\n}\n","import * as T from './types/Events'\n\nimport type { RequestController } from './RequestController'\n\nexport class Events {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\tpublic create(eventName: string, params: T.EventsParams) {\n\t\tparams = { ...params, event: eventName }\n\t\treturn this.client.post<T.EventsResponse>('/events', params)\n\t}\n}\n","import * as T from './types/Balance'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class Balance {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * Add Gift Voucher Balance\n\t * This method gives a possibility to add balance to an existing gift voucher.\n\t * @see https://docs.voucherify.io/reference/add-gift-voucher-balance\n\t */\n\tpublic create(code: string, params: T.BalanceCreateParams) {\n\t\treturn this.client.post<T.BalanceCreateResponse>(`/vouchers/${encode(code)}/balance`, params)\n\t}\n}\n","import * as T from './types/Vouchers'\nimport * as AAT from './types/AsyncActions'\n\nimport { assert, encode, environment } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Balance } from './Balance'\nimport FormData from 'form-data'\n\nclass VouchersQualification {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * The method can be used for sending a request to display all vouchers qualified to the given customer and context (e.g., order, loyalty reward). A checking logic won't run among coupons from bulk unique codes campaigns. For campaigns with multiple unique codes, you should run a dedicated function for searching for qualified campaigns.\n\t * As a sample use case, you can imagine a requirement of displaying below cart the coupons eligible to a customer. The customer can take and apply the proposed voucher.\n\t *\n\t * @see https://docs.voucherify.io/reference/push-qualification-request\n\t */\n\tpublic examine(body: T.VouchersQualificationExamineBody, params: T.VouchersQualificationExamineParams = {}) {\n\t\treturn this.client.post<T.VouchersQualificationExamineResponse>('/vouchers/qualification', body, params)\n\t}\n}\nexport class Vouchers {\n\tpublic qualifications: VouchersQualification\n\n\tconstructor(private client: RequestController, public balance: Balance) {\n\t\tthis.qualifications = new VouchersQualification(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-voucher\n\t */\n\tpublic create(voucher: T.VouchersCreate) {\n\t\treturn this.client.post<T.VouchersCreateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-get\n\t */\n\tpublic get(code: string) {\n\t\treturn this.client.get<T.VouchersGetResponse>(`/vouchers/${encode(code)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-voucher\n\t */\n\tpublic update(voucher: T.VouchersUpdate) {\n\t\treturn this.client.put<T.VouchersUpdateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-voucher\n\t */\n\tpublic delete(code: string, params: T.VouchersDeleteParams = {}) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic list(params: T.VouchersListParams = {}) {\n\t\treturn this.client.get<T.VouchersListResponse>('/vouchers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-voucher\n\t */\n\tpublic enable(code: string) {\n\t\treturn this.client.post<T.VouchersEnableResponse>(`/vouchers/${encode(code)}/enable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-voucher\n\t */\n\tpublic disable(code: string) {\n\t\treturn this.client.post<T.VouchersDisableResponse>(`/vouchers/${encode(code)}/disable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers-1\n\t */\n\tpublic import(vouchers: T.VouchersImport[]) {\n\t\treturn this.client.post<T.VouchersImportResponse>('/vouchers/import', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aaupdate-vouchers-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(params: T.VouchersBulkUpdateMetadata) {\n\t\treturn this.client.post<T.VouchersBulkUpdateMetadataResponse>('/vouchers/metadata/async', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aa-update-vouchers-in-bulk\n\t */\n\tpublic bulkUpdate(vouchers: T.VouchersBulkUpdate) {\n\t\treturn this.client.post<T.VouchersBulkUpdateResponse>('/vouchers/bulk/async', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/release-validation-session\n\t */\n\tpublic releaseValidationSession(code: string, sessionKey: string) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}/sessions/${encode(sessionKey)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers-using-csv\n\t */\n\tpublic async importCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.vouchers.importCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>('/vouchers/importCSV', form)\n\t}\n}\n","import * as T from './types/Validations'\n\nimport { encode, isObject } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Promotions } from './Promotions'\n\nexport class Validations {\n\tconstructor(private client: RequestController, private promotions: Promotions) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-voucher\n\t */\n\tpublic validateVoucher(code: string, params: T.ValidationsValidateVoucherParams = {}) {\n\t\treturn this.client.post<T.ValidationsValidateVoucherResponse>(`/vouchers/${encode(code)}/validate`, params)\n\t}\n\n\tpublic validate(code: string | T.ValidationsValidateCode, context: T.ValidationsValidateContext = {}) {\n\t\tif (isObject(code)) {\n\t\t\treturn this.promotions.validate(code)\n\t\t}\n\n\t\treturn this.validateVoucher(code, context)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stacked-discounts-1\n\t */\n\tpublic validateStackable(params: T.ValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ValidationValidateStackableResponse>(`/validations`, params)\n\t}\n}\n","import * as T from './types/Redemptions'\n\nimport { encode, isObject, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Redemptions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher\n\t */\n\tpublic redeem(code: string, body: T.RedemptionsRedeemBody = {}) {\n\t\treturn this.client.post<T.RedemptionsRedeemResponse>(`/vouchers/${encode(code)}/redemption`, body)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stacked-discounts\n\t */\n\tpublic redeemStackable(params: T.RedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.RedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-redemption\n\t */\n\tpublic get(redemptionId: string) {\n\t\treturn this.client.get<T.Redemption>(`/redemptions/${encode(redemptionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-redemptions\n\t */\n\tpublic list(params: T.RedemptionsListParams = {}) {\n\t\treturn this.client.get<T.RedemptionsListResponse>('/redemptions', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-redemptions\n\t */\n\tpublic getForVoucher(code: string) {\n\t\treturn this.client.get<T.RedemptionsGetForVoucherResponse>(`/vouchers/${encode(code)}/redemption`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-redemption\n\t */\n\tpublic rollback(redemptionId: string, params?: T.RedemptionsRollbackParams) {\n\t\tlet queryParams: T.RedemptionsRollbackQueryParams = {}\n\t\tlet payload: T.RedemptionsRollbackPayload = {}\n\n\t\tif (isString(params)) {\n\t\t\tqueryParams.reason = params\n\t\t} else if (isObject(params)) {\n\t\t\tconst { reason, tracking_id: trackingId, customer } = params\n\n\t\t\tqueryParams = {\n\t\t\t\treason: reason ? reason : undefined,\n\t\t\t\ttracking_id: trackingId ? trackingId : undefined,\n\t\t\t}\n\t\t\tpayload = { customer }\n\t\t}\n\n\t\treturn this.client.post<T.RedemptionsRollbackResponse>(\n\t\t\t`/redemptions/${encode(redemptionId)}/rollback`,\n\t\t\tpayload,\n\t\t\tqueryParams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-stackable-redemptions\n\t * Types of params and queryParams WILL be changed in future - please do not depend on it!\n\t */\n\tpublic rollbackStackable(parentRedemptionId: string, params?: any, queryParams?: any) {\n\t\treturn this.client.post<T.RedemptionsRollbackStackableResponse>(\n\t\t\t`/redemptions/${encode(parentRedemptionId)}/rollbacks`,\n\t\t\tparams,\n\t\t\tqueryParams,\n\t\t)\n\t}\n}\n","import * as T from './types/PromotionTiers'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class PromotionTiers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-promotion-tiers\n\t */\n\tpublic listAll(params: T.PromotionTiersListAllParams = {}) {\n\t\treturn this.client.get<T.PromotionTiersListAllResponse>('/promotions/tiers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-promotions\n\t */\n\tpublic list(promotionId: string) {\n\t\treturn this.client.get<T.PromotionTiersListResponse>(`/promotions/${encode(promotionId)}/tiers`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-promotion-tier\n\t */\n\tpublic get(tierId: string) {\n\t\treturn this.client.get<T.PromotionTierGetResponse>(`/promotions/tiers/${encode(tierId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-promotion-tier-to-campaign\n\t */\n\tpublic create(promotionId: string, params: T.PromotionTiersCreateParams) {\n\t\treturn this.client.post<T.PromotionTiersCreateResponse>(`/promotions/${encode(promotionId)}/tiers`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-promotion\n\t */\n\tpublic redeem(promotionsTierId: string, params: T.PromotionTiersRedeemParams) {\n\t\treturn this.client.post<T.PromotionTiersRedeemResponse>(\n\t\t\t`/promotions/tiers/${encode(promotionsTierId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-promotion\n\t */\n\tpublic update(params: T.PromotionTiersUpdateParams) {\n\t\treturn this.client.put<T.PromotionTiersUpdateResponse>(`/promotions/tiers/${encode(params.id)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-promotion\n\t */\n\tpublic delete(promotionsTierId: string) {\n\t\treturn this.client.delete(`/promotions/tiers/${encode(promotionsTierId)}`)\n\t}\n}\n","import * as T from './types/Promotions'\n\nimport type { RequestController } from './RequestController'\nimport type { PromotionTiers } from './PromotionTiers'\n\nexport class Promotions {\n\tconstructor(private client: RequestController, public tiers: PromotionTiers) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-promotion-campaign\n\t */\n\tpublic create(promotionCampaign: T.PromotionsCreate) {\n\t\treturn this.client.post<T.PromotionsCreateResponse>('/campaigns', promotionCampaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-promotions-1\n\t */\n\tpublic validate(body: T.PromotionsValidateParams, params?: T.PromotionsValidateQueryParams) {\n\t\treturn this.client.post<T.PromotionsValidateResponse>('/promotions/validation', body, params)\n\t}\n}\n","import * as T from './types/Customers'\nimport * as AAT from './types/AsyncActions'\n\nimport { assert, encode, environment, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\nimport FormData from 'form-data'\n\nclass Customers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic create(customer: T.CustomersCreateBody) {\n\t\treturn this.client.post<T.CustomersCreateResponse>('/customers', customer)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/read-customer\n\t */\n\tpublic get(customerId: string) {\n\t\treturn this.client.get<T.CustomersGetResponse>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-customers\n\t */\n\tpublic list(params: T.CustomersListParams) {\n\t\treturn this.client.get<T.CustomersListResponse>('/customers', params)\n\t}\n\t/**\n\t * Standard list customers API has limitation of available pages to be shown equal to 100. To cover cases when you would like to fetch more, you must use scroll capabilities.\n\t *\n\t * ```javascript\n\t * async function () {\n\t *\t\tfor await (const customer of voucherify.customers.scroll(params)) {\n\t *\t\t\tconsole.log('Customer', customer)\n\t *\t\t}\n\t * }\n\t * ```\n\t */\n\tpublic async *scroll(\n\t\tparams: T.CustomersScrollParams,\n\t): AsyncGenerator<T.CustomersScrollYield, void, T.CustomersScrollYield> {\n\t\tlet startingAfter =\n\t\t\tparams.starting_after ?? (params.order === 'created_at' ? '1970-01-01T00:00:00Z' : '2200-01-01T00:00:00Z')\n\t\tlet response = await this.client.get<T.CustomersScrollResponse>(\n\t\t\t'/customers',\n\t\t\tObject.assign({}, params, { starting_after: startingAfter }),\n\t\t)\n\n\t\twhile (true) {\n\t\t\tif (response.customers.length === 0) break\n\n\t\t\tfor (const customer of response.customers) {\n\t\t\t\tif (params.order === 'created_at') {\n\t\t\t\t\tstartingAfter = startingAfter > customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t} else {\n\t\t\t\t\tstartingAfter = startingAfter < customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t}\n\t\t\t\tyield customer\n\t\t\t}\n\n\t\t\tif (!response.has_more) break\n\n\t\t\tresponse = await this.client.get('/customers', Object.assign({}, params, { starting_after: startingAfter }))\n\t\t}\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customer\n\t */\n\tpublic update(customer: T.CustomersUpdateParams) {\n\t\tconst id = 'id' in customer ? customer.id : customer.source_id\n\n\t\tconst customerWithoutId = omit(customer, ['id'])\n\n\t\treturn this.client.put<T.CustomersUpdateResponse>(`/customers/${encode(id)}`, customerWithoutId)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-in-bulk\n\t */\n\tpublic updateInBulk(customers: T.CustomersUpdateInBulkRequestBody) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/customers/bulk/async`, customers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-metadata-in-bulk\n\t */\n\tpublic updateMetadataInBulk(sourceIdsAndMetadata: T.CustomersUpdateMetadataInBulkRequestBody) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/customers/metadata/async`, sourceIdsAndMetadata)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-customer\n\t */\n\tpublic delete(customerId: string) {\n\t\treturn this.client.delete<undefined>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-customer-permanently\n\t */\n\tpublic deletePermanently(customerId: string) {\n\t\treturn this.client.post<T.CustomersDeletePermanentlyResponseBody>(\n\t\t\t`/customers/${encode(customerId)}/permanent-deletion`,\n\t\t\t{},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.CustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-customer-activities\n\t */\n\tpublic listActivities(customerId: string, params?: T.CustomerActivitiesListQueryParams) {\n\t\treturn this.client.get<T.CustomerActivitiesListResponse>(`/customers/${encode(customerId)}/activities`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-customers-using-csv\n\t */\n\tpublic async importCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.customers.importCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/customers/importCSV`, form)\n\t}\n}\n\nexport { Customers }\n","import * as T from './types/Consents'\n\nimport type { RequestController } from './RequestController'\n\nexport class Consents {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consents\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.ConsentsListResponse>('/consents')\n\t}\n}\n","import * as T from './types/Orders'\nimport * as AAT from './types/AsyncActions'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Orders {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-order\n\t */\n\tpublic create(order: T.OrdersCreate) {\n\t\treturn this.client.post<T.OrdersCreateResponse>('/orders', order)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-order\n\t */\n\tpublic get(orderId: string) {\n\t\treturn this.client.get<T.OrdersGetResponse>(`/orders/${encode(orderId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-order\n\t */\n\tpublic update(order: T.OrdersUpdate) {\n\t\treturn this.client.put<T.OrdersUpdateResponse>(\n\t\t\t`/orders/${encode(order.id || order.source_id)}`,\n\t\t\tomit(order, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-orders\n\t */\n\tpublic list(params: T.OrdersListParams = {}) {\n\t\treturn this.client.get<T.OrdersListResponse>('/orders', params)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-orders\n\t */\n\tpublic import(orders: T.OrdersCreate[]) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>('/orders/import', orders)\n\t}\n}\n","import * as T from './types/Products'\nimport * as AAT from './types/AsyncActions'\n\nimport { assert, encode, environment, omit } from './helpers'\nimport type { RequestController } from './RequestController'\nimport FormData from 'form-data'\n\nexport class Products {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-product\n\t */\n\tpublic create(product: T.ProductsCreate) {\n\t\treturn this.client.post<T.ProductsCreateResponse>('/products', product)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-product\n\t */\n\tpublic get(productId: string) {\n\t\treturn this.client.get<T.ProductsGetResponse>(`/products/${encode(productId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-product\n\t */\n\tpublic update(product: T.ProductsUpdate) {\n\t\treturn this.client.put<T.ProductsUpdateResponse>(\n\t\t\t`/products/${encode(product.id || product.source_id)}`,\n\t\t\tomit(product, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/async-update-products-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(products: T.ProductsBulkUpdateMetadata) {\n\t\treturn this.client.post<T.ProductsBulkUpdateMetadataResponse>('/products/metadata/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/post-products-in-bulk\n\t */\n\tpublic bulkUpdate(products: T.ProductsBulkUpdate) {\n\t\treturn this.client.post<T.ProductsBulkUpdateResponse>('/products/bulk/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-product\n\t */\n\tpublic delete(productId: string, params?: T.ProductsDeleteParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-products\n\t */\n\tpublic list(params?: T.ProductsListParams) {\n\t\treturn this.client.get<T.ProductsListResponse>('/products', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-sku\n\t */\n\tpublic createSku(productId: string, sku: T.ProductsCreateSku) {\n\t\treturn this.client.post<T.ProductsCreateSkuResponse>(`/products/${encode(productId)}/skus`, sku)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-sku-v20210726\n\t */\n\tpublic getSku(skuId: string) {\n\t\treturn this.client.get<T.ProductsGetSkuResponse>(`/skus/${encode(skuId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-sku\n\t */\n\tpublic updateSku(productId: string, sku: T.ProductsUpdateSku) {\n\t\treturn this.client.put<T.ProductsUpdateSkuResponse>(\n\t\t\t`/products/${encode(productId)}/skus/${encode(sku.id || sku.source_id)}`,\n\t\t\tomit(sku, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-sku\n\t */\n\tpublic deleteSku(productId: string, skuId: string, params?: T.ProductsDeleteSkuParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}/skus/${encode(skuId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-skus\n\t */\n\tpublic listSkus(productId: string) {\n\t\treturn this.client.get<T.ProductsListSkus>(`/products/${encode(productId)}/skus`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-skus-using-csv\n\t */\n\tpublic async importSkusCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.products.importSkusCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/skus/importCSV`, form)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-products-using-csv\n\t */\n\tpublic async importCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.products.importCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/products/importCSV`, form)\n\t}\n}\n","import * as T from './types/Rewards'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Rewards {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-rewards\n\t */\n\tpublic list(params: T.RewardsListParams = {}) {\n\t\treturn this.client.get<T.RewardsListResponse>('/rewards', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward\n\t */\n\tpublic create(reward: T.RewardsCreate) {\n\t\treturn this.client.post<T.RewardsCreateResponse>('/rewards', reward)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward\n\t */\n\tpublic get(rewardId: string) {\n\t\treturn this.client.get<T.RewardsGetResponse>(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward\n\t */\n\tpublic update(reward: T.RewardsUpdate) {\n\t\treturn this.client.put<T.RewardsUpdateResponse>(`/rewards/${encode(reward.id)}`, omit(reward, ['id']))\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward\n\t */\n\tpublic delete(rewardId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments\n\t */\n\tpublic listAssignments(rewardId: string, params: T.RewardsListAssignmentsParams = {}) {\n\t\treturn this.client.get<T.RewardsListAssignmentsResponse>(`/rewards/${encode(rewardId)}/assignments`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment\n\t */\n\tpublic createAssignment(rewardId: string, assignment: T.RewardsCreateAssignment) {\n\t\treturn this.client.post<T.RewardsCreateAssignmentResponse>(`/rewards/${encode(rewardId)}/assignments`, assignment)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment\n\t */\n\tpublic updateAssignment(rewardId: string, assignment: T.RewardsUpdateAssignment) {\n\t\treturn this.client.put<T.RewardsUpdateAssignmentResponse>(\n\t\t\t`/rewards/${encode(rewardId)}/assignments/${encode(assignment.id)}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\tpublic deleteAssignment(rewardId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}/assignments/${encode(assignmentId)}`)\n\t}\n}\n","import * as T from './types/Loyalties'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Loyalties {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-programs\n\t */\n\tpublic list(params: T.LoyaltiesListParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListResponse>('/loyalties', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-loyalty-program\n\t */\n\tpublic create(campaign: T.LoyaltiesCreateCampaign) {\n\t\treturn this.client.post<T.LoyaltiesCreateCampaignResponse>('/loyalties', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-loyalty-program\n\t */\n\tpublic get(campaignId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetCampaignResponse>(`/loyalties/${encode(campaignId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-loyalty-program\n\t */\n\tpublic update(campaign: T.LoyaltiesUpdateCampaign) {\n\t\treturn this.client.put<T.LoyaltiesUpdateCampaignResponse>(\n\t\t\t`/loyalties/${encode(campaign.id)}`,\n\t\t\tomit(campaign, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-loyalty-program\n\t */\n\tpublic delete(campaignId: string, params?: T.LoyaltiesDeleteCampaignParams) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments-1\n\t */\n\tpublic listRewardAssignments(campaignId: string, params: T.LoyaltiesListRewardAssignmentsParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListRewardAssignmentsResponse>(`/loyalties/${encode(campaignId)}/rewards`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment-1\n\t */\n\tpublic createRewardAssignments(campaignId: string, assignment: T.LoyaltiesCreateRewardAssignments[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateRewardAssignmentResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment-1\n\t */\n\tpublic updateRewardAssignment(campaignId: string, assignment: T.LoyaltiesUpdateRewardAssignment) {\n\t\treturn this.client.put<T.LoyaltiesUpdateRewardAssignmentResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards/${assignment.id}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward-assignment-1\n\t */\n\tpublic deleteRewardAssignment(campaignId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/rewards/${assignmentId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-earning-rules\n\t */\n\tpublic listEarningRules(campaignId: string, params: T.LoyaltiesListEarningRulesParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListEarningRulesResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-earning-rule\n\t */\n\tpublic createEarningRule(campaignId: string, earningRules: T.LoyaltiesCreateEarningRule[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateEarningRuleResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tearningRules,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-earning-rule\n\t */\n\tpublic updateEarningRule(campaignId: string, earningRule: T.LoyaltiesUpdateEarningRule) {\n\t\treturn this.client.put<T.LoyaltiesUpdateEarningRuleResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRule.id}`,\n\t\t\tomit(earningRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-earning-rule\n\t */\n\tpublic deleteEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-earning-rule\n\t */\n\tpublic getEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetEarningRuleResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${encode(earningRuleId)}`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-earning-rule\n\t */\n\tpublic enableEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.post<T.LoyaltiesEnableEarningRulesResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}/enable`,\n\t\t\t{},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-earning-rule\n\t */\n\tpublic disableEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.post<T.LoyaltiesDisableEarningRulesResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}/disable`,\n\t\t\t{},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-members\n\t */\n\tpublic listMembers(campaignId: string, params?: T.LoyaltiesListMembersParams) {\n\t\treturn this.client.get<T.LoyaltiesListMembersResponse>(`/loyalties/${encode(campaignId)}/members`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-member\n\t */\n\tpublic createMember(campaignId: string, member: T.LoyaltiesCreateMember) {\n\t\treturn this.client.post<T.LoyaltiesCreateMemberResponse>(`/loyalties/${encode(campaignId)}/members`, member)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member\n\t * @see https://docs.voucherify.io/reference/get-member-1\n\t */\n\tpublic getMember(campaignId: string | null, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberResponse>(\n\t\t\tcampaignId ? `/loyalties/${encode(campaignId)}/members/${memberId}` : `/loyalties/members/${memberId}`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member-activities\n\t * @see https://docs.voucherify.io/reference/get-member-activities-1\n\t */\n\tpublic getMemberActivities(campaignId: string | null, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberActivitiesResponse>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${memberId}/activities`\n\t\t\t\t: `/loyalties/members/${memberId}/activities`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-member-rewards\n\t */\n\tpublic listMemberRewards(memberId: string, params?: T.LoyaltiesListMemberRewardsRequestQuery) {\n\t\treturn this.client.get<T.LoyaltiesListMemberRewardsResponseBody>(\n\t\t\t`/loyalties/members/${encode(memberId)}/rewards`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-remove-loyalty-card-balance\n\t * @see https://docs.voucherify.io/reference/add-remove-loyalty-card-balance-1\n\t */\n\tpublic addOrRemoveCardBalance(\n\t\tmemberId: string,\n\t\tbalance: T.LoyaltiesAddOrRemoveCardBalanceRequestBody,\n\t\tcampaignId?: string,\n\t) {\n\t\treturn this.client.post<T.LoyaltiesAddOrRemoveCardBalanceResponseBody>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${memberId}/balance`\n\t\t\t\t: `/loyalties/members/${memberId}/balance`,\n\t\t\tbalance,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-remove-loyalty-card-balance-1\n\t */\n\tpublic addPoints(campaignId: string, memberId: string, balance: T.LoyaltiesAddPoints) {\n\t\treturn this.client.post<T.LoyaltiesAddPointsResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/balance`,\n\t\t\tbalance,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/transfer-points\n\t */\n\tpublic transferPoints(\n\t\tcampaignId: string,\n\t\tmemberId: string,\n\t\tloyaltiesTransferPoints: T.LoyaltiesTransferPointsRequestBody,\n\t) {\n\t\treturn this.client.post<T.LoyaltiesTransferPointsResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transfers`,\n\t\t\tloyaltiesTransferPoints,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-points-expiration\n\t */\n\tpublic getPointsExpiration(\n\t\tcampaignId: string,\n\t\tmemberId: string,\n\t\tparams?: T.LoyaltiesGetPointsExpirationRequestQuery,\n\t) {\n\t\treturn this.client.get<T.LoyaltiesGetPointsExpirationResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/points-expiration`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-loyalty-card\n\t */\n\tpublic redeemReward(campaignId: string, memberId: string, params: T.LoyaltiesRedeemRewardParams) {\n\t\treturn this.client.post<T.LoyaltiesRedeemRewardResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-card-transactions\n\t * @see https://docs.voucherify.io/reference/list-loyalty-card-transactions-1\n\t */\n\tpublic listCardTransactions(\n\t\tmemberId: string,\n\t\tcampaignId: string | null,\n\t\tparams?: T.LoyaltiesListCardTransactionsRequestQuery,\n\t) {\n\t\treturn this.client.get<T.LoyaltiesListCardTransactionsResponseBody>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transactions`\n\t\t\t\t: `/loyalties/members/${encode(memberId)}/transactions`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/export-loyalty-card-transactions\n\t * @see https://docs.voucherify.io/reference/export-loyalty-card-transactions-1\n\t */\n\tpublic exportCardTransactions(\n\t\tmemberId: string,\n\t\tcampaignId: string | null,\n\t\tparams: T.LoyaltiesExportCardTransactionsRequestBody = {},\n\t) {\n\t\treturn this.client.post<T.LoyaltiesExportCardTransactionsResponseBody>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transactions/export`\n\t\t\t\t: `/loyalties/members/${encode(memberId)}/transactions/export`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward-assignment-1\n\t */\n\tpublic getRewardAssignment(campaignId: string, assignmentId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetRewardAssignmentResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/reward-assignments/${encode(assignmentId)}`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward-details\n\t */\n\tpublic getRewardDetails(campaignId: string, assignmentId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetRewardDetailsResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/reward-assignments/${encode(assignmentId)}/reward`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-tiers\n\t */\n\tpublic listTiers(campaignId: string, params?: T.LoyaltiesListTiersRequestQuery) {\n\t\treturn this.client.get<T.LoyaltiesListTiersResponseBody>(`/loyalties/${encode(campaignId)}/tiers`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-loyalty-tier\n\t */\n\tpublic getTier(campaignId: string, tierId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetTierResponseBody>(`/loyalties/${encode(campaignId)}/tiers/${encode(tierId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-loyalty-tiers\n\t */\n\tpublic createTiers(campaignId: string, tiers: T.LoyaltiesCreateTiersRequestBody) {\n\t\treturn this.client.post<T.LoyaltiesCreateTiersResponseBody>(`/loyalties/${encode(campaignId)}/tiers`, tiers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-tier-earning-rules\n\t */\n\tpublic listLoyaltyTierEarningRules(\n\t\tcampaignId: string,\n\t\ttierId: string,\n\t\tparams?: T.LoyaltiesListLoyaltyTierEarningRulesRequestQuery,\n\t) {\n\t\treturn this.client.get<T.LoyaltiesListLoyaltyTierEarningRulesResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/tiers/${encode(tierId)}/earning-rules`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member-loyalty-tier\n\t */\n\tpublic listMemberLoyaltyTiers(memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesListMemberLoyaltyTiersResponseBody>(\n\t\t\t`/loyalties/members/${encode(memberId)}/tiers`,\n\t\t)\n\t}\n}\n","import * as T from './types/ValidationRules'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ValidationRules {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules\n\t */\n\tpublic create(validationRule: T.ValidationRulesCreate) {\n\t\treturn this.client.post<T.ValidationRulesCreateResponse>('/validation-rules', validationRule)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-validation-rules\n\t */\n\tpublic get(validationRuleId: string) {\n\t\treturn this.client.get<T.ValidationRulesGetResponse>(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-validation-rules\n\t */\n\tpublic update(validationRule: T.ValidationRulesUpdate) {\n\t\treturn this.client.put<T.ValidationRulesUpdateResponse>(\n\t\t\t`/validation-rules/${encode(validationRule.id)}`,\n\t\t\tomit(validationRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules\n\t */\n\tpublic delete(validationRuleId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules-assignment\n\t */\n\tpublic createAssignment(validationRuleId: string, assignment: T.ValidationRulesCreateAssignment) {\n\t\treturn this.client.post<T.ValidationRulesCreateAssignmentResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules-assignment\n\t */\n\tpublic deleteAssignment(validationRuleId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}/assignments/${encode(assignmentId)}`)\n\t}\n\n\tpublic validate(validationRuleId: string, params: any = {}) {\n\t\treturn this.client.post<T.ValidationRulesValidateResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/validation`,\n\t\t\tparams,\n\t\t)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rules\n\t */\n\tpublic list(params: T.ValidationRulesListParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListResponse>('/validation-rules', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rule-assignments\n\t */\n\tpublic listAssignments(validationRuleId: string, params: T.ValidationRulesListAssignmentsParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListAssignmentsResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import * as T from './types/Segments'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Segments {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-segment\n\t */\n\tpublic create(segment: T.SegmentsCreate) {\n\t\treturn this.client.post<T.SegmentsCreateResponse>('/segments', segment)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-segment\n\t */\n\tpublic get(segmentId: string) {\n\t\treturn this.client.get<T.SegmentsGetResponse>(`/segments/${encode(segmentId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-segment\n\t */\n\tpublic delete(segmentId: string) {\n\t\treturn this.client.delete(`/segments/${encode(segmentId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-segments\n\t */\n\tpublic list(customerId: string) {\n\t\treturn this.client.get<T.SegmentsListResponse>(`/customers/${encode(customerId)}/segments`)\n\t}\n}\n","import { RequestController } from './RequestController'\n\nexport class ApiLimitsHandler {\n\tconstructor(private readonly requestController: RequestController) {}\n\n\tprivate getLastResponseHeadersFromController(): Record<string, string> {\n\t\treturn this.requestController.getLastResponseHeaders()\n\t}\n\n\tpublic areLimitsAvailable(): boolean {\n\t\treturn this.requestController.isLastReponseHeadersSet()\n\t}\n\n\tpublic getRateLimit(): number {\n\t\tconst rateLimit = this.getLastResponseHeadersFromController()['x-rate-limit-limit'] ?? 0\n\t\treturn parseInt(rateLimit, 10)\n\t}\n\n\tpublic getRateLimitRemaining(): number {\n\t\tconst rateLimitRemaining = this.getLastResponseHeadersFromController()['x-rate-limit-remaining'] ?? 0\n\t\treturn parseInt(rateLimitRemaining, 10)\n\t}\n\n\tpublic getRetryAfter(): number {\n\t\tconst retryAfter = this.getLastResponseHeadersFromController()['retry-after'] ?? 0\n\t\treturn parseInt(retryAfter, 10)\n\t}\n}\n","import * as T from './types/MetadataSchemas'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class MetadataSchemas {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-metadata-schemas\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.MetadataSchemasListResponse>('/metadata-schemas')\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-metadata-schema\n\t */\n\tpublic get(schemaName: string) {\n\t\treturn this.client.get<T.MetadataSchemasGetResponse>(`/metadata-schemas/${encode(schemaName)}`)\n\t}\n}\n","import * as T from './types/Categories'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class Categories {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-categories\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.ListCategories>('/categories')\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-category\n\t */\n\tpublic create(createCategory: T.CreateCategory) {\n\t\treturn this.client.post<T.ResponseCreateCategory>('/categories', createCategory)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-category\n\t */\n\tpublic get(categoryId: string) {\n\t\treturn this.client.get<T.CategoryObject>(`/categories/${encode(categoryId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-category\n\t */\n\tpublic delete(categoryId: string) {\n\t\treturn this.client.delete<{}>(`/categories/${encode(categoryId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-category\n\t */\n\tpublic update(categoryId: string, updateCategory: T.UpdateCategoryRequest) {\n\t\treturn this.client.put<T.ResponseUpdateCategory>(`/categories/${encode(categoryId)}`, updateCategory)\n\t}\n}\n","import * as T from './types/ProductCollections'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class ProductCollections {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-product-collection\n\t */\n\tpublic create(productCollection: T.ProductCollectionsCreateRequestBody) {\n\t\treturn this.client.post<T.ProductCollectionsCreateResponseBody>(`/product-collections`, productCollection)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-product-collections\n\t */\n\tpublic list(params?: T.ProductCollectionsListRequestQuery) {\n\t\treturn this.client.get<T.ProductCollectionsListResponseBody>(`/product-collections`, params)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-product-collection\n\t */\n\tpublic delete(productCollectionId: string) {\n\t\treturn this.client.delete<{}>(`/product-collections/${encode(productCollectionId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-product-collection\n\t */\n\tpublic get(productCollectionId: string) {\n\t\treturn this.client.get<T.ProductCollectionsGetResponseBody>(`/product-collections/${encode(productCollectionId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-products-in-collection\n\t */\n\tpublic listProducts(productCollectionId: string, params?: T.ProductCollectionsListProductsRequestQuery) {\n\t\treturn this.client.get<T.ProductCollectionsListProductsResponseBody>(\n\t\t\t`/product-collections/${encode(productCollectionId)}/products`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import { RequestController } from './RequestController'\nimport { AsyncActions } from './AsyncActions'\nimport { Campaigns } from './Campaigns'\nimport { Distributions } from './Distributions'\nimport { Exports } from './Exports'\nimport { Events } from './Events'\nimport { Balance } from './Balance'\nimport { Vouchers } from './Vouchers'\nimport { Validations } from './Validations'\nimport { Redemptions } from './Redemptions'\nimport { PromotionTiers } from './PromotionTiers'\nimport { Promotions } from './Promotions'\nimport { Customers } from './Customers'\nimport { Consents } from './Consents'\nimport { Orders } from './Orders'\nimport { Products } from './Products'\nimport { Rewards } from './Rewards'\nimport { Loyalties } from './Loyalties'\nimport { ValidationRules } from './ValidationRules'\nimport { Segments } from './Segments'\nimport { assert, isString, isObject, isOptionalString, environment } from './helpers'\nimport { ApiLimitsHandler } from './ApiLimitsHandler'\nimport { MetadataSchemas } from './MetadataSchemas'\nimport { Categories } from './Categories'\nimport { ProductCollections } from './ProductCollections'\n\nexport interface VoucherifyServerSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tapplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tsecretKey: string\n\t/**\n\t * Optionally, you can add `apiVersion` to the client options if you want to use a [specific API version](https://docs.voucherify.io/docs/api-version-upgrades).\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiVersion: 'v2017-04-20'\n\t * })\n\t * ```\n\t */\n\tapiVersion?: string\n\tchannel?: string\n\t/**\n\t * Set this option to disable displaying the warning about exposing your `secretKey` if you're using VoucherifyServerSide in a browser environment.\n\t * By setting this option to `true`, you acknowledge that you understand the risks of exposing your `secretKey` to a browser environment.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tdangerouslySetSecretKeyInBrowser: true\n\t * })\n\t * ```\n\t */\n\tdangerouslySetSecretKeyInBrowser?: boolean\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n\t/**\n\t * Optionally, you can set timeout in miliseconds. After this time request will be aborted. By default Voucherify's API has timeout value of 3 minutes.\n\t */\n\ttimeoutMs?: number\n}\ninterface VoucherifyServerSideHeaders {\n\t'X-App-Id': string\n\t'X-App-Token': string\n\t'X-Voucherify-Channel': string\n\t'X-Voucherify-API-Version'?: string\n\t'Content-Type': 'application/json'\n}\n// export interface VoucherifyServerSideNamespaces {\n// apiLimitsHandler: ApiLimitsHandler\n// \tcampaigns: Campaigns\n// \tconsents: Consents\n// \tcustomers: Customers\n// \tdistributions: Distributions\n// \tevents: Events\n// \tloyalties: Loyalties\n// metadataSchemas: MetadataSchemas\n// \torders: Orders\n// \tproducts: Products\n// \tpromotions: Promotions\n// \tredemptions: Redemptions\n// \trewards: Rewards\n// \tsegments: Segments\n// \tvalidationRules: ValidationRules\n// \tvalidations: Validations\n// \tvouchers: Vouchers\n// }\nexport function VoucherifyServerSide(options: VoucherifyServerSideOptions) {\n\tassert(isObject(options), 'VoucherifyServerSide: the \"options\" argument must be an object')\n\tassert(isString(options.applicationId), 'VoucherifyServerSide: \"options.applicationId\" is required')\n\tassert(isString(options.secretKey), 'VoucherifyServerSide: \"options.secretKey\" is required')\n\tassert(isOptionalString(options.apiVersion), 'VoucherifyServerSide: expected \"options.apiVersion\" to be a string')\n\tassert(isOptionalString(options.channel), 'VoucherifyServerSide: expected \"options.channel\" to be a string')\n\n\tlet headers: VoucherifyServerSideHeaders = {\n\t\t'X-App-Id': options.applicationId,\n\t\t'X-App-Token': options.secretKey,\n\t\t'X-Voucherify-Channel': options.channel || `${environment()}-SDK-v${__VERSION__}`,\n\t\t'Content-Type': 'application/json',\n\t}\n\tif (options.apiVersion) {\n\t\theaders['X-Voucherify-API-Version'] = options.apiVersion\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\t/**\n\t * The option `dangerouslySetSecretKeyInBrowser` is explicitly long and not suggested in the thrown error because\n\t * we don't want the user to enable this option without going through the documentation and understanding the risks\n\t * of exposing a their secretKey\n\t */\n\tif (!environment().startsWith('Node')) {\n\t\tassert(\n\t\t\toptions.dangerouslySetSecretKeyInBrowser === true,\n\t\t\t`VoucherifyServerSide: you're exposing your secretKey to a ${environment().toLowerCase()} environment. This is generally considered a bad practice. Did you mean to use 'VoucherifyClientSide'?`,\n\t\t)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t\ttimeoutMs: options.timeoutMs ?? 0,\n\t})\n\tconst asyncActions = new AsyncActions(client)\n\tconst balance = new Balance(client)\n\tconst vouchers = new Vouchers(client, balance)\n\tconst campaigns = new Campaigns(client)\n\tconst categories = new Categories(client)\n\tconst exportsNamespace = new Exports(client)\n\tconst events = new Events(client)\n\tconst distributions = new Distributions(client, exportsNamespace)\n\tconst promotionTiers = new PromotionTiers(client)\n\tconst promotions = new Promotions(client, promotionTiers)\n\tconst validations = new Validations(client, promotions)\n\tconst redemptions = new Redemptions(client)\n\tconst customers = new Customers(client)\n\tconst consents = new Consents(client)\n\tconst orders = new Orders(client)\n\tconst products = new Products(client)\n\tconst productCollections = new ProductCollections(client)\n\tconst rewards = new Rewards(client)\n\tconst loyalties = new Loyalties(client)\n\tconst segments = new Segments(client)\n\tconst validationRules = new ValidationRules(client)\n\tconst apiLimitsHandler = new ApiLimitsHandler(client)\n\tconst metadataSchemas = new MetadataSchemas(client)\n\n\treturn {\n\t\tvouchers,\n\t\tcampaigns,\n\t\tcategories,\n\t\tdistributions,\n\t\tvalidations,\n\t\tredemptions,\n\t\tpromotions,\n\t\tcustomers,\n\t\tconsents,\n\t\torders,\n\t\tproducts,\n\t\tproductCollections,\n\t\trewards,\n\t\tloyalties,\n\t\tsegments,\n\t\tvalidationRules,\n\t\tevents,\n\t\tasyncActions,\n\t\tapiLimitsHandler,\n\t\tmetadataSchemas,\n\t}\n}\n","import * as T from './types/ClientSide'\n\nimport { assert, encode, isObject, isOptionalObject, isOptionalString, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ClientSide {\n\tconstructor(private client: RequestController, private trackingId?: string) {}\n\n\tpublic setIdentity(identity?: string) {\n\t\tthis.trackingId = identity\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-validate\n\t */\n\tpublic validate(params: T.ClientSideValidateParams | string) {\n\t\tassert(\n\t\t\tisObject(params) || isString(params),\n\t\t\t'client.validate: expected \"params\" argument to be an object or a string',\n\t\t)\n\n\t\tconst query: Record<string, any> = {}\n\n\t\tif (isString(params)) {\n\t\t\tquery.code = params\n\t\t} else {\n\t\t\tquery.code = params.code\n\t\t\tquery.item = params.items\n\t\t\tquery.amount = params.amount\n\t\t\tquery.metadata = params.metadata\n\t\t\tquery.order = { metadata: params.orderMetadata }\n\t\t\tquery.customer = params.customer\n\t\t\tquery.tracking_id = params.tracking_id || this.trackingId\n\t\t\tquery.session_type = params.session_type\n\t\t\tquery.session_key = params.session_key\n\t\t\tquery.session_ttl = params.session_ttl\n\t\t\tquery.session_ttl_unit = params.session_ttl_unit\n\t\t}\n\n\t\tif (!!query.code) {\n\t\t\tquery.code = query.code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\t\t}\n\n\t\tassert(isOptionalObject(query?.customer), 'client.validate: expected \"params.customer\" to be an object')\n\t\tassert(isOptionalString(query?.customer?.source_id), 'client.validate: expected \"params.customer.source_id\" to be a string') // prettier-ignore\n\t\tassert(isOptionalObject(query?.customer?.metadata), 'client.validate: expected \"params.customer.metadata\" to be an object') // prettier-ignore\n\n\t\tconst path = query.code ? '/validate' : '/promotions/validation'\n\n\t\treturn this.client.get<T.ClientSideValidateResponse>(path, query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher-client-side\n\t */\n\tpublic redeem(code: string, payload: T.ClientSideRedeemPayload = {}) {\n\t\tassert(isString(code), 'client.redeem - please provide a valid Voucher code')\n\n\t\tcode = code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\tpayload.customer = payload.customer ?? {}\n\t\tpayload.customer.source_id = payload.customer.source_id ?? this.trackingId\n\n\t\treturn this.client.post<T.ClientSideRedeemResponse>('/redeem', payload, { code })\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic publish(\n\t\tcampaign: string,\n\t\tpayload: T.ClientSidePublishPayload = {},\n\t\tqueryParams: T.ClientSidePublishQueryParams = {},\n\t) {\n\t\tassert(isObject(payload), 'client.publish - expected payload to be an object')\n\n\t\tconst preparedPayload: T.ClientSidePublishPreparedPayload = {}\n\n\t\tpreparedPayload.customer = payload.customer ?? {}\n\t\tpreparedPayload.customer.source_id = payload.customer?.source_id ?? this.trackingId\n\t\tpreparedPayload.channel = payload.channel ?? 'Voucherify.js' // @todo - removed hard-coded channel\n\n\t\tassert(\n\t\t\tisString(preparedPayload.customer?.source_id),\n\t\t\t'client.publish - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\tqueryParams.campaign = campaign.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\treturn this.client.post<T.ClientSidePublishResponse>('/publish', preparedPayload, queryParams)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\n\tpublic track(\n\t\tevent_name: string,\n\t\tcustomer: T.ClientSideTrackCustomer,\n\t\tmetadata?: Record<string, any>,\n\t\treferral?: T.ClientSideTrackReferral,\n\t\tloyalty?: T.ClientSideTrackLoyalty,\n\t) {\n\t\tassert(isString(event_name), 'client.track - expected event name to be an string')\n\t\tassert(isObject(customer), 'client.track - expected customer to be an object')\n\n\t\tconst payload: T.ClientSideTrackPayload = {\n\t\t\tevent: event_name,\n\t\t\tmetadata: metadata ?? {},\n\t\t\tcustomer: customer,\n\t\t\treferral: referral ?? undefined,\n\t\t\tloyalty: loyalty ?? undefined,\n\t\t}\n\n\t\tpayload.customer.source_id = customer.source_id ?? this.trackingId\n\n\t\tassert(\n\t\t\tisString(payload.customer?.source_id),\n\t\t\t'client.track - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\treturn this.client.post<T.ClientSideTrackResponse>('/events', payload)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic listVouchers(params: T.ClientSideListVouchersParams = {}) {\n\t\tconst query: Record<string, any> = {}\n\n\t\tquery.campaign = params.campaign\n\t\tquery.category = params.category\n\t\tquery.page = params.page\n\t\tquery.limit = params.limit\n\t\tquery.customer = params.customer\n\t\tquery.created_at = params.created_at\n\t\tquery.updated_at = params.updated_at\n\n\t\treturn this.client.get<T.ClientSideListVouchersResponse>('/vouchers', query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic createCustomer(customer: T.ClientSideCustomersCreateParams, enableDoubleOptIn?: boolean) {\n\t\treturn this.client.post<T.ClientSideCustomersCreateResponse>(\n\t\t\t'/customers',\n\t\t\tcustomer,\n\t\t\t{},\n\t\t\tenableDoubleOptIn ? { 'X-Voucherify-Double-Opt-In': true } : {},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consent-client-side\n\t */\n\tpublic listConsents() {\n\t\treturn this.client.get<T.ClientSideConsentsListResponse>('/consents')\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents-client\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.ClientSideCustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stackable-discounts-client-side\n\t */\n\tpublic validateStackable(params: T.ClientSideValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ClientSideValidationValidateStackableResponse>(`/validations`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stackable-discounts-client-side\n\t */\n\tpublic redeemStackable(params: T.ClientSideRedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.ClientSideRedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n}\n","import { assert, environment, isObject, isOptionalString, isString } from './helpers'\n\nimport { ClientSide } from './ClientSide'\nimport { RequestController } from './RequestController'\n\nexport type { ClientSide }\n\nexport interface VoucherifyClientSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientApplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientSecretKey: string\n\t/**\n\t * Set customer identity when using React Widget. In other situations, use `setIdentity` method:\n\t *\n\t * ```javascript\n\t * client.setIdentity('gustav@purpleson.com')\n\t * ```\n\t */\n\ttrackingId?: string\n\t/**\n\t * **(Required in Node.js)** Set the origin from where the requests are made.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\torigin: 'your-domain.com'\n\t * })\n\t * ```\n\t *\n\t * @note in the browser, this option will be ignored. The `origin` header is a [forbidden header name](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name) and it'll be automatically set by the browser for every request.\n\t */\n\torigin?: string\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n\t/**\n\t * Optionally, you can set timeout in miliseconds. After this time request will be aborted. By default Voucherify's API has timeout value of 3 minutes.\n\t */\n\ttimeoutMs?: number\n}\ninterface VoucherifyCustomerHeaders {\n\t'X-Client-Application-Id': string\n\t'X-Client-Token': string\n\t'X-Voucherify-Channel'?: string\n\torigin?: string\n}\nexport function VoucherifyClientSide(options: VoucherifyClientSideOptions): ClientSide {\n\tassert(isObject(options), 'VoucherifyCustomer: expected \"options\" argument to be an object')\n\tassert(isString(options.clientApplicationId), 'VoucherifyCustomer: \"options.clientApplicationId\" is required')\n\tassert(isString(options.clientSecretKey), 'VoucherifyCustomer: \"options.clientSecretKey\" is required')\n\tassert(isOptionalString(options.apiUrl), 'VoucherifyCustomer: expected \"options.baseUrl\" to be a string')\n\tassert(isOptionalString(options.trackingId), 'VoucherifyCustomer: expected \"options.trackingId\" to be a string')\n\n\tlet headers: VoucherifyCustomerHeaders = {\n\t\t'X-Client-Application-Id': options.clientApplicationId,\n\t\t'X-Client-Token': options.clientSecretKey,\n\t\t'X-Voucherify-Channel': `${environment()}-ClientSide-SDK-v${__VERSION__}`,\n\t}\n\n\tif (environment().startsWith('Node')) {\n\t\tassert(isString(options.origin), 'VoucherifyCustomer: \"options.origin\" is required in Node.js')\n\t\theaders['origin'] = options.origin\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'client/v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t\ttimeoutMs: options.timeoutMs ?? 0,\n\t})\n\n\treturn new ClientSide(client, options.trackingId)\n}\n"],"names":["DiscountVouchersTypesEnum","VoucherifyError","Error","constructor","statusCode","body","axiosError","message","generateMessage","code","key","details","request_id","resource_id","resource_type","related_object_ids","related_object_type","related_object_total","cause","JSON","stringify","RequestController","basePath","baseURL","headers","exposeErrorCause","timeoutMs","request","lastResponseHeaders","isLastResponseHeadersSet","axios","create","responseType","interceptors","response","use","error","status","Promise","reject","data","undefined","isLastReponseHeadersSet","getLastResponseHeaders","setLastResponseHeaders","setBaseUrl","defaults","get","path","params","paramsSerializer","Qs","timeout","post","put","delete","encode","value","encodeURIComponent","isString","isOptionalString","isObject","Array","isArray","isOptionalObject","environment","window","document","self","name","process","versions","node","version","navigator","userAgent","includes","assert","condition","omit","obj","keys","Object","fromEntries","entries","filter","propertyKey","AsyncActions","client","asyncActionId","list","CampaignsQualifications","examine","Campaigns","qualifications","campaign","update","nameOrId","addVoucher","addCertainVoucher","importVouchers","campaignName","vouchers","importVouchersCSV","campaignId","filePath","startsWith","fs","default","fileStream","createReadStream","form","FormData","append","enable","disable","DistributionsPublications","Distributions","exports","publications","Exports","exportResource","query","exportResourceId","Events","eventName","event","Balance","VouchersQualification","Vouchers","balance","voucher","import","bulkUpdateMetadata","bulkUpdate","releaseValidationSession","sessionKey","importCSV","Validations","promotions","validateVoucher","validate","context","validateStackable","Redemptions","redeem","redeemStackable","redemptionId","getForVoucher","rollback","queryParams","payload","reason","tracking_id","trackingId","customer","rollbackStackable","parentRedemptionId","PromotionTiers","listAll","promotionId","tierId","promotionsTierId","id","Promotions","tiers","promotionCampaign","Customers","customerId","scroll","startingAfter","starting_after","order","assign","customers","length","created_at","has_more","source_id","customerWithoutId","updateInBulk","updateMetadataInBulk","sourceIdsAndMetadata","deletePermanently","updateConsents","idOrSourceId","consents","listActivities","Consents","Orders","orderId","orders","Products","product","productId","products","createSku","sku","getSku","skuId","updateSku","deleteSku","listSkus","importSkusCSV","Rewards","reward","rewardId","listAssignments","createAssignment","assignment","updateAssignment","deleteAssignment","assignmentId","Loyalties","listRewardAssignments","createRewardAssignments","updateRewardAssignment","deleteRewardAssignment","listEarningRules","createEarningRule","earningRules","updateEarningRule","earningRule","deleteEarningRule","earningRuleId","getEarningRule","enableEarningRule","disableEarningRule","listMembers","createMember","member","getMember","memberId","getMemberActivities","listMemberRewards","addOrRemoveCardBalance","addPoints","transferPoints","loyaltiesTransferPoints","getPointsExpiration","redeemReward","listCardTransactions","exportCardTransactions","getRewardAssignment","getRewardDetails","listTiers","getTier","createTiers","listLoyaltyTierEarningRules","listMemberLoyaltyTiers","ValidationRules","validationRule","validationRuleId","Segments","segment","segmentId","ApiLimitsHandler","requestController","getLastResponseHeadersFromController","areLimitsAvailable","getRateLimit","rateLimit","parseInt","getRateLimitRemaining","rateLimitRemaining","getRetryAfter","retryAfter","MetadataSchemas","schemaName","Categories","createCategory","categoryId","updateCategory","ProductCollections","productCollection","productCollectionId","listProducts","VoucherifyServerSide","options","applicationId","secretKey","apiVersion","channel","customHeaders","dangerouslySetSecretKeyInBrowser","toLowerCase","apiUrl","asyncActions","campaigns","categories","exportsNamespace","events","distributions","promotionTiers","validations","redemptions","productCollections","rewards","loyalties","segments","validationRules","apiLimitsHandler","metadataSchemas","ClientSide","setIdentity","identity","item","items","amount","metadata","orderMetadata","session_type","session_key","session_ttl","session_ttl_unit","replace","trim","publish","preparedPayload","track","event_name","referral","loyalty","listVouchers","category","page","limit","updated_at","createCustomer","enableDoubleOptIn","listConsents","VoucherifyClientSide","clientApplicationId","clientSecretKey","origin"],"mappings":"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"}
1
+ {"version":3,"file":"voucherifysdk.esm.js","sources":["../src/types/DiscountVoucher.ts","../src/VoucherifyError.ts","../src/RequestController.ts","../src/helpers.ts","../src/AsyncActions.ts","../src/Campaigns.ts","../src/Distributions.ts","../src/Exports.ts","../src/Events.ts","../src/Balance.ts","../src/Vouchers.ts","../src/Validations.ts","../src/Redemptions.ts","../src/PromotionTiers.ts","../src/Promotions.ts","../src/Customers.ts","../src/Consents.ts","../src/Orders.ts","../src/Products.ts","../src/Rewards.ts","../src/Loyalties.ts","../src/ValidationRules.ts","../src/Segments.ts","../src/ApiLimitsHandler.ts","../src/MetadataSchemas.ts","../src/Categories.ts","../src/PromotionsStacks.ts","../src/ProductCollections.ts","../src/Qualifications.ts","../src/VoucherifyServerSide.ts","../src/ClientSide.ts","../src/VoucherifyClientSide.ts"],"sourcesContent":["export type DiscountVouchersTypes = 'AMOUNT' | 'PERCENT' | 'UNIT' | 'FIXED'\n\nexport enum DiscountVouchersTypesEnum {\n\tAMOUNT = 'AMOUNT',\n\tPERCENT = 'PERCENT',\n\tUNIT = 'UNIT',\n\tFIXED = 'FIXED',\n}\n\nexport type DiscountVouchersEffectTypes =\n\t| 'ADD_MISSING_ITEMS'\n\t| 'ADD_NEW_ITEMS'\n\t| 'ADD_MANY_ITEMS'\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\t| 'APPLY_TO_ITEMS_BY_QUANTITY'\n\nexport type DiscountUnitVouchersEffectTypes = 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS'\n\nexport type DiscountAmountVouchersEffectTypes =\n\t| 'APPLY_TO_ORDER'\n\t| 'APPLY_TO_ITEMS'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY'\n\t| 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY'\n\t| 'APPLY_TO_ITEMS_BY_QUANTITY'\n\nexport type DiscountPercentVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\nexport type DiscountFixedVouchersEffectTypes = 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'\n\ninterface SimpleSkuDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tsku: string\n}\n\ninterface SimpleProductDiscountUnit {\n\tid: string\n\tsource_id?: string\n\tname: string\n}\n\nexport interface DiscountUnit {\n\ttype?: DiscountVouchersTypesEnum.UNIT\n\tunit_off?: number\n\tunit_off_formula?: string\n\teffect?: DiscountUnitVouchersEffectTypes\n\tunit_type?: string\n\tproduct?: SimpleProductDiscountUnit\n\tsku?: SimpleSkuDiscountUnit\n}\n\nexport interface DiscountAmount {\n\ttype?: DiscountVouchersTypesEnum.AMOUNT\n\tamount_off?: number\n\tamount_off_formula?: string\n\teffect?: DiscountAmountVouchersEffectTypes\n}\n\nexport interface DiscountPercent {\n\ttype?: DiscountVouchersTypesEnum.PERCENT\n\tpercent_off?: number\n\tpercent_off_formula?: string\n\tamount_limit?: number\n\teffect?: DiscountPercentVouchersEffectTypes\n}\nexport interface DiscountFixed {\n\ttype?: DiscountVouchersTypesEnum.FIXED\n\tfixed_amount?: number\n\tfixed_amount_formula?: string\n\teffect?: DiscountFixedVouchersEffectTypes\n}\n\n// domain types\n\n// didn't want to make major changes\nexport type Discount = DiscountAmount_ | DiscountUnit_ | DiscountUnitMultiple_ | DiscountPercent_ | DiscountFixed_\n\nexport type DiscountAmount_ = {\n\ttype: 'AMOUNT'\n\tamount_off?: number\n\tamount_off_formula?: string\n\taggregated_amount_limit?: number\n\teffect?: DiscountAmountVouchersEffectTypes\n\tis_dynamic?: boolean\n}\n\nexport type DiscountUnit_ = { type: 'UNIT' } & DiscountUnitBase_\n\nexport type DiscountUnitBase_ = {\n\tunit_off?: number\n\tunit_off_formula?: string\n\tunit_type: string\n\tproduct?: SimpleProductDiscountUnit\n\tsku?: SimpleSkuDiscountUnit\n\teffect?: 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS'\n\tis_dynamic?: boolean\n}\n\nexport type DiscountUnitMultiple_ = {\n\ttype: 'UNIT'\n\teffect: 'ADD_MANY_ITEMS'\n\tunits: DiscountUnitBase_[]\n}\n\nexport type DiscountPercent_ = {\n\ttype: 'PERCENT'\n\tpercent_off?: number\n\tpercent_off_formula?: string\n\tamount_limit?: number\n\taggregated_amount_limit?: number\n\teffect?: DiscountPercentVouchersEffectTypes\n\tis_dynamic?: boolean\n}\n\nexport type DiscountFixed_ = {\n\ttype: 'FIXED'\n\tfixed_amount?: number\n\tfixed_amount_formula?: string\n\teffect?: DiscountFixedVouchersEffectTypes\n\tis_dynamic?: boolean\n}\n","import { AxiosError } from 'axios'\n\n/**\n * @internal\n */\nexport class VoucherifyError extends Error {\n\tpublic code: number\n\tpublic key: string\n\tpublic details?: string\n\tpublic request_id?: string\n\tpublic resource_id?: string\n\tpublic resource_type?: string\n\tpublic related_object_ids?: string[]\n\tpublic related_object_type?: string\n\tpublic related_object_total?: number\n\tpublic cause?: AxiosError\n\n\tconstructor(statusCode: number, body?: unknown, axiosError?: AxiosError) {\n\t\tbody = body ?? {}\n\n\t\tconst message = (<any>body)?.message || generateMessage(body, statusCode)\n\n\t\tsuper(message)\n\n\t\tthis.code = (<any>body).code\n\t\tthis.key = (<any>body).key\n\t\tthis.details = (<any>body).details\n\t\tthis.request_id = (<any>body).request_id\n\t\tthis.resource_id = (<any>body).resource_id\n\t\tthis.resource_type = (<any>body).resource_type\n\t\tthis.related_object_ids = (<any>body).related_object_ids\n\t\tthis.related_object_type = (<any>body).related_object_type\n\t\tthis.related_object_total = (<any>body).related_object_total\n\t\tthis.cause = axiosError\n\t}\n}\n\nfunction generateMessage(body: unknown, statusCode: number) {\n\tbody = typeof body === 'string' ? body : JSON.stringify(body, null, 2)\n\n\treturn `Unexpected status code: ${statusCode} - Details: ${body}`\n}\n","import axios, { AxiosError, AxiosInstance, RawAxiosResponseHeaders } from 'axios'\n\nimport Qs from 'qs'\nimport { VoucherifyError } from './VoucherifyError'\n\nexport interface RequestControllerOptions {\n\tbaseURL: string\n\tbasePath: string\n\theaders: Record<string, any>\n\texposeErrorCause: boolean\n\ttimeoutMs: number\n}\n\n/**\n * @internal\n */\nexport class RequestController {\n\tprivate baseURL: string\n\tprivate basePath: string\n\tprivate headers: Record<string, any>\n\tprivate request: AxiosInstance\n\tprivate lastResponseHeaders: Record<string, string>\n\tprivate isLastResponseHeadersSet: boolean\n\tprivate exposeErrorCause: boolean\n\tprivate timeoutMs: number\n\n\tconstructor({ basePath, baseURL, headers, exposeErrorCause, timeoutMs }: RequestControllerOptions) {\n\t\tthis.basePath = basePath\n\t\tthis.baseURL = baseURL\n\t\tthis.headers = headers\n\t\tthis.exposeErrorCause = exposeErrorCause\n\t\tthis.lastResponseHeaders = {}\n\t\tthis.isLastResponseHeadersSet = false\n\t\tthis.timeoutMs = timeoutMs\n\n\t\tthis.request = axios.create({\n\t\t\tbaseURL: `${this.baseURL}/${this.basePath}/`,\n\t\t\theaders: this.headers,\n\t\t\tresponseType: 'json',\n\t\t})\n\t\tthis.request.interceptors.response.use(void 0, (error: AxiosError<unknown>) => {\n\t\t\t/**\n\t\t\t * Handle any HTTP response error (status code outside of 2xx) as a VoucherifyError\n\t\t\t */\n\t\t\tif (error?.response?.status) {\n\t\t\t\treturn Promise.reject(\n\t\t\t\t\tnew VoucherifyError(\n\t\t\t\t\t\terror.response.status,\n\t\t\t\t\t\terror.response.data,\n\t\t\t\t\t\tthis.exposeErrorCause === true ? error : undefined,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Promise.reject(error)\n\t\t})\n\t}\n\tpublic isLastReponseHeadersSet(): boolean {\n\t\treturn this.isLastResponseHeadersSet\n\t}\n\tpublic getLastResponseHeaders(): Record<string, string> {\n\t\treturn this.lastResponseHeaders\n\t}\n\tprivate setLastResponseHeaders(headers: RawAxiosResponseHeaders) {\n\t\tconst result: Record<string, string> = {}\n\t\tfor (const key in headers) {\n\t\t\tresult[key] = String(headers[key])\n\t\t}\n\n\t\tthis.lastResponseHeaders = result\n\t\tthis.isLastResponseHeadersSet = true\n\t}\n\tpublic setBaseUrl(baseURL: string) {\n\t\tthis.baseURL = baseURL\n\t\tthis.request.defaults.baseURL = `${baseURL}/${this.basePath}/`\n\t}\n\tpublic async get<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.get<T>(path, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t\ttimeout: this.timeoutMs,\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async post<T>(\n\t\tpath: string,\n\t\tbody: Record<string, any>,\n\t\tparams?: Record<string, any>,\n\t\theaders?: Record<string, any>,\n\t): Promise<T> {\n\t\tconst response = await this.request.post<T>(path, body, {\n\t\t\tparams,\n\t\t\tparamsSerializer: function (params) {\n\t\t\t\treturn Qs.stringify(params)\n\t\t\t},\n\t\t\theaders,\n\t\t\ttimeout: this.timeoutMs,\n\t\t})\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async put<T>(path: string, body: Record<string, any>, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.put<T>(path, body, { params, timeout: this.timeoutMs })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n\tpublic async delete<T>(path: string, params?: Record<string, any>): Promise<T> {\n\t\tconst response = await this.request.delete<T>(path, { params, timeout: this.timeoutMs })\n\t\tthis.setLastResponseHeaders(response.headers)\n\t\treturn response.data\n\t}\n}\n","export function encode(value: string = '') {\n\treturn encodeURIComponent(value)\n}\nexport function isNumber(value: any): value is number {\n\t// eslint-disable-next-line no-self-compare\n\treturn typeof value === 'number' && value === value\n}\nexport function isString(value: any): value is string {\n\treturn typeof value === 'string'\n}\nexport function isOptionalString(value: any): value is string | undefined {\n\treturn value == null || isString(value)\n}\nexport function isObject<T extends Record<string, any> = Record<string, any>>(value: any): value is T {\n\treturn typeof value === 'object' && !Array.isArray(value) && value !== null\n}\nexport function isOptionalObject<T extends Record<string, any> = Record<string, any>>(\n\tvalue: any,\n): value is T | null | undefined {\n\treturn value == null || isObject(value)\n}\nexport function isFunction(value: any): value is Function {\n\treturn typeof value === 'function'\n}\nexport function exists<T extends any>(value: T): value is NonNullable<T> {\n\treturn typeof value !== 'undefined' && value !== null\n}\n\nexport function environment(): string {\n\tif (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n\t\treturn 'Browser'\n\t\t// eslint-disable-next-line no-restricted-globals\n\t} else if (typeof self === 'object' && self.constructor && self.constructor.name === 'DedicatedWorkerGlobalScope') {\n\t\treturn 'WebWorker'\n\t} else if (typeof process !== 'undefined' && process.versions != null && process.versions.node != null) {\n\t\treturn `Node.js-${process.version}`\n\t} else if (\n\t\t(typeof window !== 'undefined' && window.name === 'nodejs') ||\n\t\tnavigator.userAgent.includes('Node.js') ||\n\t\tnavigator.userAgent.includes('jsdom')\n\t) {\n\t\treturn 'JsDom'\n\t}\n\n\treturn 'Unknown'\n}\n\nexport function assert(condition: any, message?: string): asserts condition {\n\tif (condition) return\n\tthrow new Error(message)\n}\n\n/**\n * Return an object containing all properties of `obj` excluding the ones in `keys` array\n * e.g:\n * ```javascript\n * omit({ a: 1, b: 2, c: 3, d: 4 }, ['b', 'd']) // output: { a: 1, c: 3 }\n * ```\n */\nexport function omit<T extends {}, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {\n\treturn Object.fromEntries(\n\t\tObject.entries(obj).filter(([propertyKey]) => {\n\t\t\treturn !keys.includes(propertyKey as K)\n\t\t}),\n\t) as Omit<T, K>\n}\n","import * as T from './types/AsyncActions'\n\nimport { encode } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nclass AsyncActions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-async-actions-1\n\t */\n\tpublic get(asyncActionId: string) {\n\t\treturn this.client.get<T.AsyncActionsGetResponse>(`/async-actions/${encode(asyncActionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-async-actions\n\t */\n\tpublic list(params: T.AsyncActionsListParams) {\n\t\treturn this.client.get<T.AsyncActionsListResponse>('/async-actions', params)\n\t}\n}\n\nexport { AsyncActions }\n","import * as T from './types/Campaigns'\nimport * as AAT from './types/AsyncActions'\n\nimport type { RequestController } from './RequestController'\nimport { assert, encode, environment } from './helpers'\nimport FormData from 'form-data'\n\nclass CampaignsQualifications {\n\tconstructor(private client: RequestController) {}\n\n\tpublic examine(body: T.CampaignsQualificationsBody = {}, params?: T.CampaignsQualificationsParams) {\n\t\treturn this.client.post<T.CampaignsQualificationsResponse>('/campaigns/qualification', body, params)\n\t}\n}\n\nexport class Campaigns {\n\tpublic qualifications: CampaignsQualifications\n\n\tconstructor(private client: RequestController) {\n\t\tthis.qualifications = new CampaignsQualifications(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-campaign\n\t */\n\tpublic create(campaign: T.CampaignsCreateCampaign) {\n\t\treturn this.client.post<T.CampaignsCreateCampaignResponse>('/campaigns', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-campaign\n\t */\n\tpublic update(nameOrId: string, campaign: T.CampaignsUpdateCampaign) {\n\t\treturn this.client.put<T.CampaignsUpdateCampaignResponse>(`/campaigns/${encode(nameOrId)}`, campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-campaign\n\t */\n\tpublic get(name: string) {\n\t\treturn this.client.get<T.CampaignsGetCampaignResponse>(`/campaigns/${encode(name)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-campaign\n\t */\n\tpublic delete(name: string, params: T.CampaignsDeleteParams = {}) {\n\t\treturn this.client.delete(`/campaigns/${encode(name)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-to-campaign\n\t */\n\n\tpublic addVoucher(name: string, body: T.CampaignsAddVoucherBody = {}, params: T.CampaignsAddVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddVoucherResponse | {}>(`/campaigns/${encode(name)}/vouchers`, body, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-voucher-with-certain-code-to-campaign\n\t */\n\n\tpublic addCertainVoucher(name: string, code: string, body: T.CampaignsAddCertainVoucherParams = {}) {\n\t\treturn this.client.post<T.CampaignsAddCertainVoucherResponse>(\n\t\t\t`/campaigns/${encode(name)}/vouchers/${encode(code)}`,\n\t\t\tbody,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers\n\t */\n\tpublic importVouchers(campaignName: string, vouchers: T.CampaignsImportVouchers[]) {\n\t\treturn this.client.post<T.CampaignsVouchersImportResponse>(`/campaigns/${encode(campaignName)}/import`, vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-campaigns\n\t */\n\tpublic list(params: T.CampaignsListParams = {}) {\n\t\treturn this.client.get<T.CampaignsListResponse>('/campaigns', params)\n\t}\n\t/**\n\t * @see https://api.voucherify.io/v1/campaigns/{campaignId}/importCSV\n\t */\n\tpublic async importVouchersCSV(campaignId: string, filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.campaigns.importVouchersCSV(campaignId, filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\tconst headers = { 'Content-Type': 'multipart/form-data' }\n\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(\n\t\t\t`/campaigns/${campaignId}/importCSV`,\n\t\t\tform,\n\t\t\tundefined,\n\t\t\theaders,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-campaign\n\t */\n\tpublic enable(campaignId: string) {\n\t\treturn this.client.post<{}>(`/campaigns/${encode(campaignId)}/enable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-campaign\n\t */\n\tpublic disable(campaignId: string) {\n\t\treturn this.client.post<{}>(`/campaigns/${encode(campaignId)}/disable`, {})\n\t}\n}\n","import * as T from './types/Distributions'\n\nimport type { Exports } from './Exports'\nimport type { RequestController } from './RequestController'\n\nclass DistributionsPublications {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-publications\n\t */\n\tpublic list(params: T.DistributionsPublicationsListParams = {}) {\n\t\treturn this.client.get<T.DistributionsPublicationsListResponse>('/publications', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic create(params: T.DistributionsPublicationsCreateParams) {\n\t\treturn this.client.post<T.DistributionsPublicationsCreateResponse>('/publications', params)\n\t}\n}\n\nexport class Distributions {\n\tpublic publications: DistributionsPublications\n\n\tconstructor(private client: RequestController, public exports: Exports) {\n\t\tthis.publications = new DistributionsPublications(this.client)\n\t}\n}\n","import * as T from './types/Exports'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Exports {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-export\n\t */\n\tpublic create(exportResource: T.ExportResource) {\n\t\treturn this.client.post<T.ExportsCreateResponse>('/exports', exportResource)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-exports\n\t */\n\tpublic list(query: T.ExportsListRequestQuery = {}) {\n\t\treturn this.client.get<T.ExportsListResponseBody>('/exports', query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-export\n\t */\n\tpublic get(exportResourceId: string) {\n\t\treturn this.client.get<T.ExportsGetResponse>(`/exports/${encode(exportResourceId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-export\n\t */\n\tpublic delete(exportResourceId: string) {\n\t\treturn this.client.delete(`/exports/${encode(exportResourceId)}`)\n\t}\n}\n","import * as T from './types/Events'\n\nimport type { RequestController } from './RequestController'\n\nexport class Events {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\tpublic create(eventName: string, params: T.EventsParams) {\n\t\tparams = { ...params, event: eventName }\n\t\treturn this.client.post<T.EventsResponse>('/events', params)\n\t}\n}\n","import * as T from './types/Balance'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class Balance {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * Add Gift Voucher Balance\n\t * This method gives a possibility to add balance to an existing gift voucher.\n\t * @see https://docs.voucherify.io/reference/add-gift-voucher-balance\n\t */\n\tpublic create(code: string, params: T.BalanceCreateParams) {\n\t\treturn this.client.post<T.BalanceCreateResponse>(`/vouchers/${encode(code)}/balance`, params)\n\t}\n}\n","import * as T from './types/Vouchers'\nimport * as AAT from './types/AsyncActions'\n\nimport { assert, encode, environment } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Balance } from './Balance'\nimport FormData from 'form-data'\n\nclass VouchersQualification {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * The method can be used for sending a request to display all vouchers qualified to the given customer and context (e.g., order, loyalty reward). A checking logic won't run among coupons from bulk unique codes campaigns. For campaigns with multiple unique codes, you should run a dedicated function for searching for qualified campaigns.\n\t * As a sample use case, you can imagine a requirement of displaying below cart the coupons eligible to a customer. The customer can take and apply the proposed voucher.\n\t *\n\t * @see https://docs.voucherify.io/reference/push-qualification-request\n\t */\n\tpublic examine(body: T.VouchersQualificationExamineBody, params: T.VouchersQualificationExamineParams = {}) {\n\t\treturn this.client.post<T.VouchersQualificationExamineResponse>('/vouchers/qualification', body, params)\n\t}\n}\nexport class Vouchers {\n\tpublic qualifications: VouchersQualification\n\n\tconstructor(private client: RequestController, public balance: Balance) {\n\t\tthis.qualifications = new VouchersQualification(this.client)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-voucher\n\t */\n\tpublic create(voucher: T.VouchersCreate) {\n\t\treturn this.client.post<T.VouchersCreateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-get\n\t */\n\tpublic get(code: string) {\n\t\treturn this.client.get<T.VouchersGetResponse>(`/vouchers/${encode(code)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-voucher\n\t */\n\tpublic update(voucher: T.VouchersUpdate) {\n\t\treturn this.client.put<T.VouchersUpdateResponse>(`/vouchers/${encode(voucher.code)}`, voucher)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-voucher\n\t */\n\tpublic delete(code: string, params: T.VouchersDeleteParams = {}) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic list(params: T.VouchersListParams = {}) {\n\t\treturn this.client.get<T.VouchersListResponse>('/vouchers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-voucher\n\t */\n\tpublic enable(code: string) {\n\t\treturn this.client.post<T.VouchersEnableResponse>(`/vouchers/${encode(code)}/enable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-voucher\n\t */\n\tpublic disable(code: string) {\n\t\treturn this.client.post<T.VouchersDisableResponse>(`/vouchers/${encode(code)}/disable`, {})\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers-1\n\t */\n\tpublic import(vouchers: T.VouchersImport[]) {\n\t\treturn this.client.post<T.VouchersImportResponse>('/vouchers/import', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aaupdate-vouchers-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(params: T.VouchersBulkUpdateMetadata) {\n\t\treturn this.client.post<T.VouchersBulkUpdateMetadataResponse>('/vouchers/metadata/async', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/aa-update-vouchers-in-bulk\n\t */\n\tpublic bulkUpdate(vouchers: T.VouchersBulkUpdate) {\n\t\treturn this.client.post<T.VouchersBulkUpdateResponse>('/vouchers/bulk/async', vouchers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/release-validation-session\n\t */\n\tpublic releaseValidationSession(code: string, sessionKey: string) {\n\t\treturn this.client.delete(`/vouchers/${encode(code)}/sessions/${encode(sessionKey)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-vouchers-using-csv\n\t */\n\tpublic async importCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.vouchers.importCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\tconst headers = { 'Content-Type': 'multipart/form-data' }\n\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>('/vouchers/importCSV', form, undefined, headers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-voucher-transactions\n\t */\n\tpublic listTransactions(code: string, params?: T.VouchersListTransactionsRequestQuery) {\n\t\treturn this.client.get<T.VouchersListTransactionsResponseBody>(`/vouchers/${encode(code)}/transactions`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/export-voucher-transactions\n\t */\n\tpublic exportTransactions(code: string, body: T.VouchersExportTransactionsRequestBody) {\n\t\treturn this.client.post<T.VouchersExportTransactionsResponseBody>(\n\t\t\t`/vouchers/${encode(code)}/transactions/export`,\n\t\t\tbody,\n\t\t)\n\t}\n}\n","import * as T from './types/Validations'\n\nimport { encode, isObject } from './helpers'\nimport type { RequestController } from './RequestController'\nimport type { Promotions } from './Promotions'\n\nexport class Validations {\n\tconstructor(private client: RequestController, private promotions: Promotions) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-voucher\n\t */\n\tpublic validateVoucher(code: string, params: T.ValidationsValidateVoucherParams = {}) {\n\t\treturn this.client.post<T.ValidationsValidateVoucherResponse>(`/vouchers/${encode(code)}/validate`, params)\n\t}\n\n\tpublic validate(code: string | T.ValidationsValidateCode, context: T.ValidationsValidateContext = {}) {\n\t\tif (isObject(code)) {\n\t\t\treturn this.promotions.validate(code)\n\t\t}\n\n\t\treturn this.validateVoucher(code, context)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stacked-discounts-1\n\t */\n\tpublic validateStackable(params: T.ValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ValidationValidateStackableResponse>(`/validations`, params)\n\t}\n}\n","import * as T from './types/Redemptions'\n\nimport { encode, isObject, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Redemptions {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher\n\t */\n\tpublic redeem(code: string, body: T.RedemptionsRedeemBody = {}) {\n\t\treturn this.client.post<T.RedemptionsRedeemResponse>(`/vouchers/${encode(code)}/redemption`, body)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stacked-discounts\n\t */\n\tpublic redeemStackable(params: T.RedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.RedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-redemption\n\t */\n\tpublic get(redemptionId: string) {\n\t\treturn this.client.get<T.Redemption>(`/redemptions/${encode(redemptionId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-redemptions\n\t */\n\tpublic list(params: T.RedemptionsListParams = {}) {\n\t\treturn this.client.get<T.RedemptionsListResponse>('/redemptions', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-redemptions\n\t */\n\tpublic getForVoucher(code: string) {\n\t\treturn this.client.get<T.RedemptionsGetForVoucherResponse>(`/vouchers/${encode(code)}/redemption`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-redemption\n\t */\n\tpublic rollback(redemptionId: string, params?: T.RedemptionsRollbackParams) {\n\t\tlet queryParams: T.RedemptionsRollbackQueryParams = {}\n\t\tlet payload: T.RedemptionsRollbackPayload = {}\n\n\t\tif (isString(params)) {\n\t\t\tqueryParams.reason = params\n\t\t} else if (isObject(params)) {\n\t\t\tconst { reason, tracking_id: trackingId, customer } = params\n\n\t\t\tqueryParams = {\n\t\t\t\treason: reason ? reason : undefined,\n\t\t\t\ttracking_id: trackingId ? trackingId : undefined,\n\t\t\t}\n\t\t\tpayload = { customer }\n\t\t}\n\n\t\treturn this.client.post<T.RedemptionsRollbackResponse>(\n\t\t\t`/redemptions/${encode(redemptionId)}/rollback`,\n\t\t\tpayload,\n\t\t\tqueryParams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/rollback-stackable-redemptions\n\t * Types of params and queryParams WILL be changed in future - please do not depend on it!\n\t */\n\tpublic rollbackStackable(parentRedemptionId: string, params?: any, queryParams?: any) {\n\t\treturn this.client.post<T.RedemptionsRollbackStackableResponse>(\n\t\t\t`/redemptions/${encode(parentRedemptionId)}/rollbacks`,\n\t\t\tparams,\n\t\t\tqueryParams,\n\t\t)\n\t}\n}\n","import * as T from './types/PromotionTiers'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class PromotionTiers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-promotion-tiers\n\t */\n\tpublic listAll(params: T.PromotionTiersListAllParams = {}) {\n\t\treturn this.client.get<T.PromotionTiersListAllResponse>('/promotions/tiers', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-promotions\n\t */\n\tpublic list(promotionId: string) {\n\t\treturn this.client.get<T.PromotionTiersListResponse>(`/promotions/${encode(promotionId)}/tiers`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-promotion-tier\n\t */\n\tpublic get(tierId: string) {\n\t\treturn this.client.get<T.PromotionTierGetResponse>(`/promotions/tiers/${encode(tierId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-promotion-tier-to-campaign\n\t */\n\tpublic create(promotionId: string, params: T.PromotionTiersCreateParams) {\n\t\treturn this.client.post<T.PromotionTiersCreateResponse>(`/promotions/${encode(promotionId)}/tiers`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-promotion\n\t */\n\tpublic redeem(promotionsTierId: string, params: T.PromotionTiersRedeemParams) {\n\t\treturn this.client.post<T.PromotionTiersRedeemResponse>(\n\t\t\t`/promotions/tiers/${encode(promotionsTierId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-promotion\n\t */\n\tpublic update(params: T.PromotionTiersUpdateParams) {\n\t\treturn this.client.put<T.PromotionTiersUpdateResponse>(`/promotions/tiers/${encode(params.id)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-promotion\n\t */\n\tpublic delete(promotionsTierId: string) {\n\t\treturn this.client.delete(`/promotions/tiers/${encode(promotionsTierId)}`)\n\t}\n}\n","import * as T from './types/Promotions'\n\nimport type { RequestController } from './RequestController'\nimport type { PromotionTiers } from './PromotionTiers'\nimport { PromotionsStacks } from './PromotionsStacks'\n\nexport class Promotions {\n\tconstructor(private client: RequestController, public tiers: PromotionTiers, public stack: PromotionsStacks) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-promotion-campaign\n\t */\n\tpublic create(promotionCampaign: T.PromotionsCreate) {\n\t\treturn this.client.post<T.PromotionsCreateResponse>('/campaigns', promotionCampaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-promotions-1\n\t */\n\tpublic validate(body: T.PromotionsValidateParams, params?: T.PromotionsValidateQueryParams) {\n\t\treturn this.client.post<T.PromotionsValidateResponse>('/promotions/validation', body, params)\n\t}\n}\n","import * as T from './types/Customers'\nimport * as AAT from './types/AsyncActions'\n\nimport { assert, encode, environment, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\nimport FormData from 'form-data'\n\nclass Customers {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic create(customer: T.CustomersCreateBody) {\n\t\treturn this.client.post<T.CustomersCreateResponse>('/customers', customer)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/read-customer\n\t */\n\tpublic get(customerId: string) {\n\t\treturn this.client.get<T.CustomersGetResponse>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-customers\n\t */\n\tpublic list(params: T.CustomersListParams) {\n\t\treturn this.client.get<T.CustomersListResponse>('/customers', params)\n\t}\n\t/**\n\t * Standard list customers API has limitation of available pages to be shown equal to 100. To cover cases when you would like to fetch more, you must use scroll capabilities.\n\t *\n\t * ```javascript\n\t * async function () {\n\t *\t\tfor await (const customer of voucherify.customers.scroll(params)) {\n\t *\t\t\tconsole.log('Customer', customer)\n\t *\t\t}\n\t * }\n\t * ```\n\t */\n\tpublic async *scroll(\n\t\tparams: T.CustomersScrollParams,\n\t): AsyncGenerator<T.CustomersScrollYield, void, T.CustomersScrollYield> {\n\t\tlet startingAfter =\n\t\t\tparams.starting_after ?? (params.order === 'created_at' ? '1970-01-01T00:00:00Z' : '2200-01-01T00:00:00Z')\n\t\tlet response = await this.client.get<T.CustomersScrollResponse>(\n\t\t\t'/customers',\n\t\t\tObject.assign({}, params, { starting_after: startingAfter }),\n\t\t)\n\n\t\twhile (true) {\n\t\t\tif (response.customers.length === 0) break\n\n\t\t\tfor (const customer of response.customers) {\n\t\t\t\tif (params.order === 'created_at') {\n\t\t\t\t\tstartingAfter = startingAfter > customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t} else {\n\t\t\t\t\tstartingAfter = startingAfter < customer.created_at ? startingAfter : customer.created_at\n\t\t\t\t}\n\t\t\t\tyield customer\n\t\t\t}\n\n\t\t\tif (!response.has_more) break\n\n\t\t\tresponse = await this.client.get('/customers', Object.assign({}, params, { starting_after: startingAfter }))\n\t\t}\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customer\n\t */\n\tpublic update(customer: T.CustomersUpdateParams) {\n\t\tconst id = 'id' in customer ? customer.id : customer.source_id\n\n\t\tconst customerWithoutId = omit(customer, ['id'])\n\n\t\treturn this.client.put<T.CustomersUpdateResponse>(`/customers/${encode(id)}`, customerWithoutId)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-in-bulk\n\t */\n\tpublic updateInBulk(customers: T.CustomersUpdateInBulkRequestBody) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/customers/bulk/async`, customers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-metadata-in-bulk\n\t */\n\tpublic updateMetadataInBulk(sourceIdsAndMetadata: T.CustomersUpdateMetadataInBulkRequestBody) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/customers/metadata/async`, sourceIdsAndMetadata)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-customer\n\t */\n\tpublic delete(customerId: string) {\n\t\treturn this.client.delete<undefined>(`/customers/${encode(customerId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-customer-permanently\n\t */\n\tpublic deletePermanently(customerId: string) {\n\t\treturn this.client.post<T.CustomersDeletePermanentlyResponseBody>(\n\t\t\t`/customers/${encode(customerId)}/permanent-deletion`,\n\t\t\t{},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.CustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-customer-activities\n\t */\n\tpublic listActivities(customerId: string, params?: T.CustomerActivitiesListQueryParams) {\n\t\treturn this.client.get<T.CustomerActivitiesListResponse>(`/customers/${encode(customerId)}/activities`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-customers-using-csv\n\t */\n\tpublic async importCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.customers.importCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\tconst headers = { 'Content-Type': 'multipart/form-data' }\n\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/customers/importCSV`, form, undefined, headers)\n\t}\n}\n\nexport { Customers }\n","import * as T from './types/Consents'\n\nimport type { RequestController } from './RequestController'\n\nexport class Consents {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consents\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.ConsentsListResponse>('/consents')\n\t}\n}\n","import * as T from './types/Orders'\nimport * as AAT from './types/AsyncActions'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Orders {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-order\n\t */\n\tpublic create(order: T.OrdersCreate) {\n\t\treturn this.client.post<T.OrdersCreateResponse>('/orders', order)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-order\n\t */\n\tpublic get(orderId: string) {\n\t\treturn this.client.get<T.OrdersGetResponse>(`/orders/${encode(orderId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-order\n\t */\n\tpublic update(order: T.OrdersUpdate) {\n\t\treturn this.client.put<T.OrdersUpdateResponse>(\n\t\t\t`/orders/${encode(order.id || order.source_id)}`,\n\t\t\tomit(order, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-orders\n\t */\n\tpublic list(params: T.OrdersListParams = {}) {\n\t\treturn this.client.get<T.OrdersListResponse>('/orders', params)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-orders\n\t */\n\tpublic import(orders: T.OrdersCreate[]) {\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>('/orders/import', orders)\n\t}\n}\n","import * as T from './types/Products'\nimport * as AAT from './types/AsyncActions'\n\nimport { assert, encode, environment, omit } from './helpers'\nimport type { RequestController } from './RequestController'\nimport FormData from 'form-data'\n\nexport class Products {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-product\n\t */\n\tpublic create(product: T.ProductsCreate) {\n\t\treturn this.client.post<T.ProductsCreateResponse>('/products', product)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-product\n\t */\n\tpublic get(productId: string) {\n\t\treturn this.client.get<T.ProductsGetResponse>(`/products/${encode(productId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-product\n\t */\n\tpublic update(product: T.ProductsUpdate) {\n\t\treturn this.client.put<T.ProductsUpdateResponse>(\n\t\t\t`/products/${encode(product.id || product.source_id)}`,\n\t\t\tomit(product, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/async-update-products-metadata-in-bulk\n\t */\n\tpublic bulkUpdateMetadata(products: T.ProductsBulkUpdateMetadata) {\n\t\treturn this.client.post<T.ProductsBulkUpdateMetadataResponse>('/products/metadata/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/post-products-in-bulk\n\t */\n\tpublic bulkUpdate(products: T.ProductsBulkUpdate) {\n\t\treturn this.client.post<T.ProductsBulkUpdateResponse>('/products/bulk/async', products)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-product\n\t */\n\tpublic delete(productId: string, params?: T.ProductsDeleteParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-products\n\t */\n\tpublic list(params?: T.ProductsListParams) {\n\t\treturn this.client.get<T.ProductsListResponse>('/products', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-sku\n\t */\n\tpublic createSku(productId: string, sku: T.ProductsCreateSku) {\n\t\treturn this.client.post<T.ProductsCreateSkuResponse>(`/products/${encode(productId)}/skus`, sku)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-sku-v20210726\n\t */\n\tpublic getSku(skuId: string) {\n\t\treturn this.client.get<T.ProductsGetSkuResponse>(`/skus/${encode(skuId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-sku\n\t */\n\tpublic updateSku(productId: string, sku: T.ProductsUpdateSku) {\n\t\treturn this.client.put<T.ProductsUpdateSkuResponse>(\n\t\t\t`/products/${encode(productId)}/skus/${encode(sku.id || sku.source_id)}`,\n\t\t\tomit(sku, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-sku\n\t */\n\tpublic deleteSku(productId: string, skuId: string, params?: T.ProductsDeleteSkuParams) {\n\t\treturn this.client.delete(`/products/${encode(productId)}/skus/${encode(skuId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-skus\n\t */\n\tpublic listSkus(productId: string) {\n\t\treturn this.client.get<T.ProductsListSkus>(`/products/${encode(productId)}/skus`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-skus-using-csv\n\t */\n\tpublic async importSkusCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.products.importSkusCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\tconst headers = { 'Content-Type': 'multipart/form-data' }\n\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/skus/importCSV`, form, undefined, headers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/import-products-using-csv\n\t */\n\tpublic async importCSV(filePath: string) {\n\t\tassert(\n\t\t\tenvironment().startsWith('Node'),\n\t\t\t`Method \"client.products.importCSV(filePath)\" is only for Node environment`,\n\t\t)\n\t\tconst fs = (await import('fs')).default\n\t\tconst fileStream = fs.createReadStream(filePath)\n\t\tconst form = new FormData()\n\t\tform.append('file', fileStream)\n\t\tconst headers = { 'Content-Type': 'multipart/form-data' }\n\n\t\treturn this.client.post<AAT.AsyncActionCreateResponse>(`/products/importCSV`, form, undefined, headers)\n\t}\n}\n","import * as T from './types/Rewards'\n\nimport { encode, omit } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Rewards {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-rewards\n\t */\n\tpublic list(params: T.RewardsListParams = {}) {\n\t\treturn this.client.get<T.RewardsListResponse>('/rewards', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward\n\t */\n\tpublic create(reward: T.RewardsCreate) {\n\t\treturn this.client.post<T.RewardsCreateResponse>('/rewards', reward)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward\n\t */\n\tpublic get(rewardId: string) {\n\t\treturn this.client.get<T.RewardsGetResponse>(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward\n\t */\n\tpublic update(reward: T.RewardsUpdate) {\n\t\treturn this.client.put<T.RewardsUpdateResponse>(`/rewards/${encode(reward.id)}`, omit(reward, ['id']))\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward\n\t */\n\tpublic delete(rewardId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward-assignment\n\t */\n\tpublic getAssignment(rewardId: string, assignmentId: string) {\n\t\treturn this.client.get<T.RewardsGetAssignmentResponseBody>(\n\t\t\t`/rewards/${encode(rewardId)}/assignments/${encode(assignmentId)}`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments\n\t */\n\tpublic listAssignments(rewardId: string, params: T.RewardsListAssignmentsRequestQuery = {}) {\n\t\treturn this.client.get<T.RewardsListAssignmentsResponseBody>(`/rewards/${encode(rewardId)}/assignments`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment\n\t */\n\tpublic createAssignment(rewardId: string, assignment: T.RewardsCreateAssignmentRequestBody) {\n\t\treturn this.client.post<T.RewardsCreateAssignmentResponseBody>(\n\t\t\t`/rewards/${encode(rewardId)}/assignments`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment\n\t */\n\tpublic updateAssignment(rewardId: string, assignment: T.RewardsUpdateAssignmentRequestBody) {\n\t\treturn this.client.put<T.RewardsUpdateAssignmentResponseBody>(\n\t\t\t`/rewards/${encode(rewardId)}/assignments/${encode(assignment.id)}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\tpublic deleteAssignment(rewardId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/rewards/${encode(rewardId)}/assignments/${encode(assignmentId)}`)\n\t}\n}\n","import * as T from './types/Loyalties'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class Loyalties {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-programs\n\t */\n\tpublic list(params: T.LoyaltiesListParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListResponse>('/loyalties', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-loyalty-program\n\t */\n\tpublic create(campaign: T.LoyaltiesCreateCampaign) {\n\t\treturn this.client.post<T.LoyaltiesCreateCampaignResponse>('/loyalties', campaign)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-loyalty-program\n\t */\n\tpublic get(campaignId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetCampaignResponse>(`/loyalties/${encode(campaignId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-loyalty-program\n\t */\n\tpublic update(campaign: T.LoyaltiesUpdateCampaign) {\n\t\treturn this.client.put<T.LoyaltiesUpdateCampaignResponse>(\n\t\t\t`/loyalties/${encode(campaign.id)}`,\n\t\t\tomit(campaign, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-loyalty-program\n\t */\n\tpublic delete(campaignId: string, params?: T.LoyaltiesDeleteCampaignParams) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-reward-assignments-1\n\t */\n\tpublic listRewardAssignments(campaignId: string, params: T.LoyaltiesListRewardAssignmentsParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListRewardAssignmentsResponse>(`/loyalties/${encode(campaignId)}/rewards`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-reward-assignment-1\n\t */\n\tpublic createRewardAssignments(campaignId: string, assignment: T.LoyaltiesCreateRewardAssignments[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateRewardAssignmentResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-reward-assignment-1\n\t */\n\tpublic updateRewardAssignment(campaignId: string, assignment: T.LoyaltiesUpdateRewardAssignment) {\n\t\treturn this.client.put<T.LoyaltiesUpdateRewardAssignmentResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards/${assignment.id}`,\n\t\t\tomit(assignment, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-reward-assignment-1\n\t */\n\tpublic deleteRewardAssignment(campaignId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/rewards/${assignmentId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward-assignment-2\n\t */\n\tpublic getRewardAssignment(campaignId: string, assignmentId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetRewardAssignmentResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/rewards/${encode(assignmentId)}`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-earning-rules\n\t */\n\tpublic listEarningRules(campaignId: string, params: T.LoyaltiesListEarningRulesParams = {}) {\n\t\treturn this.client.get<T.LoyaltiesListEarningRulesResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-earning-rule\n\t */\n\tpublic createEarningRule(campaignId: string, earningRules: T.LoyaltiesCreateEarningRule[]) {\n\t\treturn this.client.post<T.LoyaltiesCreateEarningRuleResponse[]>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules`,\n\t\t\tearningRules,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-earning-rule\n\t */\n\tpublic updateEarningRule(campaignId: string, earningRule: T.LoyaltiesUpdateEarningRule) {\n\t\treturn this.client.put<T.LoyaltiesUpdateEarningRuleResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRule.id}`,\n\t\t\tomit(earningRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-earning-rule\n\t */\n\tpublic deleteEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.delete(`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-earning-rule\n\t */\n\tpublic getEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetEarningRuleResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${encode(earningRuleId)}`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/enable-earning-rule\n\t */\n\tpublic enableEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.post<T.LoyaltiesEnableEarningRulesResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}/enable`,\n\t\t\t{},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/disable-earning-rule\n\t */\n\tpublic disableEarningRule(campaignId: string, earningRuleId: string) {\n\t\treturn this.client.post<T.LoyaltiesDisableEarningRulesResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/earning-rules/${earningRuleId}/disable`,\n\t\t\t{},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-members\n\t */\n\tpublic listMembers(campaignId: string, params?: T.LoyaltiesListMembersParams) {\n\t\treturn this.client.get<T.LoyaltiesListMembersResponse>(`/loyalties/${encode(campaignId)}/members`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-member\n\t */\n\tpublic createMember(campaignId: string, member: T.LoyaltiesCreateMember) {\n\t\treturn this.client.post<T.LoyaltiesCreateMemberResponse>(`/loyalties/${encode(campaignId)}/members`, member)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member\n\t * @see https://docs.voucherify.io/reference/get-member-1\n\t */\n\tpublic getMember(campaignId: string | null, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberResponse>(\n\t\t\tcampaignId ? `/loyalties/${encode(campaignId)}/members/${memberId}` : `/loyalties/members/${memberId}`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member-activities\n\t * @see https://docs.voucherify.io/reference/get-member-activities-1\n\t */\n\tpublic getMemberActivities(campaignId: string | null, memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetMemberActivitiesResponse>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${memberId}/activities`\n\t\t\t\t: `/loyalties/members/${memberId}/activities`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-member-rewards\n\t */\n\tpublic listMemberRewards(memberId: string, params?: T.LoyaltiesListMemberRewardsRequestQuery) {\n\t\treturn this.client.get<T.LoyaltiesListMemberRewardsResponseBody>(\n\t\t\t`/loyalties/members/${encode(memberId)}/rewards`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-remove-loyalty-card-balance\n\t * @see https://docs.voucherify.io/reference/add-remove-loyalty-card-balance-1\n\t */\n\tpublic addOrRemoveCardBalance(\n\t\tmemberId: string,\n\t\tbalance: T.LoyaltiesAddOrRemoveCardBalanceRequestBody,\n\t\tcampaignId?: string,\n\t) {\n\t\treturn this.client.post<T.LoyaltiesAddOrRemoveCardBalanceResponseBody>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${memberId}/balance`\n\t\t\t\t: `/loyalties/members/${memberId}/balance`,\n\t\t\tbalance,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/add-remove-loyalty-card-balance-1\n\t */\n\tpublic addPoints(campaignId: string, memberId: string, balance: T.LoyaltiesAddPoints) {\n\t\treturn this.client.post<T.LoyaltiesAddPointsResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/balance`,\n\t\t\tbalance,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/transfer-points\n\t */\n\tpublic transferPoints(\n\t\tcampaignId: string,\n\t\tmemberId: string,\n\t\tloyaltiesTransferPoints: T.LoyaltiesTransferPointsRequestBody,\n\t) {\n\t\treturn this.client.post<T.LoyaltiesTransferPointsResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transfers`,\n\t\t\tloyaltiesTransferPoints,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-points-expiration\n\t */\n\tpublic getPointsExpiration(\n\t\tcampaignId: string,\n\t\tmemberId: string,\n\t\tparams?: T.LoyaltiesGetPointsExpirationRequestQuery,\n\t) {\n\t\treturn this.client.get<T.LoyaltiesGetPointsExpirationResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${memberId}/points-expiration`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-loyalty-card\n\t */\n\tpublic redeemReward(campaignId: string, memberId: string, params: T.LoyaltiesRedeemRewardParams) {\n\t\treturn this.client.post<T.LoyaltiesRedeemRewardResponse>(\n\t\t\t`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/redemption`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-tier-rewards\n\t */\n\tpublic listLoyaltyTierRewards(campaignId: string, tierId: string) {\n\t\treturn this.client.get<T.LoyaltiesListLoyaltyTierRewardsResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/tiers/${encode(tierId)}/rewards`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-card-transactions\n\t * @see https://docs.voucherify.io/reference/list-loyalty-card-transactions-1\n\t */\n\tpublic listCardTransactions(\n\t\tmemberId: string,\n\t\tcampaignId: string | null,\n\t\tparams?: T.LoyaltiesListCardTransactionsRequestQuery,\n\t) {\n\t\treturn this.client.get<T.LoyaltiesListCardTransactionsResponseBody>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transactions`\n\t\t\t\t: `/loyalties/members/${encode(memberId)}/transactions`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/export-loyalty-card-transactions\n\t * @see https://docs.voucherify.io/reference/export-loyalty-card-transactions-1\n\t */\n\tpublic exportCardTransactions(\n\t\tmemberId: string,\n\t\tcampaignId: string | null,\n\t\tparams: T.LoyaltiesExportCardTransactionsRequestBody = {},\n\t) {\n\t\treturn this.client.post<T.LoyaltiesExportCardTransactionsResponseBody>(\n\t\t\tcampaignId\n\t\t\t\t? `/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transactions/export`\n\t\t\t\t: `/loyalties/members/${encode(memberId)}/transactions/export`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-reward-details\n\t */\n\tpublic getRewardDetails(campaignId: string, assignmentId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetRewardDetailsResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/reward-assignments/${encode(assignmentId)}/reward`,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-tiers\n\t */\n\tpublic listTiers(campaignId: string, params?: T.LoyaltiesListTiersRequestQuery) {\n\t\treturn this.client.get<T.LoyaltiesListTiersResponseBody>(`/loyalties/${encode(campaignId)}/tiers`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-loyalty-tier\n\t */\n\tpublic getTier(campaignId: string, tierId: string) {\n\t\treturn this.client.get<T.LoyaltiesGetTierResponseBody>(`/loyalties/${encode(campaignId)}/tiers/${encode(tierId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-loyalty-tiers\n\t */\n\tpublic createTiers(campaignId: string, tiers: T.LoyaltiesCreateTiersRequestBody) {\n\t\treturn this.client.post<T.LoyaltiesCreateTiersResponseBody>(`/loyalties/${encode(campaignId)}/tiers`, tiers)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-loyalty-tier-earning-rules\n\t */\n\tpublic listLoyaltyTierEarningRules(\n\t\tcampaignId: string,\n\t\ttierId: string,\n\t\tparams?: T.LoyaltiesListLoyaltyTierEarningRulesRequestQuery,\n\t) {\n\t\treturn this.client.get<T.LoyaltiesListLoyaltyTierEarningRulesResponseBody>(\n\t\t\t`/loyalties/${encode(campaignId)}/tiers/${encode(tierId)}/earning-rules`,\n\t\t\tparams,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-member-loyalty-tier\n\t */\n\tpublic listMemberLoyaltyTiers(memberId: string) {\n\t\treturn this.client.get<T.LoyaltiesListMemberLoyaltyTiersResponseBody>(\n\t\t\t`/loyalties/members/${encode(memberId)}/tiers`,\n\t\t)\n\t}\n}\n","import * as T from './types/ValidationRules'\n\nimport { encode, omit } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ValidationRules {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules\n\t */\n\tpublic create(validationRule: T.ValidationRulesCreate) {\n\t\treturn this.client.post<T.ValidationRulesCreateResponse>('/validation-rules', validationRule)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-validation-rules\n\t */\n\tpublic get(validationRuleId: string) {\n\t\treturn this.client.get<T.ValidationRulesGetResponse>(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-validation-rules\n\t */\n\tpublic update(validationRule: T.ValidationRulesUpdate) {\n\t\treturn this.client.put<T.ValidationRulesUpdateResponse>(\n\t\t\t`/validation-rules/${encode(validationRule.id)}`,\n\t\t\tomit(validationRule, ['id']),\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules\n\t */\n\tpublic delete(validationRuleId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-validation-rules-assignment\n\t */\n\tpublic createAssignment(validationRuleId: string, assignment: T.ValidationRulesCreateAssignment) {\n\t\treturn this.client.post<T.ValidationRulesCreateAssignmentResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tassignment,\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-validation-rules-assignment\n\t */\n\tpublic deleteAssignment(validationRuleId: string, assignmentId: string) {\n\t\treturn this.client.delete(`/validation-rules/${encode(validationRuleId)}/assignments/${encode(assignmentId)}`)\n\t}\n\n\tpublic validate(validationRuleId: string, params: any = {}) {\n\t\treturn this.client.post<T.ValidationRulesValidateResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/validation`,\n\t\t\tparams,\n\t\t)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rules\n\t */\n\tpublic list(params: T.ValidationRulesListParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListResponse>('/validation-rules', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rules-assignments\n\t */\n\tpublic listRulesAssignments(params: T.ValidationRulesListRulesAssignmentsRequestQuery = {}) {\n\t\treturn this.client.get<T.ValidationRulesListRulesAssignmentsResponseBody>(`/validation-rules-assignments`, params)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-validation-rule-assignments\n\t */\n\tpublic listAssignments(validationRuleId: string, params: T.ValidationRulesListAssignmentsParams = {}) {\n\t\treturn this.client.get<T.ValidationRulesListAssignmentsResponse>(\n\t\t\t`/validation-rules/${encode(validationRuleId)}/assignments`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import * as T from './types/Segments'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class Segments {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-segment\n\t */\n\tpublic create(segment: T.SegmentsCreate) {\n\t\treturn this.client.post<T.SegmentsCreateResponse>('/segments', segment)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-segment\n\t */\n\tpublic get(segmentId: string) {\n\t\treturn this.client.get<T.SegmentsGetResponse>(`/segments/${encode(segmentId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-segment\n\t */\n\tpublic delete(segmentId: string) {\n\t\treturn this.client.delete(`/segments/${encode(segmentId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-segments\n\t */\n\tpublic list(customerId: string) {\n\t\treturn this.client.get<T.SegmentsListResponse>(`/customers/${encode(customerId)}/segments`)\n\t}\n}\n","import { RequestController } from './RequestController'\n\nexport class ApiLimitsHandler {\n\tconstructor(private readonly requestController: RequestController) {}\n\n\tprivate getLastResponseHeadersFromController(): Record<string, string> {\n\t\treturn this.requestController.getLastResponseHeaders()\n\t}\n\n\tpublic areLimitsAvailable(): boolean {\n\t\treturn this.requestController.isLastReponseHeadersSet()\n\t}\n\n\tpublic getRateLimit(): number {\n\t\tconst rateLimit = this.getLastResponseHeadersFromController()['x-rate-limit-limit'] ?? 0\n\t\treturn parseInt(rateLimit, 10)\n\t}\n\n\tpublic getRateLimitRemaining(): number {\n\t\tconst rateLimitRemaining = this.getLastResponseHeadersFromController()['x-rate-limit-remaining'] ?? 0\n\t\treturn parseInt(rateLimitRemaining, 10)\n\t}\n\n\tpublic getRetryAfter(): number {\n\t\tconst retryAfter = this.getLastResponseHeadersFromController()['retry-after'] ?? 0\n\t\treturn parseInt(retryAfter, 10)\n\t}\n}\n","import * as T from './types/MetadataSchemas'\n\nimport { encode } from './helpers'\nimport type { RequestController } from './RequestController'\n\nexport class MetadataSchemas {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-metadata-schemas\n\t */\n\tpublic list() {\n\t\treturn this.client.get<T.MetadataSchemasListResponse>('/metadata-schemas')\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-metadata-schema\n\t */\n\tpublic get(schemaName: string) {\n\t\treturn this.client.get<T.MetadataSchemasGetResponse>(`/metadata-schemas/${encode(schemaName)}`)\n\t}\n}\n","import * as T from './types/Categories'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class Categories {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-categories\n\t */\n\tpublic list(params: T.CategoriesListRequestQuery = {}) {\n\t\treturn this.client.get<T.ListCategories>('/categories', params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-category\n\t */\n\tpublic create(createCategory: T.CreateCategory) {\n\t\treturn this.client.post<T.ResponseCreateCategory>('/categories', createCategory)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-category\n\t */\n\tpublic get(categoryId: string) {\n\t\treturn this.client.get<T.CategoryObject>(`/categories/${encode(categoryId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-category\n\t */\n\tpublic delete(categoryId: string) {\n\t\treturn this.client.delete<{}>(`/categories/${encode(categoryId)}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-category\n\t */\n\tpublic update(categoryId: string, updateCategory: T.UpdateCategoryRequest) {\n\t\treturn this.client.put<T.ResponseUpdateCategory>(`/categories/${encode(categoryId)}`, updateCategory)\n\t}\n}\n","import * as T from './types/PromotionsStacks'\n\nimport type { RequestController } from './RequestController'\nexport class PromotionsStacks {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-promotion-stacks-in-campaign\n\t */\n\tpublic listInCampaign(campaignId: string) {\n\t\treturn this.client.get<T.PromotionsStacksListInCampaignResponseBody>(`/promotions/${campaignId}/stacks`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-promotion-stacks-in-campaign\n\t */\n\tpublic createInCampaign(campaignId: string, body: T.PromotionsStacksCreateInCampaignRequestBody) {\n\t\treturn this.client.post<T.PromotionsStacksCreateInCampaignResponseBody>(`/promotions/${campaignId}/stacks`, body)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-promotion-stack\n\t */\n\tpublic delete(campaignId: string, stackId: string) {\n\t\treturn this.client.delete<{}>(`/promotions/${campaignId}/stacks/${stackId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-promotion-stack\n\t */\n\tpublic get(campaignId: string, stackId: string) {\n\t\treturn this.client.get<T.PromotionsStacksGetResponseBody>(`/promotions/${campaignId}/stacks/${stackId}`)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-promotion-stack\n\t */\n\tpublic update(campaignId: string, stackId: string, body: T.PromotionsStacksUpdateRequestBody) {\n\t\treturn this.client.put<T.PromotionsStacksUpdateResponseBody>(`/promotions/${campaignId}/stacks/${stackId}`, body)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-promotion-stacks-in-campaign\n\t */\n\tpublic list(params?: T.PromotionsStacksListRequestQuery) {\n\t\treturn this.client.get<T.PromotionsStacksListResponseBody>(`/promotions/stacks`, params)\n\t}\n}\n","import * as T from './types/ProductCollections'\n\nimport type { RequestController } from './RequestController'\nimport { encode } from './helpers'\n\nexport class ProductCollections {\n\tconstructor(private client: RequestController) {}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-product-collection\n\t */\n\tpublic create(productCollection: T.ProductCollectionsCreateRequestBody) {\n\t\treturn this.client.post<T.ProductCollectionsCreateResponseBody>(`/product-collections`, productCollection)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-product-collections\n\t */\n\tpublic list(params?: T.ProductCollectionsListRequestQuery) {\n\t\treturn this.client.get<T.ProductCollectionsListResponseBody>(`/product-collections`, params)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/delete-product-collection\n\t */\n\tpublic delete(productCollectionId: string) {\n\t\treturn this.client.delete<{}>(`/product-collections/${encode(productCollectionId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-product-collection\n\t */\n\tpublic get(productCollectionId: string) {\n\t\treturn this.client.get<T.ProductCollectionsGetResponseBody>(`/product-collections/${encode(productCollectionId)}`)\n\t}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-products-in-collection\n\t */\n\tpublic listProducts(productCollectionId: string, params?: T.ProductCollectionsListProductsRequestQuery) {\n\t\treturn this.client.get<T.ProductCollectionsListProductsResponseBody>(\n\t\t\t`/product-collections/${encode(productCollectionId)}/products`,\n\t\t\tparams,\n\t\t)\n\t}\n}\n","import * as T from './types/Qualifications'\n\nimport type { RequestController } from './RequestController'\n\nexport class Qualifications {\n\tconstructor(private client: RequestController) {}\n\n\t/**\n\t * @see https://docs.voucherify.io/reference/check-eligibility\n\t */\n\tpublic checkEligibility(body: T.QualificationsCheckEligibilityRequestBody) {\n\t\treturn this.client.post<T.QualificationsCheckEligibilityResponseBody>('/qualifications', body)\n\t}\n}\n","import { RequestController } from './RequestController'\nimport { AsyncActions } from './AsyncActions'\nimport { Campaigns } from './Campaigns'\nimport { Distributions } from './Distributions'\nimport { Exports } from './Exports'\nimport { Events } from './Events'\nimport { Balance } from './Balance'\nimport { Vouchers } from './Vouchers'\nimport { Validations } from './Validations'\nimport { Redemptions } from './Redemptions'\nimport { PromotionTiers } from './PromotionTiers'\nimport { Promotions } from './Promotions'\nimport { Customers } from './Customers'\nimport { Consents } from './Consents'\nimport { Orders } from './Orders'\nimport { Products } from './Products'\nimport { Rewards } from './Rewards'\nimport { Loyalties } from './Loyalties'\nimport { ValidationRules } from './ValidationRules'\nimport { Segments } from './Segments'\nimport { assert, isString, isObject, isOptionalString, environment } from './helpers'\nimport { ApiLimitsHandler } from './ApiLimitsHandler'\nimport { MetadataSchemas } from './MetadataSchemas'\nimport { Categories } from './Categories'\nimport { PromotionsStacks } from './PromotionsStacks'\nimport { ProductCollections } from './ProductCollections'\nimport { Qualifications } from './Qualifications'\n\nexport interface VoucherifyServerSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tapplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Application Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tsecretKey: string\n\t/**\n\t * Optionally, you can add `apiVersion` to the client options if you want to use a [specific API version](https://docs.voucherify.io/docs/api-version-upgrades).\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tapiVersion: 'v2017-04-20'\n\t * })\n\t * ```\n\t */\n\tapiVersion?: string\n\tchannel?: string\n\t/**\n\t * Set this option to disable displaying the warning about exposing your `secretKey` if you're using VoucherifyServerSide in a browser environment.\n\t * By setting this option to `true`, you acknowledge that you understand the risks of exposing your `secretKey` to a browser environment.\n\t *\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tdangerouslySetSecretKeyInBrowser: true\n\t * })\n\t * ```\n\t */\n\tdangerouslySetSecretKeyInBrowser?: boolean\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tapplicationId: 'YOUR-APPLICATION-ID',\n\t *\t\tsecretKey: 'YOUR-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n\t/**\n\t * Optionally, you can set timeout in miliseconds. After this time request will be aborted. By default Voucherify's API has timeout value of 3 minutes.\n\t */\n\ttimeoutMs?: number\n}\ninterface VoucherifyServerSideHeaders {\n\t'X-App-Id': string\n\t'X-App-Token': string\n\t'X-Voucherify-Channel': string\n\t'X-Voucherify-API-Version'?: string\n\t'Content-Type': 'application/json'\n}\n// export interface VoucherifyServerSideNamespaces {\n// apiLimitsHandler: ApiLimitsHandler\n// \tcampaigns: Campaigns\n// \tconsents: Consents\n// \tcustomers: Customers\n// \tdistributions: Distributions\n// \tevents: Events\n// \tloyalties: Loyalties\n// metadataSchemas: MetadataSchemas\n// \torders: Orders\n// \tproducts: Products\n// \tpromotions: Promotions\n// \tredemptions: Redemptions\n// \trewards: Rewards\n// \tsegments: Segments\n// \tvalidationRules: ValidationRules\n// \tvalidations: Validations\n// \tvouchers: Vouchers\n// }\nexport function VoucherifyServerSide(options: VoucherifyServerSideOptions) {\n\tassert(isObject(options), 'VoucherifyServerSide: the \"options\" argument must be an object')\n\tassert(isString(options.applicationId), 'VoucherifyServerSide: \"options.applicationId\" is required')\n\tassert(isString(options.secretKey), 'VoucherifyServerSide: \"options.secretKey\" is required')\n\tassert(isOptionalString(options.apiVersion), 'VoucherifyServerSide: expected \"options.apiVersion\" to be a string')\n\tassert(isOptionalString(options.channel), 'VoucherifyServerSide: expected \"options.channel\" to be a string')\n\n\tlet headers: VoucherifyServerSideHeaders = {\n\t\t'X-App-Id': options.applicationId,\n\t\t'X-App-Token': options.secretKey,\n\t\t'X-Voucherify-Channel': options.channel || `${environment()}-SDK-v${__VERSION__}`,\n\t\t'Content-Type': 'application/json',\n\t}\n\tif (options.apiVersion) {\n\t\theaders['X-Voucherify-API-Version'] = options.apiVersion\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\t/**\n\t * The option `dangerouslySetSecretKeyInBrowser` is explicitly long and not suggested in the thrown error because\n\t * we don't want the user to enable this option without going through the documentation and understanding the risks\n\t * of exposing a their secretKey\n\t */\n\tif (!environment().startsWith('Node')) {\n\t\tassert(\n\t\t\toptions.dangerouslySetSecretKeyInBrowser === true,\n\t\t\t`VoucherifyServerSide: you're exposing your secretKey to a ${environment().toLowerCase()} environment. This is generally considered a bad practice. Did you mean to use 'VoucherifyClientSide'?`,\n\t\t)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t\ttimeoutMs: options.timeoutMs ?? 0,\n\t})\n\tconst asyncActions = new AsyncActions(client)\n\tconst balance = new Balance(client)\n\tconst vouchers = new Vouchers(client, balance)\n\tconst campaigns = new Campaigns(client)\n\tconst categories = new Categories(client)\n\tconst exportsNamespace = new Exports(client)\n\tconst events = new Events(client)\n\tconst distributions = new Distributions(client, exportsNamespace)\n\tconst promotionTiers = new PromotionTiers(client)\n\tconst promotionStack = new PromotionsStacks(client)\n\tconst promotions = new Promotions(client, promotionTiers, promotionStack)\n\tconst validations = new Validations(client, promotions)\n\tconst redemptions = new Redemptions(client)\n\tconst qualifications = new Qualifications(client)\n\tconst customers = new Customers(client)\n\tconst consents = new Consents(client)\n\tconst orders = new Orders(client)\n\tconst products = new Products(client)\n\tconst productCollections = new ProductCollections(client)\n\tconst rewards = new Rewards(client)\n\tconst loyalties = new Loyalties(client)\n\tconst segments = new Segments(client)\n\tconst validationRules = new ValidationRules(client)\n\tconst apiLimitsHandler = new ApiLimitsHandler(client)\n\tconst metadataSchemas = new MetadataSchemas(client)\n\n\treturn {\n\t\tvouchers,\n\t\tcampaigns,\n\t\tcategories,\n\t\tdistributions,\n\t\tvalidations,\n\t\tredemptions,\n\t\tpromotions,\n\t\tcustomers,\n\t\tconsents,\n\t\torders,\n\t\tproducts,\n\t\tproductCollections,\n\t\tqualifications,\n\t\trewards,\n\t\tloyalties,\n\t\tsegments,\n\t\tvalidationRules,\n\t\tevents,\n\t\tasyncActions,\n\t\tapiLimitsHandler,\n\t\tmetadataSchemas,\n\t}\n}\n","import * as T from './types/ClientSide'\nimport * as TQ from './types/Qualifications'\n\nimport { assert, encode, isObject, isOptionalObject, isOptionalString, isString } from './helpers'\n\nimport type { RequestController } from './RequestController'\n\nexport class ClientSide {\n\tconstructor(private client: RequestController, private trackingId?: string) {}\n\n\tpublic setIdentity(identity?: string) {\n\t\tthis.trackingId = identity\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/vouchers-validate\n\t */\n\tpublic validate(params: T.ClientSideValidateParams | string) {\n\t\tassert(\n\t\t\tisObject(params) || isString(params),\n\t\t\t'client.validate: expected \"params\" argument to be an object or a string',\n\t\t)\n\n\t\tconst query: Record<string, any> = {}\n\n\t\tif (isString(params)) {\n\t\t\tquery.code = params\n\t\t} else {\n\t\t\tquery.code = params.code\n\t\t\tquery.item = params.items\n\t\t\tquery.amount = params.amount\n\t\t\tquery.metadata = params.metadata\n\t\t\tquery.order = { metadata: params.orderMetadata }\n\t\t\tquery.customer = params.customer\n\t\t\tquery.tracking_id = params.tracking_id || this.trackingId\n\t\t\tquery.session_type = params.session_type\n\t\t\tquery.session_key = params.session_key\n\t\t\tquery.session_ttl = params.session_ttl\n\t\t\tquery.session_ttl_unit = params.session_ttl_unit\n\t\t}\n\n\t\tif (!!query.code) {\n\t\t\tquery.code = query.code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\t\t}\n\n\t\tassert(isOptionalObject(query?.customer), 'client.validate: expected \"params.customer\" to be an object')\n\t\tassert(isOptionalString(query?.customer?.source_id), 'client.validate: expected \"params.customer.source_id\" to be a string') // prettier-ignore\n\t\tassert(isOptionalObject(query?.customer?.metadata), 'client.validate: expected \"params.customer.metadata\" to be an object') // prettier-ignore\n\n\t\tconst path = query.code ? '/validate' : '/promotions/validation'\n\n\t\treturn this.client.get<T.ClientSideValidateResponse>(path, query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-voucher-client-side\n\t */\n\tpublic redeem(code: string, payload: T.ClientSideRedeemPayload = {}) {\n\t\tassert(isString(code), 'client.redeem - please provide a valid Voucher code')\n\n\t\tcode = code.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\tpayload.customer = payload.customer ?? {}\n\t\tpayload.customer.source_id = payload.customer.source_id ?? this.trackingId\n\n\t\treturn this.client.post<T.ClientSideRedeemResponse>('/redeem', payload, { code })\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-publication\n\t */\n\tpublic publish(\n\t\tcampaign: string,\n\t\tpayload: T.ClientSidePublishPayload = {},\n\t\tqueryParams: T.ClientSidePublishQueryParams = {},\n\t) {\n\t\tassert(isObject(payload), 'client.publish - expected payload to be an object')\n\n\t\tconst preparedPayload: T.ClientSidePublishPreparedPayload = {}\n\n\t\tpreparedPayload.customer = payload.customer ?? {}\n\t\tpreparedPayload.customer.source_id = payload.customer?.source_id ?? this.trackingId\n\t\tpreparedPayload.channel = payload.channel ?? 'Voucherify.js' // @todo - removed hard-coded channel\n\n\t\tassert(\n\t\t\tisString(preparedPayload.customer?.source_id),\n\t\t\t'client.publish - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\tqueryParams.campaign = campaign.replace(/[\\r\\n\\t\\f\\v]/g, '').trim()\n\n\t\treturn this.client.post<T.ClientSidePublishResponse>('/publish', preparedPayload, queryParams)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/track-custom-event-client-side\n\t */\n\n\tpublic track(\n\t\tevent_name: string,\n\t\tcustomer: T.ClientSideTrackCustomer,\n\t\tmetadata?: Record<string, any>,\n\t\treferral?: T.ClientSideTrackReferral,\n\t\tloyalty?: T.ClientSideTrackLoyalty,\n\t) {\n\t\tassert(isString(event_name), 'client.track - expected event name to be an string')\n\t\tassert(isObject(customer), 'client.track - expected customer to be an object')\n\n\t\tconst payload: T.ClientSideTrackPayload = {\n\t\t\tevent: event_name,\n\t\t\tmetadata: metadata ?? {},\n\t\t\tcustomer: customer,\n\t\t\treferral: referral ?? undefined,\n\t\t\tloyalty: loyalty ?? undefined,\n\t\t}\n\n\t\tpayload.customer.source_id = customer.source_id ?? this.trackingId\n\n\t\tassert(\n\t\t\tisString(payload.customer?.source_id),\n\t\t\t'client.track - expected payload to contain customer source id or to have tracking id set up by Voucherify client',\n\t\t)\n\n\t\treturn this.client.post<T.ClientSideTrackResponse>('/events', payload)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/list-vouchers\n\t */\n\tpublic listVouchers(params: T.ClientSideListVouchersParams = {}) {\n\t\tconst query: Record<string, any> = {}\n\n\t\tquery.campaign = params.campaign\n\t\tquery.category = params.category\n\t\tquery.page = params.page\n\t\tquery.limit = params.limit\n\t\tquery.customer = params.customer\n\t\tquery.created_at = params.created_at\n\t\tquery.updated_at = params.updated_at\n\n\t\treturn this.client.get<T.ClientSideListVouchersResponse>('/vouchers', query)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/create-customer\n\t */\n\tpublic createCustomer(customer: T.ClientSideCustomersCreateParams, enableDoubleOptIn?: boolean) {\n\t\treturn this.client.post<T.ClientSideCustomersCreateResponse>(\n\t\t\t'/customers',\n\t\t\tcustomer,\n\t\t\t{},\n\t\t\tenableDoubleOptIn ? { 'X-Voucherify-Double-Opt-In': true } : {},\n\t\t)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/get-consent-client-side\n\t */\n\tpublic listConsents() {\n\t\treturn this.client.get<T.ClientSideConsentsListResponse>('/consents')\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/update-customers-consents-client\n\t */\n\tpublic updateConsents(idOrSourceId: string, consents: T.ClientSideCustomersUpdateConsentsBody) {\n\t\treturn this.client.put<undefined>(`/customers/${encode(idOrSourceId)}/consents`, consents)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/validate-stackable-discounts-client-side\n\t */\n\tpublic validateStackable(params: T.ClientSideValidationsValidateStackableParams) {\n\t\treturn this.client.post<T.ClientSideValidationValidateStackableResponse>(`/validations`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/redeem-stackable-discounts-client-side\n\t */\n\tpublic redeemStackable(params: T.ClientSideRedemptionsRedeemStackableParams) {\n\t\treturn this.client.post<T.ClientSideRedemptionsRedeemStackableResponse>(`/redemptions`, params)\n\t}\n\t/**\n\t * @see https://docs.voucherify.io/reference/check-eligibility\n\t */\n\tpublic qualifications(body: TQ.QualificationsCheckEligibilityRequestBody) {\n\t\treturn this.client.post<TQ.QualificationsCheckEligibilityResponseBody>('/qualifications', body)\n\t}\n}\n","import { assert, environment, isObject, isOptionalString, isString } from './helpers'\n\nimport { ClientSide } from './ClientSide'\nimport { RequestController } from './RequestController'\n\nexport type { ClientSide }\n\nexport interface VoucherifyClientSideOptions {\n\t/**\n\t * Optionally, you can add `apiUrl` to the client options if you want to use Voucherify running in a specific region.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tapiUrl: 'https://<region>.api.voucherify.io'\n\t * })\n\t * ```\n\t */\n\tapiUrl?: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientApplicationId: string\n\t/**\n\t * [Log-in](https://app.voucherify.io/#/login) to Voucherify web interface and obtain your `Client-side Keys` from [Configuration](https://app.voucherify.io/#/app/core/projects/current/general):\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY'\n\t * })\n\t * ```\n\t */\n\tclientSecretKey: string\n\t/**\n\t * Set customer identity when using React Widget. In other situations, use `setIdentity` method:\n\t *\n\t * ```javascript\n\t * client.setIdentity('gustav@purpleson.com')\n\t * ```\n\t */\n\ttrackingId?: string\n\t/**\n\t * **(Required in Node.js)** Set the origin from where the requests are made.\n\t *\n\t * ```javascript\n\t * const client = VoucherifyClientSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\torigin: 'your-domain.com'\n\t * })\n\t * ```\n\t *\n\t * @note in the browser, this option will be ignored. The `origin` header is a [forbidden header name](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name) and it'll be automatically set by the browser for every request.\n\t */\n\torigin?: string\n\t/**\n\t * You can pass additional headers to requests made by the API Client.\n\t * It can prove to be useful when debugging various scenarios.\n\t * ```javascript\n\t * const voucherify = VoucherifyServerSide({\n\t *\t\tclientApplicationId: 'YOUR-CLIENT-APPLICATION-ID',\n\t *\t\tclientSecretKey: 'YOUR-CLIENT-SECRET-KEY',\n\t *\t\tcustomHeaders: {\n\t *\t\t\t\"DEBUG-HEADER\": \"my_value\",\n\t *\t\t\t\"TEST-HEADER\": \"another_value\"\n\t *\t\t}\n\t * })\n\t * ```\n\t */\n\tcustomHeaders?: Record<string, string>\n\t/**\n\t * If you wish to include original Axios error in VoucherifyError instance set this to true\n\t * It can prove to be useful when debugging various scenarios.\n\t * The original Axios error will be included in cause property of VoucherifyError\n\t */\n\texposeErrorCause?: boolean\n\t/**\n\t * Optionally, you can set timeout in miliseconds. After this time request will be aborted. By default Voucherify's API has timeout value of 3 minutes.\n\t */\n\ttimeoutMs?: number\n}\ninterface VoucherifyCustomerHeaders {\n\t'X-Client-Application-Id': string\n\t'X-Client-Token': string\n\t'X-Voucherify-Channel'?: string\n\torigin?: string\n}\nexport function VoucherifyClientSide(options: VoucherifyClientSideOptions): ClientSide {\n\tassert(isObject(options), 'VoucherifyCustomer: expected \"options\" argument to be an object')\n\tassert(isString(options.clientApplicationId), 'VoucherifyCustomer: \"options.clientApplicationId\" is required')\n\tassert(isString(options.clientSecretKey), 'VoucherifyCustomer: \"options.clientSecretKey\" is required')\n\tassert(isOptionalString(options.apiUrl), 'VoucherifyCustomer: expected \"options.baseUrl\" to be a string')\n\tassert(isOptionalString(options.trackingId), 'VoucherifyCustomer: expected \"options.trackingId\" to be a string')\n\n\tlet headers: VoucherifyCustomerHeaders = {\n\t\t'X-Client-Application-Id': options.clientApplicationId,\n\t\t'X-Client-Token': options.clientSecretKey,\n\t\t'X-Voucherify-Channel': `${environment()}-ClientSide-SDK-v${__VERSION__}`,\n\t}\n\n\tif (environment().startsWith('Node')) {\n\t\tassert(isString(options.origin), 'VoucherifyCustomer: \"options.origin\" is required in Node.js')\n\t\theaders['origin'] = options.origin\n\t}\n\n\tif (isObject(options.customHeaders)) {\n\t\theaders = Object.assign({}, headers, options.customHeaders)\n\t}\n\n\tconst client = new RequestController({\n\t\tbasePath: 'client/v1',\n\t\tbaseURL: options.apiUrl ?? 'https://api.voucherify.io',\n\t\theaders,\n\t\texposeErrorCause: options.exposeErrorCause ?? false,\n\t\ttimeoutMs: options.timeoutMs ?? 0,\n\t})\n\n\treturn new ClientSide(client, options.trackingId)\n}\n"],"names":["DiscountVouchersTypesEnum","VoucherifyError","Error","constructor","statusCode","body","axiosError","message","generateMessage","code","key","details","request_id","resource_id","resource_type","related_object_ids","related_object_type","related_object_total","cause","JSON","stringify","RequestController","basePath","baseURL","headers","exposeErrorCause","timeoutMs","request","lastResponseHeaders","isLastResponseHeadersSet","axios","create","responseType","interceptors","response","use","error","status","Promise","reject","data","undefined","isLastReponseHeadersSet","getLastResponseHeaders","setLastResponseHeaders","result","String","setBaseUrl","defaults","get","path","params","paramsSerializer","Qs","timeout","post","put","delete","encode","value","encodeURIComponent","isString","isOptionalString","isObject","Array","isArray","isOptionalObject","environment","window","document","self","name","process","versions","node","version","navigator","userAgent","includes","assert","condition","omit","obj","keys","Object","fromEntries","entries","filter","propertyKey","AsyncActions","client","asyncActionId","list","CampaignsQualifications","examine","Campaigns","qualifications","campaign","update","nameOrId","addVoucher","addCertainVoucher","importVouchers","campaignName","vouchers","importVouchersCSV","campaignId","filePath","startsWith","fs","default","fileStream","createReadStream","form","FormData","append","enable","disable","DistributionsPublications","Distributions","exports","publications","Exports","exportResource","query","exportResourceId","Events","eventName","event","Balance","VouchersQualification","Vouchers","balance","voucher","import","bulkUpdateMetadata","bulkUpdate","releaseValidationSession","sessionKey","importCSV","listTransactions","exportTransactions","Validations","promotions","validateVoucher","validate","context","validateStackable","Redemptions","redeem","redeemStackable","redemptionId","getForVoucher","rollback","queryParams","payload","reason","tracking_id","trackingId","customer","rollbackStackable","parentRedemptionId","PromotionTiers","listAll","promotionId","tierId","promotionsTierId","id","Promotions","tiers","stack","promotionCampaign","Customers","customerId","scroll","startingAfter","starting_after","order","assign","customers","length","created_at","has_more","source_id","customerWithoutId","updateInBulk","updateMetadataInBulk","sourceIdsAndMetadata","deletePermanently","updateConsents","idOrSourceId","consents","listActivities","Consents","Orders","orderId","orders","Products","product","productId","products","createSku","sku","getSku","skuId","updateSku","deleteSku","listSkus","importSkusCSV","Rewards","reward","rewardId","getAssignment","assignmentId","listAssignments","createAssignment","assignment","updateAssignment","deleteAssignment","Loyalties","listRewardAssignments","createRewardAssignments","updateRewardAssignment","deleteRewardAssignment","getRewardAssignment","listEarningRules","createEarningRule","earningRules","updateEarningRule","earningRule","deleteEarningRule","earningRuleId","getEarningRule","enableEarningRule","disableEarningRule","listMembers","createMember","member","getMember","memberId","getMemberActivities","listMemberRewards","addOrRemoveCardBalance","addPoints","transferPoints","loyaltiesTransferPoints","getPointsExpiration","redeemReward","listLoyaltyTierRewards","listCardTransactions","exportCardTransactions","getRewardDetails","listTiers","getTier","createTiers","listLoyaltyTierEarningRules","listMemberLoyaltyTiers","ValidationRules","validationRule","validationRuleId","listRulesAssignments","Segments","segment","segmentId","ApiLimitsHandler","requestController","getLastResponseHeadersFromController","areLimitsAvailable","getRateLimit","rateLimit","parseInt","getRateLimitRemaining","rateLimitRemaining","getRetryAfter","retryAfter","MetadataSchemas","schemaName","Categories","createCategory","categoryId","updateCategory","PromotionsStacks","listInCampaign","createInCampaign","stackId","ProductCollections","productCollection","productCollectionId","listProducts","Qualifications","checkEligibility","VoucherifyServerSide","options","applicationId","secretKey","apiVersion","channel","customHeaders","dangerouslySetSecretKeyInBrowser","toLowerCase","apiUrl","asyncActions","campaigns","categories","exportsNamespace","events","distributions","promotionTiers","promotionStack","validations","redemptions","productCollections","rewards","loyalties","segments","validationRules","apiLimitsHandler","metadataSchemas","ClientSide","setIdentity","identity","item","items","amount","metadata","orderMetadata","session_type","session_key","session_ttl","session_ttl_unit","replace","trim","publish","preparedPayload","track","event_name","referral","loyalty","listVouchers","category","page","limit","updated_at","createCustomer","enableDoubleOptIn","listConsents","VoucherifyClientSide","clientApplicationId","clientSecretKey","origin"],"mappings":"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"}