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>

4,654 lines 151 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 {
  GetProjectsFromProjects2,
  GetProjectsFromProjects2$inboundSchema,
  GetProjectsFromProjectsResponsePreset,
  GetProjectsFromProjectsResponsePreset$inboundSchema,
  GetProjectsResponseBodyAlias,
  GetProjectsResponseBodyAlias$inboundSchema,
  GetProjectsResponseBodyAnalytics,
  GetProjectsResponseBodyAnalytics$inboundSchema,
  GetProjectsResponseBodyDeploymentExpiration,
  GetProjectsResponseBodyDeploymentExpiration$inboundSchema,
  GetProjectsResponseBodyEnv,
  GetProjectsResponseBodyEnv$inboundSchema,
  GetProjectsResponseBodyFramework,
  GetProjectsResponseBodyFramework$inboundSchema,
  GetProjectsResponseBodyIpBuckets,
  GetProjectsResponseBodyIpBuckets$inboundSchema,
  GetProjectsResponseBodyLatestDeployments,
  GetProjectsResponseBodyLatestDeployments$inboundSchema,
  GetProjectsResponseBodyLink,
  GetProjectsResponseBodyLink$inboundSchema,
  GetProjectsResponseBodyPassport,
  GetProjectsResponseBodyPassport$inboundSchema,
  GetProjectsResponseBodyPasswordProtection,
  GetProjectsResponseBodyPasswordProtection$inboundSchema,
  GetProjectsResponseBodyProjectsNodeVersion,
  GetProjectsResponseBodyProjectsNodeVersion$inboundSchema,
  GetProjectsResponseBodyProjectsResourceConfig,
  GetProjectsResponseBodyProjectsResourceConfig$inboundSchema,
  GetProjectsResponseBodyProjectsResponse200Creator,
  GetProjectsResponseBodyProjectsResponse200Creator$inboundSchema,
  GetProjectsResponseBodyRollingRelease,
  GetProjectsResponseBodyRollingRelease$inboundSchema,
  GetProjectsResponseBodySpeedInsights,
  GetProjectsResponseBodySpeedInsights$inboundSchema,
  GetProjectsResponseBodySsoProtection,
  GetProjectsResponseBodySsoProtection$inboundSchema,
  GetProjectsResponseBodyTargets,
  GetProjectsResponseBodyTargets$inboundSchema,
} from "./getprojectsfromprojectsresponsepreset.js";
import { Pagination, Pagination$inboundSchema } from "./pagination.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

/**
 * The source envs on the trusted project that are allowed to access `to`.
 */
export type GetProjectsFromProjects1 = {
  /**
   * System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project.
   */
  slugs: Array<string>;
  preset?: GetProjectsFromProjectsResponsePreset | undefined;
};

export type GetProjectsResponseBodyFrom =
  | GetProjectsFromProjects1
  | GetProjectsFromProjects2;

export const GetProjectsToProjectsResponse200ApplicationJSONResponseBody2ProjectsPreset =
  {
    AllCustom: "all-custom",
  } as const;
export type GetProjectsToProjectsResponse200ApplicationJSONResponseBody2ProjectsPreset =
  ClosedEnum<
    typeof GetProjectsToProjectsResponse200ApplicationJSONResponseBody2ProjectsPreset
  >;

/**
 * The target envs on the current project that may be accessed.
 */
export type GetProjectsToProjectsResponse200ApplicationJSONResponseBody2 = {
  /**
   * System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project.
   */
  slugs?: Array<string> | undefined;
  preset:
    GetProjectsToProjectsResponse200ApplicationJSONResponseBody2ProjectsPreset;
};

export const GetProjectsToProjectsResponse200ApplicationJSONResponseBody2Preset =
  {
    AllCustom: "all-custom",
  } as const;
export type GetProjectsToProjectsResponse200ApplicationJSONResponseBody2Preset =
  ClosedEnum<
    typeof GetProjectsToProjectsResponse200ApplicationJSONResponseBody2Preset
  >;

/**
 * The target envs on the current project that may be accessed.
 */
export type GetProjectsToProjectsResponse200ApplicationJSONResponseBody1 = {
  /**
   * System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project.
   */
  slugs: Array<string>;
  preset?:
    | GetProjectsToProjectsResponse200ApplicationJSONResponseBody2Preset
    | undefined;
};

export type GetProjectsResponseBodyProjectsResponse200ApplicationJSONTo =
  | GetProjectsToProjectsResponse200ApplicationJSONResponseBody1
  | GetProjectsToProjectsResponse200ApplicationJSONResponseBody2;

/**
 * Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets.
 */
export type GetProjectsResponseBodyCustomAllow = {
  from: GetProjectsFromProjects1 | GetProjectsFromProjects2;
  to:
    | GetProjectsToProjectsResponse200ApplicationJSONResponseBody1
    | GetProjectsToProjectsResponse200ApplicationJSONResponseBody2;
};

export type GetProjectsResponseBodyProjectsResponse200Projects = {
  label?: string | undefined;
  /**
   * Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets.
   */
  customAllow?: Array<GetProjectsResponseBodyCustomAllow> | undefined;
};

export const GetProjectsToProjectsResponse200ApplicationJSONResponseBodyPreset =
  {
    AllCustom: "all-custom",
  } as const;
export type GetProjectsToProjectsResponse200ApplicationJSONResponseBodyPreset =
  ClosedEnum<
    typeof GetProjectsToProjectsResponse200ApplicationJSONResponseBodyPreset
  >;

/**
 * The target envs on the current project that may be accessed.
 */
export type GetProjectsToProjectsResponse2 = {
  /**
   * System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project.
   */
  slugs?: Array<string> | undefined;
  preset: GetProjectsToProjectsResponse200ApplicationJSONResponseBodyPreset;
};

export const GetProjectsToProjectsResponse200ApplicationJSONPreset = {
  AllCustom: "all-custom",
} as const;
export type GetProjectsToProjectsResponse200ApplicationJSONPreset = ClosedEnum<
  typeof GetProjectsToProjectsResponse200ApplicationJSONPreset
>;

/**
 * The target envs on the current project that may be accessed.
 */
export type GetProjectsToProjectsResponse1 = {
  /**
   * System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project.
   */
  slugs: Array<string>;
  preset?: GetProjectsToProjectsResponse200ApplicationJSONPreset | undefined;
};

export type GetProjectsResponseBodyProjectsTo =
  | GetProjectsToProjectsResponse1
  | GetProjectsToProjectsResponse2;

export type GetProjectsResponseBodyOidcProviders = {
  to: GetProjectsToProjectsResponse1 | GetProjectsToProjectsResponse2;
  label?: string | undefined;
  claims: { [k: string]: Array<string> };
};

export type GetProjectsResponseBodyTrustedSources = {
  /**
   * Allow same-team Vercel CI access to preview deployments built from the CI run's repository, using the deployment source rather than the current project repository link. Defaults to enabled when not stored; omitted or null Trusted Sources updates preserve the stored value.
   */
  enableVercelCiSameRepository?: boolean | undefined;
  projects?:
    | { [k: string]: GetProjectsResponseBodyProjectsResponse200Projects }
    | undefined;
  oidcProviders?:
    | { [k: string]: Array<GetProjectsResponseBodyOidcProviders> }
    | undefined;
};

export type GetProjectsResponseBodyGitComments = {
  /**
   * Whether the Vercel bot should comment on PRs
   */
  onPullRequest: boolean;
  /**
   * Whether the Vercel bot should comment on commits
   */
  onCommit: boolean;
};

/**
 * Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead
 */
export const GetProjectsResponseBodyCreateDeployments = {
  Disabled: "disabled",
  Enabled: "enabled",
} as const;
/**
 * Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead
 */
export type GetProjectsResponseBodyCreateDeployments = ClosedEnum<
  typeof GetProjectsResponseBodyCreateDeployments
>;

/**
 * Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment.
 */
export type GetProjectsResponseBodyConsolidatedGitCommitStatus = {
  /**
   * Whether consolidated commit status is enabled.
   */
  enabled: boolean;
  /**
   * Whether to propagate individual deployment failures to the consolidated status.
   */
  propagateFailures: boolean;
};

export type GetProjectsResponseBodyGitProviderOptions = {
  /**
   * Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead
   */
  createDeployments: GetProjectsResponseBodyCreateDeployments;
  /**
   * Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events - `true`: disable repository-dispatch events for this project (explicit override of the team setting). - `false`: enable repository-dispatch events for this project (explicit override of the team setting). - absent: inherit from `team.disableRepositoryDispatchEvents`.
   */
  disableRepositoryDispatchEvents?: boolean | undefined;
  /**
   * Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`.
   */
  requireVerifiedCommits?: boolean | undefined;
  /**
   * Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled.
   */
  gitCommitStatus?: boolean | undefined;
  /**
   * Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment.
   */
  consolidatedGitCommitStatus?:
    | GetProjectsResponseBodyConsolidatedGitCommitStatus
    | undefined;
};

export type GetProjectsResponseBodyWebAnalytics = {
  id: string;
  disabledAt?: number | undefined;
  canceledAt?: number | undefined;
  enabledAt?: number | undefined;
  hasData?: true | undefined;
};

export type GetProjectsSrc2 = {
  re?: string | undefined;
  eq?: string | undefined;
  neq?: string | undefined;
  inc?: Array<string> | undefined;
  ninc?: Array<string> | undefined;
  pre?: string | undefined;
  suf?: string | undefined;
  gt?: number | undefined;
  gte?: number | undefined;
  lt?: number | undefined;
  lte?: number | undefined;
  list?: string | undefined;
};

export type ResponseBodySrc = string | GetProjectsSrc2;

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

export const GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType =
  {
    Cookie: "cookie",
    DomainEnvironment: "domain_environment",
    Environment: "environment",
    Header: "header",
    Headers: "headers",
    Host: "host",
    InitialRequestPath: "initial_request_path",
    IpAddress: "ip_address",
    Method: "method",
    Path: "path",
    Protocol: "protocol",
    Query: "query",
    Region: "region",
    Scheme: "scheme",
    TrustedSource: "trusted_source",
  } as const;
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType
  >;

export type GetProjectsValueProjectsResponse2 = {
  re?: string | undefined;
  eq?: string | undefined;
  neq?: string | undefined;
  inc?: Array<string> | undefined;
  ninc?: Array<string> | undefined;
  pre?: string | undefined;
  suf?: string | undefined;
  gt?: number | undefined;
  gte?: number | undefined;
  lt?: number | undefined;
  lte?: number | undefined;
  list?: string | undefined;
};

export type GetProjectsResponseBodyProjectsResponse200Value =
  | string
  | GetProjectsValueProjectsResponse2;

export type GetProjectsResponseBodyProjectsHas = {
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType;
  key?: string | undefined;
  value?: string | GetProjectsValueProjectsResponse2 | undefined;
};

export const GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesType =
  {
    Cookie: "cookie",
    DomainEnvironment: "domain_environment",
    Environment: "environment",
    Header: "header",
    Headers: "headers",
    Host: "host",
    InitialRequestPath: "initial_request_path",
    IpAddress: "ip_address",
    Method: "method",
    Path: "path",
    Protocol: "protocol",
    Query: "query",
    Region: "region",
    Scheme: "scheme",
    TrustedSource: "trusted_source",
  } as const;
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesType
  >;

export type GetProjectsValueProjectsResponse2002 = {
  re?: string | undefined;
  eq?: string | undefined;
  neq?: string | undefined;
  inc?: Array<string> | undefined;
  ninc?: Array<string> | undefined;
  pre?: string | undefined;
  suf?: string | undefined;
  gt?: number | undefined;
  gte?: number | undefined;
  lt?: number | undefined;
  lte?: number | undefined;
  list?: string | undefined;
};

export type GetProjectsResponseBodyProjectsResponseValue =
  | string
  | GetProjectsValueProjectsResponse2002;

export type GetProjectsResponseBodyProjectsMissing = {
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesType;
  key?: string | undefined;
  value?: string | GetProjectsValueProjectsResponse2002 | undefined;
};

export const GetProjectsResponseBodyHandle = {
  Finalize: "finalize",
  Init: "init",
} as const;
export type GetProjectsResponseBodyHandle = ClosedEnum<
  typeof GetProjectsResponseBodyHandle
>;

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

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

export type ResponseBodyErl = {
  algo: GetProjectsResponseBodyProjectsResponse200Algo;
  window: number;
  limit: number;
  keys: Array<string>;
};

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

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsLogHeaders =
  | Array<string>
  | GetProjectsLogHeadersProjectsResponse200ApplicationJSONResponseBody2Projects2;

export type GetProjectsResponseBodyProjectsMitigate = {
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityAction;
  ruleId: string;
  ttl?: number | undefined;
  erl?: ResponseBodyErl | undefined;
  logHeaders?:
    | Array<string>
    | GetProjectsLogHeadersProjectsResponse200ApplicationJSONResponseBody2Projects2
    | undefined;
};

export const GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesTransformsType =
  {
    RequestHeaders: "request.headers",
  } as const;
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesTransformsType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesTransformsType
  >;

export const GetProjectsResponseBodyOp = {
  Append: "append",
} as const;
export type GetProjectsResponseBodyOp = ClosedEnum<
  typeof GetProjectsResponseBodyOp
>;

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2Target = {
  key: string;
};

export type GetProjectsResponseBodyProjectsTransforms = {
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesTransformsType;
  op: GetProjectsResponseBodyOp;
  target: GetProjectsResponseBodyProjectsResponse200ApplicationJson2Target;
  args: string;
};

export type ResponseBodyFirewallRoutes = {
  src?: string | GetProjectsSrc2 | undefined;
  tierRequirement?: ResponseBodyTierRequirement | undefined;
  has?: Array<GetProjectsResponseBodyProjectsHas> | undefined;
  missing?: Array<GetProjectsResponseBodyProjectsMissing> | undefined;
  dest?: string | undefined;
  status?: number | undefined;
  handle?: GetProjectsResponseBodyHandle | undefined;
  mitigate?: GetProjectsResponseBodyProjectsMitigate | undefined;
  transforms?: Array<GetProjectsResponseBodyProjectsTransforms> | undefined;
};

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

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

export type GetProjectsResponseBodyRateLimit = {
  algo: GetProjectsResponseBodyProjectsAlgo;
  window: number;
  limit: number;
  keys: Array<string>;
};

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

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

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2LogHeaders =
  | Array<string>
  | GetProjectsLogHeadersProjectsResponse200ApplicationJSONResponseBody22;

export type GetProjectsResponseBodyRulesets = {
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction;
  rateLimit?: GetProjectsResponseBodyRateLimit | null | undefined;
  redirect?: GetProjectsResponseBodyRedirect | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetProjectsLogHeadersProjectsResponse200ApplicationJSONResponseBody22
    | undefined;
};

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

export type GetProjectsResponseBodyVercelRuleset = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesAction
    | undefined;
};

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

export type GetProjectsResponseBodyTrafficSources = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesTrafficSourcesAction
    | undefined;
};

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

export type GetProjectsResponseBodyBotFilter = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesBotFilterAction
    | undefined;
};

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

export type GetProjectsResponseBodyAiBots = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesAiBotsAction
    | undefined;
};

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

export type GetProjectsResponseBodyOwasp = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesOwaspAction
    | undefined;
};

export type GetProjectsResponseBodyManagedRules = {
  vercelRuleset: GetProjectsResponseBodyVercelRuleset;
  trafficSources: GetProjectsResponseBodyTrafficSources;
  botFilter: GetProjectsResponseBodyBotFilter;
  aiBots: GetProjectsResponseBodyAiBots;
  owasp: GetProjectsResponseBodyOwasp;
};

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

export type GetProjectsResponseBodyProjectsLogHeaders =
  | Array<string>
  | GetProjectsLogHeadersProjectsResponse2;

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

export type GetProjectsResponseBodySecurity = {
  attackModeEnabled?: boolean | undefined;
  attackModeUpdatedAt?: number | undefined;
  firewallEnabled?: boolean | undefined;
  firewallUpdatedAt?: number | undefined;
  attackModeActiveUntil?: number | null | undefined;
  firewallConfigVersion?: number | undefined;
  firewallRoutes?: Array<ResponseBodyFirewallRoutes> | undefined;
  rulesets?: { [k: string]: GetProjectsResponseBodyRulesets } | undefined;
  firewallSeawallEnabled?: boolean | undefined;
  ja3Enabled?: boolean | undefined;
  ja4Enabled?: boolean | undefined;
  firewallBypassIps?: Array<string> | undefined;
  managedRules?: GetProjectsResponseBodyManagedRules | null | undefined;
  botIdEnabled?: boolean | undefined;
  requestLogsKey?: Array<string> | undefined;
  logHeaders?:
    | Array<string>
    | GetProjectsLogHeadersProjectsResponse2
    | undefined;
  securityPlus?: boolean | undefined;
  securityPlusMetadata?:
    | GetProjectsResponseBodySecurityPlusMetadata
    | 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 GetProjectsResponseBodyIssuerMode = {
  Global: "global",
  Team: "team",
} as const;
/**
 * - team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`
 */
export type GetProjectsResponseBodyIssuerMode = ClosedEnum<
  typeof GetProjectsResponseBodyIssuerMode
>;

export type GetProjectsResponseBodyOidcTokenConfig = {
  /**
   * 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?: GetProjectsResponseBodyIssuerMode | undefined;
};

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

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

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

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2ProjectsAbuseBlockHistoryValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody22 = {
  type: "host";
  value:
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2ProjectsAbuseBlockHistoryValue;
};

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2ProjectsAbuseValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody21 = {
  type: "header";
  key: GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2Key;
  value:
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2ProjectsAbuseValue;
};

export type GetProjectsRouteProjectsResponse200Has =
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody21
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody22;

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

export type GetProjectsRouteProjectsResponse200Mitigate = {
  action: GetProjectsRouteProjectsResponse200Action;
};

export type GetProjectsRouteProjectsResponse2002 = {
  has: Array<
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody21
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody22
  >;
  mitigate: GetProjectsRouteProjectsResponse200Mitigate;
  src?: string | undefined;
};

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

export type GetProjectsBlockHistoryProjectsResponse200Route =
  | GetProjectsRouteProjectsResponse2001
  | GetProjectsRouteProjectsResponse2002;

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2ProjectsValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2 = {
  type: "host";
  value:
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2ProjectsValue;
};

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2Value =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1 = {
  type: "header";
  key: GetProjectsHasProjectsResponse200ApplicationJSONResponseBodyKey;
  value: GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2Value;
};

export type GetProjectsRouteProjectsResponseHas =
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2;

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

export type GetProjectsRouteProjectsResponseMitigate = {
  action: GetProjectsRouteProjectsResponseAction;
};

export type GetProjectsRouteProjectsResponse2 = {
  has: Array<
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody1
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody2
  >;
  mitigate: GetProjectsRouteProjectsResponseMitigate;
  src?: string | undefined;
};

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

export type GetProjectsBlockHistoryProjectsResponseRoute =
  | GetProjectsRouteProjectsResponse1
  | GetProjectsRouteProjectsResponse2;

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

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

export type GetProjectsBlockHistoryProjects1 = {
  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 GetProjectsResponseBodyBlockHistory =
  | GetProjectsBlockHistoryProjects1
  | GetProjectsBlockHistoryProjects2
  | GetProjectsBlockHistoryProjects3
  | GetProjectsBlockHistoryProjects4;

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

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

export type GetProjectsResponseBodyAbuse = {
  scanner?: string | undefined;
  history: Array<GetProjectsResponseBodyHistory>;
  updatedAt: number;
  block?: GetProjectsResponseBodyBlock | undefined;
  blockHistory?:
    | Array<
      | GetProjectsBlockHistoryProjects1
      | GetProjectsBlockHistoryProjects2
      | GetProjectsBlockHistoryProjects3
      | GetProjectsBlockHistoryProjects4
    >
    | undefined;
  interstitial?: boolean | undefined;
  interstitialHistory?:
    | Array<GetProjectsResponseBodyInterstitialHistory>
    | undefined;
};

export type GetProjectsHasProjectsResponse200Value = {
  eq: string;
};

export type GetProjectsHasProjects2 = {
  type: "host";
  value: GetProjectsHasProjectsResponse200Value;
};

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

export type GetProjectsHasProjectsResponseValue = {
  eq: string;
};

export type GetProjectsHasProjects1 = {
  type: "header";
  key: GetProjectsHasProjectsKey;
  value: GetProjectsHasProjectsResponseValue;
};

export type GetProjectsInternalRoutesProjectsHas =
  | GetProjectsHasProjects1
  | GetProjectsHasProjects2;

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

export type GetProjectsInternalRoutesProjectsMitigate = {
  action: GetProjectsInternalRoutesProjectsAction;
};

export type GetProjectsInternalRoutesProjects2 = {
  has: Array<GetProjectsHasProjects1 | GetProjectsHasProjects2>;
  mitigate: GetProjectsInternalRoutesProjectsMitigate;
  src?: string | undefined;
};

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

export type GetProjectsResponseBodyInternalRoutes =
  | GetProjectsInternalRoutesProjects1
  | GetProjectsInternalRoutesProjects2;

export type ResponseBodyProjects = {
  accountId: string;
  creator?: GetProjectsResponseBodyProjectsResponse200Creator | undefined;
  alias: Array<GetProjectsResponseBodyAlias>;
  analytics?: GetProjectsResponseBodyAnalytics | 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: GetProjectsResponseBodyDeploymentExpiration;
  installCommand?: string | null | undefined;
  ipBuckets?: Array<GetProjectsResponseBodyIpBuckets> | undefined;
  env?: Array<GetProjectsResponseBodyEnv> | undefined;
  framework?: GetProjectsResponseBodyFramework | null | undefined;
  gitForkProtection?: boolean | undefined;
  id: string;
  latestDeployments?:
    | Array<GetProjectsResponseBodyLatestDeployments>
    | undefined;
  link?: GetProjectsResponseBodyLink | undefined;
  name: string;
  nodeVersion: GetProjectsResponseBodyProjectsNodeVersion;
  outputDirectory?: string | null | undefined;
  passwordProtection?:
    | GetProjectsResponseBodyPasswordProtection
    | null
    | undefined;
  passport?: GetProjectsResponseBodyPassport | null | undefined;
  resourceConfig: GetProjectsResponseBodyProjectsResourceConfig;
  /**
   * Project-level rolling release configuration that defines how deployments should be gradually rolled out
   */
  rollingRelease?: GetProjectsResponseBodyRollingRelease | null | undefined;
  rootDirectory?: string | null | undefined;
  serverlessFunctionRegion: string;
  serverlessFunctionZeroConfigFailover?: boolean | undefined;
  speedInsights?: GetProjectsResponseBodySpeedInsights | undefined;
  skipGitConnectDuringLink?: boolean | undefined;
  sourceFilesOutsideRootDirectory?: boolean | undefined;
  ssoProtection?: GetProjectsResponseBodySsoProtection | null | undefined;
  targets?: { [k: string]: GetProjectsResponseBodyTargets | null } | undefined;
  transferCompletedAt?: number | undefined;
  transferStartedAt?: number | undefined;
  transferToAccountId?: string | undefined;
  transferredFromAccountId?: string | undefined;
  trustedSources?: GetProjectsResponseBodyTrustedSources | null | undefined;
  updatedAt?: number | undefined;
  live?: boolean | undefined;
  hasActiveBranches?: boolean | undefined;
  gitComments?: GetProjectsResponseBodyGitComments | undefined;
  gitProviderOptions?: GetProjectsResponseBodyGitProviderOptions | undefined;
  paused?: boolean | undefined;
  webAnalytics?: GetProjectsResponseBodyWebAnalytics | undefined;
  security?: GetProjectsResponseBodySecurity | undefined;
  oidcTokenConfig?: GetProjectsResponseBodyOidcTokenConfig | undefined;
  tier?: GetProjectsResponseBodyTier | undefined;
  abuse?: GetProjectsResponseBodyAbuse | undefined;
  internalRoutes?:
    | Array<
      GetProjectsInternalRoutesProjects1 | GetProjectsInternalRoutesProjects2
    >
    | undefined;
};

/**
 * This object contains information related to the pagination of the current request using continuation tokens. Since CosmosDB doesn't support going to previous pages, only count and next are provided.
 */
export type Pagination1 = {
  /**
   * Amount of items in the current page.
   */
  count: number;
  /**
   * Continuation token that must be used to request the next page. Base32 encoded for safe URL transmission.
   */
  next: string | null;
};

export type GetProjectsResponseBodyPagination = Pagination | Pagination1;

export type GetProjectsResponseBody2 = {
  projects: Array<ResponseBodyProjects>;
  pagination: Pagination | Pagination1;
};

export type GetProjectsCreator4 = {
  type: "system";
};

export type GetProjectsCreatorIntegration = {
  integrationId: string;
  configurationId: string;
};

export type GetProjectsCreator3 = {
  type: "integration";
  integration: GetProjectsCreatorIntegration;
};

export type GetProjectsCreatorApp = {
  /**
   * The internal ID of the Vercel App backing this principal.
   */
  id: string;
  /**
   * The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used.
   */
  clientId?: string | undefined;
};

export type GetProjectsCreator2 = {
  type: "app";
  app: GetProjectsCreatorApp;
};

export type GetProjectsViaIntegration = {
  integrationId: string;
  configurationId: string;
};

/**
 * Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal.
 */
export type GetProjectsVia2 = {
  type: "integration";
  integration: GetProjectsViaIntegration;
};

export type GetProjectsViaApp = {
  /**
   * The internal ID of the Vercel App backing this principal.
   */
  id: string;
  /**
   * The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used.
   */
  clientId?: string | undefined;
};

/**
 * Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal.
 */
export type GetProjectsVia1 = {
  type: "app";
  app: GetProjectsViaApp;
};

export type GetProjectsCreatorVia = GetProjectsVia1 | GetProjectsVia2;

export type GetProjectsCreatorUser = {
  id: string;
};

export type GetProjectsCreator1 = {
  type: "user";
  via: GetProjectsVia1 | GetProjectsVia2 | null;
  user: GetProjectsCreatorUser;
};

export type GetProjectsResponseBodyCreator =
  | GetProjectsCreator1
  | GetProjectsCreator2
  | GetProjectsCreator3
  | GetProjectsCreator4;

export const ResponseBodyConfiguredBy = {
  A: "A",
  Cname: "CNAME",
  Dns01: "dns-01",
  Http: "http",
} as const;
export type ResponseBodyConfiguredBy = ClosedEnum<
  typeof ResponseBodyConfiguredBy
>;

export type GetProjectsResponseBodyProjectsAliasAssigned = number | boolean;

export type GetProjectsResponseBodyProjectsResponseAliasError = {
  code: string;
  message: string;
};

/**
 * The type of matching to perform
 */
export const GetProjectsResponseBodyProjectsResponse200ApplicationJson1AliasType =
  {
    EndsWith: "endsWith",
    Equals: "equals",
    StartsWith: "startsWith",
  } as const;
/**
 * The type of matching to perform
 */
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson1AliasType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson1AliasType
  >;

export type GetProjectsResponseBodyProjectsBranchMatcher = {
  /**
   * The type of matching to perform
   */
  type: GetProjectsResponseBodyProjectsResponse200ApplicationJson1AliasType;
  /**
   * The pattern to match against branch names
   */
  pattern: string;
};

export type GetProjectsResponseBodyProjectsResponseBuilds = {
  use: string;
  src?: string | undefined;
  dest?: string | undefined;
};

export const GetProjectsResponseBodyProjectsResponseChecksConclusion = {
  Canceled: "canceled",
  Failed: "failed",
  Skipped: "skipped",
  Succeeded: "succeeded",
} as const;
export type GetProjectsResponseBodyProjectsResponseChecksConclusion =
  ClosedEnum<typeof GetProjectsResponseBodyProjectsResponseChecksConclusion>;

export const GetProjectsResponseBodyProjectsResponseChecksState = {
  Completed: "completed",
  Registered: "registered",
  Running: "running",
} as const;
export type GetProjectsResponseBodyProjectsResponseChecksState = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsResponseChecksState
>;

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson1Creator =
  {
    email: string;
    githubLogin?: string | undefined;
    gitlabLogin?: string | undefined;
    uid: string;
    username: string;
  };

export type GetProjectsResponseBodyProjectsResponseOidcTokenClaims = {
  iss: string;
  sub: string;
  scope: string;
  aud: string;
  owner: string;
  ownerId: string;
  project: string;
  projectId: string;
  environment: string;
  customEnvironmentId?: string | undefined;
  mfeGroupIds?: Array<string> | undefined;
  plan?: string | undefined;
};

export const GetProjectsResponseBodyProjectsResponsePlan = {
  Enterprise: "enterprise",
  Hobby: "hobby",
  Pro: "pro",
} as const;
export type GetProjectsResponseBodyProjectsResponsePlan = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsResponsePlan
>;

export const GetProjectsResponseBodyProjectsResponseReadyState = {
  Blocked: "BLOCKED",
  Building: "BUILDING",
  Canceled: "CANCELED",
  Error: "ERROR",
  Initializing: "INITIALIZING",
  Queued: "QUEUED",
  Ready: "READY",
} as const;
export type GetProjectsResponseBodyProjectsResponseReadyState = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsResponseReadyState
>;

export const GetProjectsResponseBodyProjectsResponseReadySubstate = {
  Promoted: "PROMOTED",
  Rolling: "ROLLING",
  Staged: "STAGED",
} as const;
export type GetProjectsResponseBodyProjectsResponseReadySubstate = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsResponseReadySubstate
>;

export const GetProjectsResponseBodyProjectsResponse200ApplicationJSONType = {
  Lambdas: "LAMBDAS",
} as const;
export type GetProjectsResponseBodyProjectsResponse200ApplicationJSONType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJSONType
  >;

export type ResponseBodyDeployment = {
  id: string;
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  aliasError?:
    | GetProjectsResponseBodyProjectsResponseAliasError
    | null
    | undefined;
  aliasFinal?: string | null | undefined;
  automaticAliases?: Array<string> | undefined;
  branchMatcher?: GetProjectsResponseBodyProjectsBranchMatcher | undefined;
  buildingAt?: number | undefined;
  builds?: Array<GetProjectsResponseBodyProjectsResponseBuilds> | undefined;
  checksConclusion?:
    | GetProjectsResponseBodyProjectsResponseChecksConclusion
    | undefined;
  checksState?: GetProjectsResponseBodyProjectsResponseChecksState | undefined;
  connectBuildsEnabled?: boolean | undefined;
  connectConfigurationId?: string | undefined;
  createdAt: number;
  createdIn: string;
  creator:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson1Creator
    | null;
  deletedAt?: number | undefined;
  deploymentHostname: string;
  forced?: boolean | undefined;
  name: string;
  meta?: { [k: string]: string } | undefined;
  monorepoManager?: string | null | undefined;
  oidcTokenClaims?:
    | GetProjectsResponseBodyProjectsResponseOidcTokenClaims
    | undefined;
  plan: GetProjectsResponseBodyProjectsResponsePlan;
  /**
   * Whether or not preview comments are enabled for the deployment
   */
  previewCommentsEnabled?: boolean | undefined;
  private: boolean;
  readyAt?: number | undefined;
  readyState: GetProjectsResponseBodyProjectsResponseReadyState;
  readySubstate?:
    | GetProjectsResponseBodyProjectsResponseReadySubstate
    | undefined;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type: GetProjectsResponseBodyProjectsResponse200ApplicationJSONType;
  url: string;
  /**
   * Present for user creators; omitted for app/integration/system creators.
   */
  userId?: string | undefined;
  withCache?: boolean | undefined;
};

export const ResponseBodyEnvironment = {
  Preview: "preview",
  Production: "production",
} as const;
export type ResponseBodyEnvironment = ClosedEnum<
  typeof ResponseBodyEnvironment
>;

export const GetProjectsResponseBodyTarget = {
  Preview: "PREVIEW",
  Production: "PRODUCTION",
  Staging: "STAGING",
} as const;
export type GetProjectsResponseBodyTarget = ClosedEnum<
  typeof GetProjectsResponseBodyTarget
>;

export type ResponseBodyAlias = {
  configuredBy?: ResponseBodyConfiguredBy | null | undefined;
  configuredChangedAt?: number | null | undefined;
  createdAt?: number | null | undefined;
  deployment: ResponseBodyDeployment | null;
  domain: string;
  environment: ResponseBodyEnvironment;
  gitBranch?: string | null | undefined;
  redirect?: string | null | undefined;
  redirectStatusCode?: number | null | undefined;
  target: GetProjectsResponseBodyTarget;
};

export type ResponseBodyAnalytics = {
  id: string;
  canceledAt?: number | null | undefined;
  disabledAt: number;
  enabledAt: number;
  paidAt?: number | undefined;
  sampleRatePercent?: number | null | undefined;
  spendLimitInDollars?: number | null | undefined;
};

/**
 * 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.
 */
export type ResponseBodyDeploymentExpiration = {
  /**
   * Number of days to keep non-production deployments (mostly preview deployments) before soft deletion.
   */
  expirationDays?: number | undefined;
  /**
   * Number of days to keep production deployments before soft deletion.
   */
  expirationDaysProduction?: number | undefined;
  /**
   * Number of days to keep canceled deployments before soft deletion.
   */
  expirationDaysCanceled?: number | undefined;
  /**
   * Number of days to keep errored deployments before soft deletion.
   */
  expirationDaysErrored?: number | undefined;
  /**
   * Minimum number of production deployments to keep for this project, even if they are over the production expiration limit.
   */
  deploymentsToKeep?: number | undefined;
};

/** @internal */
export const GetProjectsFromProjects1$inboundSchema: z.ZodType<
  GetProjectsFromProjects1,
  z.ZodTypeDef,
  unknown
> = z.object({
  slugs: z.array(types.string()),
  preset: types.optional(GetProjectsFromProjectsResponsePreset$inboundSchema),
});

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

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

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

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

/** @internal */
export const GetProjectsToProjectsResponse200ApplicationJSONResponseBody2$inboundSchema:
  z.ZodType<
    GetProjectsToProjectsResponse200ApplicationJSONResponseBody2,
    z.ZodTypeDef,
    unknown
  > = z.object({
    slugs: types.optional(z.array(types.string())),
    preset:
      GetProjectsToProjectsResponse200ApplicationJSONResponseBody2ProjectsPreset$inboundSchema,
  });

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

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

/** @internal */
export const GetProjectsToProjectsResponse200ApplicationJSONResponseBody1$inboundSchema:
  z.ZodType<
    GetProjectsToProjectsResponse200ApplicationJSONResponseBody1,
    z.ZodTypeDef,
    unknown
  > = z.object({
    slugs: z.array(types.string()),
    preset: types.optional(
      GetProjectsToProjectsResponse200ApplicationJSONResponseBody2Preset$inboundSchema,
    ),
  });

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

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

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

/** @internal */
export const GetProjectsResponseBodyCustomAllow$inboundSchema: z.ZodType<
  GetProjectsResponseBodyCustomAllow,
  z.ZodTypeDef,
  unknown
> = z.object({
  from: smartUnion([
    z.lazy(() => GetProjectsFromProjects1$inboundSchema),
    GetProjectsFromProjects2$inboundSchema,
  ]),
  to: smartUnion([
    z.lazy(() =>
      GetProjectsToProjectsResponse200ApplicationJSONResponseBody1$inboundSchema
    ),
    z.lazy(() =>
      GetProjectsToProjectsResponse200ApplicationJSONResponseBody2$inboundSchema
    ),
  ]),
});

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

/** @internal */
export const GetProjectsResponseBodyProjectsResponse200Projects$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsResponse200Projects,
    z.ZodTypeDef,
    unknown
  > = z.object({
    label: types.optional(types.string()),
    customAllow: types.optional(
      z.array(z.lazy(() => GetProjectsResponseBodyCustomAllow$inboundSchema)),
    ),
  });

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

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

/** @internal */
export const GetProjectsToProjectsResponse2$inboundSchema: z.ZodType<
  GetProjectsToProjectsResponse2,
  z.ZodTypeDef,
  unknown
> = z.object({
  slugs: types.optional(z.array(types.string())),
  preset:
    GetProjectsToProjectsResponse200ApplicationJSONResponseBodyPreset$inboundSchema,
});

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

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

/** @internal */
export const GetProjectsToProjectsResponse1$inboundSchema: z.ZodType<
  GetProjectsToProjectsResponse1,
  z.ZodTypeDef,
  unknown
> = z.object({
  slugs: z.array(types.string()),
  preset: types.optional(
    GetProjectsToProjectsResponse200ApplicationJSONPreset$inboundSchema,
  ),
});

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

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

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

/** @internal */
export const GetProjectsResponseBodyOidcProviders$inboundSchema: z.ZodType<
  GetProjectsResponseBodyOidcProviders,
  z.ZodTypeDef,
  unknown
> = z.object({
  to: smartUnion([
    z.lazy(() => GetProjectsToProjectsResponse1$inboundSchema),
    z.lazy(() => GetProjectsToProjectsResponse2$inboundSchema),
  ]),
  label: types.optional(types.string()),
  claims: z.record(z.array(types.string())),
});

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

/** @internal */
export const GetProjectsResponseBodyTrustedSources$inboundSchema: z.ZodType<
  GetProjectsResponseBodyTrustedSources,
  z.ZodTypeDef,
  unknown
> = z.object({
  enableVercelCiSameRepository: types.optional(types.boolean()),
  projects: types.optional(
    z.record(z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200Projects$inboundSchema
    )),
  ),
  oidcProviders: types.optional(
    z.record(z.array(z.lazy(() =>
      GetProjectsResponseBodyOidcProviders$inboundSchema
    ))),
  ),
});

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyGitProviderOptions$inboundSchema: z.ZodType<
  GetProjectsResponseBodyGitProviderOptions,
  z.ZodTypeDef,
  unknown
> = z.object({
  createDeployments: GetProjectsResponseBodyCreateDeployments$inboundSchema,
  disableRepositoryDispatchEvents: types.optional(types.boolean()),
  requireVerifiedCommits: types.optional(types.boolean()),
  gitCommitStatus: types.optional(types.boolean()),
  consolidatedGitCommitStatus: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyConsolidatedGitCommitStatus$inboundSchema
    ),
  ),
});

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

/** @internal */
export const GetProjectsResponseBodyWebAnalytics$inboundSchema: z.ZodType<
  GetProjectsResponseBodyWebAnalytics,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  disabledAt: types.optional(types.number()),
  canceledAt: types.optional(types.number()),
  enabledAt: types.optional(types.number()),
  hasData: types.optional(types.literal(true)),
});

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

/** @internal */
export const GetProjectsSrc2$inboundSchema: z.ZodType<
  GetProjectsSrc2,
  z.ZodTypeDef,
  unknown
> = z.object({
  re: types.optional(types.string()),
  eq: types.optional(types.string()),
  neq: types.optional(types.string()),
  inc: types.optional(z.array(types.string())),
  ninc: types.optional(z.array(types.string())),
  pre: types.optional(types.string()),
  suf: types.optional(types.string()),
  gt: types.optional(types.number()),
  gte: types.optional(types.number()),
  lt: types.optional(types.number()),
  lte: types.optional(types.number()),
  list: types.optional(types.string()),
});

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

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

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

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

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

/** @internal */
export const GetProjectsValueProjectsResponse2$inboundSchema: z.ZodType<
  GetProjectsValueProjectsResponse2,
  z.ZodTypeDef,
  unknown
> = z.object({
  re: types.optional(types.string()),
  eq: types.optional(types.string()),
  neq: types.optional(types.string()),
  inc: types.optional(z.array(types.string())),
  ninc: types.optional(z.array(types.string())),
  pre: types.optional(types.string()),
  suf: types.optional(types.string()),
  gt: types.optional(types.number()),
  gte: types.optional(types.number()),
  lt: types.optional(types.number()),
  lte: types.optional(types.number()),
  list: types.optional(types.string()),
});

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsHas$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsHas,
  z.ZodTypeDef,
  unknown
> = z.object({
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType$inboundSchema,
  key: types.optional(types.string()),
  value: types.optional(
    smartUnion([
      types.string(),
      z.lazy(() => GetProjectsValueProjectsResponse2$inboundSchema),
    ]),
  ),
});

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

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

/** @internal */
export const GetProjectsValueProjectsResponse2002$inboundSchema: z.ZodType<
  GetProjectsValueProjectsResponse2002,
  z.ZodTypeDef,
  unknown
> = z.object({
  re: types.optional(types.string()),
  eq: types.optional(types.string()),
  neq: types.optional(types.string()),
  inc: types.optional(z.array(types.string())),
  ninc: types.optional(z.array(types.string())),
  pre: types.optional(types.string()),
  suf: types.optional(types.string()),
  gt: types.optional(types.number()),
  gte: types.optional(types.number()),
  lt: types.optional(types.number()),
  lte: types.optional(types.number()),
  list: types.optional(types.string()),
});

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsMissing$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsMissing,
  z.ZodTypeDef,
  unknown
> = z.object({
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesType$inboundSchema,
  key: types.optional(types.string()),
  value: types.optional(
    smartUnion([
      types.string(),
      z.lazy(() => GetProjectsValueProjectsResponse2002$inboundSchema),
    ]),
  ),
});

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsMitigate$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsMitigate,
  z.ZodTypeDef,
  unknown
> = z.object({
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityAction$inboundSchema,
  rule_id: types.string(),
  ttl: types.optional(types.number()),
  erl: types.optional(z.lazy(() => ResponseBodyErl$inboundSchema)),
  log_headers: types.optional(
    smartUnion([
      z.array(types.string()),
      GetProjectsLogHeadersProjectsResponse200ApplicationJSONResponseBody2Projects2$inboundSchema,
    ]),
  ),
}).transform((v) => {
  return remap$(v, {
    "rule_id": "ruleId",
    "log_headers": "logHeaders",
  });
});

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsTransforms$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsTransforms,
  z.ZodTypeDef,
  unknown
> = z.object({
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesTransformsType$inboundSchema,
  op: GetProjectsResponseBodyOp$inboundSchema,
  target: z.lazy(() =>
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2Target$inboundSchema
  ),
  args: types.string(),
});

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

/** @internal */
export const ResponseBodyFirewallRoutes$inboundSchema: z.ZodType<
  ResponseBodyFirewallRoutes,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.optional(
    smartUnion([types.string(), z.lazy(() => GetProjectsSrc2$inboundSchema)]),
  ),
  tierRequirement: types.optional(ResponseBodyTierRequirement$inboundSchema),
  has: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyProjectsHas$inboundSchema)),
  ),
  missing: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyProjectsMissing$inboundSchema)),
  ),
  dest: types.optional(types.string()),
  status: types.optional(types.number()),
  handle: types.optional(GetProjectsResponseBodyHandle$inboundSchema),
  mitigate: types.optional(
    z.lazy(() => GetProjectsResponseBodyProjectsMitigate$inboundSchema),
  ),
  transforms: types.optional(
    z.array(
      z.lazy(() => GetProjectsResponseBodyProjectsTransforms$inboundSchema),
    ),
  ),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyManagedRules$inboundSchema: z.ZodType<
  GetProjectsResponseBodyManagedRules,
  z.ZodTypeDef,
  unknown
> = z.object({
  vercel_ruleset: z.lazy(() =>
    GetProjectsResponseBodyVercelRuleset$inboundSchema
  ),
  traffic_sources: z.lazy(() =>
    GetProjectsResponseBodyTrafficSources$inboundSchema
  ),
  bot_filter: z.lazy(() => GetProjectsResponseBodyBotFilter$inboundSchema),
  ai_bots: z.lazy(() => GetProjectsResponseBodyAiBots$inboundSchema),
  owasp: z.lazy(() => GetProjectsResponseBodyOwasp$inboundSchema),
}).transform((v) => {
  return remap$(v, {
    "vercel_ruleset": "vercelRuleset",
    "traffic_sources": "trafficSources",
    "bot_filter": "botFilter",
    "ai_bots": "aiBots",
  });
});

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodySecurity$inboundSchema: z.ZodType<
  GetProjectsResponseBodySecurity,
  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(z.lazy(() => ResponseBodyFirewallRoutes$inboundSchema)),
  ),
  rulesets: types.optional(
    z.record(z.lazy(() => GetProjectsResponseBodyRulesets$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(() => GetProjectsResponseBodyManagedRules$inboundSchema),
  ).optional(),
  botIdEnabled: types.optional(types.boolean()),
  requestLogsKey: types.optional(z.array(types.string())),
  log_headers: types.optional(
    smartUnion([
      z.array(types.string()),
      GetProjectsLogHeadersProjectsResponse2$inboundSchema,
    ]),
  ),
  securityPlus: types.optional(types.boolean()),
  securityPlusMetadata: types.optional(
    z.lazy(() => GetProjectsResponseBodySecurityPlusMetadata$inboundSchema),
  ),
  pageIntegrityEnabled: types.optional(types.boolean()),
}).transform((v) => {
  return remap$(v, {
    "log_headers": "logHeaders",
  });
});

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyBlock$inboundSchema: z.ZodType<
  GetProjectsResponseBodyBlock,
  z.ZodTypeDef,
  unknown
> = z.object({
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAbuseAction$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 getProjectsResponseBodyBlockFromJSON(
  jsonString: string,
): SafeParseResult<GetProjectsResponseBodyBlock, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => GetProjectsResponseBodyBlock$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetProjectsResponseBodyBlock' from JSON`,
  );
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsBlockHistoryProjects4$inboundSchema: z.ZodType<
  GetProjectsBlockHistoryProjects4,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("route-unblocked"),
  route: smartUnion([
    z.lazy(() => GetProjectsRouteProjectsResponse2001$inboundSchema),
    z.lazy(() => GetProjectsRouteProjectsResponse2002$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 getProjectsBlockHistoryProjects4FromJSON(
  jsonString: string,
): SafeParseResult<GetProjectsBlockHistoryProjects4, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => GetProjectsBlockHistoryProjects4$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetProjectsBlockHistoryProjects4' from JSON`,
  );
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsBlockHistoryProjects3$inboundSchema: z.ZodType<
  GetProjectsBlockHistoryProjects3,
  z.ZodTypeDef,
  unknown
> = z.object({
  action: types.literal("route-blocked"),
  route: smartUnion([
    z.lazy(() => GetProjectsRouteProjectsResponse1$inboundSchema),
    z.lazy(() => GetProjectsRouteProjectsResponse2$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 getProjectsBlockHistoryProjects3FromJSON(
  jsonString: string,
): SafeParseResult<GetProjectsBlockHistoryProjects3, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => GetProjectsBlockHistoryProjects3$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetProjectsBlockHistoryProjects3' from JSON`,
  );
}

/** @internal */
export const GetProjectsBlockHistoryProjects2$inboundSchema: z.ZodType<
  GetProjectsBlockHistoryProjects2,
  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 getProjectsBlockHistoryProjects2FromJSON(
  jsonString: string,
): SafeParseResult<GetProjectsBlockHistoryProjects2, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => GetProjectsBlockHistoryProjects2$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetProjectsBlockHistoryProjects2' from JSON`,
  );
}

/** @internal */
export const GetProjectsBlockHistoryProjects1$inboundSchema: z.ZodType<
  GetProjectsBlockHistoryProjects1,
  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 getProjectsBlockHistoryProjects1FromJSON(
  jsonString: string,
): SafeParseResult<GetProjectsBlockHistoryProjects1, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => GetProjectsBlockHistoryProjects1$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetProjectsBlockHistoryProjects1' from JSON`,
  );
}

/** @internal */
export const GetProjectsResponseBodyBlockHistory$inboundSchema: z.ZodType<
  GetProjectsResponseBodyBlockHistory,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsBlockHistoryProjects1$inboundSchema),
  z.lazy(() => GetProjectsBlockHistoryProjects2$inboundSchema),
  z.lazy(() => GetProjectsBlockHistoryProjects3$inboundSchema),
  z.lazy(() => GetProjectsBlockHistoryProjects4$inboundSchema),
]);

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

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

/** @internal */
export const GetProjectsResponseBodyInterstitialHistory$inboundSchema:
  z.ZodType<GetProjectsResponseBodyInterstitialHistory, z.ZodTypeDef, unknown> =
    z.object({
      action:
        GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAbuseInterstitialHistoryAction$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 getProjectsResponseBodyInterstitialHistoryFromJSON(
  jsonString: string,
): SafeParseResult<
  GetProjectsResponseBodyInterstitialHistory,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetProjectsResponseBodyInterstitialHistory$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetProjectsResponseBodyInterstitialHistory' from JSON`,
  );
}

/** @internal */
export const GetProjectsResponseBodyAbuse$inboundSchema: z.ZodType<
  GetProjectsResponseBodyAbuse,
  z.ZodTypeDef,
  unknown
> = z.object({
  scanner: types.optional(types.string()),
  history: z.array(z.lazy(() => GetProjectsResponseBodyHistory$inboundSchema)),
  updatedAt: types.number(),
  block: types.optional(
    z.lazy(() => GetProjectsResponseBodyBlock$inboundSchema),
  ),
  blockHistory: types.optional(
    z.array(z.union([
      z.lazy(() => GetProjectsBlockHistoryProjects1$inboundSchema),
      z.lazy(() =>
        GetProjectsBlockHistoryProjects2$inboundSchema
      ),
      z.lazy(() => GetProjectsBlockHistoryProjects3$inboundSchema),
      z.lazy(() => GetProjectsBlockHistoryProjects4$inboundSchema),
    ])),
  ),
  interstitial: types.optional(types.boolean()),
  interstitialHistory: types.optional(
    z.array(z.lazy(() =>
      GetProjectsResponseBodyInterstitialHistory$inboundSchema
    )),
  ),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyProjects$inboundSchema: z.ZodType<
  ResponseBodyProjects,
  z.ZodTypeDef,
  unknown
> = z.object({
  accountId: types.string(),
  creator: types.optional(
    GetProjectsResponseBodyProjectsResponse200Creator$inboundSchema,
  ),
  alias: z.array(GetProjectsResponseBodyAlias$inboundSchema),
  analytics: types.optional(GetProjectsResponseBodyAnalytics$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:
    GetProjectsResponseBodyDeploymentExpiration$inboundSchema,
  installCommand: z.nullable(types.string()).optional(),
  ipBuckets: types.optional(
    z.array(GetProjectsResponseBodyIpBuckets$inboundSchema),
  ),
  env: types.optional(z.array(GetProjectsResponseBodyEnv$inboundSchema)),
  framework: z.nullable(GetProjectsResponseBodyFramework$inboundSchema)
    .optional(),
  gitForkProtection: types.optional(types.boolean()),
  id: types.string(),
  latestDeployments: types.optional(
    z.array(GetProjectsResponseBodyLatestDeployments$inboundSchema),
  ),
  link: types.optional(GetProjectsResponseBodyLink$inboundSchema),
  name: types.string(),
  nodeVersion: GetProjectsResponseBodyProjectsNodeVersion$inboundSchema,
  outputDirectory: z.nullable(types.string()).optional(),
  passwordProtection: z.nullable(
    GetProjectsResponseBodyPasswordProtection$inboundSchema,
  ).optional(),
  passport: z.nullable(GetProjectsResponseBodyPassport$inboundSchema)
    .optional(),
  resourceConfig: GetProjectsResponseBodyProjectsResourceConfig$inboundSchema,
  rollingRelease: z.nullable(
    GetProjectsResponseBodyRollingRelease$inboundSchema,
  ).optional(),
  rootDirectory: z.nullable(types.string()).optional(),
  serverlessFunctionRegion: types.string(),
  serverlessFunctionZeroConfigFailover: types.optional(types.boolean()),
  speedInsights: types.optional(
    GetProjectsResponseBodySpeedInsights$inboundSchema,
  ),
  skipGitConnectDuringLink: types.optional(types.boolean()),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  ssoProtection: z.nullable(GetProjectsResponseBodySsoProtection$inboundSchema)
    .optional(),
  targets: types.optional(
    z.record(types.nullable(GetProjectsResponseBodyTargets$inboundSchema)),
  ),
  transferCompletedAt: types.optional(types.number()),
  transferStartedAt: types.optional(types.number()),
  transferToAccountId: types.optional(types.string()),
  transferredFromAccountId: types.optional(types.string()),
  trustedSources: z.nullable(
    z.lazy(() => GetProjectsResponseBodyTrustedSources$inboundSchema),
  ).optional(),
  updatedAt: types.optional(types.number()),
  live: types.optional(types.boolean()),
  hasActiveBranches: types.optional(types.boolean()),
  gitComments: types.optional(
    z.lazy(() => GetProjectsResponseBodyGitComments$inboundSchema),
  ),
  gitProviderOptions: types.optional(
    z.lazy(() => GetProjectsResponseBodyGitProviderOptions$inboundSchema),
  ),
  paused: types.optional(types.boolean()),
  webAnalytics: types.optional(
    z.lazy(() => GetProjectsResponseBodyWebAnalytics$inboundSchema),
  ),
  security: types.optional(
    z.lazy(() => GetProjectsResponseBodySecurity$inboundSchema),
  ),
  oidcTokenConfig: types.optional(
    z.lazy(() => GetProjectsResponseBodyOidcTokenConfig$inboundSchema),
  ),
  tier: types.optional(GetProjectsResponseBodyTier$inboundSchema),
  abuse: types.optional(
    z.lazy(() => GetProjectsResponseBodyAbuse$inboundSchema),
  ),
  internalRoutes: types.optional(
    z.array(smartUnion([
      z.lazy(() => GetProjectsInternalRoutesProjects1$inboundSchema),
      z.lazy(() =>
        GetProjectsInternalRoutesProjects2$inboundSchema
      ),
    ])),
  ),
});

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

/** @internal */
export const Pagination1$inboundSchema: z.ZodType<
  Pagination1,
  z.ZodTypeDef,
  unknown
> = z.object({
  count: types.number(),
  next: types.nullable(types.string()),
});

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

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

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

/** @internal */
export const GetProjectsResponseBody2$inboundSchema: z.ZodType<
  GetProjectsResponseBody2,
  z.ZodTypeDef,
  unknown
> = z.object({
  projects: z.array(z.lazy(() => ResponseBodyProjects$inboundSchema)),
  pagination: smartUnion([
    Pagination$inboundSchema,
    z.lazy(() => Pagination1$inboundSchema),
  ]),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsCreator1$inboundSchema: z.ZodType<
  GetProjectsCreator1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("user"),
  via: types.nullable(
    z.union([
      z.lazy(() => GetProjectsVia1$inboundSchema),
      z.lazy(() => GetProjectsVia2$inboundSchema),
    ]),
  ),
  user: z.lazy(() => GetProjectsCreatorUser$inboundSchema),
});

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

/** @internal */
export const GetProjectsResponseBodyCreator$inboundSchema: z.ZodType<
  GetProjectsResponseBodyCreator,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsCreator1$inboundSchema),
  z.lazy(() => GetProjectsCreator2$inboundSchema),
  z.lazy(() => GetProjectsCreator3$inboundSchema),
  z.lazy(() => GetProjectsCreator4$inboundSchema),
]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsResponse200ApplicationJson1Creator$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1Creator,
    z.ZodTypeDef,
    unknown
  > = z.object({
    email: types.string(),
    githubLogin: types.optional(types.string()),
    gitlabLogin: types.optional(types.string()),
    uid: types.string(),
    username: types.string(),
  });

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

/** @internal */
export const GetProjectsResponseBodyProjectsResponseOidcTokenClaims$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsResponseOidcTokenClaims,
    z.ZodTypeDef,
    unknown
  > = z.object({
    iss: types.string(),
    sub: types.string(),
    scope: types.string(),
    aud: types.string(),
    owner: types.string(),
    owner_id: types.string(),
    project: types.string(),
    project_id: types.string(),
    environment: types.string(),
    custom_environment_id: types.optional(types.string()),
    mfe_group_ids: types.optional(z.array(types.string())),
    plan: types.optional(types.string()),
  }).transform((v) => {
    return remap$(v, {
      "owner_id": "ownerId",
      "project_id": "projectId",
      "custom_environment_id": "customEnvironmentId",
      "mfe_group_ids": "mfeGroupIds",
    });
  });

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

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

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

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

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

/** @internal */
export const ResponseBodyDeployment$inboundSchema: z.ZodType<
  ResponseBodyDeployment,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  alias: types.optional(z.array(types.string())),
  aliasAssigned: z.nullable(smartUnion([types.number(), types.boolean()]))
    .optional(),
  aliasError: z.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponseAliasError$inboundSchema
    ),
  ).optional(),
  aliasFinal: z.nullable(types.string()).optional(),
  automaticAliases: types.optional(z.array(types.string())),
  branchMatcher: types.optional(
    z.lazy(() => GetProjectsResponseBodyProjectsBranchMatcher$inboundSchema),
  ),
  buildingAt: types.optional(types.number()),
  builds: types.optional(
    z.array(z.lazy(() =>
      GetProjectsResponseBodyProjectsResponseBuilds$inboundSchema
    )),
  ),
  checksConclusion: types.optional(
    GetProjectsResponseBodyProjectsResponseChecksConclusion$inboundSchema,
  ),
  checksState: types.optional(
    GetProjectsResponseBodyProjectsResponseChecksState$inboundSchema,
  ),
  connectBuildsEnabled: types.optional(types.boolean()),
  connectConfigurationId: types.optional(types.string()),
  createdAt: types.number(),
  createdIn: types.string(),
  creator: types.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson1Creator$inboundSchema
    ),
  ),
  deletedAt: types.optional(types.number()),
  deploymentHostname: types.string(),
  forced: types.optional(types.boolean()),
  name: types.string(),
  meta: types.optional(z.record(types.string())),
  monorepoManager: z.nullable(types.string()).optional(),
  oidcTokenClaims: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponseOidcTokenClaims$inboundSchema
    ),
  ),
  plan: GetProjectsResponseBodyProjectsResponsePlan$inboundSchema,
  previewCommentsEnabled: types.optional(types.boolean()),
  private: types.boolean(),
  readyAt: types.optional(types.number()),
  readyState: GetProjectsResponseBodyProjectsResponseReadyState$inboundSchema,
  readySubstate: types.optional(
    GetProjectsResponseBodyProjectsResponseReadySubstate$inboundSchema,
  ),
  requestedAt: types.optional(types.number()),
  target: z.nullable(types.string()).optional(),
  teamId: z.nullable(types.string()).optional(),
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJSONType$inboundSchema,
  url: types.string(),
  userId: types.optional(types.string()),
  withCache: types.optional(types.boolean()),
});

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

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

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

/** @internal */
export const ResponseBodyAlias$inboundSchema: z.ZodType<
  ResponseBodyAlias,
  z.ZodTypeDef,
  unknown
> = z.object({
  configuredBy: z.nullable(ResponseBodyConfiguredBy$inboundSchema).optional(),
  configuredChangedAt: z.nullable(types.number()).optional(),
  createdAt: z.nullable(types.number()).optional(),
  deployment: types.nullable(
    z.lazy(() => ResponseBodyDeployment$inboundSchema),
  ),
  domain: types.string(),
  environment: ResponseBodyEnvironment$inboundSchema,
  gitBranch: z.nullable(types.string()).optional(),
  redirect: z.nullable(types.string()).optional(),
  redirectStatusCode: z.nullable(types.number()).optional(),
  target: GetProjectsResponseBodyTarget$inboundSchema,
});

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

/** @internal */
export const ResponseBodyAnalytics$inboundSchema: z.ZodType<
  ResponseBodyAnalytics,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  canceledAt: z.nullable(types.number()).optional(),
  disabledAt: types.number(),
  enabledAt: types.number(),
  paidAt: types.optional(types.number()),
  sampleRatePercent: z.nullable(types.number()).optional(),
  spendLimitInDollars: z.nullable(types.number()).optional(),
});

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

/** @internal */
export const ResponseBodyDeploymentExpiration$inboundSchema: z.ZodType<
  ResponseBodyDeploymentExpiration,
  z.ZodTypeDef,
  unknown
> = z.object({
  expirationDays: types.optional(types.number()),
  expirationDaysProduction: types.optional(types.number()),
  expirationDaysCanceled: types.optional(types.number()),
  expirationDaysErrored: types.optional(types.number()),
  deploymentsToKeep: types.optional(types.number()),
});

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