export type OptimizationScheduleInputSerializer = {cronExpression?: (string | null) | undefined, startDate?: (string | null) | undefined, endDate?: (string | null) | undefined, inputTimezoneId?: (string | null) | undefined}; export type ContractOverrideParametersSerializer = {contractId: string, vehicleCount?: (number | null) | undefined, dispatchStrategyId?: (string | null) | undefined, leadTimeMinutes?: (number | null) | undefined, fixedCost?: (number | null) | undefined, maxOrdersPerRoute?: (number | null) | undefined, minOrdersPerRoute?: (number | null) | undefined, useAllVehicles?: (boolean | null) | undefined}; export type OptimizationBalanceRoutes = 'none' | 'same_vehicle_type' | 'all_vehicle_types'; export type OptimizationPickupSequencing = 'interleave' | 'after_deliveries'; export type OptimizationSolver = 'logistics_os' | 'here' | 'gmpro' | 'ptv'; export type CadenceTierInputSerializer = {maxHours?: (number | null) | undefined, intervalMinutes: number}; export type DynamicCadenceConfigInputSerializer = {tiersBeforeCutoff: Array}; export type CreateOptimizationStrategyInputSerializer = {optimizationSchedules?: (Array | null) | undefined, contractIds?: (Array | null) | undefined, shiftContractId?: (string | null) | undefined, pickupServiceTimeSeconds?: (number | null) | undefined, dropoffServiceTimeSeconds?: (number | null) | undefined, incrementalServiceTimeSeconds?: (number | null) | undefined, enableAutoDispatch?: (boolean | null) | undefined, autodispatchWithinXMinutesOfPickupTime?: (number | null) | undefined, earliestDispatchMinutesBeforePickup?: (number | null) | undefined, pickupTimeFromInMinutes?: (number | null) | undefined, pickupTimeToInMinutes?: (number | null) | undefined, contractOptimizationOverrideParameters?: (Array | null) | undefined, unassignedOrdersOptionsGroupId?: (string | null) | undefined, defaultTrafficSource?: (string | null) | undefined, trafficTimeOffsetWeeks?: (number | null) | undefined, avoidFerries?: (boolean | null) | undefined, minimizeZoneCrossings?: (boolean | null) | undefined, communityZoneIds?: (Array | null) | undefined, zones?: (Array | null) | undefined, storeLocations?: (Array | null) | undefined, softCapabilities?: (Array | null) | undefined, searchLevel?: (number | null) | undefined, clusteringLevel?: (number | null) | undefined, softClusterLabel?: (boolean | null) | undefined, balanceRoutes?: (OptimizationBalanceRoutes | null) | undefined, pickupSequencing?: (OptimizationPickupSequencing | null) | undefined, engineSolver?: (OptimizationSolver | null) | undefined, saveOptimizedRoutes?: (boolean | null) | undefined, dynamicCadenceConfig?: (DynamicCadenceConfigInputSerializer | null) | undefined, label: string}; export type CreateApiV1OptimizationStrategiesArgs = {body: CreateOptimizationStrategyInputSerializer}; export type CreateApiV1OptimizationStrategiesOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; /** * Create Optimization Strategy * * POST /v1/optimization-strategies */ export const createApiV1OptimizationStrategies = async (args: CreateApiV1OptimizationStrategiesArgs, options?: CreateApiV1OptimizationStrategiesOptions) => { const {baseUrl = "https://api.sandbox.usenash.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/v1/optimization-strategies${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 undefined };