/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { CapabilityID, CapabilityID$inboundSchema, CapabilityID$outboundSchema, } from "./capabilityid.js"; import { CapabilityRequirement, CapabilityRequirement$inboundSchema, CapabilityRequirement$Outbound, CapabilityRequirement$outboundSchema, } from "./capabilityrequirement.js"; import { CapabilityStatus, CapabilityStatus$inboundSchema, CapabilityStatus$outboundSchema, } from "./capabilitystatus.js"; export type Capability = { /** * Moov account capabilities. * * @remarks * * The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action. */ capability: CapabilityID; accountID: string; /** * The status of the capability requested for an account. */ status: CapabilityStatus; /** * Represents individual and business data necessary to facilitate the enabling of a capability for an account. */ requirements?: CapabilityRequirement | undefined; disabledReason?: string | undefined; createdOn: Date; updatedOn: Date; disabledOn?: Date | undefined; }; /** @internal */ export const Capability$inboundSchema: z.ZodType< Capability, z.ZodTypeDef, unknown > = z.object({ capability: CapabilityID$inboundSchema, accountID: z.string(), status: CapabilityStatus$inboundSchema, requirements: CapabilityRequirement$inboundSchema.optional(), disabledReason: z.string().optional(), createdOn: z.string().datetime({ offset: true }).transform(v => new Date(v)), updatedOn: z.string().datetime({ offset: true }).transform(v => new Date(v)), disabledOn: z.string().datetime({ offset: true }).transform(v => new Date(v)) .optional(), }); /** @internal */ export type Capability$Outbound = { capability: string; accountID: string; status: string; requirements?: CapabilityRequirement$Outbound | undefined; disabledReason?: string | undefined; createdOn: string; updatedOn: string; disabledOn?: string | undefined; }; /** @internal */ export const Capability$outboundSchema: z.ZodType< Capability$Outbound, z.ZodTypeDef, Capability > = z.object({ capability: CapabilityID$outboundSchema, accountID: z.string(), status: CapabilityStatus$outboundSchema, requirements: CapabilityRequirement$outboundSchema.optional(), disabledReason: z.string().optional(), createdOn: z.date().transform(v => v.toISOString()), updatedOn: z.date().transform(v => v.toISOString()), disabledOn: z.date().transform(v => v.toISOString()).optional(), }); export function capabilityToJSON(capability: Capability): string { return JSON.stringify(Capability$outboundSchema.parse(capability)); } export function capabilityFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => Capability$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'Capability' from JSON`, ); }