import {z} from 'zod' export type InvoiceTypeEnum1 = 'accounts_receivable' | 'accounts_payable'; export type TaskGroupTypeEnum1 = 'chrt_ground_provider' | 'cargo_on_flight' | 'cargo_on_vessel' | 'onboard_courier'; export type GetApiBillingNewRateSheetsListV1Args = {invoice_type?: (InvoiceTypeEnum1 | null) | undefined, task_group_type?: (TaskGroupTypeEnum1 | null) | undefined, include_archived?: boolean | undefined}; export type GetApiBillingNewRateSheetsListV1Options = {baseUrl?: string | undefined, HTTPBearer?: string | undefined, fetch?: typeof fetch | undefined}; export const invoiceTypeEnum1 = z.enum(["accounts_receivable", "accounts_payable"]); export const billingCurrencyCodeEnum1 = z.enum(["USD", "CAD", "EUR", "GBP", "MXN", "AUD", "JPY", "CNY", "CHF", "INR"]); export const taskGroupTypeEnum1 = z.enum(["chrt_ground_provider", "cargo_on_flight", "cargo_on_vessel", "onboard_courier"]); export const serviceLineEnum = z.enum(["on_demand", "routed"]); export const rateSheetRuleChargedPerEnum1 = z.enum(["order", "task_group", "task"]); export const baseRateChargeRule1 = z.object({rule_type: z.literal("base_rate"), rule_key: z.string().optional(), charged_per: rateSheetRuleChargedPerEnum1.optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0)}); export const rateSheetLocationRate1 = z.object({shipper_account_id: z.string().nullable().optional(), pricing_zone_id: z.string().nullable().optional(), flat_rate: z.number().gte(0)}); export const locationRateChargeRule1 = z.object({rule_type: z.literal("location_rate"), rule_key: z.string().optional(), charged_per: z.literal("task").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), location_rates: z.array(rateSheetLocationRate1)}); export const rateSheetZonePairRate1 = z.object({origin_pricing_zone_id: z.string(), destination_pricing_zone_id: z.string(), flat_rate: z.number().gte(0)}); export const zoneToZoneChargeRule1 = z.object({rule_type: z.literal("zone_to_zone"), rule_key: z.string().optional(), charged_per: rateSheetRuleChargedPerEnum1.optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), zone_pair_rates: z.array(rateSheetZonePairRate1), rates_apply_both_directions: z.boolean().optional()}); export const mileageChargeRule1 = z.object({rule_type: z.literal("mileage"), rule_key: z.string().optional(), charged_per: z.enum(["task_group", "task"]).optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), included_distance_miles: z.number().gte(0).optional(), rate_per_mile: z.number().gte(0), ends_at_total_distance_miles: z.number().gt(0).nullable().optional(), minimum_charge: z.number().gt(0).nullable().optional()}); export const longDistanceMileageChargeRule1 = z.object({rule_type: z.literal("long_distance_mileage"), rule_key: z.string().optional(), charged_per: z.enum(["task_group", "task"]).optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), included_distance_miles: z.number().gte(0).optional(), rate_per_mile: z.number().gte(0), ends_at_total_distance_miles: z.number().gt(0).nullable().optional(), minimum_charge: z.number().gt(0).nullable().optional()}); export const waitTimeChargeRule1 = z.object({rule_type: z.literal("wait_time"), rule_key: z.string().optional(), charged_per: z.literal("task").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), included_wait_minutes: z.number().gte(0), rate_per_wait_minute: z.number().gte(0)}); export const extraStopChargeRule1 = z.object({rule_type: z.literal("extra_stop"), rule_key: z.string().optional(), charged_per: z.literal("task_group").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), included_stops: z.number().int().gte(0).optional(), rate_per_extra_stop: z.number().gte(0), attempted_stops_count_as_stops: z.boolean().optional()}); export const chrtGroundProviderTaskActionEnum1 = z.enum(["chrt_ground_provider__pickup", "chrt_ground_provider__deliver", "chrt_ground_provider__recover_from_airline", "chrt_ground_provider__tender_to_airline", "chrt_ground_provider__recover_from_ocean_terminal", "chrt_ground_provider__tender_to_ocean_terminal", "chrt_ground_provider__consolidate", "chrt_ground_provider__hold", "chrt_ground_provider__other"]); export const cargoOnFlightTaskActionEnum1 = z.enum(["cargo_on_flight__cargo_received_by_airline", "cargo_on_flight__cargo_manifested", "cargo_on_flight__cargo_loaded_onto_flight", "cargo_on_flight__flight_departed", "cargo_on_flight__flight_arrived", "cargo_on_flight__cargo_offloaded_from_flight", "cargo_on_flight__cargo_cleared_customs", "cargo_on_flight__cargo_ready_for_recovery", "cargo_on_flight__cargo_recovered"]); export const cargoOnVesselTaskActionEnum1 = z.enum(["cargo_on_vessel__gated_in_full", "cargo_on_vessel__loaded_onto_vessel", "cargo_on_vessel__vessel_departed", "cargo_on_vessel__vessel_arrived", "cargo_on_vessel__discharged_from_vessel", "cargo_on_vessel__available_for_pickup", "cargo_on_vessel__gated_out_full"]); export const onboardCourierTaskActionEnum1 = z.enum(["obc__cargo_picked_up", "obc__courier_thru_security", "obc__courier_boarded_flight", "obc__courier_deboarded_flight", "obc__courier_cleared_customs", "obc__cargo_delivered"]); export const stopFeeChargeRule1 = z.object({rule_type: z.literal("stop_fee"), rule_key: z.string().optional(), charged_per: z.literal("task").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0), applies_to_task_actions: z.array(z.union([chrtGroundProviderTaskActionEnum1, cargoOnFlightTaskActionEnum1, cargoOnVesselTaskActionEnum1, onboardCourierTaskActionEnum1]))}); export const rateSheetRuleQuantityBasisEnum1 = z.enum(["order_unique_cargo", "task_group_unique_cargo", "task_handled_cargo"]); export const pieceCountChargeRule1 = z.object({rule_type: z.literal("piece_count"), rule_key: z.string().optional(), charged_per: z.enum(["order", "task_group"]).optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), included_pieces: z.number().int().gte(0), rate_per_piece: z.number().gte(0), quantity_basis: rateSheetRuleQuantityBasisEnum1}); export const rateSheetRuleWeightUnitEnum1 = z.enum(["lb", "kg"]); export const rateSheetRuleWeightTypeEnum1 = z.enum(["gross", "chargeable", "volumetric"]); export const rateSheetWeightBreak1 = z.object({starts_at_weight: z.number().gt(0), rate_per_weight_unit: z.number().gte(0)}); export const weightChargeRule1 = z.object({rule_type: z.literal("weight"), rule_key: z.string().optional(), charged_per: z.enum(["order", "task_group"]).optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), included_weight: z.number().gte(0), rate_per_weight_unit: z.number().gte(0), weight_unit: rateSheetRuleWeightUnitEnum1, weight_type: rateSheetRuleWeightTypeEnum1, quantity_basis: rateSheetRuleQuantityBasisEnum1, weight_breaks: z.array(rateSheetWeightBreak1).optional(), minimum_charge: z.number().gt(0).nullable().optional(), dim_factor_cubic_inches_per_pound: z.number().gt(0).nullable().optional()}); export const fuelSurchargeChargeRule1 = z.object({rule_type: z.literal("fuel_surcharge"), rule_key: z.string().optional(), charged_per: z.literal("task_group").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional()}); export const vehicleTypeEnum = z.enum(["sedan", "suv", "cargo_van", "box_truck", "flatbed", "semi_truck", "airplane"]); export const invoiceLineItemTypeEnum1 = z.enum(["base_rate", "additional_mileage", "long_distance_mileage", "fuel", "extra_stop", "wait_time", "attempt", "pick_and_hold", "stop_fee", "parking", "tolls", "additional_fee", "dispute", "equipment", "dangerous_goods", "special_vehicle", "after_hours", "weekend", "holiday", "air_waybill", "insurance", "off_network_carrier", "obc_day_rate", "flight_ticket", "piece_count", "weight", "revenue_share", "minimum_charge", "tracking_device_label", "tracking_device_tag", "tracking_device_other", "tax", "adjustment", "other"]); export const vehicleSurchargeChargeRule1 = z.object({rule_type: z.literal("vehicle_surcharge"), rule_key: z.string().optional(), charged_per: z.enum(["task_group", "task"]).optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), vehicle_types: z.array(vehicleTypeEnum), flat_rate: z.number().gte(0).nullable().optional(), surcharge_percentage: z.number().gte(0).nullable().optional(), applies_to_line_item_types: z.array(invoiceLineItemTypeEnum1).optional()}); export const rateSheetRulePricingMethodEnum1 = z.enum(["markup", "margin"]); export const airWaybillResaleChargeRule1 = z.object({rule_type: z.literal("air_waybill_resale"), rule_key: z.string().optional(), charged_per: z.literal("task_group").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), pricing_method: rateSheetRulePricingMethodEnum1, pricing_percentage: z.number().gte(0), applies_to_line_item_types: z.array(invoiceLineItemTypeEnum1), combine_sources_into_one_charge: z.boolean().optional(), applies_to_relationship_types: z.array(z.enum(["executor_payable", "driver_payable"])).optional()}); export const flightTicketResaleChargeRule1 = z.object({rule_type: z.literal("flight_ticket_resale"), rule_key: z.string().optional(), charged_per: z.literal("task_group").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), pricing_method: rateSheetRulePricingMethodEnum1, pricing_percentage: z.number().gte(0), applies_to_line_item_types: z.array(invoiceLineItemTypeEnum1), combine_sources_into_one_charge: z.boolean().optional(), applies_to_relationship_types: z.array(z.enum(["executor_payable", "driver_payable"])).optional()}); export const supplierMarkupChargeRule1 = z.object({rule_type: z.literal("supplier_markup"), rule_key: z.string().optional(), charged_per: z.literal("task_group").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), pricing_method: rateSheetRulePricingMethodEnum1, pricing_percentage: z.number().gte(0), applies_to_line_item_types: z.array(invoiceLineItemTypeEnum1), combine_sources_into_one_charge: z.boolean().optional(), applies_to_relationship_types: z.array(z.enum(["executor_payable", "driver_payable"])).optional()}); export const revenueShareChargeRule1 = z.object({rule_type: z.literal("revenue_share"), rule_key: z.string().optional(), charged_per: z.literal("order").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), revenue_share_percentage: z.number().gte(0).lte(100), applies_to_line_item_types: z.array(invoiceLineItemTypeEnum1)}); export const onboardCourierMissionBaseChargeRule1 = z.object({rule_type: z.literal("onboard_courier_mission_base"), rule_key: z.string().optional(), charged_per: z.enum(["task_group", "task"]).optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0)}); export const attemptChargeRule1 = z.object({rule_type: z.literal("attempt"), rule_key: z.string().optional(), charged_per: z.literal("task").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), rate_per_occurrence: z.number().gte(0)}); export const pickAndHoldChargeRule1 = z.object({rule_type: z.literal("pick_and_hold"), rule_key: z.string().optional(), charged_per: z.literal("task_group").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), rate_per_occurrence: z.number().gte(0)}); export const equipmentChargeRule1 = z.object({rule_type: z.literal("equipment"), rule_key: z.string().optional(), charged_per: rateSheetRuleChargedPerEnum1.optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0)}); export const dangerousGoodsChargeRule1 = z.object({rule_type: z.literal("dangerous_goods"), rule_key: z.string().optional(), charged_per: rateSheetRuleChargedPerEnum1.optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0)}); export const afterHoursChargeRule1 = z.object({rule_type: z.literal("after_hours"), rule_key: z.string().optional(), charged_per: rateSheetRuleChargedPerEnum1.optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0)}); export const weekendChargeRule1 = z.object({rule_type: z.literal("weekend"), rule_key: z.string().optional(), charged_per: rateSheetRuleChargedPerEnum1.optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0)}); export const holidayChargeRule1 = z.object({rule_type: z.literal("holiday"), rule_key: z.string().optional(), charged_per: rateSheetRuleChargedPerEnum1.optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), flat_rate: z.number().gte(0)}); export const orderMinimumChargeRule1 = z.object({rule_type: z.literal("order_minimum"), rule_key: z.string().optional(), charged_per: z.literal("order").optional(), line_item_description: z.string().min(1).max(32768), export_ref__sage__item_id: z.string().max(255).nullable().optional(), minimum_charge: z.number().gt(0)}); export const rateSheet1 = z.object({schema_version: z.literal(1), name: z.string().min(1).max(255), invoice_type: invoiceTypeEnum1, currency_code: billingCurrencyCodeEnum1, counterparty_org_id: z.string().nullable().optional(), counterparty_off_chrt_org_data_id: z.string().nullable().optional(), counterparty_driver_id: z.string().nullable().optional(), task_group_type: taskGroupTypeEnum1, applies_to_service_lines: z.array(serviceLineEnum).optional(), effective_time_zone_name: z.string().optional(), effective_starts_at_timestamp: z.string().nullable().optional(), effective_ends_at_timestamp: z.string().nullable().optional(), rules: z.array(z.discriminatedUnion("rule_type", [baseRateChargeRule1, locationRateChargeRule1, zoneToZoneChargeRule1, mileageChargeRule1, longDistanceMileageChargeRule1, waitTimeChargeRule1, extraStopChargeRule1, stopFeeChargeRule1, pieceCountChargeRule1, weightChargeRule1, fuelSurchargeChargeRule1, vehicleSurchargeChargeRule1, airWaybillResaleChargeRule1, flightTicketResaleChargeRule1, supplierMarkupChargeRule1, revenueShareChargeRule1, onboardCourierMissionBaseChargeRule1, attemptChargeRule1, pickAndHoldChargeRule1, equipmentChargeRule1, dangerousGoodsChargeRule1, afterHoursChargeRule1, weekendChargeRule1, holidayChargeRule1, orderMinimumChargeRule1])), _id: z.string(), revision: z.number().int().gte(1).optional(), owned_by_org_id: z.string(), created_by_user_id: z.string(), created_at_timestamp: z.string(), last_edited_by_user_id: z.string(), last_edited_at_timestamp: z.string(), archived_by_user_id: z.string().nullable().optional(), archived_at_timestamp: z.string().nullable().optional()}); export const getApiBillingNewRateSheetsListV1Response = z.array(rateSheet1); 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 }; /** * List * * GET /billing_new/rate_sheets/list/v1 */ export const getApiBillingNewRateSheetsListV1 = async (args: GetApiBillingNewRateSheetsListV1Args, options?: GetApiBillingNewRateSheetsListV1Options) => { const {baseUrl = "http://localhost:8000", fetch: fetchFn = fetch, HTTPBearer} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.invoice_type != null) query.append("invoice_type", String(args.invoice_type)) if (args.task_group_type != null) query.append("task_group_type", String(args.task_group_type)) if (args.include_archived != null) query.append("include_archived", String(args.include_archived)) if (HTTPBearer !== undefined) headers.set('authorization', `Bearer ${HTTPBearer}`) const url = `${baseUrl.replace(/\/+$/, '')}/billing_new/rate_sheets/list/v1${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(getApiBillingNewRateSheetsListV1Response, await res.json()) };