/* * 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 { SalaryEstimate, SalaryEstimate$inboundSchema, } from "../components/salaryestimate.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 PutV1SalaryEstimatesIdHeaderXGustoAPIVersion = { 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 PutV1SalaryEstimatesIdHeaderXGustoAPIVersion = ClosedEnum< typeof PutV1SalaryEstimatesIdHeaderXGustoAPIVersion >; /** * Experience level for this occupation */ export const PutV1SalaryEstimatesIdExperienceLevel = { Novice: "novice", Intermediate: "intermediate", Average: "average", Skilled: "skilled", Expert: "expert", } as const; /** * Experience level for this occupation */ export type PutV1SalaryEstimatesIdExperienceLevel = ClosedEnum< typeof PutV1SalaryEstimatesIdExperienceLevel >; export type PutV1SalaryEstimatesIdOccupations = { /** * Bureau of Labor Statistics (BLS) occupation code */ code: string; /** * Experience level for this occupation */ experienceLevel: PutV1SalaryEstimatesIdExperienceLevel; /** * Percentage of time spent in this occupation (as decimal, e.g., 0.5 = 50%) */ timePercentage: string; /** * Whether this is the primary occupation */ primary?: boolean | undefined; }; export type PutV1SalaryEstimatesIdRequestBody = { /** * The annual net revenue of the business (must be greater than 0) */ annualNetRevenue?: number | null | undefined; /** * The ZIP code for location-based salary calculations */ zipCode: string; /** * Array of occupations. Time percentages must sum to 100%. */ occupations: Array; }; export type PutV1SalaryEstimatesIdRequest = { /** * 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?: PutV1SalaryEstimatesIdHeaderXGustoAPIVersion | undefined; /** * The UUID of the salary estimate */ uuid: string; requestBody: PutV1SalaryEstimatesIdRequestBody; }; export type PutV1SalaryEstimatesIdResponse = { httpMeta: HTTPMetadata; /** * successful */ salaryEstimate?: SalaryEstimate | undefined; }; /** @internal */ export const PutV1SalaryEstimatesIdHeaderXGustoAPIVersion$outboundSchema: z.ZodNativeEnum = z .nativeEnum(PutV1SalaryEstimatesIdHeaderXGustoAPIVersion); /** @internal */ export const PutV1SalaryEstimatesIdExperienceLevel$outboundSchema: z.ZodNativeEnum = z.nativeEnum( PutV1SalaryEstimatesIdExperienceLevel, ); /** @internal */ export type PutV1SalaryEstimatesIdOccupations$Outbound = { code: string; experience_level: string; time_percentage: string; primary?: boolean | undefined; }; /** @internal */ export const PutV1SalaryEstimatesIdOccupations$outboundSchema: z.ZodType< PutV1SalaryEstimatesIdOccupations$Outbound, z.ZodTypeDef, PutV1SalaryEstimatesIdOccupations > = z.object({ code: z.string(), experienceLevel: PutV1SalaryEstimatesIdExperienceLevel$outboundSchema, timePercentage: z.string(), primary: z.boolean().optional(), }).transform((v) => { return remap$(v, { experienceLevel: "experience_level", timePercentage: "time_percentage", }); }); export function putV1SalaryEstimatesIdOccupationsToJSON( putV1SalaryEstimatesIdOccupations: PutV1SalaryEstimatesIdOccupations, ): string { return JSON.stringify( PutV1SalaryEstimatesIdOccupations$outboundSchema.parse( putV1SalaryEstimatesIdOccupations, ), ); } /** @internal */ export type PutV1SalaryEstimatesIdRequestBody$Outbound = { annual_net_revenue?: number | null | undefined; zip_code: string; occupations: Array; }; /** @internal */ export const PutV1SalaryEstimatesIdRequestBody$outboundSchema: z.ZodType< PutV1SalaryEstimatesIdRequestBody$Outbound, z.ZodTypeDef, PutV1SalaryEstimatesIdRequestBody > = z.object({ annualNetRevenue: z.nullable(z.number()).optional(), zipCode: z.string(), occupations: z.array( z.lazy(() => PutV1SalaryEstimatesIdOccupations$outboundSchema), ), }).transform((v) => { return remap$(v, { annualNetRevenue: "annual_net_revenue", zipCode: "zip_code", }); }); export function putV1SalaryEstimatesIdRequestBodyToJSON( putV1SalaryEstimatesIdRequestBody: PutV1SalaryEstimatesIdRequestBody, ): string { return JSON.stringify( PutV1SalaryEstimatesIdRequestBody$outboundSchema.parse( putV1SalaryEstimatesIdRequestBody, ), ); } /** @internal */ export type PutV1SalaryEstimatesIdRequest$Outbound = { "X-Gusto-API-Version": string; uuid: string; RequestBody: PutV1SalaryEstimatesIdRequestBody$Outbound; }; /** @internal */ export const PutV1SalaryEstimatesIdRequest$outboundSchema: z.ZodType< PutV1SalaryEstimatesIdRequest$Outbound, z.ZodTypeDef, PutV1SalaryEstimatesIdRequest > = z.object({ xGustoAPIVersion: PutV1SalaryEstimatesIdHeaderXGustoAPIVersion$outboundSchema .default("2025-06-15"), uuid: z.string(), requestBody: z.lazy(() => PutV1SalaryEstimatesIdRequestBody$outboundSchema), }).transform((v) => { return remap$(v, { xGustoAPIVersion: "X-Gusto-API-Version", requestBody: "RequestBody", }); }); export function putV1SalaryEstimatesIdRequestToJSON( putV1SalaryEstimatesIdRequest: PutV1SalaryEstimatesIdRequest, ): string { return JSON.stringify( PutV1SalaryEstimatesIdRequest$outboundSchema.parse( putV1SalaryEstimatesIdRequest, ), ); } /** @internal */ export const PutV1SalaryEstimatesIdResponse$inboundSchema: z.ZodType< PutV1SalaryEstimatesIdResponse, z.ZodTypeDef, unknown > = z.object({ HttpMeta: HTTPMetadata$inboundSchema, "Salary-Estimate": SalaryEstimate$inboundSchema.optional(), }).transform((v) => { return remap$(v, { "HttpMeta": "httpMeta", "Salary-Estimate": "salaryEstimate", }); }); export function putV1SalaryEstimatesIdResponseFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PutV1SalaryEstimatesIdResponse$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PutV1SalaryEstimatesIdResponse' from JSON`, ); }