import {z} from 'zod' export type GetApiV2UserMarketplacesOrdersSubscriptionsOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const subscriptionId = z.string(); export const subscriptionStatus = z.enum(["active", "inactive"]); export const httpUrl = z.string(); export const subscriptionName = z.string(); export const subscriptionMerchantApplicationName = z.string(); export const subscriptionMerchantApplicationVersion = z.string(); export const consumptionAvailabilityStatus = z.enum(["Available", "Degraded", "Unavailable"]); export const email = z.string(); export const docUrl = z.string(); export const errorCode = z.string(); export const cultureName = z.string(); export const userErrorMessageArguments = z.record(z.string(), z.object({})); export const userErrorMessage = z.object({docUrl: docUrl.optional(), code: errorCode, message: z.string(), cultureName: cultureName.optional(), arguments: userErrorMessageArguments.optional()}); export const errorResponseMessage = z.object({errors: z.array(userErrorMessage)}); export const href = z.string(); export const operationId = z.string(); export const httpMethod = z.enum(["GET", "POST", "PATCH", "DELETE", "PUT", "HEAD"]); export const parameterIn = z.enum(["path", "header", "query", "body", "file"]); export const lOVLink3 = z.object({href: z.string(), method: httpMethod.optional()}); export const validationPattern = z.string(); export const linkParameter3 = z.object({label: z.string().optional(), value: z.object({}).optional(), required: z.boolean().optional(), in: parameterIn, lovLink: lOVLink3.optional(), lovRequired: z.boolean().optional(), description: z.string().optional(), schema: z.string().optional(), pattern: validationPattern.optional(), properties: z.unknown()}); export const linkParameter3Types = z.record(z.string(), linkParameter3); export const successSummary = z.object({successCode: z.string().optional(), successMessage: z.string().optional(), successArguments: z.record(z.string(), z.string()).optional(), propertyName: z.string().optional(), propertyValue: z.string().optional(), objectName: z.string().optional()}); export const exceptionDetail = z.object({helpLink: z.string().optional(), message: z.string().optional(), stackTrace: z.string().optional(), type: z.string().optional()}); export const errorSummary = z.object({utcDate: z.string().optional(), errorGuid: z.string().optional(), errorCode: z.string().optional(), errorMessage: z.string().optional(), technicalErrorMessage: z.string().optional(), exceptionDetail: exceptionDetail.optional(), errorArguments: z.record(z.string(), z.string()).optional(), propertyName: z.string().optional(), propertyValue: z.string().optional(), objectName: z.string().optional(), source: z.string().optional()}); export const warningSummary = z.object({technicalErrorMessage: z.string().optional(), warningMessage: z.string().optional(), warningCode: z.string().optional(), warningArguments: z.record(z.string(), z.string()).optional()}); export const infoSummary = z.object({informationCode: z.string().optional(), informationMessage: z.string().optional(), informationArguments: z.record(z.string(), z.string()).optional(), propertyName: z.string().optional(), propertyValue: z.string().optional(), objectName: z.string().optional()}); export const infoSummaries = z.object({successes: z.array(successSummary).optional(), errors: z.array(errorSummary).optional(), warnings: z.array(warningSummary).optional(), informations: z.array(infoSummary).optional()}); export const link3 = z.object({label: z.string().optional(), docUrl: docUrl.optional(), description: z.string().optional(), href: href, operationId: operationId.optional(), method: httpMethod.optional(), parameters: linkParameter3Types.optional(), urlTemplated: z.boolean().optional(), allRequiredParamsProvided: z.boolean().optional(), allOptionalParamsProvided: z.boolean().optional(), info: infoSummaries.optional(), rel: z.string().optional()}); export const subscriptionLinks = z.object({reporting: link3.optional(), activate: link3.optional(), deactivate: link3.optional(), retry: link3.optional(), delete: link3.optional()}); export const subscriptionIndex = z.object({id: subscriptionId, status: subscriptionStatus, targetUrl: httpUrl, name: subscriptionName, merchantApplicationName: subscriptionMerchantApplicationName, merchantApplicationVersion: subscriptionMerchantApplicationVersion, recoverBeginPeriodOrderLastModificationUtcDate: z.string().optional(), recoverEndPeriodOrderLastModificationUtcDate: z.string().optional(), lastOrderPushedModificationUtcDate: z.string().optional(), lastSuccessfulOrderPushedUtcDate: z.string().optional(), consumerHealthStatus: consumptionAvailabilityStatus.optional(), consumerUnvailableSinceUtcDate: z.string().optional(), lastRetryUtcDate: z.string().optional(), retryCount: z.number().int().optional(), maxRetryCount: z.number().int().optional(), nextScheduledRetryUtcDate: z.string().optional(), merchantEmailAlert: email.optional(), lastErrorMessage: errorResponseMessage.optional(), consumerLastRequestSentUri: httpUrl.optional(), links: subscriptionLinks.optional()}); export const getApiV2UserMarketplacesOrdersSubscriptionsResponse = z.array(subscriptionIndex); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get the subscription list * * GET /v2/user/marketplaces/orders/subscriptions/ */ export const getApiV2UserMarketplacesOrdersSubscriptions = async (options?: GetApiV2UserMarketplacesOrdersSubscriptionsOptions) => { const {baseUrl = "https://api.beezup.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/v2/user/marketplaces/orders/subscriptions/${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiV2UserMarketplacesOrdersSubscriptionsResponse, await res.json()) };