/* * 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 { AmountDecimal, AmountDecimal$inboundSchema, AmountDecimal$Outbound, AmountDecimal$outboundSchema, } from "./amountdecimal.js"; import { AssignProductImage, AssignProductImage$inboundSchema, AssignProductImage$Outbound, AssignProductImage$outboundSchema, } from "./assignproductimage.js"; import { CreateProductOptionGroup, CreateProductOptionGroup$inboundSchema, CreateProductOptionGroup$Outbound, CreateProductOptionGroup$outboundSchema, } from "./createproductoptiongroup.js"; /** * Request to create or update a product. */ export type ProductRequest = { title: string; /** * A detailed description of the product. * * @remarks * * - Must be valid UTF-8 text * - Supports Markdown for formatting * - HTML is not permitted and will be rejected */ description?: string | undefined; /** * A product's starting price, before applying modifiers. */ basePrice: AmountDecimal; /** * Assign previously uploaded images to a product or option. */ images?: Array | undefined; /** * Optional configuration options for a product, such as size or color. */ optionGroups?: Array | undefined; }; /** @internal */ export const ProductRequest$inboundSchema: z.ZodType< ProductRequest, z.ZodTypeDef, unknown > = z.object({ title: z.string(), description: z.string().optional(), basePrice: AmountDecimal$inboundSchema, images: z.array(AssignProductImage$inboundSchema).optional(), optionGroups: z.array(CreateProductOptionGroup$inboundSchema).optional(), }); /** @internal */ export type ProductRequest$Outbound = { title: string; description?: string | undefined; basePrice: AmountDecimal$Outbound; images?: Array | undefined; optionGroups?: Array | undefined; }; /** @internal */ export const ProductRequest$outboundSchema: z.ZodType< ProductRequest$Outbound, z.ZodTypeDef, ProductRequest > = z.object({ title: z.string(), description: z.string().optional(), basePrice: AmountDecimal$outboundSchema, images: z.array(AssignProductImage$outboundSchema).optional(), optionGroups: z.array(CreateProductOptionGroup$outboundSchema).optional(), }); export function productRequestToJSON(productRequest: ProductRequest): string { return JSON.stringify(ProductRequest$outboundSchema.parse(productRequest)); } export function productRequestFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ProductRequest$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ProductRequest' from JSON`, ); }