/* * 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 { WebhookSubscription, WebhookSubscription$inboundSchema, } from "../components/webhooksubscription.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; export type PostV1WebhookSubscriptionSecurity = { systemAccessAuth: string; }; /** * 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 PostV1WebhookSubscriptionHeaderXGustoAPIVersion = { 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 PostV1WebhookSubscriptionHeaderXGustoAPIVersion = ClosedEnum< typeof PostV1WebhookSubscriptionHeaderXGustoAPIVersion >; export const SubscriptionTypes = { BankAccount: "BankAccount", Company: "Company", CompanyBenefit: "CompanyBenefit", Contractor: "Contractor", ContractorPayment: "ContractorPayment", Employee: "Employee", EmployeeBenefit: "EmployeeBenefit", EmployeeJobCompensation: "EmployeeJobCompensation", ExternalPayroll: "ExternalPayroll", Form: "Form", Location: "Location", Notification: "Notification", Payroll: "Payroll", PayrollSync: "PayrollSync", PaySchedule: "PaySchedule", PeopleBatch: "PeopleBatch", Signatory: "Signatory", } as const; export type SubscriptionTypes = ClosedEnum; export type PostV1WebhookSubscriptionRequestBody = { /** * The URL where webhook events will be POSTed. */ url: string; /** * The types of events to subscribe to. */ subscriptionTypes: Array; }; export type PostV1WebhookSubscriptionRequest = { /** * 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?: | PostV1WebhookSubscriptionHeaderXGustoAPIVersion | undefined; requestBody: PostV1WebhookSubscriptionRequestBody; }; export type PostV1WebhookSubscriptionResponse = { httpMeta: HTTPMetadata; /** * created */ webhookSubscription?: WebhookSubscription | undefined; }; /** @internal */ export type PostV1WebhookSubscriptionSecurity$Outbound = { SystemAccessAuth: string; }; /** @internal */ export const PostV1WebhookSubscriptionSecurity$outboundSchema: z.ZodType< PostV1WebhookSubscriptionSecurity$Outbound, z.ZodTypeDef, PostV1WebhookSubscriptionSecurity > = z.object({ systemAccessAuth: z.string(), }).transform((v) => { return remap$(v, { systemAccessAuth: "SystemAccessAuth", }); }); export function postV1WebhookSubscriptionSecurityToJSON( postV1WebhookSubscriptionSecurity: PostV1WebhookSubscriptionSecurity, ): string { return JSON.stringify( PostV1WebhookSubscriptionSecurity$outboundSchema.parse( postV1WebhookSubscriptionSecurity, ), ); } /** @internal */ export const PostV1WebhookSubscriptionHeaderXGustoAPIVersion$outboundSchema: z.ZodNativeEnum = z .nativeEnum(PostV1WebhookSubscriptionHeaderXGustoAPIVersion); /** @internal */ export const SubscriptionTypes$outboundSchema: z.ZodNativeEnum< typeof SubscriptionTypes > = z.nativeEnum(SubscriptionTypes); /** @internal */ export type PostV1WebhookSubscriptionRequestBody$Outbound = { url: string; subscription_types: Array; }; /** @internal */ export const PostV1WebhookSubscriptionRequestBody$outboundSchema: z.ZodType< PostV1WebhookSubscriptionRequestBody$Outbound, z.ZodTypeDef, PostV1WebhookSubscriptionRequestBody > = z.object({ url: z.string(), subscriptionTypes: z.array(SubscriptionTypes$outboundSchema), }).transform((v) => { return remap$(v, { subscriptionTypes: "subscription_types", }); }); export function postV1WebhookSubscriptionRequestBodyToJSON( postV1WebhookSubscriptionRequestBody: PostV1WebhookSubscriptionRequestBody, ): string { return JSON.stringify( PostV1WebhookSubscriptionRequestBody$outboundSchema.parse( postV1WebhookSubscriptionRequestBody, ), ); } /** @internal */ export type PostV1WebhookSubscriptionRequest$Outbound = { "X-Gusto-API-Version": string; RequestBody: PostV1WebhookSubscriptionRequestBody$Outbound; }; /** @internal */ export const PostV1WebhookSubscriptionRequest$outboundSchema: z.ZodType< PostV1WebhookSubscriptionRequest$Outbound, z.ZodTypeDef, PostV1WebhookSubscriptionRequest > = z.object({ xGustoAPIVersion: PostV1WebhookSubscriptionHeaderXGustoAPIVersion$outboundSchema.default( "2025-06-15", ), requestBody: z.lazy(() => PostV1WebhookSubscriptionRequestBody$outboundSchema ), }).transform((v) => { return remap$(v, { xGustoAPIVersion: "X-Gusto-API-Version", requestBody: "RequestBody", }); }); export function postV1WebhookSubscriptionRequestToJSON( postV1WebhookSubscriptionRequest: PostV1WebhookSubscriptionRequest, ): string { return JSON.stringify( PostV1WebhookSubscriptionRequest$outboundSchema.parse( postV1WebhookSubscriptionRequest, ), ); } /** @internal */ export const PostV1WebhookSubscriptionResponse$inboundSchema: z.ZodType< PostV1WebhookSubscriptionResponse, z.ZodTypeDef, unknown > = z.object({ HttpMeta: HTTPMetadata$inboundSchema, "Webhook-Subscription": WebhookSubscription$inboundSchema.optional(), }).transform((v) => { return remap$(v, { "HttpMeta": "httpMeta", "Webhook-Subscription": "webhookSubscription", }); }); export function postV1WebhookSubscriptionResponseFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PostV1WebhookSubscriptionResponse$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PostV1WebhookSubscriptionResponse' from JSON`, ); }