/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { remap as remap$ } from "../../lib/primitives.js"; import { safeParse } from "../../lib/schemas.js"; import { ClosedEnum } from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { Form, Form$inboundSchema } from "../components/form.js"; import { HTTPMetadata, HTTPMetadata$inboundSchema, } from "../components/httpmetadata.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; /** * Determines the date-based API version associated with your API call. If none is provided, your application's [minimum API version](https://docs.gusto.com/embedded-payroll/docs/api-versioning#minimum-api-version) is used. */ export const PutV1CompanyFormSignHeaderXGustoAPIVersion = { TwoThousandAndTwentyFiveMinus06Minus15: "2025-06-15", } as const; /** * Determines the date-based API version associated with your API call. If none is provided, your application's [minimum API version](https://docs.gusto.com/embedded-payroll/docs/api-versioning#minimum-api-version) is used. */ export type PutV1CompanyFormSignHeaderXGustoAPIVersion = ClosedEnum< typeof PutV1CompanyFormSignHeaderXGustoAPIVersion >; export type PutV1CompanyFormSignRequestBody = { /** * The signature */ signatureText: string; /** * Whether you agree to sign electronically */ agree: boolean; /** * The IP address of the signatory who signed the form. Both IPv4 AND IPv6 are supported. You must provide the IP address with either this parameter OR you can leave out this parameter and set the IP address in the request header using the `x-gusto-client-ip` header instead. */ signedByIpAddress?: string | undefined; }; export type PutV1CompanyFormSignRequest = { /** * Determines the date-based API version associated with your API call. If none is provided, your application's [minimum API version](https://docs.gusto.com/embedded-payroll/docs/api-versioning#minimum-api-version) is used. */ xGustoAPIVersion?: PutV1CompanyFormSignHeaderXGustoAPIVersion | undefined; /** * The UUID of the form */ formId: string; /** * Optional header to supply the IP address. This can be used to supply the IP address for signature endpoints instead of the signed_by_ip_address parameter. */ xGustoClientIp?: string | undefined; requestBody: PutV1CompanyFormSignRequestBody; }; export type PutV1CompanyFormSignResponse = { httpMeta: HTTPMetadata; /** * Success */ form?: Form | undefined; }; /** @internal */ export const PutV1CompanyFormSignHeaderXGustoAPIVersion$outboundSchema: z.ZodNativeEnum = z .nativeEnum(PutV1CompanyFormSignHeaderXGustoAPIVersion); /** @internal */ export type PutV1CompanyFormSignRequestBody$Outbound = { signature_text: string; agree: boolean; signed_by_ip_address?: string | undefined; }; /** @internal */ export const PutV1CompanyFormSignRequestBody$outboundSchema: z.ZodType< PutV1CompanyFormSignRequestBody$Outbound, z.ZodTypeDef, PutV1CompanyFormSignRequestBody > = z.object({ signatureText: z.string(), agree: z.boolean(), signedByIpAddress: z.string().optional(), }).transform((v) => { return remap$(v, { signatureText: "signature_text", signedByIpAddress: "signed_by_ip_address", }); }); export function putV1CompanyFormSignRequestBodyToJSON( putV1CompanyFormSignRequestBody: PutV1CompanyFormSignRequestBody, ): string { return JSON.stringify( PutV1CompanyFormSignRequestBody$outboundSchema.parse( putV1CompanyFormSignRequestBody, ), ); } /** @internal */ export type PutV1CompanyFormSignRequest$Outbound = { "X-Gusto-API-Version": string; form_id: string; "x-gusto-client-ip"?: string | undefined; RequestBody: PutV1CompanyFormSignRequestBody$Outbound; }; /** @internal */ export const PutV1CompanyFormSignRequest$outboundSchema: z.ZodType< PutV1CompanyFormSignRequest$Outbound, z.ZodTypeDef, PutV1CompanyFormSignRequest > = z.object({ xGustoAPIVersion: PutV1CompanyFormSignHeaderXGustoAPIVersion$outboundSchema .default("2025-06-15"), formId: z.string(), xGustoClientIp: z.string().optional(), requestBody: z.lazy(() => PutV1CompanyFormSignRequestBody$outboundSchema), }).transform((v) => { return remap$(v, { xGustoAPIVersion: "X-Gusto-API-Version", formId: "form_id", xGustoClientIp: "x-gusto-client-ip", requestBody: "RequestBody", }); }); export function putV1CompanyFormSignRequestToJSON( putV1CompanyFormSignRequest: PutV1CompanyFormSignRequest, ): string { return JSON.stringify( PutV1CompanyFormSignRequest$outboundSchema.parse( putV1CompanyFormSignRequest, ), ); } /** @internal */ export const PutV1CompanyFormSignResponse$inboundSchema: z.ZodType< PutV1CompanyFormSignResponse, z.ZodTypeDef, unknown > = z.object({ HttpMeta: HTTPMetadata$inboundSchema, Form: Form$inboundSchema.optional(), }).transform((v) => { return remap$(v, { "HttpMeta": "httpMeta", "Form": "form", }); }); export function putV1CompanyFormSignResponseFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PutV1CompanyFormSignResponse$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PutV1CompanyFormSignResponse' from JSON`, ); }