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>

3,832 lines 117 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 RequestBody23 = {
  action: string;
  id?: string | undefined;
  value?: any | undefined;
};

/**
 * Toggle bot ID
 */
export type RequestBody22 = {
  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 UpdateFirewallConfigRequestBodySecurityRequest21Action = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest21Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest21Action
>;

export type UpdateFirewallConfigRequestBodySecurityRequest21Value = {
  active: boolean;
  action?: UpdateFirewallConfigRequestBodySecurityRequest21Action | undefined;
};

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

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 UpdateFirewallConfigRequestBodySecurityRequest20Action = {
  Log: "log",
  Challenge: "challenge",
  Deny: "deny",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest20Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest20Action
>;

export type UpdateFirewallConfigRequestBodySecurityRequest20Value = {
  action?: UpdateFirewallConfigRequestBodySecurityRequest20Action | undefined;
  active: boolean;
};

/**
 * Update a managed ruleset
 */
export type RequestBody20 = {
  action: string;
  id: RequestBodyId;
  value: UpdateFirewallConfigRequestBodySecurityRequest20Value;
};

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

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

export type UpdateFirewallConfigRequestBodySecurityRequest18Value = {
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: UpdateFirewallConfigRequestBodySecurityRequest18Action;
};

/**
 * Update an IP Blocking rule
 */
export type RequestBody18 = {
  action: string;
  id: string;
  value: UpdateFirewallConfigRequestBodySecurityRequest18Value;
};

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

export type UpdateFirewallConfigRequestBodySecurityRequest17Value = {
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: UpdateFirewallConfigRequestBodySecurityRequest17Action;
};

/**
 * Add an IP Blocking rule
 */
export type RequestBody17 = {
  action: string;
  id?: string | undefined;
  value: UpdateFirewallConfigRequestBodySecurityRequest17Value;
};

/**
 * Disable a managed rule
 */
export type RequestBody16 = {
  action: string;
  id?: string | undefined;
  value?: string | undefined;
};

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 UpdateFirewallConfigRequestBodySecurityRequest15Action = {
  Deny: "deny",
  Log: "log",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest15Action = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest15Action
>;

export type UpdateFirewallConfigRequestBodySecurityRequest15Value = {
  active: boolean;
  action: UpdateFirewallConfigRequestBodySecurityRequest15Action;
};

/**
 * Enable a managed rule
 */
export type RequestBody15 = {
  action: string;
  id: Id;
  value: UpdateFirewallConfigRequestBodySecurityRequest15Value;
};

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

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

export const UpdateFirewallConfigRequestBodySecurityRequest12Type = {
  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",
  DomainEnvironment: "domain_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",
  SharedCondition: "shared_condition",
  TrafficSource: "traffic_source",
  Ruleset: "ruleset",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest12Type = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest12Type
>;

export const UpdateFirewallConfigRequestBodySecurityRequest12Op = {
  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",
  List: "list",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest12Op = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest12Op
>;

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

export type UpdateFirewallConfigRequestBodySecurityRequest12Conditions = {
  type: UpdateFirewallConfigRequestBodySecurityRequest12Type;
  op: UpdateFirewallConfigRequestBodySecurityRequest12Op;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

export type UpdateFirewallConfigRequestBodySecurityRequest12ConditionGroup = {
  conditions: Array<UpdateFirewallConfigRequestBodySecurityRequest12Conditions>;
};

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

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
  | string;

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

export type UpdateFirewallConfigRequestBodyRateLimit =
  | UpdateFirewallConfigRateLimitSecurity1
  | string;

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

export type UpdateFirewallConfigRequestBodyRedirect =
  | UpdateFirewallConfigRedirectSecurity1
  | string;

export type UpdateFirewallConfigRequestBodyLogHeaders = string | Array<string>;

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

export type UpdateFirewallConfigRequestBodySecurityRequest12Action = {
  mitigate?: UpdateFirewallConfigRequestBodySecurityRequestMitigate | undefined;
};

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

export type UpdateFirewallConfigRequestBodySecurityRequest12Value = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<
    UpdateFirewallConfigRequestBodySecurityRequest12ConditionGroup
  >;
  action: UpdateFirewallConfigRequestBodySecurityRequest12Action;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/**
 * Update a custom rule
 */
export type RequestBody12 = {
  action: string;
  id: string;
  value: UpdateFirewallConfigRequestBodySecurityRequest12Value;
};

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

export const UpdateFirewallConfigRequestBodySecurityRequest11Type = {
  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",
  DomainEnvironment: "domain_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",
  SharedCondition: "shared_condition",
  TrafficSource: "traffic_source",
  Ruleset: "ruleset",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest11Type = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest11Type
>;

export const UpdateFirewallConfigRequestBodySecurityRequest11Op = {
  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",
  List: "list",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest11Op = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest11Op
>;

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

export type UpdateFirewallConfigRequestBodySecurityRequest11Conditions = {
  type: UpdateFirewallConfigRequestBodySecurityRequest11Type;
  op: UpdateFirewallConfigRequestBodySecurityRequest11Op;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

export type UpdateFirewallConfigRequestBodySecurityRequest11ConditionGroup = {
  conditions: Array<UpdateFirewallConfigRequestBodySecurityRequest11Conditions>;
};

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

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
  | string;

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

export type RequestBodyRateLimit = UpdateFirewallConfigRateLimit1 | string;

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

export type RequestBodyRedirect = UpdateFirewallConfigRedirect1 | string;

export type RequestBodyLogHeaders = string | Array<string>;

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

export type UpdateFirewallConfigRequestBodySecurityRequest11ValueAction = {
  mitigate?: UpdateFirewallConfigRequestBodySecurityMitigate | undefined;
};

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

export type UpdateFirewallConfigRequestBodySecurityRequest11Value = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<
    UpdateFirewallConfigRequestBodySecurityRequest11ConditionGroup
  >;
  action: UpdateFirewallConfigRequestBodySecurityRequest11ValueAction;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/**
 * Add a custom rule
 */
export type RequestBody11 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest11Action;
  id?: string | undefined;
  value: UpdateFirewallConfigRequestBodySecurityRequest11Value;
};

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

/**
 * Enable Firewall
 */
export type UpdateFirewallConfigRequestBody10 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest10Action;
  id?: string | undefined;
  value?: any | null | undefined;
};

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

/**
 * Remove the action for a consumed ruleset (project scope)
 */
export type UpdateFirewallConfigRequestBody9 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest9Action;
  id: string;
  value?: string | undefined;
};

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

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

export type UpdateFirewallConfigRequestBodySecurityRequest8Value = {
  action: UpdateFirewallConfigRequestBodySecurityRequest8ValueAction;
};

/**
 * Set the action for a consumed ruleset (project scope)
 */
export type UpdateFirewallConfigRequestBody8 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest8Action;
  id?: any | null | undefined;
  value: UpdateFirewallConfigRequestBodySecurityRequest8Value;
};

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

/**
 * Remove a named condition
 */
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 UpdateFirewallConfigRequestBodySecurityRequest6Type = {
  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",
  DomainEnvironment: "domain_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",
  SharedCondition: "shared_condition",
  TrafficSource: "traffic_source",
  Ruleset: "ruleset",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest6Type = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequest6Type
>;

export const UpdateFirewallConfigRequestBodySecurityRequestOp = {
  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",
  List: "list",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequestOp = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequestOp
>;

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

export type UpdateFirewallConfigRequestBodySecurityRequestConditions = {
  type: UpdateFirewallConfigRequestBodySecurityRequest6Type;
  op: UpdateFirewallConfigRequestBodySecurityRequestOp;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

export type UpdateFirewallConfigRequestBodySecurityRequestConditionGroup = {
  conditions: Array<UpdateFirewallConfigRequestBodySecurityRequestConditions>;
};

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

export type UpdateFirewallConfigRequestBodySecurityRequestValue = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<
    UpdateFirewallConfigRequestBodySecurityRequestConditionGroup
  >;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/**
 * Update a named condition
 */
export type UpdateFirewallConfigRequestBody6 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest6Action;
  id: string;
  value: UpdateFirewallConfigRequestBodySecurityRequestValue;
};

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

export const UpdateFirewallConfigRequestBodySecurityRequestType = {
  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",
  DomainEnvironment: "domain_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",
  SharedCondition: "shared_condition",
  TrafficSource: "traffic_source",
  Ruleset: "ruleset",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequestType = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityRequestType
>;

export const UpdateFirewallConfigRequestBodySecurityOp = {
  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",
  List: "list",
} as const;
export type UpdateFirewallConfigRequestBodySecurityOp = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodySecurityOp
>;

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

export type UpdateFirewallConfigRequestBodySecurityConditions = {
  type: UpdateFirewallConfigRequestBodySecurityRequestType;
  op: UpdateFirewallConfigRequestBodySecurityOp;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | Array<string> | number | undefined;
};

export type UpdateFirewallConfigRequestBodySecurityConditionGroup = {
  conditions: Array<UpdateFirewallConfigRequestBodySecurityConditions>;
};

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

export type UpdateFirewallConfigRequestBodySecurityValue = {
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<UpdateFirewallConfigRequestBodySecurityConditionGroup>;
  valid?: boolean | undefined;
  validationErrors?: Array<string> | string | undefined;
};

/**
 * Add a named condition
 */
export type UpdateFirewallConfigRequestBody5 = {
  action: UpdateFirewallConfigRequestBodySecurityRequest5Action;
  id?: string | undefined;
  value: UpdateFirewallConfigRequestBodySecurityValue;
};

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

/**
 * Reorder a ruleset
 */
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
>;

/**
 * Remove a ruleset
 */
export type UpdateFirewallConfigRequestBody3 = {
  action: UpdateFirewallConfigRequestBodySecurityRequestAction;
  id: string;
  value?: string | undefined;
};

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

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",
  DomainEnvironment: "domain_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",
  SharedCondition: "shared_condition",
  TrafficSource: "traffic_source",
  Ruleset: "ruleset",
} 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",
  List: "list",
} as const;
export type UpdateFirewallConfigRequestBodyOp = ClosedEnum<
  typeof UpdateFirewallConfigRequestBodyOp
>;

export type UpdateFirewallConfigRequestBodySecurityRequest2Value =
  | 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 UpdateFirewallConfigRequestBodySecurityRequest2ValueAction = {
  Deny: "deny",
  Challenge: "challenge",
  Log: "log",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest2ValueAction =
  ClosedEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest2ValueAction>;

export type UpdateFirewallConfigRequestBodyMitigate = {
  action: UpdateFirewallConfigRequestBodySecurityRequest2ValueAction;
};

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

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

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

/**
 * Update a ruleset
 */
export type UpdateFirewallConfigRequestBody2 = {
  action: UpdateFirewallConfigRequestBodySecurityAction;
  id?: any | null | undefined;
  value: UpdateFirewallConfigRequestBodyValue;
};

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

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",
  DomainEnvironment: "domain_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",
  SharedCondition: "shared_condition",
  TrafficSource: "traffic_source",
  Ruleset: "ruleset",
} 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",
  List: "list",
} as const;
export type RequestBodyOp = ClosedEnum<typeof RequestBodyOp>;

export type UpdateFirewallConfigRequestBodySecurityRequest1Value =
  | 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 UpdateFirewallConfigRequestBodySecurityRequest1ValueAction = {
  Deny: "deny",
  Challenge: "challenge",
  Log: "log",
} as const;
export type UpdateFirewallConfigRequestBodySecurityRequest1ValueAction =
  ClosedEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest1ValueAction>;

export type RequestBodyMitigate = {
  action: UpdateFirewallConfigRequestBodySecurityRequest1ValueAction;
};

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

export type RequestBodyValidationErrors = Array<string> | string;

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

/**
 * Add a ruleset
 */
export type UpdateFirewallConfigRequestBody1 = {
  action: UpdateFirewallConfigRequestBodyAction;
  id?: any | null | undefined;
  value: RequestBodyValue;
};

export type UpdateFirewallConfigRequestBody =
  | UpdateFirewallConfigRequestBody2
  | UpdateFirewallConfigRequestBody4
  | UpdateFirewallConfigRequestBody6
  | UpdateFirewallConfigRequestBody8
  | RequestBody12
  | RequestBody14
  | RequestBody15
  | RequestBody18
  | RequestBody20
  | RequestBody21
  | UpdateFirewallConfigRequestBody1
  | UpdateFirewallConfigRequestBody3
  | UpdateFirewallConfigRequestBody5
  | UpdateFirewallConfigRequestBody7
  | UpdateFirewallConfigRequestBody9
  | UpdateFirewallConfigRequestBody10
  | RequestBody11
  | RequestBody13
  | RequestBody17
  | RequestBody19
  | RequestBody22
  | RequestBody23
  | RequestBody16;

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:
    | UpdateFirewallConfigRequestBody2
    | UpdateFirewallConfigRequestBody4
    | UpdateFirewallConfigRequestBody6
    | UpdateFirewallConfigRequestBody8
    | RequestBody12
    | RequestBody14
    | RequestBody15
    | RequestBody18
    | RequestBody20
    | RequestBody21
    | UpdateFirewallConfigRequestBody1
    | UpdateFirewallConfigRequestBody3
    | UpdateFirewallConfigRequestBody5
    | UpdateFirewallConfigRequestBody7
    | UpdateFirewallConfigRequestBody9
    | UpdateFirewallConfigRequestBody10
    | RequestBody11
    | RequestBody13
    | RequestBody17
    | RequestBody19
    | RequestBody22
    | RequestBody23
    | RequestBody16;
};

export type UpdateFirewallConfigResponseBody = {};

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

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

export function requestBody23ToJSON(requestBody23: RequestBody23): string {
  return JSON.stringify(RequestBody23$outboundSchema.parse(requestBody23));
}

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

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

export function requestBody22ToJSON(requestBody22: RequestBody22): string {
  return JSON.stringify(RequestBody22$outboundSchema.parse(requestBody22));
}

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

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest21ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest21Value:
    UpdateFirewallConfigRequestBodySecurityRequest21Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest21Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest21Value,
    ),
  );
}

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

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

export function requestBody21ToJSON(requestBody21: RequestBody21): string {
  return JSON.stringify(RequestBody21$outboundSchema.parse(requestBody21));
}

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

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest20ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest20Value:
    UpdateFirewallConfigRequestBodySecurityRequest20Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest20Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest20Value,
    ),
  );
}

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

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

export function requestBody20ToJSON(requestBody20: RequestBody20): string {
  return JSON.stringify(RequestBody20$outboundSchema.parse(requestBody20));
}

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

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

export function requestBody19ToJSON(requestBody19: RequestBody19): string {
  return JSON.stringify(RequestBody19$outboundSchema.parse(requestBody19));
}

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest18ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest18Value:
    UpdateFirewallConfigRequestBodySecurityRequest18Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest18Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest18Value,
    ),
  );
}

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

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

export function requestBody18ToJSON(requestBody18: RequestBody18): string {
  return JSON.stringify(RequestBody18$outboundSchema.parse(requestBody18));
}

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest17ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest17Value:
    UpdateFirewallConfigRequestBodySecurityRequest17Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest17Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest17Value,
    ),
  );
}

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

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

export function requestBody17ToJSON(requestBody17: RequestBody17): string {
  return JSON.stringify(RequestBody17$outboundSchema.parse(requestBody17));
}

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

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

export function requestBody16ToJSON(requestBody16: RequestBody16): string {
  return JSON.stringify(RequestBody16$outboundSchema.parse(requestBody16));
}

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

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest15ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest15Value:
    UpdateFirewallConfigRequestBodySecurityRequest15Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest15Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest15Value,
    ),
  );
}

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

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

export function requestBody15ToJSON(requestBody15: RequestBody15): string {
  return JSON.stringify(RequestBody15$outboundSchema.parse(requestBody15));
}

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

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

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

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

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

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

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

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest12ValueValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest12ValueValue:
    UpdateFirewallConfigRequestBodySecurityRequest12ValueValue,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest12ValueValue$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest12ValueValue),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest12ConditionsToJSON(
  updateFirewallConfigRequestBodySecurityRequest12Conditions:
    UpdateFirewallConfigRequestBodySecurityRequest12Conditions,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest12Conditions$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest12Conditions),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest12ConditionGroupToJSON(
  updateFirewallConfigRequestBodySecurityRequest12ConditionGroup:
    UpdateFirewallConfigRequestBodySecurityRequest12ConditionGroup,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest12ConditionGroup$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest12ConditionGroup),
  );
}

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

/** @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
  | string;

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

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 | string | 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: smartUnion([
    UpdateFirewallConfigActionSecurity1$outboundSchema,
    z.string(),
  ]).optional(),
});

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

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

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

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
  | string;

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

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 UpdateFirewallConfigRequestBodySecurityRequestMitigate$Outbound = {
  action: string;
  rateLimit?:
    | UpdateFirewallConfigRateLimitSecurity1$Outbound
    | string
    | undefined;
  redirect?:
    | UpdateFirewallConfigRedirectSecurity1$Outbound
    | string
    | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?: string | Array<string> | undefined;
};

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

export function updateFirewallConfigRequestBodySecurityRequestMitigateToJSON(
  updateFirewallConfigRequestBodySecurityRequestMitigate:
    UpdateFirewallConfigRequestBodySecurityRequestMitigate,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequestMitigate$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequestMitigate,
    ),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest12ActionToJSON(
  updateFirewallConfigRequestBodySecurityRequest12Action:
    UpdateFirewallConfigRequestBodySecurityRequest12Action,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest12Action$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest12Action,
    ),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest12ValidationErrorsToJSON(
  updateFirewallConfigRequestBodySecurityRequest12ValidationErrors:
    UpdateFirewallConfigRequestBodySecurityRequest12ValidationErrors,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest12ValidationErrors$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest12ValidationErrors),
  );
}

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

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

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

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

/** @internal */
export const RequestBody12$outboundSchema: z.ZodType<
  RequestBody12$Outbound,
  z.ZodTypeDef,
  RequestBody12
> = z.object({
  action: z.string(),
  id: z.string(),
  value: 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 UpdateFirewallConfigRequestBodySecurityRequest11Type$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest11Type> =
    z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest11Type);

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest11ValueValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest11ValueValue:
    UpdateFirewallConfigRequestBodySecurityRequest11ValueValue,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest11ValueValue$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest11ValueValue),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest11ConditionsToJSON(
  updateFirewallConfigRequestBodySecurityRequest11Conditions:
    UpdateFirewallConfigRequestBodySecurityRequest11Conditions,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest11Conditions$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest11Conditions),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest11ConditionGroupToJSON(
  updateFirewallConfigRequestBodySecurityRequest11ConditionGroup:
    UpdateFirewallConfigRequestBodySecurityRequest11ConditionGroup,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest11ConditionGroup$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest11ConditionGroup),
  );
}

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

/** @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 | string;

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

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 | string | 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: smartUnion([UpdateFirewallConfigAction1$outboundSchema, z.string()])
    .optional(),
});

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

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

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

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
  | string;

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

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 UpdateFirewallConfigRequestBodySecurityMitigate$Outbound = {
  action: string;
  rateLimit?: UpdateFirewallConfigRateLimit1$Outbound | string | undefined;
  redirect?: UpdateFirewallConfigRedirect1$Outbound | string | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?: string | Array<string> | undefined;
};

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

export function updateFirewallConfigRequestBodySecurityMitigateToJSON(
  updateFirewallConfigRequestBodySecurityMitigate:
    UpdateFirewallConfigRequestBodySecurityMitigate,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityMitigate$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityMitigate,
    ),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest11ValueActionToJSON(
  updateFirewallConfigRequestBodySecurityRequest11ValueAction:
    UpdateFirewallConfigRequestBodySecurityRequest11ValueAction,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest11ValueAction$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest11ValueAction),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequest11ValidationErrorsToJSON(
  updateFirewallConfigRequestBodySecurityRequest11ValidationErrors:
    UpdateFirewallConfigRequestBodySecurityRequest11ValidationErrors,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest11ValidationErrors$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequest11ValidationErrors),
  );
}

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

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

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

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

/** @internal */
export const RequestBody11$outboundSchema: z.ZodType<
  RequestBody11$Outbound,
  z.ZodTypeDef,
  RequestBody11
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest11Action$outboundSchema,
  id: z.string().optional(),
  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 | undefined;
  value?: any | null | undefined;
};

/** @internal */
export const UpdateFirewallConfigRequestBody10$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody10$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody10
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest10Action$outboundSchema,
  id: z.string().optional(),
  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 type UpdateFirewallConfigRequestBody9$Outbound = {
  action: string;
  id: string;
  value?: string | undefined;
};

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

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 UpdateFirewallConfigRequestBodySecurityRequest8Value$Outbound = {
  action: string;
};

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

export function updateFirewallConfigRequestBodySecurityRequest8ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest8Value:
    UpdateFirewallConfigRequestBodySecurityRequest8Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest8Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest8Value,
    ),
  );
}

/** @internal */
export type UpdateFirewallConfigRequestBody8$Outbound = {
  action: string;
  id?: any | null | undefined;
  value: UpdateFirewallConfigRequestBodySecurityRequest8Value$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(() =>
    UpdateFirewallConfigRequestBodySecurityRequest8Value$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 UpdateFirewallConfigRequestBodySecurityRequest6Type$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodySecurityRequest6Type> =
    z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest6Type);

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest6ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest6Value:
    UpdateFirewallConfigRequestBodySecurityRequest6Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest6Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest6Value,
    ),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequestConditionsToJSON(
  updateFirewallConfigRequestBodySecurityRequestConditions:
    UpdateFirewallConfigRequestBodySecurityRequestConditions,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequestConditions$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequestConditions),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequestConditionGroupToJSON(
  updateFirewallConfigRequestBodySecurityRequestConditionGroup:
    UpdateFirewallConfigRequestBodySecurityRequestConditionGroup,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequestConditionGroup$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequestConditionGroup),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityRequestValidationErrorsToJSON(
  updateFirewallConfigRequestBodySecurityRequestValidationErrors:
    UpdateFirewallConfigRequestBodySecurityRequestValidationErrors,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequestValidationErrors$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityRequestValidationErrors),
  );
}

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

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

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

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

/** @internal */
export const UpdateFirewallConfigRequestBody6$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody6$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody6
> = z.object({
  action: UpdateFirewallConfigRequestBodySecurityRequest6Action$outboundSchema,
  id: z.string(),
  value: z.lazy(() =>
    UpdateFirewallConfigRequestBodySecurityRequestValue$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 const UpdateFirewallConfigRequestBodySecurityRequestType$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodySecurityRequestType> = z
    .nativeEnum(UpdateFirewallConfigRequestBodySecurityRequestType);

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest5ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest5Value:
    UpdateFirewallConfigRequestBodySecurityRequest5Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest5Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest5Value,
    ),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityConditionsToJSON(
  updateFirewallConfigRequestBodySecurityConditions:
    UpdateFirewallConfigRequestBodySecurityConditions,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityConditions$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityConditions,
    ),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityConditionGroupToJSON(
  updateFirewallConfigRequestBodySecurityConditionGroup:
    UpdateFirewallConfigRequestBodySecurityConditionGroup,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityConditionGroup$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityConditionGroup,
    ),
  );
}

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

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

export function updateFirewallConfigRequestBodySecurityValidationErrorsToJSON(
  updateFirewallConfigRequestBodySecurityValidationErrors:
    UpdateFirewallConfigRequestBodySecurityValidationErrors,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityValidationErrors$outboundSchema
      .parse(updateFirewallConfigRequestBodySecurityValidationErrors),
  );
}

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

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

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

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

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

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 type UpdateFirewallConfigRequestBody3$Outbound = {
  action: string;
  id: string;
  value?: string | undefined;
};

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

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 UpdateFirewallConfigRequestBodySecurityType$outboundSchema:
  z.ZodNativeEnum<typeof UpdateFirewallConfigRequestBodySecurityType> = z
    .nativeEnum(UpdateFirewallConfigRequestBodySecurityType);

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

/** @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 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 UpdateFirewallConfigRequestBodySecurityRequest2ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest2ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest2ValueAction);

/** @internal */
export type UpdateFirewallConfigRequestBodyMitigate$Outbound = {
  action: string;
};

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

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

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

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

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

/** @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?:
    | UpdateFirewallConfigRequestBodySecurityRequest2Action$Outbound
    | undefined;
  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(() =>
    UpdateFirewallConfigRequestBodySecurityRequest2Action$outboundSchema
  ).optional(),
  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 UpdateFirewallConfigRequestBody2$Outbound = {
  action: string;
  id?: any | null | undefined;
  value: UpdateFirewallConfigRequestBodyValue$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(() => UpdateFirewallConfigRequestBodyValue$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 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 UpdateFirewallConfigRequestBodySecurityRequest1Value$Outbound =
  | string
  | Array<string>
  | number;

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

export function updateFirewallConfigRequestBodySecurityRequest1ValueToJSON(
  updateFirewallConfigRequestBodySecurityRequest1Value:
    UpdateFirewallConfigRequestBodySecurityRequest1Value,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest1Value$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest1Value,
    ),
  );
}

/** @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 UpdateFirewallConfigRequestBodySecurityRequest1ValueAction$outboundSchema:
  z.ZodNativeEnum<
    typeof UpdateFirewallConfigRequestBodySecurityRequest1ValueAction
  > = z.nativeEnum(UpdateFirewallConfigRequestBodySecurityRequest1ValueAction);

/** @internal */
export type RequestBodyMitigate$Outbound = {
  action: string;
};

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

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

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

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

export function updateFirewallConfigRequestBodySecurityRequest1ActionToJSON(
  updateFirewallConfigRequestBodySecurityRequest1Action:
    UpdateFirewallConfigRequestBodySecurityRequest1Action,
): string {
  return JSON.stringify(
    UpdateFirewallConfigRequestBodySecurityRequest1Action$outboundSchema.parse(
      updateFirewallConfigRequestBodySecurityRequest1Action,
    ),
  );
}

/** @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?:
    | UpdateFirewallConfigRequestBodySecurityRequest1Action$Outbound
    | undefined;
  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(() =>
    UpdateFirewallConfigRequestBodySecurityRequest1Action$outboundSchema
  ).optional(),
  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 UpdateFirewallConfigRequestBody1$Outbound = {
  action: string;
  id?: any | null | undefined;
  value: RequestBodyValue$Outbound;
};

/** @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.lazy(() => RequestBodyValue$outboundSchema),
});

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

/** @internal */
export type UpdateFirewallConfigRequestBody$Outbound =
  | UpdateFirewallConfigRequestBody2$Outbound
  | UpdateFirewallConfigRequestBody4$Outbound
  | UpdateFirewallConfigRequestBody6$Outbound
  | UpdateFirewallConfigRequestBody8$Outbound
  | RequestBody12$Outbound
  | RequestBody14$Outbound
  | RequestBody15$Outbound
  | RequestBody18$Outbound
  | RequestBody20$Outbound
  | RequestBody21$Outbound
  | UpdateFirewallConfigRequestBody1$Outbound
  | UpdateFirewallConfigRequestBody3$Outbound
  | UpdateFirewallConfigRequestBody5$Outbound
  | UpdateFirewallConfigRequestBody7$Outbound
  | UpdateFirewallConfigRequestBody9$Outbound
  | UpdateFirewallConfigRequestBody10$Outbound
  | RequestBody11$Outbound
  | RequestBody13$Outbound
  | RequestBody17$Outbound
  | RequestBody19$Outbound
  | RequestBody22$Outbound
  | RequestBody23$Outbound
  | RequestBody16$Outbound;

/** @internal */
export const UpdateFirewallConfigRequestBody$outboundSchema: z.ZodType<
  UpdateFirewallConfigRequestBody$Outbound,
  z.ZodTypeDef,
  UpdateFirewallConfigRequestBody
> = smartUnion([
  z.lazy(() => UpdateFirewallConfigRequestBody2$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody4$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody6$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody8$outboundSchema),
  z.lazy(() => RequestBody12$outboundSchema),
  z.lazy(() => RequestBody14$outboundSchema),
  z.lazy(() => RequestBody15$outboundSchema),
  z.lazy(() => RequestBody18$outboundSchema),
  z.lazy(() => RequestBody20$outboundSchema),
  z.lazy(() => RequestBody21$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody1$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody3$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody5$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody7$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody9$outboundSchema),
  z.lazy(() => UpdateFirewallConfigRequestBody10$outboundSchema),
  z.lazy(() => RequestBody11$outboundSchema),
  z.lazy(() => RequestBody13$outboundSchema),
  z.lazy(() => RequestBody17$outboundSchema),
  z.lazy(() => RequestBody19$outboundSchema),
  z.lazy(() => RequestBody22$outboundSchema),
  z.lazy(() => RequestBody23$outboundSchema),
  z.lazy(() => RequestBody16$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:
    | UpdateFirewallConfigRequestBody2$Outbound
    | UpdateFirewallConfigRequestBody4$Outbound
    | UpdateFirewallConfigRequestBody6$Outbound
    | UpdateFirewallConfigRequestBody8$Outbound
    | RequestBody12$Outbound
    | RequestBody14$Outbound
    | RequestBody15$Outbound
    | RequestBody18$Outbound
    | RequestBody20$Outbound
    | RequestBody21$Outbound
    | UpdateFirewallConfigRequestBody1$Outbound
    | UpdateFirewallConfigRequestBody3$Outbound
    | UpdateFirewallConfigRequestBody5$Outbound
    | UpdateFirewallConfigRequestBody7$Outbound
    | UpdateFirewallConfigRequestBody9$Outbound
    | UpdateFirewallConfigRequestBody10$Outbound
    | RequestBody11$Outbound
    | RequestBody13$Outbound
    | RequestBody17$Outbound
    | RequestBody19$Outbound
    | RequestBody22$Outbound
    | RequestBody23$Outbound
    | RequestBody16$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(() => UpdateFirewallConfigRequestBody2$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody4$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody6$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody8$outboundSchema),
    z.lazy(() => RequestBody12$outboundSchema),
    z.lazy(() => RequestBody14$outboundSchema),
    z.lazy(() => RequestBody15$outboundSchema),
    z.lazy(() => RequestBody18$outboundSchema),
    z.lazy(() => RequestBody20$outboundSchema),
    z.lazy(() => RequestBody21$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody1$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody3$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody5$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody7$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody9$outboundSchema),
    z.lazy(() => UpdateFirewallConfigRequestBody10$outboundSchema),
    z.lazy(() => RequestBody11$outboundSchema),
    z.lazy(() => RequestBody13$outboundSchema),
    z.lazy(() => RequestBody17$outboundSchema),
    z.lazy(() => RequestBody19$outboundSchema),
    z.lazy(() => RequestBody22$outboundSchema),
    z.lazy(() => RequestBody23$outboundSchema),
    z.lazy(() => RequestBody16$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`,
  );
}