/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v4-mini"; import { remap as remap$ } from "../../lib/primitives.js"; import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { TrackingStatusEnum, TrackingStatusEnum$inboundSchema, TrackingStatusEnum$outboundSchema, } from "./trackingstatusenum.js"; import { TrackingStatusLocationBase, TrackingStatusLocationBase$inboundSchema, TrackingStatusLocationBase$Outbound, TrackingStatusLocationBase$outboundSchema, } from "./trackingstatuslocationbase.js"; import { TrackingStatusSubstatus, TrackingStatusSubstatus$inboundSchema, TrackingStatusSubstatus$Outbound, TrackingStatusSubstatus$outboundSchema, } from "./trackingstatussubstatus.js"; /** * The latest tracking information of this shipment. */ export type TrackingStatus = { /** * An object containing zip, city, state and country information of the tracking event. */ location?: TrackingStatusLocationBase | undefined; objectCreated: Date; objectId: string; objectUpdated: Date; /** * Indicates the high level status of the shipment. */ status: TrackingStatusEnum; /** * A finer-grained classification of the tracking event. */ substatus?: TrackingStatusSubstatus | undefined; /** * Date and time when the carrier scanned this tracking event. This is displayed in UTC. */ statusDate?: Date | undefined; /** * The human-readable description of the status. */ statusDetails: string; }; /** @internal */ export const TrackingStatus$inboundSchema: z.ZodMiniType< TrackingStatus, unknown > = z.pipe( z.object({ location: z.optional(TrackingStatusLocationBase$inboundSchema), object_created: z.pipe( z.iso.datetime({ offset: true }), z.transform(v => new Date(v)), ), object_id: z.string(), object_updated: z.pipe( z.iso.datetime({ offset: true }), z.transform(v => new Date(v)), ), status: TrackingStatusEnum$inboundSchema, substatus: z.optional(TrackingStatusSubstatus$inboundSchema), status_date: z.optional( z.pipe(z.iso.datetime({ offset: true }), z.transform(v => new Date(v))), ), status_details: z.string(), }), z.transform((v) => { return remap$(v, { "object_created": "objectCreated", "object_id": "objectId", "object_updated": "objectUpdated", "status_date": "statusDate", "status_details": "statusDetails", }); }), ); /** @internal */ export type TrackingStatus$Outbound = { location?: TrackingStatusLocationBase$Outbound | undefined; object_created: string; object_id: string; object_updated: string; status: string; substatus?: TrackingStatusSubstatus$Outbound | undefined; status_date?: string | undefined; status_details: string; }; /** @internal */ export const TrackingStatus$outboundSchema: z.ZodMiniType< TrackingStatus$Outbound, TrackingStatus > = z.pipe( z.object({ location: z.optional(TrackingStatusLocationBase$outboundSchema), objectCreated: z.pipe(z.date(), z.transform(v => v.toISOString())), objectId: z.string(), objectUpdated: z.pipe(z.date(), z.transform(v => v.toISOString())), status: TrackingStatusEnum$outboundSchema, substatus: z.optional(TrackingStatusSubstatus$outboundSchema), statusDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), statusDetails: z.string(), }), z.transform((v) => { return remap$(v, { objectCreated: "object_created", objectId: "object_id", objectUpdated: "object_updated", statusDate: "status_date", statusDetails: "status_details", }); }), ); export function trackingStatusToJSON(trackingStatus: TrackingStatus): string { return JSON.stringify(TrackingStatus$outboundSchema.parse(trackingStatus)); } export function trackingStatusFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => TrackingStatus$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'TrackingStatus' from JSON`, ); }