import {z} from 'zod' export type BeezUPCommonMarketplaceTechnicalCode = string; export type BeezUPCommonMarketplaceBusinessCode = string; export type AccountId = number; export type BeezUPCommonStoreId = unknown; export type BeezUPOrderStatus = string; export type DateSearchType = 'Modification' | 'Purchase' | 'MarketPlaceModification'; export type InvoiceAvailabilityType = string; export type OrderBuyerName = string; export type MarketplaceOrderId = string; export type OrderMerchantInfoSynchronizationStatus = string; export type OrderMerchantOrderId = string; export type PageSize = number; export type PageNumber = number; export type OrderListRequest = {marketplaceTechnicalCodes?: Array | undefined, marketplaceBusinessCodes?: Array | undefined, accountIds?: Array | undefined, storeIds?: Array | undefined, beezUPOrderStatuses?: Array | undefined, dateSearchType?: DateSearchType | undefined, beginPeriodUtcDate: string, endPeriodUtcDate: string, invoiceAvailabilityType?: InvoiceAvailabilityType | undefined, order_Buyer_Name?: OrderBuyerName | undefined, marketplaceOrderIds?: Array | undefined, orderMerchantInfoSynchronizationStatus?: OrderMerchantInfoSynchronizationStatus | undefined, order_MerchantOrderIds?: Array | undefined, pageSize: PageSize, pageNumber: PageNumber}; export type CreateApiOrdersV3ListLightArgs = {body: OrderListRequest}; export type CreateApiOrdersV3ListLightOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const beezUPMarketplaceTechnicalCode = z.string(); export const beezUPMarketplaceAccountId = z.number().int(); export const beezUPOrderId = z.string(); export const httpUrl = z.string(); export const beezUPMarketplaceBusinessCode = z.string(); export const marketplaceOrderId = z.string(); export const beezUPOrderStatus = z.string(); export const marketplaceOrderStatus = z.string(); export const orderMerchantOrderId = z.string(); export const orderMerchantECommerceSoftwareName = z.string(); export const orderMerchantECommerceSoftwareVersion = z.string(); export const orderBuyerName = z.string(); export const currencyCode = z.string(); export const etag = z.string(); export const orderHarvestErrorValue = z.object({technicalCodePropertyName: z.string(), errorMessage: z.string()}); export const orderHarvestErrors = z.record(z.string(), orderHarvestErrorValue); export const docUrl = z.string(); 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 linksGetOrderV3Link = 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 orderHeaderLinks = z.object({self: linksGetOrderV3Link}); export const orderHeaderWithLinks = z.object({marketplaceTechnicalCode: beezUPMarketplaceTechnicalCode, accountId: beezUPMarketplaceAccountId, beezUPOrderId: beezUPOrderId, beezUPOrderUrl: httpUrl.optional(), marketplaceBusinessCode: beezUPMarketplaceBusinessCode, order_MarketplaceOrderId: marketplaceOrderId, order_Status_BeezUPOrderStatus: beezUPOrderStatus, order_Status_MarketplaceOrderStatus: marketplaceOrderStatus.optional(), order_MerchantOrderId: orderMerchantOrderId.optional(), order_MerchantECommerceSoftwareName: orderMerchantECommerceSoftwareName.optional(), order_MerchantECommerceSoftwareVersion: orderMerchantECommerceSoftwareVersion.optional(), order_PurchaseUtcDate: z.string(), order_LastModificationUtcDate: z.string(), order_MarketplaceLastModificationUtcDate: z.string(), order_Buyer_Name: orderBuyerName.optional(), order_TotalPrice: z.number().optional(), order_CurrencyCode: currencyCode.optional(), order_Invoice_Number: z.string().optional(), order_Invoice_Uri: z.string().optional(), processing: z.boolean(), etag: etag, orderHarvestErrors: orderHarvestErrors.optional(), links: orderHeaderLinks}); export const linksHarvestAllV3Link = 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 linksSetMerchantOrderInfoListV3Link = 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 linksClearMerchantOrderInfoListV3Link = 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 linksGetMarketplaceAccountsSynchronizationV3Link = 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 linksGetOrderListLightV3Link = 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 orderListLightLinks = z.object({harvest: linksHarvestAllV3Link, setMerchantInfos: linksSetMerchantOrderInfoListV3Link, clearMerchantInfos: linksClearMerchantOrderInfoListV3Link, status: linksGetMarketplaceAccountsSynchronizationV3Link, self: linksGetOrderListLightV3Link}); 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 paginationResultLinks = z.object({first: link3, last: link3, previous: link3.optional(), next: link3.optional()}); export const paginationResult = z.object({entryCount: z.number().int().gte(0), pageCount: z.number().int().gte(0), totalEntryCount: z.number().int().gte(0), links: paginationResultLinks}); export const orderListLightWithLinks = z.object({orders: z.array(orderHeaderWithLinks), links: orderListLightLinks, paginationResult: paginationResult}); 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 a paginated list of all Orders without details * * POST /orders/v3//list/light */ export const createApiOrdersV3ListLight = async (args: CreateApiOrdersV3ListLightArgs, options?: CreateApiOrdersV3ListLightOptions) => { const {baseUrl = "https://api.beezup.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/orders/v3//list/light${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(orderListLightWithLinks, await res.json()) };