import {z} from 'zod' export type GetApiOrdersV3MarketplaceTechnicalCodeAccountIdBeezUPOrderIdArgs = {marketplaceTechnicalCode: unknown, accountId: number, beezUPOrderId: unknown, 'If-None-Match'?: string | undefined}; export type GetApiOrdersV3MarketplaceTechnicalCodeAccountIdBeezUPOrderIdOptions = {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 orderItem = z.object({beezUPOrderItemId: z.string(), orderItem_Id: z.string().optional(), orderItem_OrderItemType: z.string(), orderItem_MerchantImportedProductId: z.string().optional(), orderItem_MerchantImportedProductIdColumnName: z.string().optional(), orderItem_MerchantImportedProductUrl: z.string().optional(), orderItem_MerchantProductIdColumnName: z.string().optional(), orderItem_BeezUPStoreId: z.string().optional(), orderItem_ItemTax: z.number().optional(), orderItem_Title: z.string().optional(), orderItem_ImageUrl: z.string().optional(), orderItem_MerchantProductId: z.string().optional(), orderItem_MarketPlaceProductId: z.string().optional(), orderItem_gtin: z.string().optional(), orderItem_ItemPrice: z.number().optional(), orderItem_Quantity: z.number().optional(), orderItem_TotalPrice: z.number().optional(), orderItem_Shipping_Price: z.number().optional(), orderItem_Condition: z.string().optional(), orderItem_MarketplaceProductUri: z.string().optional(), orderItem_MarketplaceImageUri: z.string().optional(), orderItem_OldTakeover: z.string().optional(), orderItem_RecollectedQuantity: z.string().optional(), orderItem_TotalPrice_ExclVat: z.number().optional(), orderItem_OrderLineStateReasonLabel: z.string().optional(), orderItem_OrderLineState: z.string().optional(), orderItem_MarketPlaceOrderItemId: z.string().optional(), orderItem_VatRate: z.number().optional(), orderItem_ShippingVatRate: z.number().optional(), orderItem_EcoContributions: z.number().optional(), orderItem_IsGift: z.boolean().optional(), orderItem_GiftMessageText: z.string().optional(), orderItem_GiftWrapLevel: z.string().optional(), orderItem_Delivery_PromisedAtMin: z.string().optional(), orderItem_Delivery_PromisedAtMax: z.string().optional(), orderItem_TaxModel: z.string().optional(), orderItem_PromotionDiscount: z.string().optional(), orderItem_Mpid: z.string().optional(), orderHarvestErrors: orderHarvestErrors.optional()}); 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 linksGetOrderHistoryV3Link = 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 linksHarvestOrderV3Link = 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 linksSetMerchantOrderInfoV3Link = 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 linksClearMerchantOrderInfoV3Link = 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 orderLinks = z.object({self: linksGetOrderV3Link, history: linksGetOrderHistoryV3Link, harvest: linksHarvestOrderV3Link, setMerchantInfo: linksSetMerchantOrderInfoV3Link, clearMerchantInfo: linksClearMerchantOrderInfoV3Link}); export const linksChangeOrderV3Link = 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 orderTransitionLinks = z.array(linksChangeOrderV3Link); export const orderWithLinks = 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(), order_MarketPlaceChannel: z.string().optional(), order_TotalTax: z.number().optional(), order_TotalCommission: z.number().optional(), order_PaymentMethod: z.string().optional(), order_PayingUtcDate: z.string().optional(), order_Comment: z.string().optional(), order_RelayId: z.string().optional(), order_StatusReasonCode: z.string().optional(), order_Shipping_FirstName: z.string().optional(), order_Shipping_LastName: z.string().optional(), order_Shipping_Civility: z.string().optional(), order_Shipping_CompanyName: z.string().optional(), order_Shipping_AddressName: z.string().optional(), order_Shipping_Email: z.string().optional(), order_Shipping_AddressLine1: z.string().optional(), order_Shipping_AddressLine2: z.string().optional(), order_Shipping_AddressLine3: z.string().optional(), order_Shipping_AddressPostalCode: z.string().optional(), order_Shipping_AddressCity: z.string().optional(), order_Shipping_AddressStateOrRegion: z.string().optional(), order_Shipping_AddressCountryName: z.string().optional(), order_Shipping_AddressCountryIsoCodeAlpha2: z.string().optional(), order_Shipping_Phone: z.string().optional(), order_Shipping_MobilePhone: z.string().optional(), order_Shipping_Price: z.number().optional(), order_Shipping_Method: z.string().optional(), order_Shipping_ShippingTax: z.number().optional(), order_Shipping_EarliestShipUtcDate: z.string().optional(), order_Shipping_LatestShipUtcDate: z.string().optional(), order_Buyer_Identifier: z.string().optional(), order_Buyer_FirstName: z.string().optional(), order_Buyer_LastName: z.string().optional(), order_Buyer_Civility: z.string().optional(), order_Buyer_CompanyName: z.string().optional(), order_Buyer_Email: z.string().optional(), order_Buyer_AddressLine1: z.string().optional(), order_Buyer_AddressLine2: z.string().optional(), order_Buyer_AddressLine3: z.string().optional(), order_Buyer_AddressPostalCode: z.string().optional(), order_Buyer_AddressCity: z.string().optional(), order_Buyer_AddressStateOrRegion: z.string().optional(), order_Buyer_AddressCountryName: z.string().optional(), order_Buyer_AddressCountryIsoCodeAlpha2: z.string().optional(), order_Buyer_Phone: z.string().optional(), order_Buyer_MobilePhone: z.string().optional(), order_IsPrime: z.boolean().optional(), order_FulfilledBy: z.string().optional(), order_IsBusiness: z.boolean().optional(), order_ChannelOrderId: z.string().optional(), order_AdditionalOrderId: z.string().optional(), order_SellerContractId: z.string().optional(), order_Shipping_Deadline: z.string().optional(), order_Total_Discount: z.number().optional(), order_Total_AdditionalFees: z.number().optional(), order_EarliestDeliveryDate: z.string().optional(), order_LatestDeliveryDate: z.string().optional(), order_TotalPrice_ExclVat: z.number().optional(), order_HasIncident: z.boolean().optional(), order_PaymentMethodDetails: z.string().optional(), order_Shipping_ShipmentServiceLevelCategory: z.string().optional(), order_Shipping_RefundAmount: z.string().optional(), order_PurchaseOrderNumber: z.string().optional(), order_Shipping_Label: z.string().optional(), order_IsAmazonInvoiced: z.string().optional(), order_Carriers: z.string().optional(), order_Buyer_CompanyVATNumber: z.string().optional(), order_PromotionDiscount_Amount: z.string().optional(), order_OrderSourceUri: z.string().optional(), order_OrderItemsSourceUri: z.string().optional(), orderItems: z.array(orderItem), links: orderLinks, transitionLinks: orderTransitionLinks}); 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 full Order and Order Item(s) properties * * GET /orders/v3//{marketplaceTechnicalCode}/{accountId}/{beezUPOrderId} */ export const getApiOrdersV3MarketplaceTechnicalCodeAccountIdBeezUPOrderId = async (args: GetApiOrdersV3MarketplaceTechnicalCodeAccountIdBeezUPOrderIdArgs, options?: GetApiOrdersV3MarketplaceTechnicalCodeAccountIdBeezUPOrderIdOptions) => { const {baseUrl = "https://api.beezup.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args['If-None-Match'] != null) headers.set("If-None-Match", String(args['If-None-Match'])) const url = `${baseUrl.replace(/\/+$/, '')}/orders/v3//${encodeURIComponent(String(args.marketplaceTechnicalCode))}/${encodeURIComponent(String(args.accountId))}/${encodeURIComponent(String(args.beezUPOrderId))}${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(orderWithLinks, await res.json()) };