UNPKG

@vercel/sdk

Version:

<p align="center"> <a href="https://vercel.com"> <img src="https://assets.vercel.com/image/upload/v1588805858/repositories/vercel/logo.png" height="96"> <h3 align="center">Vercel</h3> </a> <p align="center">Develop. Preview. Ship.</p> </p>

2,237 lines 67.5 kB
/*
 * 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 { smartUnion } from "../types/smartUnion.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

/**
 * Update log headers configuration
 */
export type RequestBody14 = {
  action: string;
  id?: string | undefined;
  value?: any | undefined;
};

/**
 * Toggle bot ID
 */
export type RequestBody13 = {
  action: string;
  id?: string | undefined;
  value: boolean;
};

export const UpdateFirewallConfigRequestBodyId = {
  AiBots: "ai_bots",
  BotFilter: "bot_filter",
  BotProtection: "bot_protection",
  TrafficSources: "traffic_sources",
  VercelRuleset: "vercel_ruleset",
  Owasp: "owasp",
} as const;
export type UpdateFirewallConfigRequestBodyId = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodyId
>;

export const UpdateFirewallConfigRequestBodySecurityRequest12Action = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest12Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest12Action
>;

export type UpdateFirewallConfigRequestBodySecurityRequest12Value = {
  active: boolean;
  action?: UpdateFirewallConfigRequestBodySecurityRequest12Action | undefined;
};

/**
 * Update a managed rule group
 */
export type RequestBody12 = {
  action: string;
  id: UpdateFirewallConfigRequestBodyId;
  value: { [k: string]: UpdateFirewallConfigRequestBodySecurityRequest12Value };
};

export const UpdateFirewallConfigRequestBodySecurityRequest11Action = {
  ManagedRulesUpdate: "managedRules.update",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest11Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest11Action
>;

export const RequestBodyId = {
  AiBots: "ai_bots",
  BotFilter: "bot_filter",
  BotProtection: "bot_protection",
  TrafficSources: "traffic_sources",
  VercelRuleset: "vercel_ruleset",
  Owasp: "owasp",
} as const;
export type RequestBodyId = ClosedEnum<typeof RequestBodyId>;

export const UpdateFirewallConfigRequestBodySecurityRequest11ValueAction = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest11ValueAction =
  ClosedEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest11ValueAction
  >;

export type UpdateFirewallConfigRequestBodySecurityRequest11Value = {
  action?:
    | UpdateFirewallConfigRequestBodySecurityRequest11ValueAction
    | undefined;
  active: boolean;
};

/**
 * Update a managed ruleset
 */
export type RequestBody11 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest11Action;
  id: RequestBodyId;
  value: UpdateFirewallConfigRequestBodySecurityRequest11Value;
};

export const UpdateFirewallConfigRequestBodySecurityRequest10Action = {
  IpRemove: "ip.remove",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest10Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest10Action
>;

/**
 * Remove an IP Blocking rule
 */
export type UpdateFirewallConfigRequestBody10 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest10Action;
  id: string;
  value?: any | null | undefined;
};

export const UpdateFirewallConfigRequestBodySecurityRequest9Action = {
  IpUpdate: "ip.update",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest9Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest9Action
>;

export const UpdateFirewallConfigRequestBodySecurityRequest9ValueAction = {
  Deny: "deny",
  Challenge: "challenge",
  Log: "log",
  Bypass: "bypass",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest9ValueAction =
  ClosedEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest9ValueAction>;

export type UpdateFirewallConfigRequestBodySecurityRequest9Value = {
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: UpdateFirewallConfigRequestBodySecurityRequest9ValueAction;
};

/**
 * Update an IP Blocking rule
 */
export type UpdateFirewallConfigRequestBody9 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest9Action;
  id: string;
  value: UpdateFirewallConfigRequestBodySecurityRequest9Value;
};

export const UpdateFirewallConfigRequestBodySecurityRequest8Action = {
  IpInsert: "ip.insert",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest8Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest8Action
>;

export const UpdateFirewallConfigRequestBodySecurityRequest8ValueAction = {
  Deny: "deny",
  Challenge: "challenge",
  Log: "log",
  Bypass: "bypass",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest8ValueAction =
  ClosedEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest8ValueAction>;

export type UpdateFirewallConfigRequestBodySecurityRequestValue = {
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: UpdateFirewallConfigRequestBodySecurityRequest8ValueAction;
};

/**
 * Add an IP Blocking rule
 */
export type UpdateFirewallConfigRequestBody8 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest8Action;
  id?: any | null | undefined;
  value: UpdateFirewallConfigRequestBodySecurityRequestValue;
};

export const UpdateFirewallConfigRequestBodySecurityRequest7Action = {
  CrsDisable: "crs.disable",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest7Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest7Action
>;

/**
 * Disable a managed rule
 */
export type UpdateFirewallConfigRequestBody7 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest7Action;
  id?: any | null | undefined;
  value?: any | null | undefined;
};

export const UpdateFirewallConfigRequestBodySecurityRequest6Action = {
  CrsUpdate: "crs.update",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest6Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest6Action
>;

export const Id = {
  Sd: "sd",
  Ma: "ma",
  Lfi: "lfi",
  Rfi: "rfi",
  Rce: "rce",
  Php: "php",
  Gen: "gen",
  Xss: "xss",
  Sqli: "sqli",
  Sf: "sf",
  Java: "java",
} as const;
export type Id = ClosedEnum<typeof Id>;

export const UpdateFirewallConfigRequestBodySecurityRequest6ValueAction = {
  Deny: "deny",
  Log: "log",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest6ValueAction =
  ClosedEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest6ValueAction>;

export type UpdateFirewallConfigRequestBodySecurityValue = {
  active: boolean;
  action: UpdateFirewallConfigRequestBodySecurityRequest6ValueAction;
};

/**
 * Enable a managed rule
 */
export type UpdateFirewallConfigRequestBody6 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest6Action;
  id: Id;
  value: UpdateFirewallConfigRequestBodySecurityValue;
};

export const UpdateFirewallConfigRequestBodySecurityRequest5Action = {
  RulesPriority: "rules.priority",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest5Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest5Action
>;

/**
 * Reorder a custom rule
 */
export type UpdateFirewallConfigRequestBody5 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest5Action;
  id: string;
  value: number;
};

export const UpdateFirewallConfigRequestBodySecurityRequest4Action = {
  RulesRemove: "rules.remove",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest4Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest4Action
>;

/**
 * Remove a custom rule
 */
export type UpdateFirewallConfigRequestBody4 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest4Action;
  id: string;
  value?: any | null | undefined;
};

export const UpdateFirewallConfigRequestBodySecurityRequestAction = {
  RulesUpdate: "rules.update",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequestAction = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequestAction
>;

export const UpdateFirewallConfigRequestBodySecurityType = {
  Host: "host",
  Path: "path",
  Method: "method",
  Header: "header",
  Query: "query",
  Cookie: "cookie",
  TargetPath: "target_path",
  Route: "route",
  RawPath: "raw_path",
  IpAddress: "ip_address",
  Region: "region",
  Protocol: "protocol",
  Scheme: "scheme",
  Environment: "environment",
  UserAgent: "user_agent",
  GeoContinent: "geo_continent",
  GeoCountry: "geo_country",
  GeoCountryRegion: "geo_country_region",
  GeoCity: "geo_city",
  GeoAsNumber: "geo_as_number",
  Ja4Digest: "ja4_digest",
  Ja3Digest: "ja3_digest",
  RateLimitApiId: "rate_limit_api_id",
  ServerAction: "server_action",
  BotName: "bot_name",
  BotCategory: "bot_category",
  BotStatus: "bot_status",
  BotProtection: "bot_protection",
} as const;
export type UpdateFirewallConfigRequestBodySecurityType = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityType
>;

export const UpdateFirewallConfigRequestBodyOp = {
  Re: "re",
  Eq: "eq",
  Neq: "neq",
  Ex: "ex",
  Nex: "nex",
  Inc: "inc",
  Ninc: "ninc",
  Pre: "pre",
  Suf: "suf",
  Sub: "sub",
  Gt: "gt",
  Gte: "gte",
  Lt: "lt",
  Lte: "lte",
} as const;
export type UpdateFirewallConfigRequestBodyOp = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodyOp
>;

export type UpdateFirewallConfigRequestBodySecurityRequest3Value =
  | string
  | Array<string>
  | number;

export type UpdateFirewallConfigRequestBodyConditions = {
  type: UpdateFirewallConfigRequestBodySecurityType;
  op: UpdateFirewallConfigRequestBodyOp;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

export type UpdateFirewallConfigRequestBodyConditionGroup = {
  conditions: Array<UpdateFirewallConfigRequestBodyConditions>;
};

export const UpdateFirewallConfigRequestBodySecurityRequest3ValueAction = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
  Bypass: "bypass",
  RateLimit: "rate_limit",
  Redirect: "redirect",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest3ValueAction =
  ClosedEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest3ValueAction>;

export const UpdateFirewallConfigRateLimitAlgo = {
  FixedWindow: "fixed_window",
  TokenBucket: "token_bucket",
} as const;
export type UpdateFirewallConfigRateLimitAlgo = ClosedEnum<
  typeof UpdateFirewallConfigRateLimitAlgo
>;

export const UpdateFirewallConfigActionSecurity1 = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
  RateLimit: "rate_limit",
} as const;
export type UpdateFirewallConfigActionSecurity1 = ClosedEnum<
  typeof UpdateFirewallConfigActionSecurity1
>;

export type UpdateFirewallConfigRateLimitSecurityAction =
  | UpdateFirewallConfigActionSecurity1
  | any;

export type UpdateFirewallConfigRateLimitSecurity1 = {
  algo: UpdateFirewallConfigRateLimitAlgo;
  window: number;
  limit: number;
  keys: Array<string>;
  action?: UpdateFirewallConfigActionSecurity1 | any | null | undefined;
};

export type UpdateFirewallConfigRequestBodyRateLimit =
  | UpdateFirewallConfigRateLimitSecurity1
  | any;

export type UpdateFirewallConfigRedirectSecurity1 = {
  location: string;
  permanent: boolean;
};

export type UpdateFirewallConfigRequestBodyRedirect =
  | UpdateFirewallConfigRedirectSecurity1
  | any;

export type UpdateFirewallConfigRequestBodyLogHeaders = string | Array<string>;

export type UpdateFirewallConfigRequestBodyMitigate = {
  action: UpdateFirewallConfigRequestBodySecurityRequest3ValueAction;
  rateLimit?: UpdateFirewallConfigRateLimitSecurity1 | any | null | undefined;
  redirect?: UpdateFirewallConfigRedirectSecurity1 | any | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?: string | Array<string> | undefined;
};

export type UpdateFirewallConfigRequestBodySecurityRequest3Action = {
  mitigate?: UpdateFirewallConfigRequestBodyMitigate | undefined;
};

export type UpdateFirewallConfigRequestBodyValidationErrors =
  | Array<string>
  | string;

export type UpdateFirewallConfigRequestBodyValue = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<UpdateFirewallConfigRequestBodyConditionGroup>;
  action: UpdateFirewallConfigRequestBodySecurityRequest3Action;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/**
 * Update a custom rule
 */
export type UpdateFirewallConfigRequestBody3 = {
  action: UpdateFirewallConfigRequestBodySecurityRequestAction;
  id: string;
  value: UpdateFirewallConfigRequestBodyValue;
};

export const UpdateFirewallConfigRequestBodySecurityAction = {
  RulesInsert: "rules.insert",
} as const;
export type UpdateFirewallConfigRequestBodySecurityAction = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityAction
>;

export const UpdateFirewallConfigRequestBodyType = {
  Host: "host",
  Path: "path",
  Method: "method",
  Header: "header",
  Query: "query",
  Cookie: "cookie",
  TargetPath: "target_path",
  Route: "route",
  RawPath: "raw_path",
  IpAddress: "ip_address",
  Region: "region",
  Protocol: "protocol",
  Scheme: "scheme",
  Environment: "environment",
  UserAgent: "user_agent",
  GeoContinent: "geo_continent",
  GeoCountry: "geo_country",
  GeoCountryRegion: "geo_country_region",
  GeoCity: "geo_city",
  GeoAsNumber: "geo_as_number",
  Ja4Digest: "ja4_digest",
  Ja3Digest: "ja3_digest",
  RateLimitApiId: "rate_limit_api_id",
  ServerAction: "server_action",
  BotName: "bot_name",
  BotCategory: "bot_category",
  BotStatus: "bot_status",
  BotProtection: "bot_protection",
} as const;
export type UpdateFirewallConfigRequestBodyType = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodyType
>;

export const RequestBodyOp = {
  Re: "re",
  Eq: "eq",
  Neq: "neq",
  Ex: "ex",
  Nex: "nex",
  Inc: "inc",
  Ninc: "ninc",
  Pre: "pre",
  Suf: "suf",
  Sub: "sub",
  Gt: "gt",
  Gte: "gte",
  Lt: "lt",
  Lte: "lte",
} as const;
export type RequestBodyOp = ClosedEnum<typeof RequestBodyOp>;

export type UpdateFirewallConfigRequestBodySecurityRequest2Value =
  | string
  | Array<string>
  | number;

export type RequestBodyConditions = {
  type: UpdateFirewallConfigRequestBodyType;
  op: RequestBodyOp;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

export type RequestBodyConditionGroup = {
  conditions: Array<RequestBodyConditions>;
};

export const UpdateFirewallConfigRequestBodySecurityRequest2ValueAction = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
  Bypass: "bypass",
  RateLimit: "rate_limit",
  Redirect: "redirect",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest2ValueAction =
  ClosedEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest2ValueAction>;

export const RateLimitAlgo = {
  FixedWindow: "fixed_window",
  TokenBucket: "token_bucket",
} as const;
export type RateLimitAlgo = ClosedEnum<typeof RateLimitAlgo>;

export const UpdateFirewallConfigAction1 = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
  RateLimit: "rate_limit",
} as const;
export type UpdateFirewallConfigAction1 = ClosedEnum<
  typeof UpdateFirewallConfigAction1
>;

export type UpdateFirewallConfigRateLimitAction =
  | UpdateFirewallConfigAction1
  | any;

export type UpdateFirewallConfigRateLimit1 = {
  algo: RateLimitAlgo;
  window: number;
  limit: number;
  keys: Array<string>;
  action?: UpdateFirewallConfigAction1 | any | null | undefined;
};

export type RequestBodyRateLimit = UpdateFirewallConfigRateLimit1 | any;

export type UpdateFirewallConfigRedirect1 = {
  location: string;
  permanent: boolean;
};

export type RequestBodyRedirect = UpdateFirewallConfigRedirect1 | any;

export type RequestBodyLogHeaders = string | Array<string>;

export type RequestBodyMitigate = {
  action: UpdateFirewallConfigRequestBodySecurityRequest2ValueAction;
  rateLimit?: UpdateFirewallConfigRateLimit1 | any | null | undefined;
  redirect?: UpdateFirewallConfigRedirect1 | any | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?: string | Array<string> | undefined;
};

export type UpdateFirewallConfigRequestBodySecurityRequest2Action = {
  mitigate?: RequestBodyMitigate | undefined;
};

export type RequestBodyValidationErrors = Array<string> | string;

export type RequestBodyValue = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<RequestBodyConditionGroup>;
  action: UpdateFirewallConfigRequestBodySecurityRequest2Action;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/**
 * Add a custom rule
 */
export type UpdateFirewallConfigRequestBody2 = {
  action: UpdateFirewallConfigRequestBodySecurityAction;
  id?: any | null | undefined;
  value: RequestBodyValue;
};

export const UpdateFirewallConfigRequestBodyAction = {
  FirewallEnabled: "firewallEnabled",
} as const;
export type UpdateFirewallConfigRequestBodyAction = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodyAction
>;

/**
 * Enable Firewall
 */
export type UpdateFirewallConfigRequestBody1 = {
  action: UpdateFirewallConfigRequestBodyAction;
  id?: any | null | undefined;
  value: boolean;
};

export type UpdateFirewallConfigRequestBody =
  | UpdateFirewallConfigRequestBody3
  | UpdateFirewallConfigRequestBody5
  | UpdateFirewallConfigRequestBody6
  | UpdateFirewallConfigRequestBody9
  | RequestBody11
  | RequestBody12
  | UpdateFirewallConfigRequestBody1
  | UpdateFirewallConfigRequestBody2
  | UpdateFirewallConfigRequestBody4
  | UpdateFirewallConfigRequestBody8
  | UpdateFirewallConfigRequestBody10
  | RequestBody13
  | RequestBody14
  | UpdateFirewallConfigRequestBody7;

export type UpdateFirewallConfigRequest = {
  projectId: string;
  /**
   * The Team identifier to perform the request on behalf of.
   */
  teamId?: string | undefined;
  /**
   * The Team slug to perform the request on behalf of.
   */
  slug?: string | undefined;
  requestBody:
    | UpdateFirewallConfigRequestBody3
    | UpdateFirewallConfigRequestBody5
    | UpdateFirewallConfigRequestBody6
    | UpdateFirewallConfigRequestBody9
    | RequestBody11
    | RequestBody12
    | UpdateFirewallConfigRequestBody1
    | UpdateFirewallConfigRequestBody2
    | UpdateFirewallConfigRequestBody4
    | UpdateFirewallConfigRequestBody8
    | UpdateFirewallConfigRequestBody10
    | RequestBody13
    | RequestBody14
    | UpdateFirewallConfigRequestBody7;
};

export type UpdateFirewallConfigResponseBody = {};

/** @internal */
export type RequestBody14$Outbound = {
  action: string;
  id?: string | undefined;
  value?: any | undefined;
};

/** @internal */
export const RequestBody14$outboundSchema: z.ZodType<
  RequestBody14$Outbound,
  z.ZodTypeDef,
  RequestBody14
> = z.object({
  action: z.string(),
  id: z.string().optional(),
  value: z.any().optional(),
});

export function requestBody14ToJSON(requestBody14: RequestBody14): string {
  return JSON.stringify(RequestBody14$outboundSchema.parse(requestBody14));
}

/** @internal */
export type RequestBody13$Outbound = {
  action: string;
  id?: string | undefined;
  value: boolean;
};

/** @internal */
export const RequestBody13$outboundSchema: z.ZodType<
  RequestBody13$Outbound,
  z.ZodTypeDef,
  RequestBody13
> = z.object({
  action: z.string(),
  id: z.string().optional(),
  value: z.boolean(),
});

export function requestBody13ToJSON(requestBody13: RequestBody13): string {
  return JSON.stringify(RequestBody13$outboundSchema.parse(requestBody13));
}

/** @internal */
export const UpdateFirewallConfigRequestBodyId$outboundSchema: z.ZodNativeEnum<
  typeof UpdateFirewallConfigRequestBodyId
> = z.nativeEnum(UpdateFirewallConfigRequestBodyId);

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest12Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest12Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest12Action);

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequest12Value$Outbound = {
  active: boolean;
  action?: string | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest12Value$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequest12Value$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequest12Value
  > = z.object({
    active: z.boolean(),
    action:
      UpdateFirewallConfigRequestBodySecurityRequest12Action$outboundSchema
        .optional(),
  });

export function updateFirewallConfigRequestBodySecurityRequest12ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest12Value:
    UpdateFirewallConfigRequestBodySecurityRequest12Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest12Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest12Value,
    ),
  );
}

/** @internal */
export type RequestBody12$Outbound = {
  action: string;
  id: string;
  value: {
    [k: string]: UpdateFirewallConfigRequestBodySecurityRequest12Value$Outbound;
  };
};

/** @internal */
export const RequestBody12$outboundSchema: z.ZodType<
  RequestBody12$Outbound,
  z.ZodTypeDef,
  RequestBody12
> = z.object({
  action: z.string(),
  id: UpdateFirewallConfigRequestBodyId$outboundSchema,
  value: z.record(
    z.lazy(() =>
      UpdateFirewallConfigRequestBodySecurityRequest12Value$outboundSchema
    ),
  ),
});

export function requestBody12ToJSON(requestBody12: RequestBody12): string {
  return JSON.stringify(RequestBody12$outboundSchema.parse(requestBody12));
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest11Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest11Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest11Action);

/** @internal */
export const RequestBodyId$outboundSchema: z.ZodNativeEnum<
  typeof RequestBodyId
> = z.nativeEnum(RequestBodyId);

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest11ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest11ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest11ValueAction);

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequest11Value$Outbound = {
  action?: string | undefined;
  active: boolean;
};

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest11Value$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequest11Value$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequest11Value
  > = z.object({
    action:
      UpdateFirewallConfigRequestBodySecurityRequest11ValueAction$outboundSchema
        .optional(),
    active: z.boolean(),
  });

export function updateFirewallConfigRequestBodySecurityRequest11ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest11Value:
    UpdateFirewallConfigRequestBodySecurityRequest11Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest11Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest11Value,
    ),
  );
}

/** @internal */
export type RequestBody11$Outbound = {
  action: string;
  id: string;
  value: UpdateFirewallConfigRequestBodySecurityRequest11Value$Outbound;
};

/** @internal */
export const RequestBody11$outboundSchema: z.ZodType<
  RequestBody11$Outbound,
  z.ZodTypeDef,
  RequestBody11
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest11Action$outboundSchema,
  id: RequestBodyId$outboundSchema,
  value: z.lazy(() =>
    UpdateFirewallConfigRequestBodySecurityRequest11Value$outboundSchema
  ),
});

export function requestBody11ToJSON(requestBody11: RequestBody11): string {
  return JSON.stringify(RequestBody11$outboundSchema.parse(requestBody11));
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest10Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest10Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest10Action);

/** @internal */
export type UpdateFirewallConfigRequestBody10$Outbound = {
  action: string;
  id: string;
  value?: any | null | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBody10$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody10$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody10
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest10Action$outboundSchema,
  id: z.string(),
  value: z.nullable(z.any()).optional(),
});

export function updateFirewallConfigRequestBody10ToJSON(
  updateFirewallConfigRequestBody10: UpdateFirewallConfigRequestBody10,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody10$outboundSchema.parse(
      updateFirewallConfigRequestBody10,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest9Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest9Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest9Action);

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest9ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest9ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest9ValueAction);

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequest9Value$Outbound = {
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: string;
};

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest9Value$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequest9Value$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequest9Value
  > = z.object({
    hostname: z.string(),
    ip: z.string(),
    notes: z.string().optional(),
    action:
      UpdateFirewallConfigRequestBodySecurityRequest9ValueAction$outboundSchema,
  });

export function updateFirewallConfigRequestBodySecurityRequest9ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest9Value:
    UpdateFirewallConfigRequestBodySecurityRequest9Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest9Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest9Value,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBody9$Outbound = {
  action: string;
  id: string;
  value: UpdateFirewallConfigRequestBodySecurityRequest9Value$Outbound;
};

/** @internal */
export const UpdateFirewallConfigRequestBody9$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody9$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody9
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest9Action$outboundSchema,
  id: z.string(),
  value: z.lazy(() =>
    UpdateFirewallConfigRequestBodySecurityRequest9Value$outboundSchema
  ),
});

export function updateFirewallConfigRequestBody9ToJSON(
  updateFirewallConfigRequestBody9: UpdateFirewallConfigRequestBody9,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody9$outboundSchema.parse(
      updateFirewallConfigRequestBody9,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest8Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest8Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest8Action);

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest8ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest8ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest8ValueAction);

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequestValue$Outbound = {
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: string;
};

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequestValue$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequestValue$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequestValue
  > = z.object({
    hostname: z.string(),
    ip: z.string(),
    notes: z.string().optional(),
    action:
      UpdateFirewallConfigRequestBodySecurityRequest8ValueAction$outboundSchema,
  });

export function updateFirewallConfigRequestBodySecurityRequestValueToJSON(
  updateFirewallConfigRequestBodySecurityRequestValue:
    UpdateFirewallConfigRequestBodySecurityRequestValue,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequestValue$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequestValue,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBody8$Outbound = {
  action: string;
  id?: any | null | undefined;
  value: UpdateFirewallConfigRequestBodySecurityRequestValue$Outbound;
};

/** @internal */
export const UpdateFirewallConfigRequestBody8$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody8$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody8
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest8Action$outboundSchema,
  id: z.nullable(z.any()).optional(),
  value: z.lazy(() =>
    UpdateFirewallConfigRequestBodySecurityRequestValue$outboundSchema
  ),
});

export function updateFirewallConfigRequestBody8ToJSON(
  updateFirewallConfigRequestBody8: UpdateFirewallConfigRequestBody8,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody8$outboundSchema.parse(
      updateFirewallConfigRequestBody8,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest7Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest7Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest7Action);

/** @internal */
export type UpdateFirewallConfigRequestBody7$Outbound = {
  action: string;
  id?: any | null | undefined;
  value?: any | null | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBody7$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody7$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody7
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest7Action$outboundSchema,
  id: z.nullable(z.any()).optional(),
  value: z.nullable(z.any()).optional(),
});

export function updateFirewallConfigRequestBody7ToJSON(
  updateFirewallConfigRequestBody7: UpdateFirewallConfigRequestBody7,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody7$outboundSchema.parse(
      updateFirewallConfigRequestBody7,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest6Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest6Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest6Action);

/** @internal */
export const Id$outboundSchema: z.ZodNativeEnum<typeof Id> = z.nativeEnum(Id);

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest6ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest6ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest6ValueAction);

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityValue$Outbound = {
  active: boolean;
  action: string;
};

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityValue$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityValue$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityValue
  > = z.object({
    active: z.boolean(),
    action:
      UpdateFirewallConfigRequestBodySecurityRequest6ValueAction$outboundSchema,
  });

export function updateFirewallConfigRequestBodySecurityValueToJSON(
  updateFirewallConfigRequestBodySecurityValue:
    UpdateFirewallConfigRequestBodySecurityValue,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityValue$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityValue,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBody6$Outbound = {
  action: string;
  id: string;
  value: UpdateFirewallConfigRequestBodySecurityValue$Outbound;
};

/** @internal */
export const UpdateFirewallConfigRequestBody6$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody6$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody6
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest6Action$outboundSchema,
  id: Id$outboundSchema,
  value: z.lazy(() =>
    UpdateFirewallConfigRequestBodySecurityValue$outboundSchema
  ),
});

export function updateFirewallConfigRequestBody6ToJSON(
  updateFirewallConfigRequestBody6: UpdateFirewallConfigRequestBody6,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody6$outboundSchema.parse(
      updateFirewallConfigRequestBody6,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest5Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest5Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest5Action);

/** @internal */
export type UpdateFirewallConfigRequestBody5$Outbound = {
  action: string;
  id: string;
  value: number;
};

/** @internal */
export const UpdateFirewallConfigRequestBody5$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody5$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody5
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest5Action$outboundSchema,
  id: z.string(),
  value: z.number(),
});

export function updateFirewallConfigRequestBody5ToJSON(
  updateFirewallConfigRequestBody5: UpdateFirewallConfigRequestBody5,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody5$outboundSchema.parse(
      updateFirewallConfigRequestBody5,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest4Action$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest4Action
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest4Action);

/** @internal */
export type UpdateFirewallConfigRequestBody4$Outbound = {
  action: string;
  id: string;
  value?: any | null | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBody4$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody4$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody4
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest4Action$outboundSchema,
  id: z.string(),
  value: z.nullable(z.any()).optional(),
});

export function updateFirewallConfigRequestBody4ToJSON(
  updateFirewallConfigRequestBody4: UpdateFirewallConfigRequestBody4,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody4$outboundSchema.parse(
      updateFirewallConfigRequestBody4,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequestAction$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodySecurityRequestAction> =
    z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequestAction);

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityType$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodySecurityType> = z
    .nativeEnum(UpdateFirewallConfigRequestBodySecurityType);

/** @internal */
export const UpdateFirewallConfigRequestBodyOp$outboundSchema: z.ZodNativeEnum<
  typeof UpdateFirewallConfigRequestBodyOp
> = z.nativeEnum(UpdateFirewallConfigRequestBodyOp);

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequest3Value$Outbound =
  | string
  | Array<string>
  | number;

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest3Value$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequest3Value$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequest3Value
  > = smartUnion([z.string(), z.array(z.string()), z.number()]);

export function updateFirewallConfigRequestBodySecurityRequest3ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest3Value:
    UpdateFirewallConfigRequestBodySecurityRequest3Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest3Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest3Value,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyConditions$Outbound = {
  type: string;
  op: string;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBodyConditions$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodyConditions$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodyConditions
  > = z.object({
    type: UpdateFirewallConfigRequestBodySecurityType$outboundSchema,
    op: UpdateFirewallConfigRequestBodyOp$outboundSchema,
    neg: z.boolean().optional(),
    key: z.string().optional(),
    value: smartUnion([z.string(), z.array(z.string()), z.number()]).optional(),
  });

export function updateFirewallConfigRequestBodyConditionsToJSON(
  updateFirewallConfigRequestBodyConditions:
    UpdateFirewallConfigRequestBodyConditions,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyConditions$outboundSchema.parse(
      updateFirewallConfigRequestBodyConditions,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyConditionGroup$Outbound = {
  conditions: Array<UpdateFirewallConfigRequestBodyConditions$Outbound>;
};

/** @internal */
export const UpdateFirewallConfigRequestBodyConditionGroup$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodyConditionGroup$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodyConditionGroup
  > = z.object({
    conditions: z.array(
      z.lazy(() => UpdateFirewallConfigRequestBodyConditions$outboundSchema),
    ),
  });

export function updateFirewallConfigRequestBodyConditionGroupToJSON(
  updateFirewallConfigRequestBodyConditionGroup:
    UpdateFirewallConfigRequestBodyConditionGroup,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyConditionGroup$outboundSchema.parse(
      updateFirewallConfigRequestBodyConditionGroup,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest3ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest3ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest3ValueAction);

/** @internal */
export const UpdateFirewallConfigRateLimitAlgo$outboundSchema: z.ZodNativeEnum<
  typeof UpdateFirewallConfigRateLimitAlgo
> = z.nativeEnum(UpdateFirewallConfigRateLimitAlgo);

/** @internal */
export const UpdateFirewallConfigActionSecurity1$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigActionSecurity1> = z.nativeEnum(
    UpdateFirewallConfigActionSecurity1,
  );

/** @internal */
export type UpdateFirewallConfigRateLimitSecurityAction$Outbound = string | any;

/** @internal */
export const UpdateFirewallConfigRateLimitSecurityAction$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRateLimitSecurityAction$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRateLimitSecurityAction
  > = smartUnion([UpdateFirewallConfigActionSecurity1$outboundSchema, z.any()]);

export function updateFirewallConfigRateLimitSecurityActionToJSON(
  updateFirewallConfigRateLimitSecurityAction:
    UpdateFirewallConfigRateLimitSecurityAction,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRateLimitSecurityAction$outboundSchema.parse(
      updateFirewallConfigRateLimitSecurityAction,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRateLimitSecurity1$Outbound = {
  algo: string;
  window: number;
  limit: number;
  keys: Array<string>;
  action?: string | any | null | undefined;
};

/** @internal */
export const UpdateFirewallConfigRateLimitSecurity1$outboundSchema: z.ZodType<
  UpdateFirewallConfigRateLimitSecurity1$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRateLimitSecurity1
> = z.object({
  algo: UpdateFirewallConfigRateLimitAlgo$outboundSchema,
  window: z.number(),
  limit: z.number(),
  keys: z.array(z.string()),
  action: z.nullable(
    smartUnion([UpdateFirewallConfigActionSecurity1$outboundSchema, z.any()]),
  ).optional(),
});

export function updateFirewallConfigRateLimitSecurity1ToJSON(
  updateFirewallConfigRateLimitSecurity1:
    UpdateFirewallConfigRateLimitSecurity1,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRateLimitSecurity1$outboundSchema.parse(
      updateFirewallConfigRateLimitSecurity1,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyRateLimit$Outbound =
  | UpdateFirewallConfigRateLimitSecurity1$Outbound
  | any;

/** @internal */
export const UpdateFirewallConfigRequestBodyRateLimit$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBodyRateLimit$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBodyRateLimit
> = smartUnion([
  z.lazy(() => UpdateFirewallConfigRateLimitSecurity1$outboundSchema),
  z.any(),
]);

export function updateFirewallConfigRequestBodyRateLimitToJSON(
  updateFirewallConfigRequestBodyRateLimit:
    UpdateFirewallConfigRequestBodyRateLimit,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyRateLimit$outboundSchema.parse(
      updateFirewallConfigRequestBodyRateLimit,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRedirectSecurity1$Outbound = {
  location: string;
  permanent: boolean;
};

/** @internal */
export const UpdateFirewallConfigRedirectSecurity1$outboundSchema: z.ZodType<
  UpdateFirewallConfigRedirectSecurity1$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRedirectSecurity1
> = z.object({
  location: z.string(),
  permanent: z.boolean(),
});

export function updateFirewallConfigRedirectSecurity1ToJSON(
  updateFirewallConfigRedirectSecurity1: UpdateFirewallConfigRedirectSecurity1,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRedirectSecurity1$outboundSchema.parse(
      updateFirewallConfigRedirectSecurity1,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyRedirect$Outbound =
  | UpdateFirewallConfigRedirectSecurity1$Outbound
  | any;

/** @internal */
export const UpdateFirewallConfigRequestBodyRedirect$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBodyRedirect$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBodyRedirect
> = smartUnion([
  z.lazy(() => UpdateFirewallConfigRedirectSecurity1$outboundSchema),
  z.any(),
]);

export function updateFirewallConfigRequestBodyRedirectToJSON(
  updateFirewallConfigRequestBodyRedirect:
    UpdateFirewallConfigRequestBodyRedirect,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyRedirect$outboundSchema.parse(
      updateFirewallConfigRequestBodyRedirect,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyLogHeaders$Outbound =
  | string
  | Array<string>;

/** @internal */
export const UpdateFirewallConfigRequestBodyLogHeaders$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodyLogHeaders$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodyLogHeaders
  > = smartUnion([z.string(), z.array(z.string())]);

export function updateFirewallConfigRequestBodyLogHeadersToJSON(
  updateFirewallConfigRequestBodyLogHeaders:
    UpdateFirewallConfigRequestBodyLogHeaders,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyLogHeaders$outboundSchema.parse(
      updateFirewallConfigRequestBodyLogHeaders,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyMitigate$Outbound = {
  action: string;
  rateLimit?:
    | UpdateFirewallConfigRateLimitSecurity1$Outbound
    | any
    | null
    | undefined;
  redirect?:
    | UpdateFirewallConfigRedirectSecurity1$Outbound
    | any
    | null
    | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?: string | Array<string> | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBodyMitigate$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBodyMitigate$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBodyMitigate
> = z.object({
  action:
    UpdateFirewallConfigRequestBodySecurityRequest3ValueAction$outboundSchema,
  rateLimit: z.nullable(
    smartUnion([
      z.lazy(() => UpdateFirewallConfigRateLimitSecurity1$outboundSchema),
      z.any(),
    ]),
  ).optional(),
  redirect: z.nullable(
    smartUnion([
      z.lazy(() => UpdateFirewallConfigRedirectSecurity1$outboundSchema),
      z.any(),
    ]),
  ).optional(),
  actionDuration: z.nullable(z.string()).optional(),
  bypassSystem: z.nullable(z.boolean()).optional(),
  logHeaders: smartUnion([z.string(), z.array(z.string())]).optional(),
});

export function updateFirewallConfigRequestBodyMitigateToJSON(
  updateFirewallConfigRequestBodyMitigate:
    UpdateFirewallConfigRequestBodyMitigate,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyMitigate$outboundSchema.parse(
      updateFirewallConfigRequestBodyMitigate,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequest3Action$Outbound = {
  mitigate?: UpdateFirewallConfigRequestBodyMitigate$Outbound | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest3Action$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequest3Action$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequest3Action
  > = z.object({
    mitigate: z.lazy(() =>
      UpdateFirewallConfigRequestBodyMitigate$outboundSchema
    ).optional(),
  });

export function updateFirewallConfigRequestBodySecurityRequest3ActionToJSON(
  updateFirewallConfigRequestBodySecurityRequest3Action:
    UpdateFirewallConfigRequestBodySecurityRequest3Action,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest3Action$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest3Action,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyValidationErrors$Outbound =
  | Array<string>
  | string;

/** @internal */
export const UpdateFirewallConfigRequestBodyValidationErrors$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodyValidationErrors$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodyValidationErrors
  > = smartUnion([z.array(z.string()), z.string()]);

export function updateFirewallConfigRequestBodyValidationErrorsToJSON(
  updateFirewallConfigRequestBodyValidationErrors:
    UpdateFirewallConfigRequestBodyValidationErrors,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyValidationErrors$outboundSchema.parse(
      updateFirewallConfigRequestBodyValidationErrors,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodyValue$Outbound = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<UpdateFirewallConfigRequestBodyConditionGroup$Outbound>;
  action: UpdateFirewallConfigRequestBodySecurityRequest3Action$Outbound;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBodyValue$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBodyValue$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBodyValue
> = z.object({
  name: z.string(),
  description: z.string().optional(),
  active: z.boolean(),
  conditionGroup: z.array(
    z.lazy(() => UpdateFirewallConfigRequestBodyConditionGroup$outboundSchema),
  ),
  action: z.lazy(() =>
    UpdateFirewallConfigRequestBodySecurityRequest3Action$outboundSchema
  ),
  valid: z.boolean().optional(),
  validationErrors: smartUnion([z.array(z.string()), z.string()]).optional(),
});

export function updateFirewallConfigRequestBodyValueToJSON(
  updateFirewallConfigRequestBodyValue: UpdateFirewallConfigRequestBodyValue,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodyValue$outboundSchema.parse(
      updateFirewallConfigRequestBodyValue,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBody3$Outbound = {
  action: string;
  id: string;
  value: UpdateFirewallConfigRequestBodyValue$Outbound;
};

/** @internal */
export const UpdateFirewallConfigRequestBody3$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody3$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody3
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequestAction$outboundSchema,
  id: z.string(),
  value: z.lazy(() => UpdateFirewallConfigRequestBodyValue$outboundSchema),
});

export function updateFirewallConfigRequestBody3ToJSON(
  updateFirewallConfigRequestBody3: UpdateFirewallConfigRequestBody3,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody3$outboundSchema.parse(
      updateFirewallConfigRequestBody3,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityAction$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodySecurityAction> = z
    .nativeEnum(UpdateFirewallConfigRequestBodySecurityAction);

/** @internal */
export const UpdateFirewallConfigRequestBodyType$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodyType> = z.nativeEnum(
    UpdateFirewallConfigRequestBodyType,
  );

/** @internal */
export const RequestBodyOp$outboundSchema: z.ZodNativeEnum<
  typeof RequestBodyOp
> = z.nativeEnum(RequestBodyOp);

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequest2Value$Outbound =
  | string
  | Array<string>
  | number;

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest2Value$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequest2Value$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequest2Value
  > = smartUnion([z.string(), z.array(z.string()), z.number()]);

export function updateFirewallConfigRequestBodySecurityRequest2ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest2Value:
    UpdateFirewallConfigRequestBodySecurityRequest2Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest2Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest2Value,
    ),
  );
}

/** @internal */
export type RequestBodyConditions$Outbound = {
  type: string;
  op: string;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

/** @internal */
export const RequestBodyConditions$outboundSchema: z.ZodType<
  RequestBodyConditions$Outbound,
  z.ZodTypeDef,
  RequestBodyConditions
> = z.object({
  type: UpdateFirewallConfigRequestBodyType$outboundSchema,
  op: RequestBodyOp$outboundSchema,
  neg: z.boolean().optional(),
  key: z.string().optional(),
  value: smartUnion([z.string(), z.array(z.string()), z.number()]).optional(),
});

export function requestBodyConditionsToJSON(
  requestBodyConditions: RequestBodyConditions,
): string {
  return JSON.stringify(
    RequestBodyConditions$outboundSchema.parse(requestBodyConditions),
  );
}

/** @internal */
export type RequestBodyConditionGroup$Outbound = {
  conditions: Array<RequestBodyConditions$Outbound>;
};

/** @internal */
export const RequestBodyConditionGroup$outboundSchema: z.ZodType<
  RequestBodyConditionGroup$Outbound,
  z.ZodTypeDef,
  RequestBodyConditionGroup
> = z.object({
  conditions: z.array(z.lazy(() => RequestBodyConditions$outboundSchema)),
});

export function requestBodyConditionGroupToJSON(
  requestBodyConditionGroup: RequestBodyConditionGroup,
): string {
  return JSON.stringify(
    RequestBodyConditionGroup$outboundSchema.parse(requestBodyConditionGroup),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest2ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest2ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest2ValueAction);

/** @internal */
export const RateLimitAlgo$outboundSchema: z.ZodNativeEnum<
  typeof RateLimitAlgo
> = z.nativeEnum(RateLimitAlgo);

/** @internal */
export const UpdateFirewallConfigAction1$outboundSchema: z.ZodNativeEnum<
  typeof UpdateFirewallConfigAction1
> = z.nativeEnum(UpdateFirewallConfigAction1);

/** @internal */
export type UpdateFirewallConfigRateLimitAction$Outbound = string | any;

/** @internal */
export const UpdateFirewallConfigRateLimitAction$outboundSchema: z.ZodType<
  UpdateFirewallConfigRateLimitAction$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRateLimitAction
> = smartUnion([UpdateFirewallConfigAction1$outboundSchema, z.any()]);

export function updateFirewallConfigRateLimitActionToJSON(
  updateFirewallConfigRateLimitAction: UpdateFirewallConfigRateLimitAction,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRateLimitAction$outboundSchema.parse(
      updateFirewallConfigRateLimitAction,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRateLimit1$Outbound = {
  algo: string;
  window: number;
  limit: number;
  keys: Array<string>;
  action?: string | any | null | undefined;
};

/** @internal */
export const UpdateFirewallConfigRateLimit1$outboundSchema: z.ZodType<
  UpdateFirewallConfigRateLimit1$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRateLimit1
> = z.object({
  algo: RateLimitAlgo$outboundSchema,
  window: z.number(),
  limit: z.number(),
  keys: z.array(z.string()),
  action: z.nullable(
    smartUnion([UpdateFirewallConfigAction1$outboundSchema, z.any()]),
  ).optional(),
});

export function updateFirewallConfigRateLimit1ToJSON(
  updateFirewallConfigRateLimit1: UpdateFirewallConfigRateLimit1,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRateLimit1$outboundSchema.parse(
      updateFirewallConfigRateLimit1,
    ),
  );
}

/** @internal */
export type RequestBodyRateLimit$Outbound =
  | UpdateFirewallConfigRateLimit1$Outbound
  | any;

/** @internal */
export const RequestBodyRateLimit$outboundSchema: z.ZodType<
  RequestBodyRateLimit$Outbound,
  z.ZodTypeDef,
  RequestBodyRateLimit
> = smartUnion([
  z.lazy(() => UpdateFirewallConfigRateLimit1$outboundSchema),
  z.any(),
]);

export function requestBodyRateLimitToJSON(
  requestBodyRateLimit: RequestBodyRateLimit,
): string {
  return JSON.stringify(
    RequestBodyRateLimit$outboundSchema.parse(requestBodyRateLimit),
  );
}

/** @internal */
export type UpdateFirewallConfigRedirect1$Outbound = {
  location: string;
  permanent: boolean;
};

/** @internal */
export const UpdateFirewallConfigRedirect1$outboundSchema: z.ZodType<
  UpdateFirewallConfigRedirect1$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRedirect1
> = z.object({
  location: z.string(),
  permanent: z.boolean(),
});

export function updateFirewallConfigRedirect1ToJSON(
  updateFirewallConfigRedirect1: UpdateFirewallConfigRedirect1,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRedirect1$outboundSchema.parse(
      updateFirewallConfigRedirect1,
    ),
  );
}

/** @internal */
export type RequestBodyRedirect$Outbound =
  | UpdateFirewallConfigRedirect1$Outbound
  | any;

/** @internal */
export const RequestBodyRedirect$outboundSchema: z.ZodType<
  RequestBodyRedirect$Outbound,
  z.ZodTypeDef,
  RequestBodyRedirect
> = smartUnion([
  z.lazy(() => UpdateFirewallConfigRedirect1$outboundSchema),
  z.any(),
]);

export function requestBodyRedirectToJSON(
  requestBodyRedirect: RequestBodyRedirect,
): string {
  return JSON.stringify(
    RequestBodyRedirect$outboundSchema.parse(requestBodyRedirect),
  );
}

/** @internal */
export type RequestBodyLogHeaders$Outbound = string | Array<string>;

/** @internal */
export const RequestBodyLogHeaders$outboundSchema: z.ZodType<
  RequestBodyLogHeaders$Outbound,
  z.ZodTypeDef,
  RequestBodyLogHeaders
> = smartUnion([z.string(), z.array(z.string())]);

export function requestBodyLogHeadersToJSON(
  requestBodyLogHeaders: RequestBodyLogHeaders,
): string {
  return JSON.stringify(
    RequestBodyLogHeaders$outboundSchema.parse(requestBodyLogHeaders),
  );
}

/** @internal */
export type RequestBodyMitigate$Outbound = {
  action: string;
  rateLimit?: UpdateFirewallConfigRateLimit1$Outbound | any | null | undefined;
  redirect?: UpdateFirewallConfigRedirect1$Outbound | any | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?: string | Array<string> | undefined;
};

/** @internal */
export const RequestBodyMitigate$outboundSchema: z.ZodType<
  RequestBodyMitigate$Outbound,
  z.ZodTypeDef,
  RequestBodyMitigate
> = z.object({
  action:
    UpdateFirewallConfigRequestBodySecurityRequest2ValueAction$outboundSchema,
  rateLimit: z.nullable(
    smartUnion([
      z.lazy(() => UpdateFirewallConfigRateLimit1$outboundSchema),
      z.any(),
    ]),
  ).optional(),
  redirect: z.nullable(
    smartUnion([
      z.lazy(() => UpdateFirewallConfigRedirect1$outboundSchema),
      z.any(),
    ]),
  ).optional(),
  actionDuration: z.nullable(z.string()).optional(),
  bypassSystem: z.nullable(z.boolean()).optional(),
  logHeaders: smartUnion([z.string(), z.array(z.string())]).optional(),
});

export function requestBodyMitigateToJSON(
  requestBodyMitigate: RequestBodyMitigate,
): string {
  return JSON.stringify(
    RequestBodyMitigate$outboundSchema.parse(requestBodyMitigate),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBodySecurityRequest2Action$Outbound = {
  mitigate?: RequestBodyMitigate$Outbound | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBodySecurityRequest2Action$outboundSchema:
  z.ZodType<
    UpdateFirewallConfigRequestBodySecurityRequest2Action$Outbound,
    z.ZodTypeDef,
    UpdateFirewallConfigRequestBodySecurityRequest2Action
  > = z.object({
    mitigate: z.lazy(() => RequestBodyMitigate$outboundSchema).optional(),
  });

export function updateFirewallConfigRequestBodySecurityRequest2ActionToJSON(
  updateFirewallConfigRequestBodySecurityRequest2Action:
    UpdateFirewallConfigRequestBodySecurityRequest2Action,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest2Action$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest2Action,
    ),
  );
}

/** @internal */
export type RequestBodyValidationErrors$Outbound = Array<string> | string;

/** @internal */
export const RequestBodyValidationErrors$outboundSchema: z.ZodType<
  RequestBodyValidationErrors$Outbound,
  z.ZodTypeDef,
  RequestBodyValidationErrors
> = smartUnion([z.array(z.string()), z.string()]);

export function requestBodyValidationErrorsToJSON(
  requestBodyValidationErrors: RequestBodyValidationErrors,
): string {
  return JSON.stringify(
    RequestBodyValidationErrors$outboundSchema.parse(
      requestBodyValidationErrors,
    ),
  );
}

/** @internal */
export type RequestBodyValue$Outbound = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<RequestBodyConditionGroup$Outbound>;
  action: UpdateFirewallConfigRequestBodySecurityRequest2Action$Outbound;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/** @internal */
export const RequestBodyValue$outboundSchema: z.ZodType<
  RequestBodyValue$Outbound,
  z.ZodTypeDef,
  RequestBodyValue
> = z.object({
  name: z.string(),
  description: z.string().optional(),
  active: z.boolean(),
  conditionGroup: z.array(
    z.lazy(() => RequestBodyConditionGroup$outboundSchema),
  ),
  action: z.lazy(() =>
    UpdateFirewallConfigRequestBodySecurityRequest2Action$outboundSchema
  ),
  valid: z.boolean().optional(),
  validationErrors: smartUnion([z.array(z.string()), z.string()]).optional(),
});

export function requestBodyValueToJSON(
  requestBodyValue: RequestBodyValue,
): string {
  return JSON.stringify(
    RequestBodyValue$outboundSchema.parse(requestBodyValue),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBody2$Outbound = {
  action: string;
  id?: any | null | undefined;
  value: RequestBodyValue$Outbound;
};

/** @internal */
export const UpdateFirewallConfigRequestBody2$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody2$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody2
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityAction$outboundSchema,
  id: z.nullable(z.any()).optional(),
  value: z.lazy(() => RequestBodyValue$outboundSchema),
});

export function updateFirewallConfigRequestBody2ToJSON(
  updateFirewallConfigRequestBody2: UpdateFirewallConfigRequestBody2,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody2$outboundSchema.parse(
      updateFirewallConfigRequestBody2,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigRequestBodyAction$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodyAction> = z.nativeEnum(
    UpdateFirewallConfigRequestBodyAction,
  );

/** @internal */
export type UpdateFirewallConfigRequestBody1$Outbound = {
  action: string;
  id?: any | null | undefined;
  value: boolean;
};

/** @internal */
export const UpdateFirewallConfigRequestBody1$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody1$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody1
> = z.object({
  action: UpdateFirewallConfigRequestBodyAction$outboundSchema,
  id: z.nullable(z.any()).optional(),
  value: z.boolean(),
});

export function updateFirewallConfigRequestBody1ToJSON(
  updateFirewallConfigRequestBody1: UpdateFirewallConfigRequestBody1,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody1$outboundSchema.parse(
      updateFirewallConfigRequestBody1,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBody$Outbound =
  | UpdateFirewallConfigRequestBody3$Outbound
  | UpdateFirewallConfigRequestBody5$Outbound
  | UpdateFirewallConfigRequestBody6$Outbound
  | UpdateFirewallConfigRequestBody9$Outbound
  | RequestBody11$Outbound
  | RequestBody12$Outbound
  | UpdateFirewallConfigRequestBody1$Outbound
  | UpdateFirewallConfigRequestBody2$Outbound
  | UpdateFirewallConfigRequestBody4$Outbound
  | UpdateFirewallConfigRequestBody8$Outbound
  | UpdateFirewallConfigRequestBody10$Outbound
  | RequestBody13$Outbound
  | RequestBody14$Outbound
  | UpdateFirewallConfigRequestBody7$Outbound;

/** @internal */
export const UpdateFirewallConfigRequestBody$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody
> = smartUnion([
  z.lazy(() => UpdateFirewallConfigRequestBody3$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody5$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody6$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody9$outboundSchema),
  z.lazy(() => RequestBody11$outboundSchema),
  z.lazy(() => RequestBody12$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody1$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody2$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody4$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody8$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody10$outboundSchema),
  z.lazy(() => RequestBody13$outboundSchema),
  z.lazy(() => RequestBody14$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody7$outboundSchema),
]);

export function updateFirewallConfigRequestBodyToJSON(
  updateFirewallConfigRequestBody: UpdateFirewallConfigRequestBody,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBody$outboundSchema.parse(
      updateFirewallConfigRequestBody,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequest$Outbound = {
  projectId: string;
  teamId?: string | undefined;
  slug?: string | undefined;
  RequestBody:
    | UpdateFirewallConfigRequestBody3$Outbound
    | UpdateFirewallConfigRequestBody5$Outbound
    | UpdateFirewallConfigRequestBody6$Outbound
    | UpdateFirewallConfigRequestBody9$Outbound
    | RequestBody11$Outbound
    | RequestBody12$Outbound
    | UpdateFirewallConfigRequestBody1$Outbound
    | UpdateFirewallConfigRequestBody2$Outbound
    | UpdateFirewallConfigRequestBody4$Outbound
    | UpdateFirewallConfigRequestBody8$Outbound
    | UpdateFirewallConfigRequestBody10$Outbound
    | RequestBody13$Outbound
    | RequestBody14$Outbound
    | UpdateFirewallConfigRequestBody7$Outbound;
};

/** @internal */
export const UpdateFirewallConfigRequest$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequest$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequest
> = z.object({
  projectId: z.string(),
  teamId: z.string().optional(),
  slug: z.string().optional(),
  requestBody: smartUnion([
    z.lazy(() => UpdateFirewallConfigRequestBody3$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody5$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody6$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody9$outboundSchema),
    z.lazy(() => RequestBody11$outboundSchema),
    z.lazy(() => RequestBody12$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody1$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody2$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody4$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody8$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody10$outboundSchema),
    z.lazy(() => RequestBody13$outboundSchema),
    z.lazy(() => RequestBody14$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody7$outboundSchema),
  ]),
}).transform((v) => {
  return remap$(v, {
    requestBody: "RequestBody",
  });
});

export function updateFirewallConfigRequestToJSON(
  updateFirewallConfigRequest: UpdateFirewallConfigRequest,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequest$outboundSchema.parse(
      updateFirewallConfigRequest,
    ),
  );
}

/** @internal */
export const UpdateFirewallConfigResponseBody$inboundSchema: z.ZodType<
  UpdateFirewallConfigResponseBody,
  z.ZodTypeDef,
  unknown
> = z.object({});

export function updateFirewallConfigResponseBodyFromJSON(
  jsonString: string,
): SafeParseResult<UpdateFirewallConfigResponseBody, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => UpdateFirewallConfigResponseBody$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'UpdateFirewallConfigResponseBody' from JSON`,
  );
}