/* * 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 PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion = { 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 PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion = ClosedEnum< typeof PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion >; export type PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody = { /** * The UUID of the employee */ employeeUuid: string; /** * The UUID of the time off policy */ policyUuid: string; /** * A note from the employee about the request */ employeeNote?: string | undefined; /** * The start date of the time off request (YYYY-MM-DD) */ startDate: string; /** * The end date of the time off request (YYYY-MM-DD) */ endDate: string; /** * 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"}) */ days: { [k: string]: string }; }; export type PostV1CompaniesCompanyUuidTimeOffRequestsRequest = { /** * 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?: | PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion | undefined; /** * The UUID of the company */ companyUuid: string; requestBody: PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody; }; export type PostV1CompaniesCompanyUuidTimeOffRequestsResponse = { httpMeta: HTTPMetadata; /** * created */ embeddedTimeOffRequest?: EmbeddedTimeOffRequest | undefined; }; /** @internal */ export const PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion$outboundSchema: z.ZodNativeEnum< typeof PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion > = z.nativeEnum( PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion, ); /** @internal */ export type PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody$Outbound = { employee_uuid: string; policy_uuid: string; employee_note?: string | undefined; start_date: string; end_date: string; days: { [k: string]: string }; }; /** @internal */ export const PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody$outboundSchema: z.ZodType< PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody$Outbound, z.ZodTypeDef, PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody > = z.object({ employeeUuid: z.string(), policyUuid: z.string(), employeeNote: z.string().optional(), startDate: z.string(), endDate: z.string(), days: z.record(z.string()), }).transform((v) => { return remap$(v, { employeeUuid: "employee_uuid", policyUuid: "policy_uuid", employeeNote: "employee_note", startDate: "start_date", endDate: "end_date", }); }); export function postV1CompaniesCompanyUuidTimeOffRequestsRequestBodyToJSON( postV1CompaniesCompanyUuidTimeOffRequestsRequestBody: PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody, ): string { return JSON.stringify( PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody$outboundSchema.parse( postV1CompaniesCompanyUuidTimeOffRequestsRequestBody, ), ); } /** @internal */ export type PostV1CompaniesCompanyUuidTimeOffRequestsRequest$Outbound = { "X-Gusto-API-Version": string; company_uuid: string; RequestBody: PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody$Outbound; }; /** @internal */ export const PostV1CompaniesCompanyUuidTimeOffRequestsRequest$outboundSchema: z.ZodType< PostV1CompaniesCompanyUuidTimeOffRequestsRequest$Outbound, z.ZodTypeDef, PostV1CompaniesCompanyUuidTimeOffRequestsRequest > = z.object({ xGustoAPIVersion: PostV1CompaniesCompanyUuidTimeOffRequestsHeaderXGustoAPIVersion$outboundSchema .default("2025-06-15"), companyUuid: z.string(), requestBody: z.lazy(() => PostV1CompaniesCompanyUuidTimeOffRequestsRequestBody$outboundSchema ), }).transform((v) => { return remap$(v, { xGustoAPIVersion: "X-Gusto-API-Version", companyUuid: "company_uuid", requestBody: "RequestBody", }); }); export function postV1CompaniesCompanyUuidTimeOffRequestsRequestToJSON( postV1CompaniesCompanyUuidTimeOffRequestsRequest: PostV1CompaniesCompanyUuidTimeOffRequestsRequest, ): string { return JSON.stringify( PostV1CompaniesCompanyUuidTimeOffRequestsRequest$outboundSchema.parse( postV1CompaniesCompanyUuidTimeOffRequestsRequest, ), ); } /** @internal */ export const PostV1CompaniesCompanyUuidTimeOffRequestsResponse$inboundSchema: z.ZodType< PostV1CompaniesCompanyUuidTimeOffRequestsResponse, 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 postV1CompaniesCompanyUuidTimeOffRequestsResponseFromJSON( jsonString: string, ): SafeParseResult< PostV1CompaniesCompanyUuidTimeOffRequestsResponse, SDKValidationError > { return safeParse( jsonString, (x) => PostV1CompaniesCompanyUuidTimeOffRequestsResponse$inboundSchema.parse( JSON.parse(x), ), `Failed to parse 'PostV1CompaniesCompanyUuidTimeOffRequestsResponse' from JSON`, ); }