/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod"; 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"; /** * A short code. * * @remarks * * Reference(s): * - https://en.wikipedia.org/wiki/Short_code */ export type ShortCode = { /** * Required. The short code digits, without a leading plus ('+') or country calling code, e.g. "611". */ number?: string | undefined; /** * Required. The BCP-47 region code of the location where calls to this short code can be made, such as "US" and "BB". * * @remarks * * Reference(s): * - http://www.unicode.org/reports/tr35/#unicode_region_subtag */ regionCode?: string | undefined; }; /** * An object representing a phone number, suitable as an API wire format. * * @remarks * * This representation: * * - should not be used for locale-specific formatting of a phone number, such as "+1 (650) 253-0000 ext. 123" * * - is not designed for efficient storage - may not be suitable for dialing - specialized libraries (see references) should be used to parse the number for that purpose * * To do something meaningful with this number, such as format it for various use-cases, convert it to an `i18n.phonenumbers.PhoneNumber` object first. * * For instance, in Java this would be: * * com.google.type.PhoneNumber wireProto = com.google.type.PhoneNumber.newBuilder().build(); com.google.i18n.phonenumbers.Phonenumber.PhoneNumber phoneNumber = PhoneNumberUtil.getInstance().parse(wireProto.getE164Number(), "ZZ"); if (!wireProto.getExtension().isEmpty()) { phoneNumber.setExtension(wireProto.getExtension()); } * * Reference(s): * - https://github.com/google/libphonenumber */ export type PhoneNumber = { /** * The phone number, represented as a leading plus sign ('+'), followed by a phone number that uses a relaxed ITU E.164 format consisting of the country calling code (1 to 3 digits) and the subscriber number, with no additional spaces or formatting, e.g.: - correct: "+15552220123" - incorrect: "+1 (555) 222-01234 x123". * * @remarks * * The ITU E.164 format limits the latter to 12 digits, but in practice not all countries respect that, so we relax that restriction here. National-only numbers are not allowed. * * References: - https://www.itu.int/rec/T-REC-E.164-201011-I - https://en.wikipedia.org/wiki/E.164. - https://en.wikipedia.org/wiki/List_of_country_calling_codes */ e164Number?: string | undefined; /** * The phone number's extension. The extension is not standardized in ITU recommendations, except for being defined as a series of numbers with a maximum length of 40 digits. Other than digits, some other dialing characters such as ',' (indicating a wait) or '#' may be stored here. * * @remarks * * Note that no regions currently use extensions with short codes, so this field is normally only set in conjunction with an E.164 number. It is held separately from the E.164 number to allow for short code extensions in the future. */ extension?: string | undefined; /** * A short code. * * @remarks * * Reference(s): * - https://en.wikipedia.org/wiki/Short_code */ shortCode?: ShortCode | null | undefined; }; /** @internal */ export const ShortCode$inboundSchema: z.ZodType< ShortCode, z.ZodTypeDef, unknown > = z.object({ number: z.string().optional(), region_code: z.string().optional(), }).transform((v) => { return remap$(v, { "region_code": "regionCode", }); }); /** @internal */ export type ShortCode$Outbound = { number?: string | undefined; region_code?: string | undefined; }; /** @internal */ export const ShortCode$outboundSchema: z.ZodType< ShortCode$Outbound, z.ZodTypeDef, ShortCode > = z.object({ number: z.string().optional(), regionCode: z.string().optional(), }).transform((v) => { return remap$(v, { regionCode: "region_code", }); }); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace ShortCode$ { /** @deprecated use `ShortCode$inboundSchema` instead. */ export const inboundSchema = ShortCode$inboundSchema; /** @deprecated use `ShortCode$outboundSchema` instead. */ export const outboundSchema = ShortCode$outboundSchema; /** @deprecated use `ShortCode$Outbound` instead. */ export type Outbound = ShortCode$Outbound; } export function shortCodeToJSON(shortCode: ShortCode): string { return JSON.stringify(ShortCode$outboundSchema.parse(shortCode)); } export function shortCodeFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ShortCode$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ShortCode' from JSON`, ); } /** @internal */ export const PhoneNumber$inboundSchema: z.ZodType< PhoneNumber, z.ZodTypeDef, unknown > = z.object({ e164_number: z.string().optional(), extension: z.string().optional(), short_code: z.nullable(z.lazy(() => ShortCode$inboundSchema)).optional(), }).transform((v) => { return remap$(v, { "e164_number": "e164Number", "short_code": "shortCode", }); }); /** @internal */ export type PhoneNumber$Outbound = { e164_number?: string | undefined; extension?: string | undefined; short_code?: ShortCode$Outbound | null | undefined; }; /** @internal */ export const PhoneNumber$outboundSchema: z.ZodType< PhoneNumber$Outbound, z.ZodTypeDef, PhoneNumber > = z.object({ e164Number: z.string().optional(), extension: z.string().optional(), shortCode: z.nullable(z.lazy(() => ShortCode$outboundSchema)).optional(), }).transform((v) => { return remap$(v, { e164Number: "e164_number", shortCode: "short_code", }); }); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace PhoneNumber$ { /** @deprecated use `PhoneNumber$inboundSchema` instead. */ export const inboundSchema = PhoneNumber$inboundSchema; /** @deprecated use `PhoneNumber$outboundSchema` instead. */ export const outboundSchema = PhoneNumber$outboundSchema; /** @deprecated use `PhoneNumber$Outbound` instead. */ export type Outbound = PhoneNumber$Outbound; } export function phoneNumberToJSON(phoneNumber: PhoneNumber): string { return JSON.stringify(PhoneNumber$outboundSchema.parse(phoneNumber)); } export function phoneNumberFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PhoneNumber$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PhoneNumber' from JSON`, ); }