/*
 * 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 * as types from "../types/primitives.js";
import { smartUnion } from "../types/smartUnion.js";
import {
  GetSecurityFirewallConfigCrs,
  GetSecurityFirewallConfigCrs$inboundSchema,
  GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRules2,
  GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRules2$inboundSchema,
  GetSecurityFirewallConfigRules2,
  GetSecurityFirewallConfigRules2$inboundSchema,
  GetSecurityFirewallConfigRulesSecurityConditionGroup,
  GetSecurityFirewallConfigRulesSecurityConditionGroup$inboundSchema,
  GetSecurityFirewallConfigRulesSecurityRateLimit,
  GetSecurityFirewallConfigRulesSecurityRateLimit$inboundSchema,
  GetSecurityFirewallConfigRulesSecurityRedirect,
  GetSecurityFirewallConfigRulesSecurityRedirect$inboundSchema,
  GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyDraftAction,
  GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyDraftAction$inboundSchema,
} from "./getsecurityfirewallconfiglogheaderssecurityresponse200applicationjsonresponsebodydraftrules2.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

export type GetSecurityFirewallConfigRulesSecurityLogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRules2;

export type GetSecurityFirewallConfigRulesSecurityMitigate = {
  action:
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyDraftAction;
  rateLimit?:
    | GetSecurityFirewallConfigRulesSecurityRateLimit
    | null
    | undefined;
  redirect?: GetSecurityFirewallConfigRulesSecurityRedirect | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRules2
    | undefined;
};

export type GetSecurityFirewallConfigRulesSecurityAction = {
  mitigate?: GetSecurityFirewallConfigRulesSecurityMitigate | undefined;
};

export type GetSecurityFirewallConfigRules1 = {
  id: string;
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<GetSecurityFirewallConfigRulesSecurityConditionGroup>;
  action: GetSecurityFirewallConfigRulesSecurityAction;
  valid: true;
  validationErrors?: any | null | undefined;
};

export type GetSecurityFirewallConfigSecurityRules =
  | GetSecurityFirewallConfigRules1
  | GetSecurityFirewallConfigRules2;

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

export type GetSecurityFirewallConfigIps = {
  id: string;
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: GetSecurityFirewallConfigSecurityAction;
};

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

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

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

export type GetSecurityFirewallConfigRulesetsRateLimit = {
  algo: GetSecurityFirewallConfigRulesetsAlgo;
  window: number;
  limit: number;
  keys: Array<string>;
  action?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyDraftAction
    | null
    | undefined;
};

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

export const GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBody2 =
  {
    Wildcard: "*",
  } as const;
export type GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBody2 =
  ClosedEnum<
    typeof GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBody2
  >;

export type GetSecurityFirewallConfigRulesetsLogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBody2;

export type GetSecurityFirewallConfigRulesets2 = {
  action: GetSecurityFirewallConfigRulesetsSecurityResponseAction;
  rateLimit?: GetSecurityFirewallConfigRulesetsRateLimit | null | undefined;
  redirect?: GetSecurityFirewallConfigRulesetsRedirect | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBody2
    | undefined;
};

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

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

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

export type GetSecurityFirewallConfigRulesetsConditions = {
  type: GetSecurityFirewallConfigRulesetsType;
  op: GetSecurityFirewallConfigRulesetsOp;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | number | Array<string> | undefined;
};

export type GetSecurityFirewallConfigRulesetsConditionGroup = {
  conditions: Array<GetSecurityFirewallConfigRulesetsConditions>;
};

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

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

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

export type GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRateLimit =
  {
    algo:
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONAlgo;
    window: number;
    limit: number;
    keys: Array<string>;
    action?:
      | GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyDraft1ActionAction
      | null
      | undefined;
  };

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

export const GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRulesets2 =
  {
    Wildcard: "*",
  } as const;
export type GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRulesets2 =
  ClosedEnum<
    typeof GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRulesets2
  >;

export type GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONLogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRulesets2;

export type GetSecurityFirewallConfigRulesetsMitigate = {
  action:
    GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyDraft1Action;
  rateLimit?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRateLimit
    | null
    | undefined;
  redirect?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRedirect
    | null
    | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRulesets2
    | undefined;
};

export type GetSecurityFirewallConfigRulesetsSecurityAction = {
  mitigate?: GetSecurityFirewallConfigRulesetsMitigate | undefined;
};

export type GetSecurityFirewallConfigRulesets1 = {
  description?: string | undefined;
  id: string;
  name: string;
  active: boolean;
  conditionGroup: Array<GetSecurityFirewallConfigRulesetsConditionGroup>;
  action?: GetSecurityFirewallConfigRulesetsSecurityAction | undefined;
};

export type GetSecurityFirewallConfigSecurityRulesets =
  | Array<GetSecurityFirewallConfigRulesets1>
  | { [k: string]: GetSecurityFirewallConfigRulesets2 };

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

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

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

export type GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyConditions =
  {
    type: GetSecurityFirewallConfigSecurityType;
    op: GetSecurityFirewallConfigSecurityOp;
    neg?: boolean | undefined;
    key?: string | undefined;
    value?: string | number | Array<string> | undefined;
  };

export type GetSecurityFirewallConfigConditionGroup = {
  conditions: Array<
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyConditions
  >;
};

export type GetSecurityFirewallConfigSecurityConditions = {
  description?: string | undefined;
  id: string;
  name: string;
  active: boolean;
  conditionGroup: Array<GetSecurityFirewallConfigConditionGroup>;
};

export type GetSecurityFirewallConfigChanges = {};

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

export type GetSecurityFirewallConfigBotProtection = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityAiBots = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesAiBotsAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityOwasp = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesOwaspAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityVercelRuleset = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesVercelRulesetAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityTrafficSources = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesTrafficSourcesAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

export type GetSecurityFirewallConfigSecurityManagedRules = {
  botProtection?: GetSecurityFirewallConfigBotProtection | undefined;
  aiBots?: GetSecurityFirewallConfigSecurityAiBots | undefined;
  owasp?: GetSecurityFirewallConfigSecurityOwasp | undefined;
  vercelRuleset?: GetSecurityFirewallConfigSecurityVercelRuleset | undefined;
  trafficSources?: GetSecurityFirewallConfigSecurityTrafficSources | undefined;
};

export const GetSecurityFirewallConfigLogHeadersSecurity2 = {
  Wildcard: "*",
} as const;
export type GetSecurityFirewallConfigLogHeadersSecurity2 = ClosedEnum<
  typeof GetSecurityFirewallConfigLogHeadersSecurity2
>;

export type GetSecurityFirewallConfigSecurityLogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurity2;

export type Draft = {
  ownerId: string;
  projectKey: string;
  id: string;
  version: number;
  updatedAt: string;
  firewallEnabled: boolean;
  crs?: GetSecurityFirewallConfigCrs | undefined;
  rules: Array<
    GetSecurityFirewallConfigRules1 | GetSecurityFirewallConfigRules2
  >;
  ips: Array<GetSecurityFirewallConfigIps>;
  rulesets?: Array<GetSecurityFirewallConfigRulesets1> | {
    [k: string]: GetSecurityFirewallConfigRulesets2;
  } | undefined;
  conditions?: Array<GetSecurityFirewallConfigSecurityConditions> | undefined;
  changes: Array<GetSecurityFirewallConfigChanges>;
  managedRules?: GetSecurityFirewallConfigSecurityManagedRules | undefined;
  botIdEnabled?: boolean | undefined;
  logHeaders?:
    | Array<string>
    | GetSecurityFirewallConfigLogHeadersSecurity2
    | undefined;
};

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

export type GetSecurityFirewallConfigSecuritySd = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsAction;
};

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

export type GetSecurityFirewallConfigSecurityMa = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsAction;
};

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

export type GetSecurityFirewallConfigSecurityLfi = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsLfiAction;
};

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

export type GetSecurityFirewallConfigSecurityRfi = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsRfiAction;
};

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

export type GetSecurityFirewallConfigSecurityRce = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsRceAction;
};

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

export type GetSecurityFirewallConfigSecurityPhp = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsPhpAction;
};

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

export type GetSecurityFirewallConfigSecurityGen = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsGenAction;
};

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

export type GetSecurityFirewallConfigSecurityXss = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsXssAction;
};

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

export type GetSecurityFirewallConfigSecuritySqli = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsSqliAction;
};

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

export type GetSecurityFirewallConfigSecuritySf = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsSfAction;
};

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

export type GetSecurityFirewallConfigSecurityJava = {
  active: boolean;
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsJavaAction;
};

export type GetSecurityFirewallConfigSecurityCrs = {
  sd: GetSecurityFirewallConfigSecuritySd;
  ma: GetSecurityFirewallConfigSecurityMa;
  lfi: GetSecurityFirewallConfigSecurityLfi;
  rfi: GetSecurityFirewallConfigSecurityRfi;
  rce: GetSecurityFirewallConfigSecurityRce;
  php: GetSecurityFirewallConfigSecurityPhp;
  gen: GetSecurityFirewallConfigSecurityGen;
  xss: GetSecurityFirewallConfigSecurityXss;
  sqli: GetSecurityFirewallConfigSecuritySqli;
  sf: GetSecurityFirewallConfigSecuritySf;
  java: GetSecurityFirewallConfigSecurityJava;
};

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

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

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

export type GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONConditions =
  {
    type: GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONType;
    op: GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONOp;
    neg?: boolean | undefined;
    key?: string | undefined;
    value?: string | number | Array<string> | undefined;
  };

export type GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONConditionGroup =
  {
    conditions: Array<
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONConditions
    >;
  };

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

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

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

export type GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRateLimit =
  {
    algo: GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONAlgo;
    window: number;
    limit: number;
    keys: Array<string>;
    action?:
      | GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersions2ActionAction
      | null
      | undefined;
  };

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

export const GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRules2 =
  {
    Wildcard: "*",
  } as const;
export type GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRules2 =
  ClosedEnum<
    typeof GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRules2
  >;

export type GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONLogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRules2;

export type GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONMitigate =
  {
    action:
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersions2Action;
    rateLimit?:
      | GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRateLimit
      | null
      | undefined;
    redirect?:
      | GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRedirect
      | null
      | undefined;
    actionDuration?: string | null | undefined;
    bypassSystem?: boolean | null | undefined;
    logHeaders?:
      | Array<string>
      | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRules2
      | undefined;
  };

export type GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONAction =
  {
    mitigate?:
      | GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONMitigate
      | undefined;
  };

export type GetSecurityFirewallConfigRulesSecurity2 = {
  id: string;
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONConditionGroup
  >;
  action:
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONAction;
  valid: false;
  validationErrors: Array<string>;
};

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

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

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

export type GetSecurityFirewallConfigRulesSecurityResponse200Conditions = {
  type: GetSecurityFirewallConfigRulesSecurityResponse200Type;
  op: GetSecurityFirewallConfigRulesSecurityResponse200Op;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | number | Array<string> | undefined;
};

export type GetSecurityFirewallConfigRulesSecurityResponse200ConditionGroup = {
  conditions: Array<
    GetSecurityFirewallConfigRulesSecurityResponse200Conditions
  >;
};

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

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

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

export type GetSecurityFirewallConfigRulesSecurityResponse200RateLimit = {
  algo: GetSecurityFirewallConfigRulesSecurityResponse200Algo;
  window: number;
  limit: number;
  keys: Array<string>;
  action?:
    | GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersions1Action
    | null
    | undefined;
};

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

export const GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersions2 =
  {
    Wildcard: "*",
  } as const;
export type GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersions2 =
  ClosedEnum<
    typeof GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersions2
  >;

export type GetSecurityFirewallConfigRulesSecurityResponse200LogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersions2;

export type GetSecurityFirewallConfigRulesSecurityResponse200Mitigate = {
  action:
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersionsAction;
  rateLimit?:
    | GetSecurityFirewallConfigRulesSecurityResponse200RateLimit
    | null
    | undefined;
  redirect?:
    | GetSecurityFirewallConfigRulesSecurityResponse200Redirect
    | null
    | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersions2
    | undefined;
};

export type GetSecurityFirewallConfigRulesSecurityResponse200Action = {
  mitigate?:
    | GetSecurityFirewallConfigRulesSecurityResponse200Mitigate
    | undefined;
};

export type GetSecurityFirewallConfigRulesSecurity1 = {
  id: string;
  name: string;
  description?: string | undefined;
  active: boolean;
  conditionGroup: Array<
    GetSecurityFirewallConfigRulesSecurityResponse200ConditionGroup
  >;
  action: GetSecurityFirewallConfigRulesSecurityResponse200Action;
  valid: true;
  validationErrors?: any | null | undefined;
};

export type GetSecurityFirewallConfigSecurityResponseRules =
  | GetSecurityFirewallConfigRulesSecurity1
  | GetSecurityFirewallConfigRulesSecurity2;

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

export type GetSecurityFirewallConfigSecurityIps = {
  id: string;
  hostname: string;
  ip: string;
  notes?: string | undefined;
  action: GetSecurityFirewallConfigSecurityResponseAction;
};

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

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

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

export type GetSecurityFirewallConfigRulesetsSecurityRateLimit = {
  algo: GetSecurityFirewallConfigRulesetsSecurityAlgo;
  window: number;
  limit: number;
  keys: Array<string>;
  action?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyVersionsAction
    | null
    | undefined;
};

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

export const GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJson2 =
  {
    Wildcard: "*",
  } as const;
export type GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJson2 =
  ClosedEnum<
    typeof GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJson2
  >;

export type GetSecurityFirewallConfigRulesetsSecurityLogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJson2;

export type GetSecurityFirewallConfigRulesetsSecurity2 = {
  action:
    GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONAction;
  rateLimit?:
    | GetSecurityFirewallConfigRulesetsSecurityRateLimit
    | null
    | undefined;
  redirect?:
    | GetSecurityFirewallConfigRulesetsSecurityRedirect
    | null
    | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJson2
    | undefined;
};

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

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

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

export type GetSecurityFirewallConfigRulesetsSecurityConditions = {
  type: GetSecurityFirewallConfigRulesetsSecurityType;
  op: GetSecurityFirewallConfigRulesetsSecurityOp;
  neg?: boolean | undefined;
  key?: string | undefined;
  value?: string | number | Array<string> | undefined;
};

export type GetSecurityFirewallConfigRulesetsSecurityConditionGroup = {
  conditions: Array<GetSecurityFirewallConfigRulesetsSecurityConditions>;
};

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

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

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

export type GetSecurityFirewallConfigRulesetsSecurityResponse200RateLimit = {
  algo: GetSecurityFirewallConfigRulesetsSecurityResponse200Algo;
  window: number;
  limit: number;
  keys: Array<string>;
  action?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyVersions1ActionAction
    | null
    | undefined;
};

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

export const GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRulesets2 =
  {
    Wildcard: "*",
  } as const;
export type GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRulesets2 =
  ClosedEnum<
    typeof GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRulesets2
  >;

export type GetSecurityFirewallConfigRulesetsSecurityResponse200LogHeaders =
  | Array<string>
  | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRulesets2;

export type GetSecurityFirewallConfigRulesetsSecurityMitigate = {
  action:
    GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyVersions1Action;
  rateLimit?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200RateLimit
    | null
    | undefined;
  redirect?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200Redirect
    | null
    | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRulesets2
    | undefined;
};

export type GetSecurityFirewallConfigRulesetsSecurityResponse200Action = {
  mitigate?: GetSecurityFirewallConfigRulesetsSecurityMitigate | undefined;
};

export type GetSecurityFirewallConfigRulesetsSecurity1 = {
  description?: string | undefined;
  id: string;
  name: string;
  active: boolean;
  conditionGroup: Array<
    GetSecurityFirewallConfigRulesetsSecurityConditionGroup
  >;
  action?:
    | GetSecurityFirewallConfigRulesetsSecurityResponse200Action
    | undefined;
};

export type GetSecurityFirewallConfigSecurityResponseRulesets =
  | Array<GetSecurityFirewallConfigRulesetsSecurity1>
  | { [k: string]: GetSecurityFirewallConfigRulesetsSecurity2 };

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

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

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

export type GetSecurityFirewallConfigSecurityResponse200ApplicationJSONConditions =
  {
    type: GetSecurityFirewallConfigSecurityResponseType;
    op: GetSecurityFirewallConfigSecurityResponseOp;
    neg?: boolean | undefined;
    key?: string | undefined;
    value?: string | number | Array<string> | undefined;
  };

export type GetSecurityFirewallConfigSecurityConditionGroup = {
  conditions: Array<
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONConditions
  >;
};

export type GetSecurityFirewallConfigSecurityResponseConditions = {
  description?: string | undefined;
  id: string;
  name: string;
  active: boolean;
  conditionGroup: Array<GetSecurityFirewallConfigSecurityConditionGroup>;
};

export type GetSecurityFirewallConfigSecurityChanges = {};

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

export type GetSecurityFirewallConfigSecurityBotProtection = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityResponseAiBots = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesAiBotsAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityResponseOwasp = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesOwaspAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityResponseVercelRuleset = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesVercelRulesetAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

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

export type GetSecurityFirewallConfigSecurityResponseTrafficSources = {
  active: boolean;
  action?:
    | GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesTrafficSourcesAction
    | undefined;
  updatedAt?: string | undefined;
  userId?: string | undefined;
  username?: string | undefined;
};

export type GetSecurityFirewallConfigSecurityResponseManagedRules = {
  botProtection?: GetSecurityFirewallConfigSecurityBotProtection | undefined;
  aiBots?: GetSecurityFirewallConfigSecurityResponseAiBots | undefined;
  owasp?: GetSecurityFirewallConfigSecurityResponseOwasp | undefined;
  vercelRuleset?:
    | GetSecurityFirewallConfigSecurityResponseVercelRuleset
    | undefined;
  trafficSources?:
    | GetSecurityFirewallConfigSecurityResponseTrafficSources
    | undefined;
};

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityLogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityLogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRules2$inboundSchema,
  ]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityMitigate$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityMitigate,
    z.ZodTypeDef,
    unknown
  > = z.object({
    action:
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyDraftAction$inboundSchema,
    rateLimit: z.nullable(
      GetSecurityFirewallConfigRulesSecurityRateLimit$inboundSchema,
    ).optional(),
    redirect: z.nullable(
      GetSecurityFirewallConfigRulesSecurityRedirect$inboundSchema,
    ).optional(),
    actionDuration: z.nullable(types.string()).optional(),
    bypassSystem: z.nullable(types.boolean()).optional(),
    logHeaders: types.optional(
      smartUnion([
        z.array(types.string()),
        GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRules2$inboundSchema,
      ]),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityAction$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityAction,
    z.ZodTypeDef,
    unknown
  > = z.object({
    mitigate: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesSecurityMitigate$inboundSchema
      ),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRules1$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRules1,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  name: types.string(),
  description: types.optional(types.string()),
  active: types.boolean(),
  conditionGroup: z.array(
    GetSecurityFirewallConfigRulesSecurityConditionGroup$inboundSchema,
  ),
  action: z.lazy(() =>
    GetSecurityFirewallConfigRulesSecurityAction$inboundSchema
  ),
  valid: types.literal(true),
  validationErrors: z.nullable(z.any()).optional(),
});

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

/** @internal */
export const GetSecurityFirewallConfigSecurityRules$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityRules,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.lazy(() => GetSecurityFirewallConfigRules1$inboundSchema),
  GetSecurityFirewallConfigRules2$inboundSchema,
]);

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

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

/** @internal */
export const GetSecurityFirewallConfigIps$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigIps,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  hostname: types.string(),
  ip: types.string(),
  notes: types.optional(types.string()),
  action: GetSecurityFirewallConfigSecurityAction$inboundSchema,
});

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsRateLimit$inboundSchema:
  z.ZodType<GetSecurityFirewallConfigRulesetsRateLimit, z.ZodTypeDef, unknown> =
    z.object({
      algo: GetSecurityFirewallConfigRulesetsAlgo$inboundSchema,
      window: types.number(),
      limit: types.number(),
      keys: z.array(types.string()),
      action: z.nullable(
        GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyDraftAction$inboundSchema,
      ).optional(),
    });

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsRedirect$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRulesetsRedirect,
  z.ZodTypeDef,
  unknown
> = z.object({
  location: types.string(),
  permanent: types.boolean(),
});

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsLogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsLogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBody2$inboundSchema,
  ]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesets2$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRulesets2,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: GetSecurityFirewallConfigRulesetsSecurityResponseAction$inboundSchema,
  rateLimit: z.nullable(
    z.lazy(() => GetSecurityFirewallConfigRulesetsRateLimit$inboundSchema),
  ).optional(),
  redirect: z.nullable(
    z.lazy(() => GetSecurityFirewallConfigRulesetsRedirect$inboundSchema),
  ).optional(),
  actionDuration: z.nullable(types.string()).optional(),
  bypassSystem: z.nullable(types.boolean()).optional(),
  logHeaders: types.optional(
    smartUnion([
      z.array(types.string()),
      GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBody2$inboundSchema,
    ]),
  ),
});

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsValue$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRulesetsValue,
  z.ZodTypeDef,
  unknown
> = smartUnion([types.string(), types.number(), z.array(types.string())]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsConditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsConditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: GetSecurityFirewallConfigRulesetsType$inboundSchema,
    op: GetSecurityFirewallConfigRulesetsOp$inboundSchema,
    neg: types.optional(types.boolean()),
    key: types.optional(types.string()),
    value: types.optional(
      smartUnion([types.string(), types.number(), z.array(types.string())]),
    ),
  });

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

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

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRateLimit$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRateLimit,
    z.ZodTypeDef,
    unknown
  > = z.object({
    algo:
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONAlgo$inboundSchema,
    window: types.number(),
    limit: types.number(),
    keys: z.array(types.string()),
    action: z.nullable(
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyDraft1ActionAction$inboundSchema,
    ).optional(),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRedirect$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRedirect,
    z.ZodTypeDef,
    unknown
  > = z.object({
    location: types.string(),
    permanent: types.boolean(),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONLogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONLogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRulesets2$inboundSchema,
  ]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsMitigate$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRulesetsMitigate,
  z.ZodTypeDef,
  unknown
> = z.object({
  action:
    GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyDraft1Action$inboundSchema,
  rateLimit: z.nullable(
    z.lazy(() =>
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRateLimit$inboundSchema
    ),
  ).optional(),
  redirect: z.nullable(
    z.lazy(() =>
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONRedirect$inboundSchema
    ),
  ).optional(),
  actionDuration: z.nullable(types.string()).optional(),
  bypassSystem: z.nullable(types.boolean()).optional(),
  logHeaders: types.optional(
    smartUnion([
      z.array(types.string()),
      GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyDraftRulesets2$inboundSchema,
    ]),
  ),
});

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityAction$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityAction,
    z.ZodTypeDef,
    unknown
  > = z.object({
    mitigate: types.optional(
      z.lazy(() => GetSecurityFirewallConfigRulesetsMitigate$inboundSchema),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesets1$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRulesets1,
  z.ZodTypeDef,
  unknown
> = z.object({
  description: types.optional(types.string()),
  id: types.string(),
  name: types.string(),
  active: types.boolean(),
  conditionGroup: z.array(
    z.lazy(() => GetSecurityFirewallConfigRulesetsConditionGroup$inboundSchema),
  ),
  action: types.optional(
    z.lazy(() => GetSecurityFirewallConfigRulesetsSecurityAction$inboundSchema),
  ),
});

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

/** @internal */
export const GetSecurityFirewallConfigSecurityRulesets$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityRulesets,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.array(z.lazy(() => GetSecurityFirewallConfigRulesets1$inboundSchema)),
  z.record(z.lazy(() => GetSecurityFirewallConfigRulesets2$inboundSchema)),
]);

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

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityValue$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityValue,
  z.ZodTypeDef,
  unknown
> = smartUnion([types.string(), types.number(), z.array(types.string())]);

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyConditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyConditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: GetSecurityFirewallConfigSecurityType$inboundSchema,
    op: GetSecurityFirewallConfigSecurityOp$inboundSchema,
    neg: types.optional(types.boolean()),
    key: types.optional(types.string()),
    value: types.optional(
      smartUnion([types.string(), types.number(), z.array(types.string())]),
    ),
  });

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

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityConditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityConditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    description: types.optional(types.string()),
    id: types.string(),
    name: types.string(),
    active: types.boolean(),
    conditionGroup: z.array(
      z.lazy(() => GetSecurityFirewallConfigConditionGroup$inboundSchema),
    ),
  });

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigBotProtection$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigBotProtection,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesAction$inboundSchema,
  ),
  updatedAt: types.optional(types.string()),
  userId: types.optional(types.string()),
  username: types.optional(types.string()),
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityAiBots$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityAiBots,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesAiBotsAction$inboundSchema,
  ),
  updatedAt: types.optional(types.string()),
  userId: types.optional(types.string()),
  username: types.optional(types.string()),
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityOwasp$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityOwasp,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesOwaspAction$inboundSchema,
  ),
  updatedAt: types.optional(types.string()),
  userId: types.optional(types.string()),
  username: types.optional(types.string()),
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityVercelRuleset$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityVercelRuleset,
    z.ZodTypeDef,
    unknown
  > = z.object({
    active: types.boolean(),
    action: types.optional(
      GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesVercelRulesetAction$inboundSchema,
    ),
    updatedAt: types.optional(types.string()),
    userId: types.optional(types.string()),
    username: types.optional(types.string()),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityTrafficSources$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityTrafficSources,
    z.ZodTypeDef,
    unknown
  > = z.object({
    active: types.boolean(),
    action: types.optional(
      GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyDraftManagedRulesTrafficSourcesAction$inboundSchema,
    ),
    updatedAt: types.optional(types.string()),
    userId: types.optional(types.string()),
    username: types.optional(types.string()),
  });

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

/** @internal */
export const GetSecurityFirewallConfigSecurityManagedRules$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityManagedRules,
    z.ZodTypeDef,
    unknown
  > = z.object({
    bot_protection: types.optional(
      z.lazy(() => GetSecurityFirewallConfigBotProtection$inboundSchema),
    ),
    ai_bots: types.optional(
      z.lazy(() => GetSecurityFirewallConfigSecurityAiBots$inboundSchema),
    ),
    owasp: types.optional(
      z.lazy(() => GetSecurityFirewallConfigSecurityOwasp$inboundSchema),
    ),
    vercel_ruleset: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityVercelRuleset$inboundSchema
      ),
    ),
    traffic_sources: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityTrafficSources$inboundSchema
      ),
    ),
  }).transform((v) => {
    return remap$(v, {
      "bot_protection": "botProtection",
      "ai_bots": "aiBots",
      "vercel_ruleset": "vercelRuleset",
      "traffic_sources": "trafficSources",
    });
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityLogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityLogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurity2$inboundSchema,
  ]);

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

/** @internal */
export const Draft$inboundSchema: z.ZodType<Draft, z.ZodTypeDef, unknown> = z
  .object({
    ownerId: types.string(),
    projectKey: types.string(),
    id: types.string(),
    version: types.number(),
    updatedAt: types.string(),
    firewallEnabled: types.boolean(),
    crs: types.optional(GetSecurityFirewallConfigCrs$inboundSchema),
    rules: z.array(
      smartUnion([
        z.lazy(() => GetSecurityFirewallConfigRules1$inboundSchema),
        GetSecurityFirewallConfigRules2$inboundSchema,
      ]),
    ),
    ips: z.array(z.lazy(() => GetSecurityFirewallConfigIps$inboundSchema)),
    rulesets: types.optional(
      smartUnion([
        z.array(z.lazy(() => GetSecurityFirewallConfigRulesets1$inboundSchema)),
        z.record(z.lazy(() =>
          GetSecurityFirewallConfigRulesets2$inboundSchema
        )),
      ]),
    ),
    conditions: types.optional(
      z.array(z.lazy(() =>
        GetSecurityFirewallConfigSecurityConditions$inboundSchema
      )),
    ),
    changes: z.array(
      z.lazy(() => GetSecurityFirewallConfigChanges$inboundSchema),
    ),
    managedRules: types.optional(
      z.lazy(() => GetSecurityFirewallConfigSecurityManagedRules$inboundSchema),
    ),
    botIdEnabled: types.optional(types.boolean()),
    logHeaders: types.optional(
      smartUnion([
        z.array(types.string()),
        GetSecurityFirewallConfigLogHeadersSecurity2$inboundSchema,
      ]),
    ),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigSecuritySd$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecuritySd,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityMa$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityMa,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityLfi$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityLfi,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsLfiAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityRfi$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityRfi,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsRfiAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityRce$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityRce,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsRceAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityPhp$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityPhp,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsPhpAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityGen$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityGen,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsGenAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityXss$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityXss,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsXssAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecuritySqli$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecuritySqli,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsSqliAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecuritySf$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecuritySf,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsSfAction$inboundSchema,
});

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityJava$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityJava,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action:
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsCrsJavaAction$inboundSchema,
});

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

/** @internal */
export const GetSecurityFirewallConfigSecurityCrs$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityCrs,
  z.ZodTypeDef,
  unknown
> = z.object({
  sd: z.lazy(() => GetSecurityFirewallConfigSecuritySd$inboundSchema),
  ma: z.lazy(() => GetSecurityFirewallConfigSecurityMa$inboundSchema),
  lfi: z.lazy(() => GetSecurityFirewallConfigSecurityLfi$inboundSchema),
  rfi: z.lazy(() => GetSecurityFirewallConfigSecurityRfi$inboundSchema),
  rce: z.lazy(() => GetSecurityFirewallConfigSecurityRce$inboundSchema),
  php: z.lazy(() => GetSecurityFirewallConfigSecurityPhp$inboundSchema),
  gen: z.lazy(() => GetSecurityFirewallConfigSecurityGen$inboundSchema),
  xss: z.lazy(() => GetSecurityFirewallConfigSecurityXss$inboundSchema),
  sqli: z.lazy(() => GetSecurityFirewallConfigSecuritySqli$inboundSchema),
  sf: z.lazy(() => GetSecurityFirewallConfigSecuritySf$inboundSchema),
  java: z.lazy(() => GetSecurityFirewallConfigSecurityJava$inboundSchema),
});

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONValue$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONValue,
    z.ZodTypeDef,
    unknown
  > = smartUnion([types.string(), types.number(), z.array(types.string())]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONConditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONConditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type:
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONType$inboundSchema,
    op:
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONOp$inboundSchema,
    neg: types.optional(types.boolean()),
    key: types.optional(types.string()),
    value: types.optional(
      smartUnion([types.string(), types.number(), z.array(types.string())]),
    ),
  });

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

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

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRateLimit$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRateLimit,
    z.ZodTypeDef,
    unknown
  > = z.object({
    algo:
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONAlgo$inboundSchema,
    window: types.number(),
    limit: types.number(),
    keys: z.array(types.string()),
    action: z.nullable(
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersions2ActionAction$inboundSchema,
    ).optional(),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRedirect$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRedirect,
    z.ZodTypeDef,
    unknown
  > = z.object({
    location: types.string(),
    permanent: types.boolean(),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONLogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONLogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRules2$inboundSchema,
  ]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONMitigate$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONMitigate,
    z.ZodTypeDef,
    unknown
  > = z.object({
    action:
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersions2Action$inboundSchema,
    rateLimit: z.nullable(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRateLimit$inboundSchema
      ),
    ).optional(),
    redirect: z.nullable(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONRedirect$inboundSchema
      ),
    ).optional(),
    actionDuration: z.nullable(types.string()).optional(),
    bypassSystem: z.nullable(types.boolean()).optional(),
    logHeaders: types.optional(
      smartUnion([
        z.array(types.string()),
        GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRules2$inboundSchema,
      ]),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONAction$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONAction,
    z.ZodTypeDef,
    unknown
  > = z.object({
    mitigate: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONMitigate$inboundSchema
      ),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurity2$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRulesSecurity2,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  name: types.string(),
  description: types.optional(types.string()),
  active: types.boolean(),
  conditionGroup: z.array(
    z.lazy(() =>
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONConditionGroup$inboundSchema
    ),
  ),
  action: z.lazy(() =>
    GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONAction$inboundSchema
  ),
  valid: types.literal(false),
  validationErrors: z.array(types.string()),
});

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200Value$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200Value,
    z.ZodTypeDef,
    unknown
  > = smartUnion([types.string(), types.number(), z.array(types.string())]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200Conditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200Conditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: GetSecurityFirewallConfigRulesSecurityResponse200Type$inboundSchema,
    op: GetSecurityFirewallConfigRulesSecurityResponse200Op$inboundSchema,
    neg: types.optional(types.boolean()),
    key: types.optional(types.string()),
    value: types.optional(
      smartUnion([types.string(), types.number(), z.array(types.string())]),
    ),
  });

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

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

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200RateLimit$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200RateLimit,
    z.ZodTypeDef,
    unknown
  > = z.object({
    algo: GetSecurityFirewallConfigRulesSecurityResponse200Algo$inboundSchema,
    window: types.number(),
    limit: types.number(),
    keys: z.array(types.string()),
    action: z.nullable(
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersions1Action$inboundSchema,
    ).optional(),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200Redirect$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200Redirect,
    z.ZodTypeDef,
    unknown
  > = z.object({
    location: types.string(),
    permanent: types.boolean(),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200LogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200LogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersions2$inboundSchema,
  ]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200Mitigate$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200Mitigate,
    z.ZodTypeDef,
    unknown
  > = z.object({
    action:
      GetSecurityFirewallConfigRulesSecurityResponse200ApplicationJSONResponseBodyVersionsAction$inboundSchema,
    rateLimit: z.nullable(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesSecurityResponse200RateLimit$inboundSchema
      ),
    ).optional(),
    redirect: z.nullable(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesSecurityResponse200Redirect$inboundSchema
      ),
    ).optional(),
    actionDuration: z.nullable(types.string()).optional(),
    bypassSystem: z.nullable(types.boolean()).optional(),
    logHeaders: types.optional(
      smartUnion([
        z.array(types.string()),
        GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersions2$inboundSchema,
      ]),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurityResponse200Action$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesSecurityResponse200Action,
    z.ZodTypeDef,
    unknown
  > = z.object({
    mitigate: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesSecurityResponse200Mitigate$inboundSchema
      ),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesSecurity1$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigRulesSecurity1,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  name: types.string(),
  description: types.optional(types.string()),
  active: types.boolean(),
  conditionGroup: z.array(
    z.lazy(() =>
      GetSecurityFirewallConfigRulesSecurityResponse200ConditionGroup$inboundSchema
    ),
  ),
  action: z.lazy(() =>
    GetSecurityFirewallConfigRulesSecurityResponse200Action$inboundSchema
  ),
  valid: types.literal(true),
  validationErrors: z.nullable(z.any()).optional(),
});

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseRules$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseRules,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.lazy(() => GetSecurityFirewallConfigRulesSecurity1$inboundSchema),
    z.lazy(() => GetSecurityFirewallConfigRulesSecurity2$inboundSchema),
  ]);

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityIps$inboundSchema: z.ZodType<
  GetSecurityFirewallConfigSecurityIps,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  hostname: types.string(),
  ip: types.string(),
  notes: types.optional(types.string()),
  action: GetSecurityFirewallConfigSecurityResponseAction$inboundSchema,
});

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityRateLimit$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityRateLimit,
    z.ZodTypeDef,
    unknown
  > = z.object({
    algo: GetSecurityFirewallConfigRulesetsSecurityAlgo$inboundSchema,
    window: types.number(),
    limit: types.number(),
    keys: z.array(types.string()),
    action: z.nullable(
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyVersionsAction$inboundSchema,
    ).optional(),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityRedirect$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityRedirect,
    z.ZodTypeDef,
    unknown
  > = z.object({
    location: types.string(),
    permanent: types.boolean(),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityLogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityLogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJson2$inboundSchema,
  ]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurity2$inboundSchema:
  z.ZodType<GetSecurityFirewallConfigRulesetsSecurity2, z.ZodTypeDef, unknown> =
    z.object({
      action:
        GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONAction$inboundSchema,
      rateLimit: z.nullable(
        z.lazy(() =>
          GetSecurityFirewallConfigRulesetsSecurityRateLimit$inboundSchema
        ),
      ).optional(),
      redirect: z.nullable(
        z.lazy(() =>
          GetSecurityFirewallConfigRulesetsSecurityRedirect$inboundSchema
        ),
      ).optional(),
      actionDuration: z.nullable(types.string()).optional(),
      bypassSystem: z.nullable(types.boolean()).optional(),
      logHeaders: types.optional(
        smartUnion([
          z.array(types.string()),
          GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJson2$inboundSchema,
        ]),
      ),
    });

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityValue$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityValue,
    z.ZodTypeDef,
    unknown
  > = smartUnion([types.string(), types.number(), z.array(types.string())]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityConditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityConditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: GetSecurityFirewallConfigRulesetsSecurityType$inboundSchema,
    op: GetSecurityFirewallConfigRulesetsSecurityOp$inboundSchema,
    neg: types.optional(types.boolean()),
    key: types.optional(types.string()),
    value: types.optional(
      smartUnion([types.string(), types.number(), z.array(types.string())]),
    ),
  });

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

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

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityResponse200RateLimit$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityResponse200RateLimit,
    z.ZodTypeDef,
    unknown
  > = z.object({
    algo:
      GetSecurityFirewallConfigRulesetsSecurityResponse200Algo$inboundSchema,
    window: types.number(),
    limit: types.number(),
    keys: z.array(types.string()),
    action: z.nullable(
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyVersions1ActionAction$inboundSchema,
    ).optional(),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityResponse200Redirect$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityResponse200Redirect,
    z.ZodTypeDef,
    unknown
  > = z.object({
    location: types.string(),
    permanent: types.boolean(),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityResponse200LogHeaders$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityResponse200LogHeaders,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(types.string()),
    GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRulesets2$inboundSchema,
  ]);

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityMitigate$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityMitigate,
    z.ZodTypeDef,
    unknown
  > = z.object({
    action:
      GetSecurityFirewallConfigRulesetsSecurityResponse200ApplicationJSONResponseBodyVersions1Action$inboundSchema,
    rateLimit: z.nullable(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesetsSecurityResponse200RateLimit$inboundSchema
      ),
    ).optional(),
    redirect: z.nullable(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesetsSecurityResponse200Redirect$inboundSchema
      ),
    ).optional(),
    actionDuration: z.nullable(types.string()).optional(),
    bypassSystem: z.nullable(types.boolean()).optional(),
    logHeaders: types.optional(
      smartUnion([
        z.array(types.string()),
        GetSecurityFirewallConfigLogHeadersSecurityResponse200ApplicationJSONResponseBodyVersionsRulesets2$inboundSchema,
      ]),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurityResponse200Action$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigRulesetsSecurityResponse200Action,
    z.ZodTypeDef,
    unknown
  > = z.object({
    mitigate: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigRulesetsSecurityMitigate$inboundSchema
      ),
    ),
  });

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

/** @internal */
export const GetSecurityFirewallConfigRulesetsSecurity1$inboundSchema:
  z.ZodType<GetSecurityFirewallConfigRulesetsSecurity1, z.ZodTypeDef, unknown> =
    z.object({
      description: types.optional(types.string()),
      id: types.string(),
      name: types.string(),
      active: types.boolean(),
      conditionGroup: z.array(
        z.lazy(() =>
          GetSecurityFirewallConfigRulesetsSecurityConditionGroup$inboundSchema
        ),
      ),
      action: types.optional(
        z.lazy(() =>
          GetSecurityFirewallConfigRulesetsSecurityResponse200Action$inboundSchema
        ),
      ),
    });

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseRulesets$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseRulesets,
    z.ZodTypeDef,
    unknown
  > = smartUnion([
    z.array(z.lazy(() =>
      GetSecurityFirewallConfigRulesetsSecurity1$inboundSchema
    )),
    z.record(
      z.lazy(() => GetSecurityFirewallConfigRulesetsSecurity2$inboundSchema),
    ),
  ]);

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

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseValue$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseValue,
    z.ZodTypeDef,
    unknown
  > = smartUnion([types.string(), types.number(), z.array(types.string())]);

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponse200ApplicationJSONConditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponse200ApplicationJSONConditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: GetSecurityFirewallConfigSecurityResponseType$inboundSchema,
    op: GetSecurityFirewallConfigSecurityResponseOp$inboundSchema,
    neg: types.optional(types.boolean()),
    key: types.optional(types.string()),
    value: types.optional(
      smartUnion([types.string(), types.number(), z.array(types.string())]),
    ),
  });

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

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseConditions$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseConditions,
    z.ZodTypeDef,
    unknown
  > = z.object({
    description: types.optional(types.string()),
    id: types.string(),
    name: types.string(),
    active: types.boolean(),
    conditionGroup: z.array(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityConditionGroup$inboundSchema
      ),
    ),
  });

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

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

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityBotProtection$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityBotProtection,
    z.ZodTypeDef,
    unknown
  > = z.object({
    active: types.boolean(),
    action: types.optional(
      GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesAction$inboundSchema,
    ),
    updatedAt: types.optional(types.string()),
    userId: types.optional(types.string()),
    username: types.optional(types.string()),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseAiBots$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseAiBots,
    z.ZodTypeDef,
    unknown
  > = z.object({
    active: types.boolean(),
    action: types.optional(
      GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesAiBotsAction$inboundSchema,
    ),
    updatedAt: types.optional(types.string()),
    userId: types.optional(types.string()),
    username: types.optional(types.string()),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseOwasp$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseOwasp,
    z.ZodTypeDef,
    unknown
  > = z.object({
    active: types.boolean(),
    action: types.optional(
      GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesOwaspAction$inboundSchema,
    ),
    updatedAt: types.optional(types.string()),
    userId: types.optional(types.string()),
    username: types.optional(types.string()),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseVercelRuleset$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseVercelRuleset,
    z.ZodTypeDef,
    unknown
  > = z.object({
    active: types.boolean(),
    action: types.optional(
      GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesVercelRulesetAction$inboundSchema,
    ),
    updatedAt: types.optional(types.string()),
    userId: types.optional(types.string()),
    username: types.optional(types.string()),
  });

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

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseTrafficSources$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseTrafficSources,
    z.ZodTypeDef,
    unknown
  > = z.object({
    active: types.boolean(),
    action: types.optional(
      GetSecurityFirewallConfigSecurityResponse200ApplicationJSONResponseBodyVersionsManagedRulesTrafficSourcesAction$inboundSchema,
    ),
    updatedAt: types.optional(types.string()),
    userId: types.optional(types.string()),
    username: types.optional(types.string()),
  });

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

/** @internal */
export const GetSecurityFirewallConfigSecurityResponseManagedRules$inboundSchema:
  z.ZodType<
    GetSecurityFirewallConfigSecurityResponseManagedRules,
    z.ZodTypeDef,
    unknown
  > = z.object({
    bot_protection: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityBotProtection$inboundSchema
      ),
    ),
    ai_bots: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityResponseAiBots$inboundSchema
      ),
    ),
    owasp: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityResponseOwasp$inboundSchema
      ),
    ),
    vercel_ruleset: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityResponseVercelRuleset$inboundSchema
      ),
    ),
    traffic_sources: types.optional(
      z.lazy(() =>
        GetSecurityFirewallConfigSecurityResponseTrafficSources$inboundSchema
      ),
    ),
  }).transform((v) => {
    return remap$(v, {
      "bot_protection": "botProtection",
      "ai_bots": "aiBots",
      "vercel_ruleset": "vercelRuleset",
      "traffic_sources": "trafficSources",
    });
  });

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