UNPKG

@vercel/sdk

Version:

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

1,887 lines 59.9 kB
/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import * as z from "zod/v3";
import { remap as remap$ } from "../lib/primitives.js";
import { safeParse } from "../lib/schemas.js";
import { ClosedEnum } from "../types/enums.js";
import { Result as SafeParseResult } from "../types/fp.js";
import * as types from "../types/primitives.js";
import { smartUnion } from "../types/smartUnion.js";
import {
  GetProjectsResponseBody3,
  GetProjectsResponseBody3$inboundSchema,
} from "./getprojectsfromprojectsresponsepreset.js";
import {
  FirewallRoutes,
  FirewallRoutes$inboundSchema,
  GetProjectsResponseBodyNodeVersion,
  GetProjectsResponseBodyNodeVersion$inboundSchema,
  GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityManagedRulesAction,
  GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityManagedRulesAction$inboundSchema,
  GetProjectsResponseBodyResourceConfig,
  GetProjectsResponseBodyResourceConfig$inboundSchema,
  ResponseBodyEnv,
  ResponseBodyEnv$inboundSchema,
  ResponseBodyFramework,
  ResponseBodyFramework$inboundSchema,
  ResponseBodyGitComments,
  ResponseBodyGitComments$inboundSchema,
  ResponseBodyGitProviderOptions,
  ResponseBodyGitProviderOptions$inboundSchema,
  ResponseBodyIpBuckets,
  ResponseBodyIpBuckets$inboundSchema,
  ResponseBodyLatestDeployments,
  ResponseBodyLatestDeployments$inboundSchema,
  ResponseBodyLink,
  ResponseBodyLink$inboundSchema,
  ResponseBodyPassport,
  ResponseBodyPassport$inboundSchema,
  ResponseBodyPasswordProtection,
  ResponseBodyPasswordProtection$inboundSchema,
  ResponseBodyRollingRelease,
  ResponseBodyRollingRelease$inboundSchema,
  ResponseBodyRulesets,
  ResponseBodyRulesets$inboundSchema,
  ResponseBodySpeedInsights,
  ResponseBodySpeedInsights$inboundSchema,
  ResponseBodySsoProtection,
  ResponseBodySsoProtection$inboundSchema,
  ResponseBodyTargets,
  ResponseBodyTargets$inboundSchema,
  ResponseBodyTrustedSources,
  ResponseBodyTrustedSources$inboundSchema,
  ResponseBodyWebAnalytics,
  ResponseBodyWebAnalytics$inboundSchema,
} from "./getprojectsresponsebodyprojectsresponse200applicationjson1securitymanagedrulesaction.js";
import {
  GetProjectsResponseBody2,
  GetProjectsResponseBody2$inboundSchema,
  GetProjectsResponseBodyCreator,
  GetProjectsResponseBodyCreator$inboundSchema,
  ResponseBodyAlias,
  ResponseBodyAlias$inboundSchema,
  ResponseBodyAnalytics,
  ResponseBodyAnalytics$inboundSchema,
  ResponseBodyDeploymentExpiration,
  ResponseBodyDeploymentExpiration$inboundSchema,
} from "./responsebodydeploymentexpiration.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

export type ResponseBodyVercelRuleset = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityManagedRulesAction
    | undefined;
};

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

export type ResponseBodyTrafficSources = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityManagedRulesTrafficSourcesAction
    | undefined;
};

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

export type ResponseBodyBotFilter = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityManagedRulesBotFilterAction
    | undefined;
};

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

export type ResponseBodyAiBots = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson1Action
    | undefined;
};

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

export type ResponseBodyOwasp = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityAction
    | undefined;
};

export type ResponseBodyManagedRules = {
  vercelRuleset: ResponseBodyVercelRuleset;
  trafficSources: ResponseBodyTrafficSources;
  botFilter: ResponseBodyBotFilter;
  aiBots: ResponseBodyAiBots;
  owasp: ResponseBodyOwasp;
};

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

export type ResponseBodyLogHeaders = Array<string> | GetProjectsLogHeaders2;

export type ResponseBodySecurityPlusMetadata = {
  updatedAt: number;
  /**
   * Timestamp when the feature was first enabled. Never changes after initial enablement.
   */
  firstEnabledAt?: number | undefined;
};

export type ResponseBodySecurity = {
  attackModeEnabled?: boolean | undefined;
  attackModeUpdatedAt?: number | undefined;
  firewallEnabled?: boolean | undefined;
  firewallUpdatedAt?: number | undefined;
  attackModeActiveUntil?: number | null | undefined;
  firewallConfigVersion?: number | undefined;
  firewallRoutes?: Array<FirewallRoutes> | undefined;
  rulesets?: { [k: string]: ResponseBodyRulesets } | undefined;
  firewallSeawallEnabled?: boolean | undefined;
  ja3Enabled?: boolean | undefined;
  ja4Enabled?: boolean | undefined;
  firewallBypassIps?: Array<string> | undefined;
  managedRules?: ResponseBodyManagedRules | null | undefined;
  botIdEnabled?: boolean | undefined;
  requestLogsKey?: Array<string> | undefined;
  logHeaders?: Array<string> | GetProjectsLogHeaders2 | undefined;
  securityPlus?: boolean | undefined;
  securityPlusMetadata?: ResponseBodySecurityPlusMetadata | undefined;
  /**
   * Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table.
   */
  pageIntegrityEnabled?: boolean | undefined;
};

/**
 * - team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`
 */
export const ResponseBodyIssuerMode = {
  Global: "global",
  Team: "team",
} as const;
/**
 * - team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`
 */
export type ResponseBodyIssuerMode = ClosedEnum<typeof ResponseBodyIssuerMode>;

export type ResponseBodyOidcTokenConfig = {
  /**
   * Whether or not to generate OpenID Connect JSON Web Tokens.
   */
  enabled?: boolean | undefined;
  /**
   * - team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`
   */
  issuerMode?: ResponseBodyIssuerMode | undefined;
};

export const ResponseBodyTier = {
  Advanced: "advanced",
  Critical: "critical",
  Priority: "priority",
} as const;
export type ResponseBodyTier = ClosedEnum<typeof ResponseBodyTier>;

export type ResponseBodyHistory = {
  scanner: string;
  reason: string;
  by: string;
  byId: string;
  at: number;
};

export const GetProjectsResponseBodyProjectsAction = {
  Blocked: "blocked",
} as const;
export type GetProjectsResponseBodyProjectsAction = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsAction
>;

export type ResponseBodyBlock = {
  action: GetProjectsResponseBodyProjectsAction;
  reason: string;
  statusCode: number;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse2002 = {
  type: "host";
  value:
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseValue;
};

export const GetProjectsHasProjectsResponse200Key = {
  XVercelIpCountry: "x-vercel-ip-country",
} as const;
export type GetProjectsHasProjectsResponse200Key = ClosedEnum<
  typeof GetProjectsHasProjectsResponse200Key
>;

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1Value =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse2001 = {
  type: "header";
  key: GetProjectsHasProjectsResponse200Key;
  value: GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1Value;
};

export type GetProjectsRouteProjectsHas =
  | GetProjectsHasProjectsResponse2001
  | GetProjectsHasProjectsResponse2002;

export const GetProjectsRouteProjectsAction = {
  BlockLegalCwc: "block_legal_cwc",
} as const;
export type GetProjectsRouteProjectsAction = ClosedEnum<
  typeof GetProjectsRouteProjectsAction
>;

export type GetProjectsRouteProjectsMitigate = {
  action: GetProjectsRouteProjectsAction;
};

export type GetProjectsRouteProjects2 = {
  has: Array<
    GetProjectsHasProjectsResponse2001 | GetProjectsHasProjectsResponse2002
  >;
  mitigate: GetProjectsRouteProjectsMitigate;
  src?: string | undefined;
};

export type GetProjectsRouteProjects1 = {
  src: string;
  status: number;
  expiry?: number | undefined;
};

export type GetProjectsBlockHistoryProjectsRoute =
  | GetProjectsRouteProjects1
  | GetProjectsRouteProjects2;

export type GetProjectsBlockHistory4 = {
  action: "route-unblocked";
  route: GetProjectsRouteProjects1 | GetProjectsRouteProjects2;
  statusCode?: number | undefined;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseBlockHistory3Value =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJson2 = {
  type: "host";
  value:
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseBlockHistory3Value;
};

export const GetProjectsHasProjectsResponse200ApplicationJSONKey = {
  XVercelIpCountry: "x-vercel-ip-country",
} as const;
export type GetProjectsHasProjectsResponse200ApplicationJSONKey = ClosedEnum<
  typeof GetProjectsHasProjectsResponse200ApplicationJSONKey
>;

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseBlockHistoryValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJson1 = {
  type: "header";
  key: GetProjectsHasProjectsResponse200ApplicationJSONKey;
  value:
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseBlockHistoryValue;
};

export type GetProjectsRouteHas =
  | GetProjectsHasProjectsResponse200ApplicationJson1
  | GetProjectsHasProjectsResponse200ApplicationJson2;

export const GetProjectsRouteAction = {
  BlockLegalCwc: "block_legal_cwc",
} as const;
export type GetProjectsRouteAction = ClosedEnum<typeof GetProjectsRouteAction>;

export type GetProjectsRouteMitigate = {
  action: GetProjectsRouteAction;
};

export type GetProjectsRoute2 = {
  has: Array<
    | GetProjectsHasProjectsResponse200ApplicationJson1
    | GetProjectsHasProjectsResponse200ApplicationJson2
  >;
  mitigate: GetProjectsRouteMitigate;
  src?: string | undefined;
};

export type GetProjectsRoute1 = {
  src: string;
  status: number;
  expiry?: number | undefined;
};

export type GetProjectsBlockHistoryRoute =
  | GetProjectsRoute1
  | GetProjectsRoute2;

export type GetProjectsBlockHistory3 = {
  action: "route-blocked";
  route: GetProjectsRoute1 | GetProjectsRoute2;
  reason: string;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type GetProjectsBlockHistory2 = {
  action: "unblocked";
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type GetProjectsBlockHistory1 = {
  action: "blocked";
  reason: string;
  statusCode: number;
  createdAt: number;
  caseId?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
  ineligibleForAppeal?: boolean | undefined;
  isCascading?: boolean | undefined;
};

export type ResponseBodyBlockHistory =
  | GetProjectsBlockHistory1
  | GetProjectsBlockHistory2
  | GetProjectsBlockHistory3
  | GetProjectsBlockHistory4;

export const GetProjectsResponseBodyProjectsResponseAction = {
  AddDeploymentInterstitial: "add-deployment-interstitial",
  AddProjectInterstitial: "add-project-interstitial",
  RemoveDeploymentInterstitial: "remove-deployment-interstitial",
  RemoveProjectInterstitial: "remove-project-interstitial",
} as const;
export type GetProjectsResponseBodyProjectsResponseAction = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsResponseAction
>;

export type ResponseBodyInterstitialHistory = {
  action: GetProjectsResponseBodyProjectsResponseAction;
  createdAt: number;
  caseId?: string | undefined;
  reason?: string | undefined;
  actor?: string | undefined;
  comment?: string | undefined;
};

export type ResponseBodyAbuse = {
  scanner?: string | undefined;
  history: Array<ResponseBodyHistory>;
  updatedAt: number;
  block?: ResponseBodyBlock | undefined;
  blockHistory?:
    | Array<
      | GetProjectsBlockHistory1
      | GetProjectsBlockHistory2
      | GetProjectsBlockHistory3
      | GetProjectsBlockHistory4
    >
    | undefined;
  interstitial?: boolean | undefined;
  interstitialHistory?: Array<ResponseBodyInterstitialHistory> | undefined;
};

export type GetProjectsHasProjectsValue = {
  eq: string;
};

export type GetProjectsHas2 = {
  type: "host";
  value: GetProjectsHasProjectsValue;
};

export const GetProjectsHasKey = {
  XVercelIpCountry: "x-vercel-ip-country",
} as const;
export type GetProjectsHasKey = ClosedEnum<typeof GetProjectsHasKey>;

export type GetProjectsHasValue = {
  eq: string;
};

export type GetProjectsHas1 = {
  type: "header";
  key: GetProjectsHasKey;
  value: GetProjectsHasValue;
};

export type GetProjectsInternalRoutesHas = GetProjectsHas1 | GetProjectsHas2;

export const GetProjectsInternalRoutesAction = {
  BlockLegalCwc: "block_legal_cwc",
} as const;
export type GetProjectsInternalRoutesAction = ClosedEnum<
  typeof GetProjectsInternalRoutesAction
>;

export type GetProjectsInternalRoutesMitigate = {
  action: GetProjectsInternalRoutesAction;
};

export type GetProjectsInternalRoutes2 = {
  has: Array<GetProjectsHas1 | GetProjectsHas2>;
  mitigate: GetProjectsInternalRoutesMitigate;
  src?: string | undefined;
};

export type GetProjectsInternalRoutes1 = {
  src: string;
  status: number;
  expiry?: number | undefined;
};

export type ResponseBodyInternalRoutes =
  | GetProjectsInternalRoutes1
  | GetProjectsInternalRoutes2;

export type GetProjectsResponseBody1 = {
  accountId: string;
  creator?: GetProjectsResponseBodyCreator | undefined;
  alias: Array<ResponseBodyAlias>;
  analytics?: ResponseBodyAnalytics | undefined;
  appliedCve55182Migration?: boolean | undefined;
  autoExposeSystemEnvs?: boolean | undefined;
  autoAssignCustomDomains?: boolean | undefined;
  autoAssignCustomDomainsUpdatedBy?: string | undefined;
  buildCommand?: string | null | undefined;
  commandForIgnoringBuildStep?: string | null | undefined;
  customerSupportCodeVisibility?: boolean | undefined;
  createdAt?: number | undefined;
  devCommand?: string | null | undefined;
  directoryListing: boolean;
  /**
   * Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects.
   */
  deploymentExpiration: ResponseBodyDeploymentExpiration;
  installCommand?: string | null | undefined;
  ipBuckets?: Array<ResponseBodyIpBuckets> | undefined;
  env?: Array<ResponseBodyEnv> | undefined;
  framework?: ResponseBodyFramework | null | undefined;
  gitForkProtection?: boolean | undefined;
  id: string;
  latestDeployments?: Array<ResponseBodyLatestDeployments> | undefined;
  link?: ResponseBodyLink | undefined;
  name: string;
  nodeVersion: GetProjectsResponseBodyNodeVersion;
  outputDirectory?: string | null | undefined;
  passwordProtection?: ResponseBodyPasswordProtection | null | undefined;
  passport?: ResponseBodyPassport | null | undefined;
  resourceConfig: GetProjectsResponseBodyResourceConfig;
  /**
   * Project-level rolling release configuration that defines how deployments should be gradually rolled out
   */
  rollingRelease?: ResponseBodyRollingRelease | null | undefined;
  rootDirectory?: string | null | undefined;
  serverlessFunctionRegion: string;
  serverlessFunctionZeroConfigFailover?: boolean | undefined;
  speedInsights?: ResponseBodySpeedInsights | undefined;
  skipGitConnectDuringLink?: boolean | undefined;
  sourceFilesOutsideRootDirectory?: boolean | undefined;
  ssoProtection?: ResponseBodySsoProtection | null | undefined;
  targets?: { [k: string]: ResponseBodyTargets | null } | undefined;
  transferCompletedAt?: number | undefined;
  transferStartedAt?: number | undefined;
  transferToAccountId?: string | undefined;
  transferredFromAccountId?: string | undefined;
  trustedSources?: ResponseBodyTrustedSources | null | undefined;
  updatedAt?: number | undefined;
  live?: boolean | undefined;
  hasActiveBranches?: boolean | undefined;
  gitComments?: ResponseBodyGitComments | undefined;
  gitProviderOptions?: ResponseBodyGitProviderOptions | undefined;
  paused?: boolean | undefined;
  webAnalytics?: ResponseBodyWebAnalytics | undefined;
  security?: ResponseBodySecurity | undefined;
  oidcTokenConfig?: ResponseBodyOidcTokenConfig | undefined;
  tier?: ResponseBodyTier | undefined;
  abuse?: ResponseBodyAbuse | undefined;
  internalRoutes?:
    | Array<GetProjectsInternalRoutes1 | GetProjectsInternalRoutes2>
    | undefined;
};

export type GetProjectsResponseBody =
  | GetProjectsResponseBody2
  | GetProjectsResponseBody3
  | Array<GetProjectsResponseBody1>;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyManagedRules$inboundSchema: z.ZodType<
  ResponseBodyManagedRules,
  z.ZodTypeDef,
  unknown
> = z.object({
  vercel_ruleset: z.lazy(() => ResponseBodyVercelRuleset$inboundSchema),
  traffic_sources: z.lazy(() => ResponseBodyTrafficSources$inboundSchema),
  bot_filter: z.lazy(() => ResponseBodyBotFilter$inboundSchema),
  ai_bots: z.lazy(() => ResponseBodyAiBots$inboundSchema),
  owasp: z.lazy(() => ResponseBodyOwasp$inboundSchema),
}).transform((v) => {
  return remap$(v, {
    "vercel_ruleset": "vercelRuleset",
    "traffic_sources": "trafficSources",
    "bot_filter": "botFilter",
    "ai_bots": "aiBots",
  });
});

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

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

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

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

/** @internal */
export const ResponseBodySecurityPlusMetadata$inboundSchema: z.ZodType<
  ResponseBodySecurityPlusMetadata,
  z.ZodTypeDef,
  unknown
> = z.object({
  updatedAt: types.number(),
  firstEnabledAt: types.optional(types.number()),
});

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

/** @internal */
export const ResponseBodySecurity$inboundSchema: z.ZodType<
  ResponseBodySecurity,
  z.ZodTypeDef,
  unknown
> = z.object({
  attackModeEnabled: types.optional(types.boolean()),
  attackModeUpdatedAt: types.optional(types.number()),
  firewallEnabled: types.optional(types.boolean()),
  firewallUpdatedAt: types.optional(types.number()),
  attackModeActiveUntil: z.nullable(types.number()).optional(),
  firewallConfigVersion: types.optional(types.number()),
  firewallRoutes: types.optional(z.array(FirewallRoutes$inboundSchema)),
  rulesets: types.optional(z.record(ResponseBodyRulesets$inboundSchema)),
  firewallSeawallEnabled: types.optional(types.boolean()),
  ja3Enabled: types.optional(types.boolean()),
  ja4Enabled: types.optional(types.boolean()),
  firewallBypassIps: types.optional(z.array(types.string())),
  managedRules: z.nullable(z.lazy(() => ResponseBodyManagedRules$inboundSchema))
    .optional(),
  botIdEnabled: types.optional(types.boolean()),
  requestLogsKey: types.optional(z.array(types.string())),
  log_headers: types.optional(
    smartUnion([z.array(types.string()), GetProjectsLogHeaders2$inboundSchema]),
  ),
  securityPlus: types.optional(types.boolean()),
  securityPlusMetadata: types.optional(
    z.lazy(() => ResponseBodySecurityPlusMetadata$inboundSchema),
  ),
  pageIntegrityEnabled: types.optional(types.boolean()),
}).transform((v) => {
  return remap$(v, {
    "log_headers": "logHeaders",
  });
});

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

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

/** @internal */
export const ResponseBodyOidcTokenConfig$inboundSchema: z.ZodType<
  ResponseBodyOidcTokenConfig,
  z.ZodTypeDef,
  unknown
> = z.object({
  enabled: types.optional(types.boolean()),
  issuerMode: types.optional(ResponseBodyIssuerMode$inboundSchema),
});

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

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

/** @internal */
export const ResponseBodyHistory$inboundSchema: z.ZodType<
  ResponseBodyHistory,
  z.ZodTypeDef,
  unknown
> = z.object({
  scanner: types.string(),
  reason: types.string(),
  by: types.string(),
  byId: types.string(),
  at: types.number(),
});

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

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

/** @internal */
export const ResponseBodyBlock$inboundSchema: z.ZodType<
  ResponseBodyBlock,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: GetProjectsResponseBodyProjectsAction$inboundSchema,
  reason: types.string(),
  statusCode: types.number(),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

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

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

/** @internal */
export const GetProjectsHasProjectsResponse2002$inboundSchema: z.ZodType<
  GetProjectsHasProjectsResponse2002,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: z.lazy(() =>
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseValue$inboundSchema
  ),
});

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

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

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

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

/** @internal */
export const GetProjectsHasProjectsResponse2001$inboundSchema: z.ZodType<
  GetProjectsHasProjectsResponse2001,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("header"),
  key: GetProjectsHasProjectsResponse200Key$inboundSchema,
  value: z.lazy(() =>
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1Value$inboundSchema
  ),
});

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

/** @internal */
export const GetProjectsRouteProjectsHas$inboundSchema: z.ZodType<
  GetProjectsRouteProjectsHas,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsHasProjectsResponse2001$inboundSchema),
  z.lazy(() => GetProjectsHasProjectsResponse2002$inboundSchema),
]);

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

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

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

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

/** @internal */
export const GetProjectsRouteProjects2$inboundSchema: z.ZodType<
  GetProjectsRouteProjects2,
  z.ZodTypeDef,
  unknown
> = z.object({
  has: z.array(
    z.union([
      z.lazy(() => GetProjectsHasProjectsResponse2001$inboundSchema),
      z.lazy(() => GetProjectsHasProjectsResponse2002$inboundSchema),
    ]),
  ),
  mitigate: z.lazy(() => GetProjectsRouteProjectsMitigate$inboundSchema),
  src: types.optional(types.string()),
});

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

/** @internal */
export const GetProjectsRouteProjects1$inboundSchema: z.ZodType<
  GetProjectsRouteProjects1,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  status: types.number(),
  expiry: types.optional(types.number()),
});

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

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

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

/** @internal */
export const GetProjectsBlockHistory4$inboundSchema: z.ZodType<
  GetProjectsBlockHistory4,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("route-unblocked"),
  route: smartUnion([
    z.lazy(() => GetProjectsRouteProjects1$inboundSchema),
    z.lazy(() => GetProjectsRouteProjects2$inboundSchema),
  ]),
  statusCode: types.optional(types.number()),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

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

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

/** @internal */
export const GetProjectsHasProjectsResponse200ApplicationJson2$inboundSchema:
  z.ZodType<
    GetProjectsHasProjectsResponse200ApplicationJson2,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: types.literal("host"),
    value: z.lazy(() =>
      GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseBlockHistory3Value$inboundSchema
    ),
  });

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

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

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

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

/** @internal */
export const GetProjectsHasProjectsResponse200ApplicationJson1$inboundSchema:
  z.ZodType<
    GetProjectsHasProjectsResponse200ApplicationJson1,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: types.literal("header"),
    key: GetProjectsHasProjectsResponse200ApplicationJSONKey$inboundSchema,
    value: z.lazy(() =>
      GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1AbuseBlockHistoryValue$inboundSchema
    ),
  });

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

/** @internal */
export const GetProjectsRouteHas$inboundSchema: z.ZodType<
  GetProjectsRouteHas,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsHasProjectsResponse200ApplicationJson1$inboundSchema),
  z.lazy(() => GetProjectsHasProjectsResponse200ApplicationJson2$inboundSchema),
]);

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

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

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

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

/** @internal */
export const GetProjectsRoute2$inboundSchema: z.ZodType<
  GetProjectsRoute2,
  z.ZodTypeDef,
  unknown
> = z.object({
  has: z.array(
    z.union([
      z.lazy(() =>
        GetProjectsHasProjectsResponse200ApplicationJson1$inboundSchema
      ),
      z.lazy(() =>
        GetProjectsHasProjectsResponse200ApplicationJson2$inboundSchema
      ),
    ]),
  ),
  mitigate: z.lazy(() => GetProjectsRouteMitigate$inboundSchema),
  src: types.optional(types.string()),
});

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

/** @internal */
export const GetProjectsRoute1$inboundSchema: z.ZodType<
  GetProjectsRoute1,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  status: types.number(),
  expiry: types.optional(types.number()),
});

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

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

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

/** @internal */
export const GetProjectsBlockHistory3$inboundSchema: z.ZodType<
  GetProjectsBlockHistory3,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("route-blocked"),
  route: smartUnion([
    z.lazy(() => GetProjectsRoute1$inboundSchema),
    z.lazy(() => GetProjectsRoute2$inboundSchema),
  ]),
  reason: types.string(),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsBlockHistory2$inboundSchema: z.ZodType<
  GetProjectsBlockHistory2,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("unblocked"),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsBlockHistory1$inboundSchema: z.ZodType<
  GetProjectsBlockHistory1,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("blocked"),
  reason: types.string(),
  statusCode: types.number(),
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
  ineligibleForAppeal: types.optional(types.boolean()),
  isCascading: types.optional(types.boolean()),
});

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

/** @internal */
export const ResponseBodyBlockHistory$inboundSchema: z.ZodType<
  ResponseBodyBlockHistory,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsBlockHistory1$inboundSchema),
  z.lazy(() => GetProjectsBlockHistory2$inboundSchema),
  z.lazy(() => GetProjectsBlockHistory3$inboundSchema),
  z.lazy(() => GetProjectsBlockHistory4$inboundSchema),
]);

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

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

/** @internal */
export const ResponseBodyInterstitialHistory$inboundSchema: z.ZodType<
  ResponseBodyInterstitialHistory,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: GetProjectsResponseBodyProjectsResponseAction$inboundSchema,
  createdAt: types.number(),
  caseId: types.optional(types.string()),
  reason: types.optional(types.string()),
  actor: types.optional(types.string()),
  comment: types.optional(types.string()),
});

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

/** @internal */
export const ResponseBodyAbuse$inboundSchema: z.ZodType<
  ResponseBodyAbuse,
  z.ZodTypeDef,
  unknown
> = z.object({
  scanner: types.optional(types.string()),
  history: z.array(z.lazy(() => ResponseBodyHistory$inboundSchema)),
  updatedAt: types.number(),
  block: types.optional(z.lazy(() => ResponseBodyBlock$inboundSchema)),
  blockHistory: types.optional(
    z.array(z.union([
      z.lazy(() => GetProjectsBlockHistory1$inboundSchema),
      z.lazy(() =>
        GetProjectsBlockHistory2$inboundSchema
      ),
      z.lazy(() => GetProjectsBlockHistory3$inboundSchema),
      z.lazy(() => GetProjectsBlockHistory4$inboundSchema),
    ])),
  ),
  interstitial: types.optional(types.boolean()),
  interstitialHistory: types.optional(
    z.array(z.lazy(() => ResponseBodyInterstitialHistory$inboundSchema)),
  ),
});

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

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

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

/** @internal */
export const GetProjectsHas2$inboundSchema: z.ZodType<
  GetProjectsHas2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: z.lazy(() => GetProjectsHasProjectsValue$inboundSchema),
});

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

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

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

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

/** @internal */
export const GetProjectsHas1$inboundSchema: z.ZodType<
  GetProjectsHas1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("header"),
  key: GetProjectsHasKey$inboundSchema,
  value: z.lazy(() => GetProjectsHasValue$inboundSchema),
});

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

/** @internal */
export const GetProjectsInternalRoutesHas$inboundSchema: z.ZodType<
  GetProjectsInternalRoutesHas,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsHas1$inboundSchema),
  z.lazy(() => GetProjectsHas2$inboundSchema),
]);

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

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

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

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

/** @internal */
export const GetProjectsInternalRoutes2$inboundSchema: z.ZodType<
  GetProjectsInternalRoutes2,
  z.ZodTypeDef,
  unknown
> = z.object({
  has: z.array(
    z.union([
      z.lazy(() => GetProjectsHas1$inboundSchema),
      z.lazy(() => GetProjectsHas2$inboundSchema),
    ]),
  ),
  mitigate: z.lazy(() => GetProjectsInternalRoutesMitigate$inboundSchema),
  src: types.optional(types.string()),
});

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

/** @internal */
export const GetProjectsInternalRoutes1$inboundSchema: z.ZodType<
  GetProjectsInternalRoutes1,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  status: types.number(),
  expiry: types.optional(types.number()),
});

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

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

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

/** @internal */
export const GetProjectsResponseBody1$inboundSchema: z.ZodType<
  GetProjectsResponseBody1,
  z.ZodTypeDef,
  unknown
> = z.object({
  accountId: types.string(),
  creator: types.optional(GetProjectsResponseBodyCreator$inboundSchema),
  alias: z.array(ResponseBodyAlias$inboundSchema),
  analytics: types.optional(ResponseBodyAnalytics$inboundSchema),
  appliedCve55182Migration: types.optional(types.boolean()),
  autoExposeSystemEnvs: types.optional(types.boolean()),
  autoAssignCustomDomains: types.optional(types.boolean()),
  autoAssignCustomDomainsUpdatedBy: types.optional(types.string()),
  buildCommand: z.nullable(types.string()).optional(),
  commandForIgnoringBuildStep: z.nullable(types.string()).optional(),
  customerSupportCodeVisibility: types.optional(types.boolean()),
  createdAt: types.optional(types.number()),
  devCommand: z.nullable(types.string()).optional(),
  directoryListing: types.boolean(),
  deploymentExpiration: ResponseBodyDeploymentExpiration$inboundSchema,
  installCommand: z.nullable(types.string()).optional(),
  ipBuckets: types.optional(z.array(ResponseBodyIpBuckets$inboundSchema)),
  env: types.optional(z.array(ResponseBodyEnv$inboundSchema)),
  framework: z.nullable(ResponseBodyFramework$inboundSchema).optional(),
  gitForkProtection: types.optional(types.boolean()),
  id: types.string(),
  latestDeployments: types.optional(
    z.array(ResponseBodyLatestDeployments$inboundSchema),
  ),
  link: types.optional(ResponseBodyLink$inboundSchema),
  name: types.string(),
  nodeVersion: GetProjectsResponseBodyNodeVersion$inboundSchema,
  outputDirectory: z.nullable(types.string()).optional(),
  passwordProtection: z.nullable(ResponseBodyPasswordProtection$inboundSchema)
    .optional(),
  passport: z.nullable(ResponseBodyPassport$inboundSchema).optional(),
  resourceConfig: GetProjectsResponseBodyResourceConfig$inboundSchema,
  rollingRelease: z.nullable(ResponseBodyRollingRelease$inboundSchema)
    .optional(),
  rootDirectory: z.nullable(types.string()).optional(),
  serverlessFunctionRegion: types.string(),
  serverlessFunctionZeroConfigFailover: types.optional(types.boolean()),
  speedInsights: types.optional(ResponseBodySpeedInsights$inboundSchema),
  skipGitConnectDuringLink: types.optional(types.boolean()),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  ssoProtection: z.nullable(ResponseBodySsoProtection$inboundSchema).optional(),
  targets: types.optional(
    z.record(types.nullable(ResponseBodyTargets$inboundSchema)),
  ),
  transferCompletedAt: types.optional(types.number()),
  transferStartedAt: types.optional(types.number()),
  transferToAccountId: types.optional(types.string()),
  transferredFromAccountId: types.optional(types.string()),
  trustedSources: z.nullable(ResponseBodyTrustedSources$inboundSchema)
    .optional(),
  updatedAt: types.optional(types.number()),
  live: types.optional(types.boolean()),
  hasActiveBranches: types.optional(types.boolean()),
  gitComments: types.optional(ResponseBodyGitComments$inboundSchema),
  gitProviderOptions: types.optional(
    ResponseBodyGitProviderOptions$inboundSchema,
  ),
  paused: types.optional(types.boolean()),
  webAnalytics: types.optional(ResponseBodyWebAnalytics$inboundSchema),
  security: types.optional(z.lazy(() => ResponseBodySecurity$inboundSchema)),
  oidcTokenConfig: types.optional(
    z.lazy(() => ResponseBodyOidcTokenConfig$inboundSchema),
  ),
  tier: types.optional(ResponseBodyTier$inboundSchema),
  abuse: types.optional(z.lazy(() => ResponseBodyAbuse$inboundSchema)),
  internalRoutes: types.optional(
    z.array(smartUnion([
      z.lazy(() => GetProjectsInternalRoutes1$inboundSchema),
      z.lazy(() =>
        GetProjectsInternalRoutes2$inboundSchema
      ),
    ])),
  ),
});

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

/** @internal */
export const GetProjectsResponseBody$inboundSchema: z.ZodType<
  GetProjectsResponseBody,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  GetProjectsResponseBody2$inboundSchema,
  GetProjectsResponseBody3$inboundSchema,
  z.array(z.lazy(() => GetProjectsResponseBody1$inboundSchema)),
]);

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