@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
291 lines • 12.1 kB
JavaScript
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