/* * 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 { EmbeddedTimeOffRequest, EmbeddedTimeOffRequest$inboundSchema, } from "../components/embeddedtimeoffrequest.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 PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion = { 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 PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion = ClosedEnum< typeof PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion >; export type PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody = { /** * The UUID of the admin approving the request. Defaults to the company's primary payroll admin. */ approverUuid?: string | undefined; /** * A note from the employer about the approval */ employerNote?: string | undefined; /** * An object where keys are dates in YYYY-MM-DD format and values are hours as string decimals (e.g. {"2025-01-20": "8.000"}). Use this to override the requested hours. */ days?: { [k: string]: string } | undefined; }; export type PutV1TimeOffRequestsTimeOffRequestUuidApproveRequest = { /** * 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?: | PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion | undefined; /** * The UUID of the time off request */ timeOffRequestUuid: string; requestBody?: | PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody | undefined; }; export type PutV1TimeOffRequestsTimeOffRequestUuidApproveResponse = { httpMeta: HTTPMetadata; /** * successful */ embeddedTimeOffRequest?: EmbeddedTimeOffRequest | undefined; }; /** @internal */ export const PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion$outboundSchema: z.ZodNativeEnum< typeof PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion > = z.nativeEnum( PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion, ); /** @internal */ export type PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody$Outbound = { approver_uuid?: string | undefined; employer_note?: string | undefined; days?: { [k: string]: string } | undefined; }; /** @internal */ export const PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody$outboundSchema: z.ZodType< PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody$Outbound, z.ZodTypeDef, PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody > = z.object({ approverUuid: z.string().optional(), employerNote: z.string().optional(), days: z.record(z.string()).optional(), }).transform((v) => { return remap$(v, { approverUuid: "approver_uuid", employerNote: "employer_note", }); }); export function putV1TimeOffRequestsTimeOffRequestUuidApproveRequestBodyToJSON( putV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody: PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody, ): string { return JSON.stringify( PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody$outboundSchema .parse(putV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody), ); } /** @internal */ export type PutV1TimeOffRequestsTimeOffRequestUuidApproveRequest$Outbound = { "X-Gusto-API-Version": string; time_off_request_uuid: string; RequestBody?: | PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody$Outbound | undefined; }; /** @internal */ export const PutV1TimeOffRequestsTimeOffRequestUuidApproveRequest$outboundSchema: z.ZodType< PutV1TimeOffRequestsTimeOffRequestUuidApproveRequest$Outbound, z.ZodTypeDef, PutV1TimeOffRequestsTimeOffRequestUuidApproveRequest > = z.object({ xGustoAPIVersion: PutV1TimeOffRequestsTimeOffRequestUuidApproveHeaderXGustoAPIVersion$outboundSchema .default("2025-06-15"), timeOffRequestUuid: z.string(), requestBody: z.lazy(() => PutV1TimeOffRequestsTimeOffRequestUuidApproveRequestBody$outboundSchema ).optional(), }).transform((v) => { return remap$(v, { xGustoAPIVersion: "X-Gusto-API-Version", timeOffRequestUuid: "time_off_request_uuid", requestBody: "RequestBody", }); }); export function putV1TimeOffRequestsTimeOffRequestUuidApproveRequestToJSON( putV1TimeOffRequestsTimeOffRequestUuidApproveRequest: PutV1TimeOffRequestsTimeOffRequestUuidApproveRequest, ): string { return JSON.stringify( PutV1TimeOffRequestsTimeOffRequestUuidApproveRequest$outboundSchema.parse( putV1TimeOffRequestsTimeOffRequestUuidApproveRequest, ), ); } /** @internal */ export const PutV1TimeOffRequestsTimeOffRequestUuidApproveResponse$inboundSchema: z.ZodType< PutV1TimeOffRequestsTimeOffRequestUuidApproveResponse, z.ZodTypeDef, unknown > = z.object({ HttpMeta: HTTPMetadata$inboundSchema, "Embedded-Time-Off-Request": EmbeddedTimeOffRequest$inboundSchema .optional(), }).transform((v) => { return remap$(v, { "HttpMeta": "httpMeta", "Embedded-Time-Off-Request": "embeddedTimeOffRequest", }); }); export function putV1TimeOffRequestsTimeOffRequestUuidApproveResponseFromJSON( jsonString: string, ): SafeParseResult< PutV1TimeOffRequestsTimeOffRequestUuidApproveResponse, SDKValidationError > { return safeParse( jsonString, (x) => PutV1TimeOffRequestsTimeOffRequestUuidApproveResponse$inboundSchema.parse( JSON.parse(x), ), `Failed to parse 'PutV1TimeOffRequestsTimeOffRequestUuidApproveResponse' from JSON`, ); }