UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

291 lines 12.1 kB
import { z } from 'zod'; import { BaseResponseSchema } from '../../core/schemas'; // Health check schemas export const HealthCheckResponseSchema = BaseResponseSchema(z.string()); // Ping response schema export const PingResponseSchema = BaseResponseSchema(z.string()); // Speedship freight request parameters schema export const SpeedshipFreightRequestParamsSchema = z .object({ // Required shipping origin information fromAddressLine: z.string().min(1, 'From address line is required'), fromCity: z.string().min(1, 'From city is required'), fromCompanyName: z.string().min(1, 'From company name is required'), fromCountryCode: z.string().min(1, 'From country code is required'), fromFirstName: z.string().min(1, 'From first name is required'), fromLastName: z.string().min(1, 'From last name is required'), fromPhone: z.string().min(1, 'From phone is required'), fromPostalCode: z.string().min(1, 'From postal code is required'), fromState: z.string().min(1, 'From state is required'), // Required shipping destination information toAddressLine: z.string().min(1, 'To address line is required'), toCity: z.string().min(1, 'To city is required'), toCompanyName: z.string().min(1, 'To company name is required'), toCountryCode: z.string().min(1, 'To country code is required'), toFirstName: z.string().min(1, 'To first name is required'), toLastName: z.string().min(1, 'To last name is required'), toPhone: z.string().min(1, 'To phone is required'), toPostalCode: z.string().min(1, 'To postal code is required'), toRegion: z.string().min(1, 'To region is required'), // Required package and shipment details dimensionUnit: z.string().min(1, 'Dimension unit is required'), packageLength: z.number().positive('Package length must be positive'), packageWidth: z.number().positive('Package width must be positive'), productType: z.string().min(1, 'Product type is required'), quantity: z.number().positive('Quantity must be positive'), responseFormat: z.enum(['summary', 'detailed', 'cheapest', 'vendor']), totalWeight: z.number().positive('Total weight must be positive'), weightUnit: z.string().min(1, 'Weight unit is required'), // Optional package dimensions packageHeight: z.number().positive().optional(), // Optional shipping preferences and instructions deliveryInstructions: z.string().optional(), pickupInstructions: z.string().optional(), international: z.boolean().optional(), // Optional handling charges handlingCharge: z.number().min(0).optional(), handlingChargeUnit: z.enum(['PERCENT', 'AMOUNT']).optional(), // Additional metadata serviceType: z.string().optional(), transitTime: z.string().optional(), insuranceValue: z.number().min(0).optional(), signatureRequired: z.boolean().optional(), specialServices: z.array(z.string()).optional(), }) .passthrough(); // Freight rate result schema export const FreightRateResultSchema = z .object({ // Core rate information carrier: z.string().optional(), service: z.string().optional(), serviceCode: z.string().optional(), serviceName: z.string().optional(), // Pricing details baseRate: z.number().optional(), totalRate: z.number().optional(), discountedRate: z.number().optional(), finalRate: z.number().optional(), currency: z.string().optional(), // Additional charges breakdown fuelSurcharge: z.number().optional(), accessorialCharges: z.number().optional(), handlingFee: z.number().optional(), insuranceFee: z.number().optional(), taxes: z.number().optional(), // Service details transitTime: z.string().optional(), transitDays: z.number().optional(), deliveryDate: z.string().optional(), pickupDate: z.string().optional(), // Service capabilities trackingAvailable: z.boolean().optional(), signatureRequired: z.boolean().optional(), insuranceAvailable: z.boolean().optional(), // Dimensional information weightLimit: z.number().optional(), dimensionLimits: z .object({ length: z.number().optional(), width: z.number().optional(), height: z.number().optional(), }) .optional(), // Zone and routing information zone: z.string().optional(), originZip: z.string().optional(), destinationZip: z.string().optional(), distance: z.number().optional(), // Carrier specific information carrierCode: z.string().optional(), carrierName: z.string().optional(), carrierLogo: z.string().optional(), carrierRating: z.number().optional(), // Service levels and features serviceLevel: z.enum(['standard', 'expedited', 'overnight', 'ground', 'express']).optional(), guaranteedDelivery: z.boolean().optional(), saturdayDelivery: z.boolean().optional(), residentialDelivery: z.boolean().optional(), // Additional metadata quoteId: z.string().optional(), validUntil: z.string().optional(), specialInstructions: z.array(z.string()).optional(), restrictions: z.array(z.string()).optional(), // Performance metrics reliability: z.number().min(0).max(100).optional(), onTimePerformance: z.number().min(0).max(100).optional(), customerRating: z.number().min(0).max(5).optional(), // Environmental impact carbonFootprint: z.number().optional(), ecoFriendly: z.boolean().optional(), // Business terms terms: z.string().optional(), paymentOptions: z.array(z.string()).optional(), cancellationPolicy: z.string().optional(), }) .passthrough(); // Summary freight response for summary format export const FreightSummaryResultSchema = z .object({ // Summary information totalOptions: z.number().optional(), cheapestRate: z.number().optional(), fastestService: z.string().optional(), averageRate: z.number().optional(), // Quick comparison priceRange: z .object({ min: z.number().optional(), max: z.number().optional(), }) .optional(), // Service availability carriersAvailable: z.array(z.string()).optional(), servicesAvailable: z.array(z.string()).optional(), // Recommendations recommended: z .object({ cheapest: FreightRateResultSchema.optional(), fastest: FreightRateResultSchema.optional(), balanced: FreightRateResultSchema.optional(), }) .optional(), }) .passthrough(); // Detailed freight response for detailed format export const FreightDetailedResultSchema = z .object({ // Complete rate breakdown rates: z.array(FreightRateResultSchema).optional(), // Comparison analysis comparison: z .object({ cheapest: FreightRateResultSchema.optional(), fastest: FreightRateResultSchema.optional(), mostReliable: FreightRateResultSchema.optional(), }) .optional(), // Market analysis marketAnalysis: z .object({ averageMarketRate: z.number().optional(), competitiveRating: z.string().optional(), priceIndex: z.number().optional(), }) .optional(), // Route information routeDetails: z .object({ distance: z.number().optional(), estimatedTransitTime: z.string().optional(), routeOptimization: z.string().optional(), }) .optional(), }) .passthrough(); // Union type for different response formats export const SpeedshipFreightResultSchema = z.union([ FreightRateResultSchema, FreightSummaryResultSchema, FreightDetailedResultSchema, z.array(FreightRateResultSchema), ]); // Response schemas export const SpeedshipFreightResponseSchema = BaseResponseSchema(SpeedshipFreightResultSchema); // ============================================================================ // ShipVia Schemas // ============================================================================ // ShipVia rates request parameters schema export const ShipviaRatesParamsSchema = z .object({ // Required parameters fromPostalCode: z.string().min(1, 'From postal code is required'), toPostalCode: z.string().min(1, 'To postal code is required'), totalWeight: z.number().positive('Total weight must be positive'), weightUnit: z.string().min(1, 'Weight unit is required'), locationId: z.number().int('Location ID must be an integer'), // Optional parameters fromCountryCode: z.string().optional(), toCountryCode: z.string().optional(), shipDate: z.string().optional(), packageType: z.string().optional(), quantity: z.number().positive().optional(), length: z.number().positive().optional(), width: z.number().positive().optional(), height: z.number().positive().optional(), dimensionUnit: z.string().optional(), declaredValue: z.number().min(0).optional(), isResidential: z.boolean().optional(), }) .passthrough(); // ShipVia LTL rates request parameters schema (extends standard rates with commodity info) export const ShipviaRatesLtlParamsSchema = z .object({ // Required parameters (same as standard rates) fromPostalCode: z.string().min(1, 'From postal code is required'), toPostalCode: z.string().min(1, 'To postal code is required'), totalWeight: z.number().positive('Total weight must be positive'), weightUnit: z.string().min(1, 'Weight unit is required'), locationId: z.number().int('Location ID must be an integer'), // LTL-specific required parameters commodityClass: z.string().min(1, 'Commodity class is required for LTL'), commodityDescription: z.string().min(1, 'Commodity description is required for LTL'), packagingType: z.string().min(1, 'Packaging type is required for LTL'), // Optional parameters fromCountryCode: z.string().optional(), toCountryCode: z.string().optional(), shipDate: z.string().optional(), quantity: z.number().positive().optional(), length: z.number().positive().optional(), width: z.number().positive().optional(), height: z.number().positive().optional(), dimensionUnit: z.string().optional(), declaredValue: z.number().min(0).optional(), isResidential: z.boolean().optional(), liftgateRequired: z.boolean().optional(), insideDelivery: z.boolean().optional(), limitedAccessPickup: z.boolean().optional(), limitedAccessDelivery: z.boolean().optional(), }) .passthrough(); // ShipVia rate result schema export const ShipviaRateResultSchema = z .object({ // Carrier and service info carrier: z.string().optional(), carrierCode: z.string().optional(), carrierName: z.string().optional(), service: z.string().optional(), serviceCode: z.string().optional(), serviceName: z.string().optional(), shipViaId: z.number().optional(), // Pricing rate: z.number().optional(), baseRate: z.number().optional(), totalRate: z.number().optional(), discountedRate: z.number().optional(), currency: z.string().optional(), // Additional charges fuelSurcharge: z.number().optional(), accessorialCharges: z.number().optional(), handlingFee: z.number().optional(), // Transit info transitTime: z.string().optional(), transitDays: z.number().optional(), deliveryDate: z.string().optional(), estimatedDelivery: z.string().optional(), // Zone info zone: z.string().optional(), originZip: z.string().optional(), destinationZip: z.string().optional(), // LTL specific fields commodityClass: z.string().optional(), guaranteed: z.boolean().optional(), }) .passthrough(); // ShipVia rates data schema (array of results) export const ShipviaRatesDataSchema = z.array(ShipviaRateResultSchema); // ShipVia rates response schemas export const ShipviaRatesResponseSchema = BaseResponseSchema(ShipviaRatesDataSchema); export const ShipviaRatesLtlResponseSchema = BaseResponseSchema(ShipviaRatesDataSchema); //# sourceMappingURL=schemas.js.map