import {z} from 'zod' export type GetApiApiV1DeliveryexperienceShipmentCarrierSelectionLabelsArgs = {carrierId?: string | undefined, carrierAccountId?: string | undefined, shipiumLabelIds?: Array | undefined, carrierManifestIds?: Array | undefined, partnerManifestIds?: Array | undefined, shipiumManifestIds?: Array | undefined, carrierServiceMethodIds?: Array | undefined, statuses?: (Array<'success' | 'failure' | 'voided' | 'failover' | 'generated' | 'imported' | 'label_created' | 'manifesting' | 'manifested' | 'manifest_failure' | 'not_set' | 'carrier_selection_failure'>) | undefined, originCountryCode?: string | undefined, originPostalCode?: string | undefined, shipiumTenantId?: string | undefined, fromShipDateTime?: string | undefined, toShipDateTime?: string | undefined, fromManifestDateTime?: string | undefined, toManifestDateTime?: string | undefined, include?: Array | undefined, anchor?: string | undefined, count?: number | undefined, includeLabelImagesInResponse?: boolean | undefined}; export type GetApiApiV1DeliveryexperienceShipmentCarrierSelectionLabelsOptions = {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 getApiApiV1DeliveryexperienceShipmentCarrierSelectionLabelsResponse = 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 }; /** * Retrieve a single page of generated shipment labels that match the supplied parameters. This call is the metadata about the labels, the images of the labels must be asked for in the call, or directly using the `getLabelImageV1` call. * * GET /api/v1/deliveryexperience/shipment/carrierSelection/labels */ export const getApiApiV1DeliveryexperienceShipmentCarrierSelectionLabels = async (args: GetApiApiV1DeliveryexperienceShipmentCarrierSelectionLabelsArgs, options?: GetApiApiV1DeliveryexperienceShipmentCarrierSelectionLabelsOptions) => { const {baseUrl = "https://api.shipium.com", fetch: fetchFn = fetch, oauth2Scheme} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.carrierId != null) query.append("carrierId", String(args.carrierId)) if (args.carrierAccountId != null) query.append("carrierAccountId", String(args.carrierAccountId)) for (const item of args.shipiumLabelIds ?? []) query.append("shipiumLabelIds", String(item)) for (const item of args.carrierManifestIds ?? []) query.append("carrierManifestIds", String(item)) for (const item of args.partnerManifestIds ?? []) query.append("partnerManifestIds", String(item)) for (const item of args.shipiumManifestIds ?? []) query.append("shipiumManifestIds", String(item)) for (const item of args.carrierServiceMethodIds ?? []) query.append("carrierServiceMethodIds", String(item)) for (const item of args.statuses ?? []) query.append("statuses", String(item)) if (args.originCountryCode != null) query.append("originCountryCode", String(args.originCountryCode)) if (args.originPostalCode != null) query.append("originPostalCode", String(args.originPostalCode)) if (args.shipiumTenantId != null) query.append("shipiumTenantId", String(args.shipiumTenantId)) if (args.fromShipDateTime != null) query.append("fromShipDateTime", String(args.fromShipDateTime)) if (args.toShipDateTime != null) query.append("toShipDateTime", String(args.toShipDateTime)) if (args.fromManifestDateTime != null) query.append("fromManifestDateTime", String(args.fromManifestDateTime)) if (args.toManifestDateTime != null) query.append("toManifestDateTime", String(args.toManifestDateTime)) for (const item of args.include ?? []) query.append("include", String(item)) if (args.anchor != null) query.append("anchor", String(args.anchor)) if (args.count != null) query.append("count", String(args.count)) if (args.includeLabelImagesInResponse != null) query.append("includeLabelImagesInResponse", String(args.includeLabelImagesInResponse)) if (oauth2Scheme !== undefined) headers.set('authorization', `Bearer ${oauth2Scheme}`) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/deliveryexperience/shipment/carrierSelection/labels${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(getApiApiV1DeliveryexperienceShipmentCarrierSelectionLabelsResponse, await res.json()) };