/* * 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 { HTTPMetadata, HTTPMetadata$inboundSchema, } from "../components/httpmetadata.js"; import { TimeOffPolicy, TimeOffPolicy$inboundSchema, } from "../components/timeoffpolicy.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 PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion = { 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 PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion = ClosedEnum< typeof PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion >; /** * Type of the time off policy. Currently only "vacation" and "sick" are supported */ export const PolicyType = { Vacation: "vacation", Sick: "sick", } as const; /** * Type of the time off policy. Currently only "vacation" and "sick" are supported */ export type PolicyType = ClosedEnum; /** * Accrual method of the time off policy */ export const AccrualMethod = { Unlimited: "unlimited", PerPayPeriod: "per_pay_period", PerCalendarYear: "per_calendar_year", PerAnniversaryYear: "per_anniversary_year", PerHourWorked: "per_hour_worked", PerHourWorkedNoOvertime: "per_hour_worked_no_overtime", PerHourPaid: "per_hour_paid", PerHourPaidNoOvertime: "per_hour_paid_no_overtime", } as const; /** * Accrual method of the time off policy */ export type AccrualMethod = ClosedEnum; /** * Request body for updating a time off policy */ export type PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody = { /** * Name of the time off policy */ name?: string | undefined; /** * Type of the time off policy. Currently only "vacation" and "sick" are supported */ policyType?: PolicyType | undefined; /** * Accrual method of the time off policy */ accrualMethod?: AccrualMethod | undefined; /** * The rate at which the time off hours will accrue for an employee on the policy. Represented as a float, e.g. "40.0". */ accrualRate?: string | null | undefined; /** * The number of hours an employee has to work or be paid for to accrue the number of hours set in the accrual rate. Only used for hourly policies (per_hour_paid, per_hour_paid_no_overtime, per_hour_work, per_hour_worked_no_overtime). Represented as a float, e.g. "40.0". */ accrualRateUnit?: string | null | undefined; /** * Boolean representing if an employee's accrued time off hours will be paid out on termination. If accrual_method is unlimited, then paid_out_on_termination must be `false`. */ paidOutOnTermination?: boolean | undefined; /** * Number of days before an employee on the policy will begin accruing time off hours. If accrual_method is per_anniversary_year, per_calendar_year, or unlimited, then accrual_waiting_period_days should be 0. */ accrualWaitingPeriodDays?: number | null | undefined; /** * The max number of hours an employee can carryover from one year to the next. If accrual_method is unlimited, then carryover_limit_hours must be blank. */ carryoverLimitHours?: string | null | undefined; /** * The max number of hours an employee can accrue in a year. If accrual_method is yearly (per_anniversary_year, per_calendar_year) or unlimited, then max_accrual_hours_per_year must be blank. */ maxAccrualHoursPerYear?: string | null | undefined; /** * The max number of hours an employee can accrue. If accrual_method is unlimited, then max_hours must be blank. */ maxHours?: string | null | undefined; /** * The date the policy resets. Format MM-DD */ policyResetDate?: string | null | undefined; /** * boolean representing if a policy has completed configuration */ complete?: boolean | undefined; /** * The current version of the object. See the [versioning guide](https://docs.gusto.com/embedded-payroll/docs/idempotency) for information on how to use this field. */ version: string; }; export type PutV1TimeOffPoliciesTimeOffPolicyUuidRequest = { /** * 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?: | PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion | undefined; /** * The UUID of the time off policy */ timeOffPolicyUuid: string; requestBody: PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody; }; export type PutV1TimeOffPoliciesTimeOffPolicyUuidResponse = { httpMeta: HTTPMetadata; /** * successful */ timeOffPolicy?: TimeOffPolicy | undefined; }; /** @internal */ export const PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion$outboundSchema: z.ZodNativeEnum< typeof PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion > = z.nativeEnum(PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion); /** @internal */ export const PolicyType$outboundSchema: z.ZodNativeEnum = z .nativeEnum(PolicyType); /** @internal */ export const AccrualMethod$outboundSchema: z.ZodNativeEnum< typeof AccrualMethod > = z.nativeEnum(AccrualMethod); /** @internal */ export type PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody$Outbound = { name?: string | undefined; policy_type?: string | undefined; accrual_method?: string | undefined; accrual_rate?: string | null | undefined; accrual_rate_unit?: string | null | undefined; paid_out_on_termination?: boolean | undefined; accrual_waiting_period_days?: number | null | undefined; carryover_limit_hours?: string | null | undefined; max_accrual_hours_per_year?: string | null | undefined; max_hours?: string | null | undefined; policy_reset_date?: string | null | undefined; complete?: boolean | undefined; version: string; }; /** @internal */ export const PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody$outboundSchema: z.ZodType< PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody$Outbound, z.ZodTypeDef, PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody > = z.object({ name: z.string().optional(), policyType: PolicyType$outboundSchema.optional(), accrualMethod: AccrualMethod$outboundSchema.optional(), accrualRate: z.nullable(z.string()).optional(), accrualRateUnit: z.nullable(z.string()).optional(), paidOutOnTermination: z.boolean().optional(), accrualWaitingPeriodDays: z.nullable(z.number().int()).optional(), carryoverLimitHours: z.nullable(z.string()).optional(), maxAccrualHoursPerYear: z.nullable(z.string()).optional(), maxHours: z.nullable(z.string()).optional(), policyResetDate: z.nullable(z.string()).optional(), complete: z.boolean().optional(), version: z.string(), }).transform((v) => { return remap$(v, { policyType: "policy_type", accrualMethod: "accrual_method", accrualRate: "accrual_rate", accrualRateUnit: "accrual_rate_unit", paidOutOnTermination: "paid_out_on_termination", accrualWaitingPeriodDays: "accrual_waiting_period_days", carryoverLimitHours: "carryover_limit_hours", maxAccrualHoursPerYear: "max_accrual_hours_per_year", maxHours: "max_hours", policyResetDate: "policy_reset_date", }); }); export function putV1TimeOffPoliciesTimeOffPolicyUuidRequestBodyToJSON( putV1TimeOffPoliciesTimeOffPolicyUuidRequestBody: PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody, ): string { return JSON.stringify( PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody$outboundSchema.parse( putV1TimeOffPoliciesTimeOffPolicyUuidRequestBody, ), ); } /** @internal */ export type PutV1TimeOffPoliciesTimeOffPolicyUuidRequest$Outbound = { "X-Gusto-API-Version": string; time_off_policy_uuid: string; RequestBody: PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody$Outbound; }; /** @internal */ export const PutV1TimeOffPoliciesTimeOffPolicyUuidRequest$outboundSchema: z.ZodType< PutV1TimeOffPoliciesTimeOffPolicyUuidRequest$Outbound, z.ZodTypeDef, PutV1TimeOffPoliciesTimeOffPolicyUuidRequest > = z.object({ xGustoAPIVersion: PutV1TimeOffPoliciesTimeOffPolicyUuidHeaderXGustoAPIVersion$outboundSchema .default("2025-06-15"), timeOffPolicyUuid: z.string(), requestBody: z.lazy(() => PutV1TimeOffPoliciesTimeOffPolicyUuidRequestBody$outboundSchema ), }).transform((v) => { return remap$(v, { xGustoAPIVersion: "X-Gusto-API-Version", timeOffPolicyUuid: "time_off_policy_uuid", requestBody: "RequestBody", }); }); export function putV1TimeOffPoliciesTimeOffPolicyUuidRequestToJSON( putV1TimeOffPoliciesTimeOffPolicyUuidRequest: PutV1TimeOffPoliciesTimeOffPolicyUuidRequest, ): string { return JSON.stringify( PutV1TimeOffPoliciesTimeOffPolicyUuidRequest$outboundSchema.parse( putV1TimeOffPoliciesTimeOffPolicyUuidRequest, ), ); } /** @internal */ export const PutV1TimeOffPoliciesTimeOffPolicyUuidResponse$inboundSchema: z.ZodType< PutV1TimeOffPoliciesTimeOffPolicyUuidResponse, z.ZodTypeDef, unknown > = z.object({ HttpMeta: HTTPMetadata$inboundSchema, "Time-Off-Policy": TimeOffPolicy$inboundSchema.optional(), }).transform((v) => { return remap$(v, { "HttpMeta": "httpMeta", "Time-Off-Policy": "timeOffPolicy", }); }); export function putV1TimeOffPoliciesTimeOffPolicyUuidResponseFromJSON( jsonString: string, ): SafeParseResult< PutV1TimeOffPoliciesTimeOffPolicyUuidResponse, SDKValidationError > { return safeParse( jsonString, (x) => PutV1TimeOffPoliciesTimeOffPolicyUuidResponse$inboundSchema.parse( JSON.parse(x), ), `Failed to parse 'PutV1TimeOffPoliciesTimeOffPolicyUuidResponse' from JSON`, ); }