import {z} from 'zod' export type CreateApi202409ShippingRulesIdActivateArgs = {id: string}; export type CreateApi202409ShippingRulesIdActivateOptions = {baseUrl?: string | undefined, Bearer?: string | undefined, fetch?: typeof fetch | undefined}; export const countryID = z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5), z.literal(6), z.literal(7), z.literal(8), z.literal(9), z.literal(10), z.literal(11), z.literal(12), z.literal(13), z.literal(14), z.literal(15), z.literal(16), z.literal(17), z.literal(18), z.literal(19), z.literal(20), z.literal(21), z.literal(22), z.literal(23), z.literal(24), z.literal(25), z.literal(26), z.literal(27), z.literal(28), z.literal(29), z.literal(30), z.literal(31), z.literal(32), z.literal(33), z.literal(34), z.literal(35), z.literal(36), z.literal(37), z.literal(38), z.literal(39), z.literal(40), z.literal(41), z.literal(42), z.literal(43), z.literal(44), z.literal(45), z.literal(46), z.literal(47), z.literal(48), z.literal(49), z.literal(50), z.literal(51), z.literal(52), z.literal(53), z.literal(54), z.literal(55), z.literal(56), z.literal(57), z.literal(58), z.literal(59), z.literal(60), z.literal(61), z.literal(62), z.literal(63), z.literal(64), z.literal(65), z.literal(66), z.literal(67), z.literal(68), z.literal(69), z.literal(70), z.literal(71), z.literal(72), z.literal(73), z.literal(74), z.literal(75), z.literal(76), z.literal(77), z.literal(78), z.literal(79), z.literal(80), z.literal(81), z.literal(82), z.literal(83), z.literal(84), z.literal(85), z.literal(86), z.literal(87), z.literal(88), z.literal(89), z.literal(90), z.literal(91), z.literal(92), z.literal(93), z.literal(94), z.literal(95), z.literal(96), z.literal(97), z.literal(98), z.literal(99), z.literal(100), z.literal(101), z.literal(102), z.literal(103), z.literal(104), z.literal(105), z.literal(106), z.literal(107), z.literal(108), z.literal(109), z.literal(110), z.literal(111), z.literal(112), z.literal(113), z.literal(114), z.literal(115), z.literal(116), z.literal(117), z.literal(118), z.literal(119), z.literal(120), z.literal(121), z.literal(122), z.literal(123), z.literal(124), z.literal(125), z.literal(126), z.literal(127), z.literal(128), z.literal(129), z.literal(130), z.literal(131), z.literal(132), z.literal(133), z.literal(134), z.literal(135), z.literal(136), z.literal(137), z.literal(138), z.literal(139), z.literal(140), z.literal(141), z.literal(142), z.literal(143), z.literal(144), z.literal(145), z.literal(146), z.literal(147), z.literal(148), z.literal(149), z.literal(150), z.literal(151), z.literal(152), z.literal(153), z.literal(154), z.literal(155), z.literal(156), z.literal(157), z.literal(158), z.literal(159), z.literal(160), z.literal(161), z.literal(162), z.literal(163), z.literal(164), z.literal(165), z.literal(166), z.literal(167), z.literal(168), z.literal(169), z.literal(170), z.literal(171), z.literal(172), z.literal(173), z.literal(174), z.literal(175), z.literal(176), z.literal(177), z.literal(178), z.literal(179), z.literal(180), z.literal(181), z.literal(182), z.literal(183), z.literal(184), z.literal(185), z.literal(186), z.literal(187), z.literal(188), z.literal(189), z.literal(190), z.literal(191), z.literal(192), z.literal(193), z.literal(194), z.literal(195), z.literal(196), z.literal(197), z.literal(198), z.literal(199), z.literal(200), z.literal(201), z.literal(202), z.literal(203), z.literal(204), z.literal(205), z.literal(206), z.literal(207), z.literal(208), z.literal(209), z.literal(210), z.literal(211), z.literal(212), z.literal(213), z.literal(214), z.literal(215), z.literal(216), z.literal(217), z.literal(218), z.literal(219), z.literal(220), z.literal(221), z.literal(222), z.literal(223), z.literal(224), z.literal(225), z.literal(226), z.literal(227), z.literal(228), z.literal(229), z.literal(230), z.literal(231), z.literal(232), z.literal(233), z.literal(234), z.literal(235), z.literal(236), z.literal(237), z.literal(238), z.literal(239), z.literal(240), z.literal(241), z.literal(242), z.literal(243), z.literal(244), z.literal(245), z.literal(246), z.literal(247), z.literal(248), z.literal(249), z.literal(250)]); export const conditionMatchCountry = z.object({type: z.literal("match_country"), options: z.object({country_ids: z.array(countryID)}), id: z.string().optional()}); export const conditionMatchAll = z.object({type: z.literal("match_all"), id: z.string().optional()}); export const conditionMatchCategory = z.object({type: z.literal("match_category"), options: z.object({category_ids: z.array(z.string())}), id: z.string().optional()}); export const conditionMatchState = z.object({type: z.literal("match_state"), options: z.object({states: z.array(z.string())}), id: z.string().optional()}); export const conditionMatchZipcode = z.object({type: z.literal("match_zipcode"), options: z.object({operator: z.enum(["is_any_of", "is_none_of", "starts_with"]), zipcodes: z.array(z.string())}), id: z.string().optional()}); export const conditionMatchSku = z.object({type: z.literal("match_sku"), options: z.object({operator: z.enum(["contains", "does_not_contain", "is_exactly"]), shipment_items_sku: z.array(z.string())}), id: z.string().optional()}); export const conditionMatchPlatformName = z.object({type: z.literal("match_platform_name"), options: z.object({platform_names: z.array(z.string())}), id: z.string().optional()}); export const conditionMatchStore = z.object({type: z.literal("match_store"), options: z.object({store_ids: z.array(z.string())}), id: z.string().optional()}); export const conditionMatchBuyerSelectedCourierName = z.object({type: z.literal("match_buyer_selected_courier_name"), options: z.object({operator: z.enum(["contains", "does_not_contain", "is_exactly"]), buyer_selected_courier_name: z.string()}), id: z.string().optional()}); export const conditionMatchItemsCount = z.object({type: z.literal("match_items_count"), options: z.object({operator: z.enum(["greater_than", "greater_than_or_equal_to", "less_than", "less_than_or_equal_to", "equal_to"]), shipment_items_count: z.number().int().gte(0)}), id: z.string().optional()}); export const currency = z.enum(["AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SKK", "SLL", "SOS", "SRD", "SSP", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VES", "VND", "VUV", "WST", "XAF", "XAG", "XAU", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW", "BTC", "JEP", "EEK", "GHC", "MTL", "TMM", "YEN", "ZWD", "ZWL", "ZWN", "ZWR"]); export const conditionMatchSellingPrice = z.object({type: z.literal("match_selling_price"), options: z.object({operator: z.enum(["greater_than", "greater_than_or_equal_to", "less_than", "less_than_or_equal_to", "equal_to"]), value: z.number(), currency: currency}), id: z.string().optional()}); export const conditionMatchWeight = z.object({type: z.literal("match_weight"), options: z.object({operator: z.enum(["greater_than", "greater_than_or_equal_to", "less_than", "less_than_or_equal_to", "equal_to"]), total_actual_weight: z.number()}), id: z.string().optional()}); export const conditionIncludeOrderTagName = z.object({type: z.literal("include_order_tag_name"), options: z.object({order_tag_list: z.array(z.string())}), id: z.string().optional()}); export const shippingRuleCondition = z.discriminatedUnion("type", [conditionMatchCountry, conditionMatchAll, conditionMatchCategory, conditionMatchState, conditionMatchZipcode, conditionMatchSku, conditionMatchPlatformName, conditionMatchStore, conditionMatchBuyerSelectedCourierName, conditionMatchItemsCount, conditionMatchSellingPrice, conditionMatchWeight, conditionIncludeOrderTagName]); export const actionAddNeverCourier = z.object({type: z.literal("add_never_courier_service"), options: z.object({never_courier_service_ids: z.array(z.string())}), id: z.string().optional()}); export const actionAddPreferredCourier = z.object({type: z.literal("add_preferred_courier_service"), options: z.object({preferred_courier_service_ids: z.array(z.string())}), id: z.string().optional()}); export const actionForceIncoterms = z.object({type: z.literal("force_incoterms"), options: z.object({incoterms: z.enum(["DDP", "DDU", "DDU_and_Best_DDP", "DDP_and_Best_DDU"])}), id: z.string().optional()}); export const actionForceSortBy = z.object({type: z.literal("force_sort_by"), options: z.object({sort_by: z.enum(["total_charge", "delivery_time_rank", "value_for_money_rank"])}), id: z.string().optional()}); export const actionForceInsurance = z.object({type: z.literal("force_insurance"), options: z.object({insured: z.boolean()}), id: z.string().optional()}); export const actionForceTrackingRating = z.object({type: z.literal("force_tracking_rating"), options: z.object({force_tracking_rating: z.array(z.union([z.literal(-1), z.literal(0), z.literal(1), z.literal(2), z.literal(3)]))}), id: z.string().optional()}); export const actionForcePackage = z.object({type: z.literal("force_package"), options: z.union([z.object({force_box_id: z.string()}), z.object({force_flat_rate_box_id: z.string()})]), id: z.string().optional()}); export const actionRejectPackages = z.object({type: z.literal("reject_packages"), options: z.object({never_package_ids: z.array(z.string())}), id: z.string().optional()}); export const actionForceResidentialSurcharge = z.object({type: z.literal("force_residential_surcharge"), options: z.object({set_as_residential: z.boolean()}), id: z.string().optional()}); export const actionForceShipFrom = z.object({type: z.literal("force_ship_from"), options: z.object({origin_address_id: z.string()}), id: z.string().optional()}); export const actionForceAutomatedReturnRequested = z.object({type: z.literal("force_automated_return_requested"), options: z.object({force_automated_return_requested: z.boolean()}), id: z.string().optional()}); export const actionAddForcedDeliveryTime = z.object({type: z.literal("add_forced_delivery_time"), options: z.object({operator: z.enum(["less_than", "less_than_or_equal_to", "greater_than_or_equal_to", "greater_than"]), value: z.number().int()}), id: z.string().optional()}); export const shippingRuleAction = z.discriminatedUnion("type", [actionAddNeverCourier, actionAddPreferredCourier, actionForceIncoterms, actionForceSortBy, actionForceInsurance, actionForceTrackingRating, actionForcePackage, actionRejectPackages, actionForceResidentialSurcharge, actionForceShipFrom, actionForceAutomatedReturnRequested, actionAddForcedDeliveryTime]); export const shippingRule = z.object({id: z.string().optional(), name: z.string().optional(), description: z.string().optional(), priority: z.number().int().optional(), active: z.boolean().optional(), accessible: z.boolean().optional(), checkout_restrictive: z.boolean().optional(), conditions: z.array(shippingRuleCondition).optional(), actions: z.array(shippingRuleAction).optional(), created_at: z.string().optional(), updated_at: z.string().optional()}); export const meta = z.object({request_id: z.string().optional()}); export const shippingRuleSingle = z.object({shipping_rule: shippingRule.optional(), meta: meta.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 }; /** * Activate a Shipping Rule * * POST /2024-09/shipping_rules/{id}/activate */ export const createApi202409ShippingRulesIdActivate = async (args: CreateApi202409ShippingRulesIdActivateArgs, options?: CreateApi202409ShippingRulesIdActivateOptions) => { const {baseUrl = "https://public-api.easyship.com", fetch: fetchFn = fetch, Bearer} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (Bearer !== undefined) headers.set('authorization', `Bearer ${Bearer}`) const url = `${baseUrl.replace(/\/+$/, '')}/2024-09/shipping_rules/${encodeURIComponent(String(args.id))}/activate${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(shippingRuleSingle, await res.json()) };