import {z} from 'zod' export type OrdersSwaggerRequest = {chargeback_deadline_at_max?: string | undefined, chargeback_deadline_at_min?: string | undefined, chargeback_status?: string | undefined, created_at_max?: string | undefined, created_at_min?: string | undefined, customer_email?: string | undefined, customer_id?: number | undefined, fields?: string | undefined, filter_order_risk?: boolean | undefined, financial_status?: string | undefined, fulfilled_at_max?: string | undefined, fulfilled_at_min?: string | undefined, fulfillment_service?: string | undefined, fulfillment_status?: string | undefined, ids?: Array | undefined, limit?: number | undefined, not_product_mapping?: boolean | undefined, not_product_name?: string | undefined, not_product_sku?: string | undefined, not_product_type?: string | undefined, not_product_vendor?: string | undefined, order_status?: string | undefined, page?: number | undefined, product_mapping?: boolean | undefined, product_name?: string | undefined, product_sku?: string | undefined, product_type?: string | undefined, product_vendor?: string | undefined, since_id?: number | undefined, tag?: string | undefined, tracking_number?: string | undefined, updated_at_max?: string | undefined, updated_at_min?: string | undefined}; export type GetApiAdminOrdersJsonArgs = {body: OrdersSwaggerRequest}; export type GetApiAdminOrdersJsonOptions = {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 ordersSwaggerResponse = z.object({orders: z.array(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 }; /** * Retrieves a list of orders * * GET /admin/orders.json */ export const getApiAdminOrdersJson = async (args: GetApiAdminOrdersJsonArgs, options?: GetApiAdminOrdersJsonOptions) => { 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/orders.json${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", 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(ordersSwaggerResponse, await res.json()) };