import {z} from 'zod' export type GetApiServicesRatingV1RateRequestsIdArgs = {id: string}; export type GetApiServicesRatingV1RateRequestsIdOptions = {baseUrl?: string | undefined, oAuth2?: string | undefined, fetch?: typeof fetch | undefined}; export const customAttribute = z.object({name: z.string().min(1).max(255).optional(), value: z.string().min(1).max(255).optional(), values: z.array(z.string().min(1).max(255)).optional()}); export const ratingApiConfiguration = z.object({enableSlotBooking: z.boolean().optional(), ratingWebhookName: z.string().optional()}); export const capacityProviderIdentifierType = z.enum(["FFW_SCAC", "CARRIER_SCAC", "DOT_NUMBER", "MC_NUMBER", "P44_EU", "SYSTEM", "P44_GLOBAL"]); export const bookingCapacityProviderIdentifier = z.object({type: capacityProviderIdentifierType.optional(), value: z.string().optional()}); export const carrierAccountGroupReference = z.object({code: z.string().min(1).max(128).optional()}); export const logisticsIdentifierTypeEnum = z.enum(["AIR_WAYBILL", "BILL_OF_LADING", "HOUSE_BILL_OF_LADING", "BOOKING_NUMBER", "CARRIER_IATA", "CARRIER_ICAO", "CARRIER_NAME", "CARRIER_SCAC", "FFW_SCAC", "NVOCC_SCAC", "NVOCC_NAME", "FFW_NAME", "FFW_MASTER_ID", "NVOCC_MASTER_ID", "CONTAINER_ID", "CUSTOMER_REFERENCE", "DELIVERY_NUMBER", "EXTERNAL", "FLIGHT_NUMBER", "ORDER", "PICKUP", "PRO", "PURCHASE_ORDER", "RAIL_CAR_ID", "RAIL_WAYBILL", "TRACKING_NUMBER", "TRAILER_ID", "UNKNOWN", "VESSEL_IMO", "VESSEL_NAME", "WAYBILL", "VESSEL_CALL_SIGN", "VESSEL_MMSI", "CARRIER_US_DOT_NUMBER", "CARRIER_MC_NUMBER", "SUBSCRIPTION_ID", "HOUSE_AIR_WAYBILL", "SALES_ORDER", "WAREHOUSE_MOVEMENT_ORDER", "ADVANCED_SHIPMENT_NOTICE", "DRIVER_MOBILE_PHONE_NUMBER", "VEHICLE_ID", "LICENSE_PLATE", "TRAILER_LICENSE_PLATE", "SENSITECH_DEVICE_ID", "EMERSON_DEVICE_ID", "TIVE_DEVICE_ID", "ZILLION_DEVICE_ID", "VOYAGE_NUMBER", "CARRIER_MASTER_ID", "CARRIER_NMC_ID", "CONTAINER_TYPE", "TRAIN_NUMBER", "WAGON_ID", "TRAIN_ID", "CAPACITY_PROVIDER_ACCOUNT_GROUP", "CAPACITY_PROVIDER_ACCOUNT_CODE", "SERIAL_NUMBER", "VEHICLE_IDENTIFICATION_NUMBER", "REFERENCE_NUMBER", "CONTAINER_PIN", "VESSEL_P44_ID", "EXPORT_CUSTOMS_BROKER", "IMPORT_CUSTOMS_BROKER", "POL_QUALITY_CONTROL_PROVIDER", "POD_QUALITY_CONTROL_PROVIDER", "AIRCRAFT_ICAO", "AIRLINE_NAME", "SEAL_NUMBER", "DRAYAGE_CARRIER_SCAC", "EXPORT_DRAYAGE_CARRIER_SCAC", "IMPORT_DRAYAGE_CARRIER_SCAC", "INBOUND_VOYAGE_NUMBER"]); export const logisticsIdentifier = z.object({type: logisticsIdentifierTypeEnum.optional(), value: z.string().min(1).optional()}); export const carrierMetrics = z.object({carrierAssureScore: z.number().optional(), carrierAssureGrade: z.string().optional(), onTimePercentage: z.number().optional(), shipmentCount: z.number().int().optional(), trackingPercentage: z.number().optional()}); export const quoteStatus = z.enum(["QUOTED", "PROCESSING", "CANCELLED", "DECLINED", "EXPIRED"]); export const quoteType = z.enum(["MANUAL", "API", "CONTRACT"]); export const currency = z.enum(["USD", "CAD", "MXN", "EUR"]); export const monetaryValue = z.object({amount: z.number().optional(), currency: currency.optional()}); export const transportationMode = z.enum(["OCEAN", "AIR", "RAIL", "TRUCKLOAD", "LTL", "VOLUME_LTL"]); export const marketQuote = z.object({capacityProviderIdentifier: bookingCapacityProviderIdentifier.optional(), capacityProviderName: z.string().optional(), carrierMetrics: carrierMetrics.optional(), createdDateTime: z.string().optional(), deliveryDate: z.string().optional(), expirationDateTime: z.string().optional(), id: z.string().optional(), lastModifiedDateTime: z.string().optional(), pickupDate: z.string().optional(), respondByDateTime: z.string().optional(), status: quoteStatus.optional(), type: quoteType.optional(), totalRate: monetaryValue.optional(), transportationMode: transportationMode.optional()}); export const quote = z.object({bookable: z.boolean().optional(), capacityProviderQuoteId: z.string().optional(), capacityProviderIdentifier: bookingCapacityProviderIdentifier.optional(), capacityProviderName: z.string().optional(), carrierMetrics: carrierMetrics.optional(), createdDateTime: z.string().optional(), carrierAccountGroups: z.array(carrierAccountGroupReference).optional(), deliveryDate: z.string().optional(), expirationDateTime: z.string().optional(), id: z.string().optional(), lastModifiedDateTime: z.string().optional(), pickupDate: z.string().optional(), respondByDateTime: z.string().optional(), status: quoteStatus.optional(), type: quoteType.optional(), totalRate: monetaryValue.optional(), transportationMode: transportationMode.optional()}); export const ratingDistanceUnit = z.literal("MI"); export const ratingDistanceMeasurement = z.object({unit: ratingDistanceUnit.optional(), value: z.string().optional()}); export const ratingRouteSegment = z.object({fromStopId: z.string().optional(), toStopId: z.string().optional()}); export const zonedDateTimeWindow = z.object({endDateTime: z.string().optional(), localTimeZoneIdentifier: z.string().optional(), startDateTime: z.string().optional()}); export const ratingAppointmentDetails = z.object({appointmentWindow: zonedDateTimeWindow.optional(), dockOperationWindow: zonedDateTimeWindow.optional()}); export const tempUnit = z.enum(["CELSIUS", "FAHRENHEIT"]); export const tempRangeKind = z.object({min: z.number().optional(), max: z.number().optional(), unit: tempUnit.optional()}); export const refrigeratedAccessorial = z.object({code: z.literal("REFRIGERATED").optional(), details: tempRangeKind.optional()}); export const specificationKindBool = z.object({value: z.boolean().optional()}); export const liftgateAccessorial = z.object({code: z.literal("LIFTGATE").optional(), details: specificationKindBool.optional()}); export const lengthUnit = z.enum(["FT", "M", "IN", "CM", "MI", "KM"]); export const quantityKind = z.object({count: z.number().int().optional(), size: z.number().optional(), unit: lengthUnit.optional()}); export const tarpsAccessorial = z.object({code: z.literal("TARPS").optional(), details: quantityKind.optional()}); export const strapsAccessorial = z.object({code: z.literal("STRAPS").optional(), details: quantityKind.optional()}); export const chainsAccessorial = z.object({code: z.literal("CHAINS").optional(), details: quantityKind.optional()}); export const deckHeight = z.enum(["STANDARD", "DROP_DECK", "DOUBLE_DROP"]); export const specificationKindDeckHeight = z.object({value: deckHeight.optional()}); export const deckHeightAccessorial = z.object({code: z.literal("DECK_HEIGHT").optional(), details: specificationKindDeckHeight.optional()}); export const craneAccessorial = z.object({code: z.literal("CRANE").optional(), details: specificationKindBool.optional()}); export const callBeforeArrivalAccessorial = z.object({code: z.literal("CALL_BEFORE_ARRIVAL").optional(), details: specificationKindBool.optional()}); export const dockRequiredAccessorial = z.object({code: z.literal("DOCK_REQUIRED").optional(), details: specificationKindBool.optional()}); export const lockedGateAccessorial = z.object({code: z.literal("LOCKED_GATE").optional(), details: specificationKindBool.optional()}); export const firstComeFirstServedAccessorial = z.object({code: z.literal("FIRST_COME_FIRST_SERVED").optional(), details: specificationKindBool.optional()}); export const appointmentRequiredAccessorial = z.object({code: z.literal("APPOINTMENT_REQUIRED").optional(), details: specificationKindBool.optional()}); export const whiteGloveAccessorial = z.object({code: z.literal("WHITE_GLOVE").optional(), details: specificationKindBool.optional()}); export const hazmatKind = z.object({hazmatClass: z.string().optional(), unCode: z.string().optional()}); export const hazmatAccessorial = z.object({code: z.literal("HAZMAT").optional(), details: hazmatKind.optional()}); export const excessiveLength = z.object({length: z.number().int().gte(6).lte(30).optional()}); export const specificationKindExcessiveLength = z.object({value: excessiveLength.optional()}); export const excessiveLengthAccessorial = z.object({code: z.literal("EXCESSIVE_LENGTH").optional(), details: specificationKindExcessiveLength.optional()}); export const guaranteedByHour = z.object({hour: z.number().int().gte(8).lte(14).optional(), minute: z.number().int().gte(0).lte(59).optional()}); export const specificationKindGuaranteedByHour = z.object({value: guaranteedByHour.optional()}); export const guaranteedServiceLevelAccessorial = z.object({code: z.literal("GUARANTEED").optional(), details: specificationKindGuaranteedByHour.optional()}); export const pickupAccessorials = z.enum(["NCPU", "LTDPU", "AIRPU", "CAMPPU", "CHRCPU", "CLUBPU", "CNVPU", "CONPU", "EDUPU", "FARMPU", "GOVPU", "GROPU", "HOSPU", "HOTLPU", "MILPU", "MINEPU", "NARPU", "NURSPU", "PARKPU", "PIERPU", "PRISPU", "RESPU", "RSRTPU", "SSTORPU", "UTLPU", "NBPU", "HDAYPU", "WEPU", "SATPU", "SUNPU", "APPTPU", "CERTPU", "CFSPU", "COMPU", "DVALPU", "DOCKPU", "FBEDPU", "LGPU", "INPU", "MALLPU", "OVSZEPU", "PJACKPU", "SORTPU", "XCHGPU", "XFERPU", "SHIPLDPU"]); export const deliveryAccessorials = z.enum(["NCDEL", "LTDDEL", "AIRDEL", "CAMPDEL", "CHRCDEL", "CLUBDEL", "CNVDEL", "CONDEL", "EDUDEL", "FARMDEL", "GOVDEL", "GRODEL", "HOSDEL", "HOTLDEL", "MILDEL", "MINEDEL", "NARDEL", "NURSDEL", "PARKDEL", "PIERDEL", "PRISDEL", "SSTORDEL", "UTLDEL", "NBDEL", "AFTRHRDEL", "HDAYDEL", "WEDEL", "SATDEL", "SUNDEL", "APPTDEL", "NOTIFY", "INDEL", "INEDEL", "INGDEL", "INNEDEL", "UNLOADDEL", "COMDEL", "DCDEL", "CFSDEL", "DOCKDEL", "DVALDEL", "EMERGENCYDEL", "FBEDDEL", "LGDEL", "MALLDEL", "OVSZEDEL", "PJACKDEL", "RESDEL", "RSRTDEL", "SORTDEL", "TWOMAN", "XCHGDEL", "XFERDEL", "CSNLDDEL"]); export const nonSpecificAccessorials = z.enum(["EXPEDITE", "EXPEDITE17", "EXPEDITEAM", "GURWIN", "GSSING", "GSMUL", "GSFM", "GS8", "GS9", "GS10", "GS11", "GSAM", "GS14", "GS15", "GS1530", "GUR", "ACCELERATED", "CAPLOAD", "CNTER20", "CNTER40", "CNTER40H", "CNTER45", "CNTER53", "CAPLOADTRA", "CAPLOADPUP", "CHASSIS", "FLTTRCK", "TANK", "OPENTOP", "STRAIGHT", "HOLIWEEK", "WESER", "AFTRHR", "CHNGBOL", "CORBOL", "REEFER", "FRIDGE", "PFH", "MAINTEMP", "HEAT", "PFZ", "PFZC", "PROTECT", "PROTECTDRM", "PROTECTPAL", "FRZABLE", "HAZM", "POISON", "LOAD", "LOADCNT", "LOADUNLOAD", "DRASST", "UNPCK", "UNLOAD", "UNLOADCNT", "O750U6", "OVDIM", "OVERWGHT", "REG", "INT", "IREG", "BYDIND", "TSAC", "HMLAND", "SECINS", "ADVCOL", "CONSOL", "DESCINS", "DLYCHRG", "INBND", "RMVDEB", "TARP", "TCKNU", "PRMIT", "WINSPC", "WVERI", "XTRLBR", "AIR", "AIRBAG", "BAGLINER", "BOBTAIL", "CRANE", "CROSS", "DROPPULL", "FORK", "LABEL", "LIQUOR", "PALLET", "SIGN", "SPECIALEQUIP", "ARCHR", "BLIND", "BOND", "BULKHEAD", "CANFEE", "COD", "CREDEL", "DET", "DRAY", "DRYRU", "EV", "EXPORT", "FOOD", "HAWAII", "HOMEMOVE", "HIGHDOCK", "IMPORT", "LUMPER", "LYOVR", "MARKING", "OILSANDS", "RECON", "SEADOC", "SINGSHIP", "STORAGE", "STPOFF", "TMCHG", "WHITEGLOVE"]); export const excessLengthAccessorials = z.enum(["ELS_6", "ELS_7", "ELS_8", "ELS_9", "ELS_10", "ELS_11", "ELS_12", "ELS_13", "ELS_14", "ELS_15", "ELS_16", "ELS_17", "ELS_18", "ELS_19", "ELS_20", "ELS_21", "ELS_22", "ELS_23", "ELS_24", "ELS_25", "ELS_26", "ELS_27", "ELS_28", "ELS_29", "ELS_30"]); export const otherAccessorial = z.object({code: z.union([pickupAccessorials, deliveryAccessorials, nonSpecificAccessorials, excessLengthAccessorials]).optional()}); export const stopContact = z.object({companyName: z.string().optional(), email: z.string().optional(), familyName: z.string().optional(), givenName: z.string().optional(), mobilePhoneNumber: z.string().optional(), phoneNumber: z.string().optional()}); export const countryCode = z.enum(["US", "CA", "MX", "AG", "BB", "BS", "BZ", "CR", "CU", "DM", "DO", "GD", "GT", "HN", "HT", "JM", "KN", "LC", "NI", "PA", "SV", "TT", "VC", "AI", "AW", "BL", "BM", "BQ", "CW", "GL", "GP", "KY", "MF", "MQ", "MS", "PM", "PR", "SX", "TC", "UM", "VG", "VI", "AT", "BE", "BG", "CY", "CZ", "DK", "DE", "EE", "ES", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IT", "LT", "LU", "LV", "MT", "NL", "PL", "PT", "RO", "SE", "SK", "SI", "CH", "IS", "LI", "NO", "AL", "ME", "MK", "RS", "TR", "AD", "AX", "BA", "BV", "BY", "FO", "GG", "GI", "IM", "IO", "JE", "MC", "MD", "SJ", "SM", "TF", "UA", "VA", "AE", "AF", "AM", "AZ", "BD", "BH", "BN", "BT", "CN", "GE", "HK", "ID", "IL", "IN", "IQ", "IR", "JO", "JP", "KG", "KH", "KP", "KR", "KW", "KZ", "LA", "LB", "LK", "MM", "MN", "MO", "MV", "MY", "NP", "OM", "PH", "PK", "PS", "QA", "RU", "SA", "SG", "SY", "TH", "TJ", "TL", "TM", "TW", "UZ", "VN", "YE", "AO", "BF", "BI", "BJ", "BW", "CD", "CF", "CG", "CI", "CM", "CV", "DJ", "DZ", "EG", "EH", "ER", "ET", "GA", "GH", "GM", "GN", "GQ", "GW", "HM", "KE", "KM", "LR", "LS", "LY", "MA", "MG", "ML", "MR", "MU", "MW", "MZ", "NA", "NE", "NG", "RE", "RW", "SC", "SD", "SH", "SL", "SN", "SO", "SS", "ST", "SZ", "TD", "TG", "TN", "TZ", "UG", "YT", "ZA", "ZM", "ZW", "AR", "BO", "BR", "CL", "CO", "EC", "FK", "GF", "GS", "GY", "PE", "PY", "SR", "UY", "VE", "AS", "AU", "CC", "CK", "CX", "FJ", "FM", "GU", "KI", "MH", "MP", "NC", "NF", "NR", "NU", "NZ", "PF", "PG", "PN", "PW", "SB", "TK", "TO", "TV", "VU", "WF", "WS", "AQ", "EL", "UK", "XK", "XS", "XI"]); export const address = z.object({addressLines: z.array(z.string()).optional(), city: z.string().optional(), country: countryCode.optional(), postalCode: z.string().optional(), state: z.string().optional()}); export const contact = z.object({companyName: z.string().optional(), contactName: z.string().optional(), email: z.string().optional(), faxNumber: z.string().optional(), faxNumberCountryCode: z.string().optional(), phoneNumber: z.string().optional(), phoneNumber2: z.string().optional(), phoneNumber2CountryCode: z.string().optional(), phoneNumberCountryCode: z.string().optional()}); export const location = z.object({address: address.optional(), contact: contact.optional()}); export const stopType = z.enum(["PICKUP", "DELIVERY", "PICKUP_DELIVERY", "PORT_OF_LOADING", "PORT_OF_DISCHARGE", "TRANSSHIPMENT_PORT"]); export const ratingStop = z.object({appointmentDetails: ratingAppointmentDetails.optional(), accessorials: z.array(z.union([refrigeratedAccessorial, liftgateAccessorial, tarpsAccessorial, strapsAccessorial, chainsAccessorial, deckHeightAccessorial, craneAccessorial, callBeforeArrivalAccessorial, dockRequiredAccessorial, lockedGateAccessorial, firstComeFirstServedAccessorial, appointmentRequiredAccessorial, whiteGloveAccessorial, hazmatAccessorial, excessiveLengthAccessorial, guaranteedServiceLevelAccessorial, otherAccessorial])).optional(), contacts: z.array(stopContact).optional(), id: z.string().optional(), location: location.optional(), type: stopType.optional()}); export const ratingRouteInfo = z.object({routeSegments: z.array(ratingRouteSegment).optional(), stops: z.array(ratingStop).optional()}); export const dimensions = z.object({height: z.number().gte(0).optional(), length: z.number().gte(0).optional(), unit: lengthUnit.optional(), width: z.number().gte(0).optional()}); export const volume = z.object({unit: z.enum(["CUBIC_FT", "CUBIC_M", "L", "HL"]).optional(), value: z.number().optional()}); export const weightUnit = z.enum(["LB", "KG"]); export const bookingWeight = z.object({unit: weightUnit.optional(), value: z.number().gte(0).optional()}); export const airCargoMeasurements = z.object({dimensions: dimensions.optional(), volume: volume.optional(), weight: bookingWeight.optional()}); export const airIncotermType = z.enum(["EXW", "FCA", "FAS", "FOB", "CFR", "CIF", "CPT", "CIP", "DPU", "DAP", "DDP"]); export const partyAddress = z.object({addressLines: z.array(z.string()).optional(), addressLabel: z.string().optional(), city: z.string().optional(), country: countryCode.optional(), id: z.string().optional(), postalCode: z.string().optional(), state: z.string().optional()}); export const bookingContact = z.object({companyName: z.string().optional(), email: z.string().optional(), familyName: z.string().optional(), givenName: z.string().optional(), mobilePhoneNumber: z.string().optional(), phoneNumber: z.string().optional()}); export const codeListProvider = z.enum(["WAVE", "CARX", "ESSD", "IDT", "BOLE", "EDOX", "IQAX", "SECR", "TRGO", "ETEU", "TRAC", "BRIT", "GSBN", "WISE", "GLEIF", "W3C", "DNB", "FMC", "DCSA", "ZZZ"]); export const codeListName = z.enum(["DID", "LEI", "DUNS"]); export const identifyingCodes = z.object({codeListProvider: codeListProvider.optional(), codeListName: codeListName.optional(), partyCode: z.string().optional()}); export const locationIdentifierType = z.enum(["UNKNOWN", "AIRPORT_IATA", "AIRPORT_ICAO", "PORT_UN_LOCODE", "RAIL_SPLC", "DATA_PROVIDER_LOCATION_CODE", "LOCODE"]); export const ratingLocationIdentifier = z.object({type: locationIdentifierType.optional(), value: z.string().optional()}); export const partyType = z.enum(["SHIPPER", "CONSIGNEE", "BILL_TO", "NOTIFY_PARTY", "BOOKING_AGENT", "CARRIER_BOOKING_OFFICE"]); export const party = z.object({addressInfo: partyAddress.optional(), contactInfo: bookingContact.optional(), identifyingCodes: identifyingCodes.optional(), locationIdentifiers: z.array(ratingLocationIdentifier).optional(), partyType: partyType.optional(), vatNumber: z.string().optional()}); export const airServiceType = z.enum(["PORT_TO_PORT", "PORT_TO_DOOR", "DOOR_TO_PORT", "DOOR_TO_DOOR"]); export const airDetails = z.object({accessorials: z.array(z.union([refrigeratedAccessorial, liftgateAccessorial, tarpsAccessorial, strapsAccessorial, chainsAccessorial, deckHeightAccessorial, craneAccessorial, callBeforeArrivalAccessorial, dockRequiredAccessorial, lockedGateAccessorial, firstComeFirstServedAccessorial, appointmentRequiredAccessorial, whiteGloveAccessorial, hazmatAccessorial, excessiveLengthAccessorial, guaranteedServiceLevelAccessorial, otherAccessorial])).optional(), cargoMeasurements: airCargoMeasurements.optional(), incoterm: airIncotermType.optional(), parties: z.array(party).optional(), serviceType: airServiceType.optional()}); export const capacityProviderAccount = z.object({code: z.string().optional()}); export const capacityProviderAccountGroup = z.object({accounts: z.array(capacityProviderAccount).optional(), code: z.string().optional()}); export const ltlDetails = z.object({capacityProviderAccountGroup: capacityProviderAccountGroup.optional()}); export const oceanBookingType = z.enum(["LESS_THAN_CONTAINER_LOAD", "FULL_CONTAINER_LOAD", "ROLL_ON_ROLL_OFF", "OUT_OF_GAUGE"]); export const cargoMeasurements = z.object({dimensions: dimensions.optional(), volume: volume.optional(), weight: bookingWeight.optional()}); export const dryCargoContainerCount = z.object({fortyFootContainerCount: z.number().int().optional(), fortyFootHighCubeCount: z.number().int().optional(), fortyfiveFootHighCubeCount: z.number().int().optional(), fortyFootOpenTopCount: z.number().int().optional(), twentyFootContainerCount: z.number().int().optional()}); export const reeferContainerCount = z.object({fortyFootContainerCount: z.number().int().optional(), fortyFootHighCubeCount: z.number().int().optional(), twentyFootContainerCount: z.number().int().optional()}); export const fullContainerLoadContainerCount = z.object({dryCargoCount: dryCargoContainerCount.optional(), reeferCount: reeferContainerCount.optional()}); export const outOfGaugeContainerCount = z.object({fortyFootContainerCount: z.number().int().optional(), twentyFootContainerCount: z.number().int().optional()}); export const incotermType = z.enum(["EXW", "FCA", "FAS", "FOB", "CFR", "CIF", "CPT", "CIP", "DPU", "DAP", "DDP"]); export const oceanServiceType = z.enum(["CONTAINER_YARD_TO_CONTAINER_YARD", "CONTAINER_YARD_TO_DOOR", "DOOR_TO_CONTAINER_YARD", "DOOR_TO_DOOR"]); export const oceanDetails = z.object({accessorials: z.array(z.union([refrigeratedAccessorial, liftgateAccessorial, tarpsAccessorial, strapsAccessorial, chainsAccessorial, deckHeightAccessorial, craneAccessorial, callBeforeArrivalAccessorial, dockRequiredAccessorial, lockedGateAccessorial, firstComeFirstServedAccessorial, appointmentRequiredAccessorial, whiteGloveAccessorial, hazmatAccessorial, excessiveLengthAccessorial, guaranteedServiceLevelAccessorial, otherAccessorial])).optional(), bookingType: oceanBookingType.optional(), cargoMeasurements: cargoMeasurements.optional(), containerCount: z.union([fullContainerLoadContainerCount, outOfGaugeContainerCount]).optional(), incoterm: incotermType.optional(), parties: z.array(party).optional(), serviceType: oceanServiceType.optional()}); export const flatbedType = z.enum(["CONESTOGA", "DOUBLE_DROP"]); export const truckLoadPreferenceType = z.enum(["FULL", "PARTIAL"]); export const trailerType = z.enum(["FLATBED", "REFRIGERATED", "DRY_VAN", "VAN_CURTAINS", "MEGA", "TANKER", "LOWBOY", "JUMBO", "AUTO_CARRIER", "TRAILER", "VAN", "STRETCH_TRAILER", "CONTAINER"]); export const length = z.object({unit: lengthUnit.optional(), value: z.number().gte(0).optional()}); export const refrigeratedClass = z.enum(["AMBIENT", "CHILLED", "FROZEN", "DEEP_FROZEN"]); export const refrigeratedTrailerDetails = z.object({refrigeratedClass: refrigeratedClass.optional()}); export const truckDetails = z.object({accessorials: z.array(z.union([refrigeratedAccessorial, liftgateAccessorial, tarpsAccessorial, strapsAccessorial, chainsAccessorial, deckHeightAccessorial, craneAccessorial, callBeforeArrivalAccessorial, dockRequiredAccessorial, lockedGateAccessorial, firstComeFirstServedAccessorial, appointmentRequiredAccessorial, whiteGloveAccessorial, hazmatAccessorial, excessiveLengthAccessorial, guaranteedServiceLevelAccessorial, otherAccessorial])).optional(), flatbedType: flatbedType.optional(), loadPreference: truckLoadPreferenceType.optional(), trailerType: trailerType.optional(), trailerLength: length.optional(), trailerVolume: volume.optional(), trailerDetails: refrigeratedTrailerDetails.optional()}); export const volumeLtlDetails = z.object({capacityProviderAccountGroup: capacityProviderAccountGroup.optional(), totalLinearFeet: z.number().int().optional()}); export const shippingDetails = z.object({air: airDetails.optional(), ltl: ltlDetails.optional(), ocean: oceanDetails.optional(), truck: truckDetails.optional(), volumeLtl: volumeLtlDetails.optional()}); export const cubicDimension = z.object({height: z.number().optional(), length: z.number().optional(), width: z.number().optional()}); export const nmfcCode = z.object({code: z.string().optional()}); export const hazmatDetails = z.object({code: z.string().optional(), emergencyContact: contact.optional(), identificationNumber: z.string().optional(), packingGroup: z.enum(["I", "II", "III", "NONE"]).optional(), properShippingName: z.string().optional()}); export const packageContentIdentifier = z.object({type: z.enum(["PURCHASE_ORDER_NUMBER", "SKU_NUMBER", "DELIVERY_NUMBER"]).optional(), value: z.string().optional()}); export const packageContents = z.object({countryOfManufacture: z.enum(["US", "CA", "MX", "AG", "BB", "BS", "BZ", "CR", "CU", "DM", "DO", "GD", "GT", "HN", "HT", "JM", "KN", "LC", "NI", "PA", "SV", "TT", "VC", "AI", "AW", "BL", "BM", "BQ", "CW", "GL", "GP", "KY", "MF", "MQ", "MS", "PM", "PR", "SX", "TC", "UM", "VG", "VI", "AT", "BE", "BG", "CY", "CZ", "DK", "DE", "EE", "ES", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IT", "LT", "LU", "LV", "MT", "NL", "PL", "PT", "RO", "SE", "SK", "SI", "CH", "IS", "LI", "NO", "AL", "ME", "MK", "RS", "TR", "AD", "AX", "BA", "BV", "BY", "FO", "GG", "GI", "IM", "IO", "JE", "MC", "MD", "SJ", "SM", "TF", "UA", "VA", "AE", "AF", "AM", "AZ", "BD", "BH", "BN", "BT", "CN", "GE", "HK", "ID", "IL", "IN", "IQ", "IR", "JO", "JP", "KG", "KH", "KP", "KR", "KW", "KZ", "LA", "LB", "LK", "MM", "MN", "MO", "MV", "MY", "NP", "OM", "PH", "PK", "PS", "QA", "RU", "SA", "SG", "SY", "TH", "TJ", "TL", "TM", "TW", "UZ", "VN", "YE", "AO", "BF", "BI", "BJ", "BW", "CD", "CF", "CG", "CI", "CM", "CV", "DJ", "DZ", "EG", "EH", "ER", "ET", "GA", "GH", "GM", "GN", "GQ", "GW", "HM", "KE", "KM", "LR", "LS", "LY", "MA", "MG", "ML", "MR", "MU", "MW", "MZ", "NA", "NE", "NG", "RE", "RW", "SC", "SD", "SH", "SL", "SN", "SO", "SS", "ST", "SZ", "TD", "TG", "TN", "TZ", "UG", "YT", "ZA", "ZM", "ZW", "AR", "BO", "BR", "CL", "CO", "EC", "FK", "GF", "GS", "GY", "PE", "PY", "SR", "UY", "VE", "AS", "AU", "CC", "CK", "CX", "FJ", "FM", "GU", "KI", "MH", "MP", "NC", "NF", "NR", "NU", "NZ", "PF", "PG", "PN", "PW", "SB", "TK", "TO", "TV", "VU", "WF", "WS", "AQ", "EL", "UK", "XK", "XS", "XI"]).optional(), description: z.string().optional(), hazmatDetails: z.array(hazmatDetails).optional(), packageContentIdentifiers: z.array(packageContentIdentifier).optional(), packageContentQuantity: z.number().int().optional()}); export const package = z.object({contact: contact.optional(), description: z.string().optional(), freightClass: z.enum(["50", "55", "60", "65", "70", "77.5", "85", "92.5", "100", "110", "125", "150", "175", "200", "250", "300", "400", "500"]).optional(), involvedParties: z.array(party).optional(), nmfcCodes: z.array(nmfcCode).optional(), packageContainerType: z.enum(["BAG", "BALE", "BOX", "BUCKET", "PAIL", "BUNDLE", "CAN", "CARTON", "CASE", "COIL", "CRATE", "CYLINDER", "EACH", "FLAT", "LOOSE", "ROLL", "TUBE"]).optional(), packageContents: z.array(packageContents).optional(), packageDimensions: cubicDimension.optional(), packageQuantity: z.number().int().optional(), weightPerPackage: z.number().optional()}); export const handlingUnit = z.object({commodityType: z.string().optional(), contact: contact.optional(), deliveryStopNumber: z.number().int().optional(), description: z.string().optional(), freightClasses: z.array(z.enum(["50", "55", "60", "65", "70", "77.5", "85", "92.5", "100", "110", "125", "150", "175", "200", "250", "300", "400", "500"])).optional(), handlingUnitDimensions: cubicDimension.optional(), handlingUnitQuantity: z.number().int().optional(), handlingUnitType: z.enum(["BAG", "BALE", "BARREL", "BOX", "BUCKET", "BUNDLE", "CAN", "CARTON", "CASE", "COIL", "CRATE", "CYLINDER", "DRUM", "PACK", "PAIL", "PALLET", "PIECES", "REEL", "ROLL", "SKID", "TOTE", "TRAY", "TUBE"]).optional(), harmonizedCode: z.string().optional(), nmfcCodes: z.array(nmfcCode).optional(), packages: z.array(package).optional(), pickupStopNumber: z.number().int().optional(), stackable: z.boolean().optional(), totalValue: monetaryValue.optional(), weightPerHandlingUnit: z.number().optional()}); export const ratingShipmentDetails = z.object({accessorials: z.array(z.union([refrigeratedAccessorial, liftgateAccessorial, tarpsAccessorial, strapsAccessorial, chainsAccessorial, deckHeightAccessorial, craneAccessorial, callBeforeArrivalAccessorial, dockRequiredAccessorial, lockedGateAccessorial, firstComeFirstServedAccessorial, appointmentRequiredAccessorial, whiteGloveAccessorial, hazmatAccessorial, excessiveLengthAccessorial, guaranteedServiceLevelAccessorial, otherAccessorial])).optional(), deliveryStopId: z.string().optional(), description: z.string().optional(), handlingUnits: z.array(handlingUnit).optional(), identifiers: z.array(logisticsIdentifier).optional(), pickupStopId: z.string().optional()}); export const rateRequestDetail = z.object({attributes: z.array(customAttribute).optional(), deliveryDate: z.string().optional(), distanceToTravel: ratingDistanceMeasurement.optional(), estimatedDeliveryDate: z.string().optional(), pickupDate: z.string().optional(), routeInfo: ratingRouteInfo.optional(), shippingDetails: shippingDetails.optional(), shipmentDetails: z.array(ratingShipmentDetails).optional(), shipperContactInfo: bookingContact.optional()}); export const rateType = z.enum(["CONTRACT", "SPOT", "ALL"]); export const ratingSourceMethod = z.enum(["API", "WEBAPP"]); export const rateRequestStatus = z.enum(["OPEN", "QUOTES_REQUESTED", "QUOTES_RECEIVED"]); export const rateRequest = z.object({attributes: z.array(customAttribute).optional(), apiConfiguration: ratingApiConfiguration.optional(), capacityProviderIdentifiers: z.array(bookingCapacityProviderIdentifier).optional(), carrierAccountGroups: z.array(carrierAccountGroupReference).optional(), createdDateTime: z.string().optional(), expirationDateTime: z.string().optional(), identifiers: z.array(logisticsIdentifier).optional(), id: z.string().optional(), lastModifiedDateTime: z.string().optional(), marketQuotes: z.array(marketQuote).optional(), name: z.string().optional(), quotes: z.array(quote).optional(), rateDetail: rateRequestDetail.optional(), rateTypes: z.array(rateType).optional(), ratingSourceMethod: ratingSourceMethod.optional(), status: rateRequestStatus.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 }; /** * Get Rate Request * * GET /services/rating/v1/rate-requests/{id} */ export const getApiServicesRatingV1RateRequestsId = async (args: GetApiServicesRatingV1RateRequestsIdArgs, options?: GetApiServicesRatingV1RateRequestsIdOptions) => { const {baseUrl = "https://na12.api.project44.com", fetch: fetchFn = fetch, oAuth2} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (oAuth2 !== undefined) headers.set('authorization', `Bearer ${oAuth2}`) const url = `${baseUrl.replace(/\/+$/, '')}/services/rating/v1/rate-requests/${encodeURIComponent(String(args.id))}${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(rateRequest, await res.json()) };