/* * 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"; /** * Address represents the address as retrieved from the database */ export type AddressCompleteCreateRequest = { /** * **required for purchase**
* * @remarks * First and Last Name of the addressee */ name: string; /** * Company Name */ company?: string | undefined; /** * **required for purchase**
* * @remarks * First street line. Usually street number and street name (except for DHL Germany, see street_no). */ street1: string; /** * Second street line. */ street2?: string | undefined; /** * Third street line. * * @remarks * Only accepted for USPS international shipments, UPS domestic and UPS international shipments. */ street3?: string | undefined; /** * Street number of the addressed building. * * @remarks * This field can be included in street1 for all carriers except for DHL Germany. */ streetNo?: string | undefined; /** * **required for purchase**
* * @remarks * Name of a city. When creating a Quote Address, sending a city is optional but will yield more accurate Rates. * Please bear in mind that city names may be ambiguous (there are 34 Springfields in the US). Pass in a state * or a ZIP code (see below), if known, it will yield more accurate results. */ city: string; /** * **required for purchase for some countries**
* * @remarks * State/Province values are required for shipments from/to the US, AU, and CA. UPS requires province for some * countries (i.e Ireland). To receive more accurate quotes, passing this field is recommended. Most carriers * only accept two or three character state abbreviations. */ state: string; /** * **required for purchase**
* * @remarks * Postal code of an Address. When creating a Quote Addresses, sending a ZIP is optional but will yield more * accurate Rates. */ zip: string; /** * ISO 3166-1 alpha-2 country codes and country names can be used. For most consistent results, we recommend using country codes like `US` or `DE`. * * @remarks * If using country names, please ensure they are spelled correctly and in English. Country names are converted to country codes. * Refer to this guide for a list of country codes. * Sending a country is always required. */ country: string; /** * Addresses containing a phone number allow carriers to call the recipient when delivering the Parcel. This * * @remarks * increases the probability of delivery and helps to avoid accessorial charges after a Parcel has been shipped. */ phone?: string | undefined; /** * E-mail address of the contact person, RFC3696/5321-compliant. */ email?: string | undefined; isResidential?: boolean | undefined; /** * A string of up to 100 characters that can be filled with any additional information you want * * @remarks * to attach to the object. */ metadata?: string | undefined; validate?: boolean | undefined; }; /** @internal */ export const AddressCompleteCreateRequest$inboundSchema: z.ZodMiniType< AddressCompleteCreateRequest, unknown > = z.pipe( z.object({ name: z.string(), company: z.optional(z.string()), street1: z.string(), street2: z.optional(z.string()), street3: z.optional(z.string()), street_no: z.optional(z.string()), city: z.string(), state: z.string(), zip: z.string(), country: z.string(), phone: z.optional(z.string()), email: z.optional(z.string()), is_residential: z.optional(z.boolean()), metadata: z.optional(z.string()), validate: z.optional(z.boolean()), }), z.transform((v) => { return remap$(v, { "street_no": "streetNo", "is_residential": "isResidential", }); }), ); /** @internal */ export type AddressCompleteCreateRequest$Outbound = { name: string; company?: string | undefined; street1: string; street2?: string | undefined; street3?: string | undefined; street_no?: string | undefined; city: string; state: string; zip: string; country: string; phone?: string | undefined; email?: string | undefined; is_residential?: boolean | undefined; metadata?: string | undefined; validate?: boolean | undefined; }; /** @internal */ export const AddressCompleteCreateRequest$outboundSchema: z.ZodMiniType< AddressCompleteCreateRequest$Outbound, AddressCompleteCreateRequest > = z.pipe( z.object({ name: z.string(), company: z.optional(z.string()), street1: z.string(), street2: z.optional(z.string()), street3: z.optional(z.string()), streetNo: z.optional(z.string()), city: z.string(), state: z.string(), zip: z.string(), country: z.string(), phone: z.optional(z.string()), email: z.optional(z.string()), isResidential: z.optional(z.boolean()), metadata: z.optional(z.string()), validate: z.optional(z.boolean()), }), z.transform((v) => { return remap$(v, { streetNo: "street_no", isResidential: "is_residential", }); }), ); export function addressCompleteCreateRequestToJSON( addressCompleteCreateRequest: AddressCompleteCreateRequest, ): string { return JSON.stringify( AddressCompleteCreateRequest$outboundSchema.parse( addressCompleteCreateRequest, ), ); } export function addressCompleteCreateRequestFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => AddressCompleteCreateRequest$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'AddressCompleteCreateRequest' from JSON`, ); }