import {z} from 'zod' export type AdditionalInformation = {ASN?: number | undefined, IPS?: string | undefined, city?: string | undefined, country?: string | undefined, hostname?: string | undefined, latitude?: string | undefined, longitude?: string | undefined, organization?: string | undefined, region?: string | undefined, timezone?: string | undefined}; export type AppliedDiscount = {amount?: string | undefined, description?: string | undefined, title?: string | undefined, value?: string | undefined, value_type?: string | undefined}; export type CustomerAddressDetail = {address1?: string | undefined, address2?: string | undefined, city?: string | undefined, company?: string | undefined, country?: string | undefined, country_code?: string | undefined, country_id?: number | undefined, country_name?: string | undefined, cpf_number?: string | undefined, cpf_or_cnpj_number?: string | undefined, created_at?: string | undefined, default?: boolean | undefined, first_name?: string | undefined, id?: number | undefined, last_name?: string | undefined, latitude?: number | undefined, longitude?: number | undefined, name?: string | undefined, phone?: string | undefined, province?: string | undefined, province_code?: string | undefined, updated_at?: string | undefined, zip?: string | undefined}; export type ClientDetailsDto = {accept_language?: string | undefined, browser_height?: number | undefined, browser_ip?: string | undefined, browser_width?: number | undefined, session_hash?: string | undefined, user_agent?: string | undefined}; export type OrderDiscountApplicationDto = {allocation_method?: string | undefined, code?: string | undefined, description?: string | undefined, discount_type?: string | undefined, is_applied_entire_order?: boolean | undefined, target_selection?: string | undefined, target_type?: string | undefined, title?: string | undefined, type?: string | undefined, value?: number | undefined, value_type?: string | undefined}; export type OrderDiscountCodeDto = {amount?: number | undefined, code?: string | undefined, discount_type?: string | undefined, price_rule_id?: number | undefined, price_rule_type?: string | undefined, scope?: string | undefined, type?: string | undefined}; export type FulfillmentDto = {claim_id?: number | undefined, created_at?: number | undefined, date_done?: number | undefined, detected_tracking_company?: string | undefined, first_tracking_step_at?: number | undefined, id?: number | undefined, last_crawled_at?: number | undefined, last_mile_tracking_company?: string | undefined, last_mile_tracking_number?: string | undefined, last_tracking_step_at?: number | undefined, name?: string | undefined, notify_customer?: boolean | undefined, order_id?: number | undefined, send_delay_mail?: boolean | undefined, service?: string | undefined, shipment_status?: string | undefined, status?: string | undefined, tracking_company?: string | undefined, tracking_number?: string | undefined, tracking_numbers?: Array | undefined, tracking_steps?: Record | undefined, tracking_url?: string | undefined, tracking_urls?: Array | undefined, updated_at?: number | undefined, variant_inventory_management?: string | undefined}; export type OrderLineItemDiscountApplicationDto = {amount?: number | undefined, discount_application_index?: number | undefined}; export type LineItemShippingRate = {code?: string | undefined, id?: number | undefined, is_post_purchase?: boolean | undefined, price?: number | undefined, title?: string | undefined, type?: string | undefined, variant_id?: number | undefined}; export type TaxLineDto = {price?: number | undefined, rate?: number | undefined, title?: string | undefined}; export type OrderLineItemDto = {discount_allocations?: Array | undefined, discount_amount?: number | undefined, fulfillable_quantity?: number | undefined, fulfillment_service?: string | undefined, fulfillment_status?: string | undefined, gift_card?: boolean | undefined, image_src?: string | undefined, is_post_purchase_item?: boolean | undefined, item_discount_price?: number | undefined, line_item_discount_amount?: number | undefined, line_item_discount_price?: number | undefined, line_item_price?: number | undefined, line_item_price_after_discount?: number | undefined, line_item_price_before_discount?: number | undefined, line_item_price_with_explicit_discount?: number | undefined, line_item_weight?: number | undefined, name?: string | undefined, not_explicit_discount_price?: number | undefined, order_id?: number | undefined, price?: number | undefined, product_id?: number | undefined, product_is_deleted?: boolean | undefined, product_type?: string | undefined, properties?: Array | undefined, quantity?: number | undefined, raw_price?: number | undefined, raw_weight?: number | undefined, requires_shipping?: boolean | undefined, shipping_rate?: LineItemShippingRate | undefined, sku?: string | undefined, tags?: string | undefined, tax_amount?: number | undefined, tax_lines?: Array | undefined, tax_rate?: number | undefined, taxable?: boolean | undefined, tip_payment_gateway?: string | undefined, tip_payment_method?: string | undefined, title?: string | undefined, total_discount?: number | undefined, total_item_discount_price?: number | undefined, total_line_with_discount_price?: number | undefined, total_tax_amount?: number | undefined, variant_id?: number | undefined, variant_title?: string | undefined, vendor?: string | undefined, weight?: number | undefined, weight_unit?: string | undefined}; export type RefundOrderAdjustmentDto = {amount?: number | undefined, kind?: string | undefined, order_id?: number | undefined, reason?: string | undefined, tax_amount?: number | undefined}; export type RefundLineItemDto = {discount_amount?: number | undefined, line_item?: OrderLineItemDto | undefined, line_item_id?: number | undefined, quantity?: number | undefined, restock_type?: string | undefined, subtotal?: number | undefined, title?: string | undefined, total_refund?: number | undefined, total_tax?: number | undefined, variant_title?: string | undefined}; export type Shipping = {amount?: number | undefined, full_refund?: boolean | undefined}; export type RefundTransactionDto = {amount?: number | undefined, authorization?: string | undefined, conversion_rate?: number | undefined, created_at?: number | undefined, currency?: string | undefined, currency_exchange_adjustment?: string | undefined, error_code?: string | undefined, gateway?: string | undefined, id?: number | undefined, kind?: string | undefined, message?: string | undefined, order_id?: number | undefined, parent_id?: number | undefined, payment_details?: string | undefined, processed_at?: number | undefined, receipt?: string | undefined, source_name?: string | undefined, status?: string | undefined, test?: boolean | undefined, transaction_amount?: number | undefined, transaction_currency?: string | undefined}; export type RefundDto = {created_at?: number | undefined, id?: number | undefined, is_dont_withdraw_from_balance_of_seller?: boolean | undefined, note?: string | undefined, order_adjustments?: Array | undefined, order_dto?: OrderDto | undefined, order_id?: number | undefined, payment_fee?: number | undefined, processed_at?: number | undefined, refund_line_items?: Array | undefined, restock?: boolean | undefined, shipping?: Shipping | undefined, transactions?: Array | undefined, user_id?: number | undefined}; export type ShippingLinesDto = {carrier_identifier?: string | undefined, code?: string | undefined, discounted_price?: number | undefined, fulfillment_service?: string | undefined, price?: number | undefined, source?: string | undefined, tax_lines?: Array | undefined, title?: string | undefined}; export type OrderDto = {access_key?: string | undefined, additional_information?: AdditionalInformation | undefined, applied_discount?: AppliedDiscount | undefined, balance?: number | undefined, billing_address?: CustomerAddressDetail | undefined, buyer_accepts_marketing?: boolean | undefined, cancel_reason?: string | undefined, cancelled_at?: string | undefined, cart_token?: string | undefined, chargeback_amount?: number | undefined, chargeback_deadline_at?: string | undefined, chargeback_dispute_id?: string | undefined, chargeback_status?: string | undefined, checkout_token?: string | undefined, client_details?: ClientDetailsDto | undefined, closed_at?: string | undefined, created_at?: string | undefined, created_at_in_timezone?: string | undefined, currency?: string | undefined, customer_locale?: string | undefined, discount_applications?: Array | undefined, discount_code?: Array | undefined, email?: string | undefined, financial_status?: string | undefined, fulfillment_status?: string | undefined, fulfillments?: Array | undefined, id?: number | undefined, is_in_post_purchase?: boolean | undefined, is_risk?: boolean | undefined, line_items?: Array | undefined, name?: string | undefined, not_explicit_discount?: number | undefined, note?: string | undefined, note_attributes?: Array | undefined, order_number?: number | undefined, order_status_url?: string | undefined, original_total_price?: number | undefined, payment_gateway?: string | undefined, payment_gateway_names?: Array | undefined, phone?: string | undefined, post_purchase_timeout_at?: string | undefined, previous_shipping_fee?: number | undefined, processed_at?: string | undefined, referring_site?: string | undefined, refunds?: Array | undefined, shipping_address?: CustomerAddressDetail | undefined, shipping_discount?: number | undefined, shipping_fee?: number | undefined, shipping_lines?: Array | undefined, shipping_tax?: number | undefined, shop_id?: number | undefined, source_name?: string | undefined, subtotal_price?: number | undefined, tags?: string | undefined, tax_lines?: Array | undefined, taxes_included?: boolean | undefined, token?: string | undefined, total_discounts?: number | undefined, total_line_items_discount?: number | undefined, total_line_items_price?: number | undefined, total_price?: number | undefined, total_quantity?: number | undefined, total_shipping?: number | undefined, total_tax?: number | undefined, total_tip_received?: number | undefined, total_weight?: number | undefined, updated_at?: string | undefined, weight_unit?: string | undefined}; export type CreateApiAdminDraftOrdersJsonArgs = {body: OrderDto}; export type CreateApiAdminDraftOrdersJsonOptions = {baseUrl?: string | undefined, APPACCESSTOKEN?: string | undefined, fetch?: typeof fetch | undefined}; export const additionalInformation = z.object({ASN: z.number().int().optional(), IPS: z.string().optional(), city: z.string().optional(), country: z.string().optional(), hostname: z.string().optional(), latitude: z.string().optional(), longitude: z.string().optional(), organization: z.string().optional(), region: z.string().optional(), timezone: z.string().optional()}); export const appliedDiscount = z.object({amount: z.string().optional(), description: z.string().optional(), title: z.string().optional(), value: z.string().optional(), value_type: z.string().optional()}); export const customerAddressDetail = z.object({address1: z.string().optional(), address2: z.string().optional(), city: z.string().optional(), company: z.string().optional(), country: z.string().optional(), country_code: z.string().optional(), country_id: z.number().int().optional(), country_name: z.string().optional(), cpf_number: z.string().optional(), cpf_or_cnpj_number: z.string().optional(), created_at: z.string().optional(), default: z.boolean().optional(), first_name: z.string().optional(), id: z.number().int().optional(), last_name: z.string().optional(), latitude: z.number().optional(), longitude: z.number().optional(), name: z.string().optional(), phone: z.string().optional(), province: z.string().optional(), province_code: z.string().optional(), updated_at: z.string().optional(), zip: z.string().optional()}); export const clientDetailsDto = z.object({accept_language: z.string().optional(), browser_height: z.number().int().optional(), browser_ip: z.string().optional(), browser_width: z.number().int().optional(), session_hash: z.string().optional(), user_agent: z.string().optional()}); export const orderDiscountApplicationDto = z.object({allocation_method: z.string().optional(), code: z.string().optional(), description: z.string().optional(), discount_type: z.string().optional(), is_applied_entire_order: z.boolean().optional(), target_selection: z.string().optional(), target_type: z.string().optional(), title: z.string().optional(), type: z.string().optional(), value: z.number().optional(), value_type: z.string().optional()}); export const orderDiscountCodeDto = z.object({amount: z.number().optional(), code: z.string().optional(), discount_type: z.string().optional(), price_rule_id: z.number().int().optional(), price_rule_type: z.string().optional(), scope: z.string().optional(), type: z.string().optional()}); export const fulfillmentDto = z.object({claim_id: z.number().int().optional(), created_at: z.number().int().optional(), date_done: z.number().int().optional(), detected_tracking_company: z.string().optional(), first_tracking_step_at: z.number().int().optional(), id: z.number().int().optional(), last_crawled_at: z.number().int().optional(), last_mile_tracking_company: z.string().optional(), last_mile_tracking_number: z.string().optional(), last_tracking_step_at: z.number().int().optional(), name: z.string().optional(), notify_customer: z.boolean().optional(), order_id: z.number().int().optional(), send_delay_mail: z.boolean().optional(), service: z.string().optional(), shipment_status: z.string().optional(), status: z.string().optional(), tracking_company: z.string().optional(), tracking_number: z.string().optional(), tracking_numbers: z.array(z.string()).optional(), tracking_steps: z.object({}).optional(), tracking_url: z.string().optional(), tracking_urls: z.array(z.string()).optional(), updated_at: z.number().int().optional(), variant_inventory_management: z.string().optional()}); export const orderLineItemDiscountApplicationDto = z.object({amount: z.number().optional(), discount_application_index: z.number().int().optional()}); export const lineItemShippingRate = z.object({code: z.string().optional(), id: z.number().int().optional(), is_post_purchase: z.boolean().optional(), price: z.number().optional(), title: z.string().optional(), type: z.string().optional(), variant_id: z.number().int().optional()}); export const taxLineDto = z.object({price: z.number().optional(), rate: z.number().optional(), title: z.string().optional()}); export const orderLineItemDto = z.object({discount_allocations: z.array(orderLineItemDiscountApplicationDto).optional(), discount_amount: z.number().optional(), fulfillable_quantity: z.number().int().optional(), fulfillment_service: z.string().optional(), fulfillment_status: z.string().optional(), gift_card: z.boolean().optional(), image_src: z.string().optional(), is_post_purchase_item: z.boolean().optional(), item_discount_price: z.number().optional(), line_item_discount_amount: z.number().optional(), line_item_discount_price: z.number().optional(), line_item_price: z.number().optional(), line_item_price_after_discount: z.number().optional(), line_item_price_before_discount: z.number().optional(), line_item_price_with_explicit_discount: z.number().optional(), line_item_weight: z.number().optional(), name: z.string().optional(), not_explicit_discount_price: z.number().optional(), order_id: z.number().int().optional(), price: z.number().optional(), product_id: z.number().int().optional(), product_is_deleted: z.boolean().optional(), product_type: z.string().optional(), properties: z.array(z.unknown()).optional(), quantity: z.number().optional(), raw_price: z.number().optional(), raw_weight: z.number().optional(), requires_shipping: z.boolean().optional(), shipping_rate: lineItemShippingRate.optional(), sku: z.string().optional(), tags: z.string().optional(), tax_amount: z.number().optional(), tax_lines: z.array(taxLineDto).optional(), tax_rate: z.number().optional(), taxable: z.boolean().optional(), tip_payment_gateway: z.string().optional(), tip_payment_method: z.string().optional(), title: z.string().optional(), total_discount: z.number().optional(), total_item_discount_price: z.number().optional(), total_line_with_discount_price: z.number().optional(), total_tax_amount: z.number().optional(), variant_id: z.number().int().optional(), variant_title: z.string().optional(), vendor: z.string().optional(), weight: z.number().optional(), weight_unit: z.string().optional()}); export const refundOrderAdjustmentDto = z.object({amount: z.number().optional(), kind: z.string().optional(), order_id: z.number().int().optional(), reason: z.string().optional(), tax_amount: z.number().optional()}); export const refundLineItemDto = z.object({discount_amount: z.number().optional(), line_item: orderLineItemDto.optional(), line_item_id: z.number().int().optional(), quantity: z.number().int().optional(), restock_type: z.string().optional(), subtotal: z.number().optional(), title: z.string().optional(), total_refund: z.number().optional(), total_tax: z.number().optional(), variant_title: z.string().optional()}); export const shipping = z.object({amount: z.number().optional(), full_refund: z.boolean().optional()}); export const refundTransactionDto = z.object({amount: z.number().optional(), authorization: z.string().optional(), conversion_rate: z.number().optional(), created_at: z.number().int().optional(), currency: z.string().optional(), currency_exchange_adjustment: z.string().optional(), error_code: z.string().optional(), gateway: z.string().optional(), id: z.number().int().optional(), kind: z.string().optional(), message: z.string().optional(), order_id: z.number().int().optional(), parent_id: z.number().int().optional(), payment_details: z.string().optional(), processed_at: z.number().int().optional(), receipt: z.string().optional(), source_name: z.string().optional(), status: z.string().optional(), test: z.boolean().optional(), transaction_amount: z.number().optional(), transaction_currency: z.string().optional()}); export const refundDto = z.object({created_at: z.number().int().optional(), id: z.number().int().optional(), is_dont_withdraw_from_balance_of_seller: z.boolean().optional(), note: z.string().optional(), order_adjustments: z.array(refundOrderAdjustmentDto).optional(), order_dto: z.lazy(() => orderDto.optional()), order_id: z.number().int().optional(), payment_fee: z.number().optional(), processed_at: z.number().int().optional(), refund_line_items: z.array(refundLineItemDto).optional(), restock: z.boolean().optional(), shipping: shipping.optional(), transactions: z.array(refundTransactionDto).optional(), user_id: z.number().int().optional()}); export const shippingLinesDto = z.object({carrier_identifier: z.string().optional(), code: z.string().optional(), discounted_price: z.number().optional(), fulfillment_service: z.string().optional(), price: z.number().optional(), source: z.string().optional(), tax_lines: z.array(taxLineDto).optional(), title: z.string().optional()}); export const orderDto: z.ZodType = z.object({access_key: z.string().optional(), additional_information: additionalInformation.optional(), applied_discount: appliedDiscount.optional(), balance: z.number().optional(), billing_address: customerAddressDetail.optional(), buyer_accepts_marketing: z.boolean().optional(), cancel_reason: z.string().optional(), cancelled_at: z.string().optional(), cart_token: z.string().optional(), chargeback_amount: z.number().optional(), chargeback_deadline_at: z.string().optional(), chargeback_dispute_id: z.string().optional(), chargeback_status: z.string().optional(), checkout_token: z.string().optional(), client_details: clientDetailsDto.optional(), closed_at: z.string().optional(), created_at: z.string().optional(), created_at_in_timezone: z.string().optional(), currency: z.string().optional(), customer_locale: z.string().optional(), discount_applications: z.array(orderDiscountApplicationDto).optional(), discount_code: z.array(orderDiscountCodeDto).optional(), email: z.string().optional(), financial_status: z.string().optional(), fulfillment_status: z.string().optional(), fulfillments: z.array(fulfillmentDto).optional(), id: z.number().int().optional(), is_in_post_purchase: z.boolean().optional(), is_risk: z.boolean().optional(), line_items: z.array(orderLineItemDto).optional(), name: z.string().optional(), not_explicit_discount: z.number().optional(), note: z.string().optional(), note_attributes: z.array(z.unknown()).optional(), order_number: z.number().int().optional(), order_status_url: z.string().optional(), original_total_price: z.number().optional(), payment_gateway: z.string().optional(), payment_gateway_names: z.array(z.string()).optional(), phone: z.string().optional(), post_purchase_timeout_at: z.string().optional(), previous_shipping_fee: z.number().optional(), processed_at: z.string().optional(), referring_site: z.string().optional(), refunds: z.array(refundDto).optional(), shipping_address: customerAddressDetail.optional(), shipping_discount: z.number().optional(), shipping_fee: z.number().optional(), shipping_lines: z.array(shippingLinesDto).optional(), shipping_tax: z.number().optional(), shop_id: z.number().int().optional(), source_name: z.string().optional(), subtotal_price: z.number().optional(), tags: z.string().optional(), tax_lines: z.array(taxLineDto).optional(), taxes_included: z.boolean().optional(), token: z.string().optional(), total_discounts: z.number().optional(), total_line_items_discount: z.number().optional(), total_line_items_price: z.number().optional(), total_price: z.number().optional(), total_quantity: z.number().optional(), total_shipping: z.number().optional(), total_tax: z.number().optional(), total_tip_received: z.number().optional(), total_weight: z.number().optional(), updated_at: z.string().optional(), weight_unit: z.string().optional()}); export const draftOrderSwaggerResponse = z.object({draft_order: orderDto.optional()}); 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 }; /** * Creates a draft order. * * POST /admin/draft_orders.json */ export const createApiAdminDraftOrdersJson = async (args: CreateApiAdminDraftOrdersJsonArgs, options?: CreateApiAdminDraftOrdersJsonOptions) => { const {baseUrl = "https://shop-name.onshopbase.com", fetch: fetchFn = fetch, APPACCESSTOKEN} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (APPACCESSTOKEN !== undefined) headers.set("APP_ACCESS_TOKEN", APPACCESSTOKEN) const url = `${baseUrl.replace(/\/+$/, '')}/admin/draft_orders.json${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(draftOrderSwaggerResponse, await res.json()) };