import {z} from 'zod' export type Weight = {weightUnit?: ('g' | 'kg' | 'oz' | 'lb') | undefined, weight?: number | undefined}; export type CubicVolume = {cubicVolumeUnit?: ('in' | 'ft' | 'cm' | 'm') | undefined, cubicVolume?: number | undefined}; export type CarrierLabelCostLineItem = {name?: string | undefined, currencyCode?: string | undefined, cost?: number | undefined}; export type ShiptimeLabelDimensions = {height?: number | undefined, width?: number | undefined, linearUnits?: string | undefined}; export type ShiptimeLabelProperties = {height: number, width: number, linearUnits: string, dpi: number, labelOrientation: string, nonZplLabelDimensions?: ShiptimeLabelDimensions | undefined}; export type CarrierLabelImage = {imageEncoding?: string | undefined, imageContents?: string | undefined, imageFormat?: string | undefined}; export type PrinterlessInfo = {type?: string | undefined, valueRepresented?: string | undefined}; export type CarrierLabelInfo = {labelExpiration?: string | undefined, labelFormat?: string | undefined, labelProperties?: ShiptimeLabelProperties | undefined, labelImage?: CarrierLabelImage | undefined, labelUrl?: string | undefined, carrierTrackingId?: string | undefined, carrierTrackingLink?: string | undefined, packageReferenceIdentifier?: string | undefined, shipiumPackageReferenceId?: string | undefined, packageScannableId?: string | undefined, carrierShipmentId?: string | undefined, printerlessInfo?: PrinterlessInfo | undefined}; export type DocumentImage = {documentEncoding?: string | undefined, documentContents?: string | undefined}; export type InternationalDocumentInfo = {documentType?: ('commercial_invoice' | 'electronic_export_information' | 'ps_2976' | 'air_waybill' | 'multiple' | 'unknown') | undefined, documentExpiration?: string | undefined, documentFormat?: string | undefined, documentImage?: DocumentImage | undefined, electronicallySubmitted?: boolean | undefined, packageReferenceIdentifier?: string | undefined}; export type HazardousMaterialsDocumentInfo = {documentType?: ('OP_900LG' | 'OP_900LL') | undefined, documentExpiration?: string | undefined, documentFormat?: string | undefined, documentImage?: DocumentImage | undefined, electronicallySubmitted?: boolean | undefined, packageReferenceIdentifier?: string | undefined}; export type TrackingEvent = {deliveryStep?: ('InfoReceived' | 'InTransit' | 'OutForDelivery' | 'Delivered' | 'Exception' | 'Unknown') | undefined, shipmentStatus?: ('InfoReceived' | 'PickedUp' | 'ArrivedCarrierFacility' | 'DepartedCarrierFacility' | 'InTransit' | 'Hold' | 'OutForDelivery' | 'Delivered' | 'Exception' | 'Unknown') | undefined, statusMessage?: string | undefined, eventDateTime?: string | undefined, eventCity?: string | undefined, eventRegion?: string | undefined, eventPostalCode?: string | undefined, eventCountry?: string | undefined}; export type TrackingInfo = {carrier?: string | undefined, trackingId?: string | undefined, shippedDateTime?: string | undefined, deliveredDateTime?: string | undefined, currentStatus?: TrackingEvent | undefined, events?: Array | undefined}; export type CarrierLabelImportBatchItem = {partnerManifestId?: string | undefined, effectiveShipDateTime?: string | undefined, estimatedDeliveryDate?: string | undefined, estimatedInjectionDateTime?: string | undefined, labelCreationDateTime?: string | undefined, manifestDateTime?: string | undefined, carrier: string, carrierAccountNumber?: string | undefined, carrierServiceMethodId: string, carrierShipmentId?: string | undefined, carrierTrackingId?: string | undefined, carrierTrackingLink?: string | undefined, shipiumTrackingId?: string | undefined, carrierGroupId?: string | undefined, packageScannableId?: string | undefined, partnerThirdPartyBillingAccountId?: string | undefined, shipiumThirdPartyBillingAccountId?: string | undefined, carrierLabelCurrencyCode?: string | undefined, carrierLabelPrice?: number | undefined, billableWeight?: Weight | undefined, billableCubicVolume?: CubicVolume | undefined, labelCostLineItems?: Array | undefined, documents?: Array | undefined, internationalDocuments?: Array | undefined, hazardousMaterialsDocuments?: Array | undefined, trackingInfo?: TrackingInfo | undefined, testMode?: boolean | undefined, shipmentId: string, carrierSelectionId: string}; export type CarrierLabelImportBatch = {labels: Array}; export type CreateApiApiV1DeliveryexperienceShipmentCarrierSelectionBatchLabelImportArgs = {body: CarrierLabelImportBatch}; export type CreateApiApiV1DeliveryexperienceShipmentCarrierSelectionBatchLabelImportOptions = {baseUrl?: string | undefined, oauth2Scheme?: string | undefined, fetch?: typeof fetch | undefined}; export const weight = z.object({weightUnit: z.enum(["g", "kg", "oz", "lb"]).optional(), weight: z.number().optional()}); export const cubicVolume = z.object({cubicVolumeUnit: z.enum(["in", "ft", "cm", "m"]).optional(), cubicVolume: z.number().optional()}); export const shiptimeLabelDimensions = z.object({height: z.number().optional(), width: z.number().optional(), linearUnits: z.string().optional()}); export const shiptimeLabelProperties = z.object({height: z.number(), width: z.number(), linearUnits: z.string(), dpi: z.number().int(), labelOrientation: z.string(), nonZplLabelDimensions: shiptimeLabelDimensions.optional()}); export const carrierLabelImage = z.object({imageEncoding: z.string().optional(), imageContents: z.string().optional(), imageFormat: z.string().optional()}); export const printerlessInfo = z.object({type: z.string().optional(), valueRepresented: z.string().optional()}); export const carrierLabelInfo = z.object({labelExpiration: z.string().optional(), labelFormat: z.string().optional(), labelProperties: shiptimeLabelProperties.optional(), labelImage: carrierLabelImage.optional(), labelUrl: z.string().optional(), carrierTrackingId: z.string().optional(), carrierTrackingLink: z.string().optional(), packageReferenceIdentifier: z.string().optional(), shipiumPackageReferenceId: z.string().optional(), packageScannableId: z.string().optional(), carrierShipmentId: z.string().optional(), printerlessInfo: printerlessInfo.optional()}); export const documentImage = z.object({documentEncoding: z.string().optional(), documentContents: z.string().optional()}); export const internationalDocumentInfo = z.object({documentType: z.enum(["commercial_invoice", "electronic_export_information", "ps_2976", "air_waybill", "multiple", "unknown"]).optional(), documentExpiration: z.string().optional(), documentFormat: z.string().optional(), documentImage: documentImage.optional(), electronicallySubmitted: z.boolean().optional(), packageReferenceIdentifier: z.string().optional()}); export const hazardousMaterialsDocumentInfo = z.object({documentType: z.enum(["OP_900LG", "OP_900LL"]).optional(), documentExpiration: z.string().optional(), documentFormat: z.string().optional(), documentImage: documentImage.optional(), electronicallySubmitted: z.boolean().optional(), packageReferenceIdentifier: z.string().optional()}); export const laneMatch = z.object({laneId: z.string().optional(), partnerLaneId: z.string().optional()}); export const trackingEvent = z.object({deliveryStep: z.enum(["InfoReceived", "InTransit", "OutForDelivery", "Delivered", "Exception", "Unknown"]).optional(), shipmentStatus: z.enum(["InfoReceived", "PickedUp", "ArrivedCarrierFacility", "DepartedCarrierFacility", "InTransit", "Hold", "OutForDelivery", "Delivered", "Exception", "Unknown"]).optional(), statusMessage: z.string().optional(), eventDateTime: z.string().optional(), eventCity: z.string().optional(), eventRegion: z.string().optional(), eventPostalCode: z.string().optional(), eventCountry: z.string().optional()}); export const trackingInfo = z.object({carrier: z.string().optional(), trackingId: z.string().optional(), shippedDateTime: z.string().optional(), deliveredDateTime: z.string().optional(), currentStatus: trackingEvent.optional(), events: z.array(trackingEvent).optional()}); export const carrierLabel = z.object({shipiumShipmentId: z.string().optional(), partnerShipmentId: z.string().optional(), carrierSelectionId: z.string().optional(), shipiumTenantId: z.string().optional(), partnerTenantId: z.string().optional(), shipiumLabelId: z.string().optional(), eligibleForManifest: z.boolean().optional(), partnerManifestId: z.string().optional(), status: z.enum(["success", "failure", "voided", "failover", "generated", "imported", "label_created", "manifesting", "manifested", "manifest_failure", "not_set", "carrier_selection_failure"]).optional(), statusDetails: z.string().optional(), effectiveShipDateTime: z.string().optional(), estimatedDeliveryDate: z.string().optional(), estimatedInjectionDateTime: z.string().optional(), labelCreationDateTime: z.string().optional(), cancellationDateTime: z.string().optional(), manifestDateTime: z.string().optional(), serviceMethodIdentifier: z.string().optional(), serviceMethodUrn: z.string().optional(), carrier: z.string().optional(), carrierServiceName: z.string().optional(), serviceMethodName: z.string().optional(), carrierServiceMethodId: z.string().optional(), carrierShipmentId: z.string().optional(), carrierTrackingId: z.string().optional(), carrierTrackingLink: z.string().optional(), customLabelEntries: z.record(z.string(), z.string()).optional(), shipiumTrackingId: z.string().optional(), carrierGroupId: z.string().optional(), packageScannableId: z.string().optional(), partnerThirdPartyBillingAccountId: z.string().optional(), shipiumThirdPartyBillingAccountId: z.string().optional(), thirdPartyBillingForShippingCosts: z.boolean().optional(), thirdPartyBillingForDutiesAndTaxes: z.boolean().optional(), carrierLabelCurrencyCode: z.string().optional(), carrierLabelPrice: z.number().optional(), estimatedLabelCost: z.number().optional(), billableWeight: weight.optional(), billableCubicVolume: cubicVolume.optional(), documents: z.array(carrierLabelInfo).optional(), internationalDocuments: z.array(internationalDocumentInfo).optional(), hazardousMaterialsDocuments: z.array(hazardousMaterialsDocumentInfo).optional(), fulfilledByCarrier: z.string().optional(), fulfilledByServiceMethod: z.string().optional(), fulfilledByCarrierTrackingId: z.string().optional(), laneMatch: laneMatch.optional(), labelFailoverOccurred: z.boolean().optional(), trackingInfo: trackingInfo.optional(), testMode: z.boolean().optional(), failureType: z.string().optional(), multiParcel: z.boolean().optional()}); export const createApiApiV1DeliveryexperienceShipmentCarrierSelectionBatchLabelImportResponse = z.array(carrierLabel); 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 }; /** * Import a batch of labels into Shipium's system that were created outside of Shipium. There must be a shipment and a carrier selection already created within Shipium's system that each label can be associated with. * * POST /api/v1/deliveryexperience/shipment/carrierSelection/batchLabelImport */ export const createApiApiV1DeliveryexperienceShipmentCarrierSelectionBatchLabelImport = async (args: CreateApiApiV1DeliveryexperienceShipmentCarrierSelectionBatchLabelImportArgs, options?: CreateApiApiV1DeliveryexperienceShipmentCarrierSelectionBatchLabelImportOptions) => { const {baseUrl = "https://api.shipium.com", fetch: fetchFn = fetch, oauth2Scheme} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (oauth2Scheme !== undefined) headers.set('authorization', `Bearer ${oauth2Scheme}`) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/deliveryexperience/shipment/carrierSelection/batchLabelImport${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 validateResponse(createApiApiV1DeliveryexperienceShipmentCarrierSelectionBatchLabelImportResponse, await res.json()) };