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,558 lines 146 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 {
  GetProjectsResponseBodyAnalytics,
  GetProjectsResponseBodyAnalytics$inboundSchema,
  GetProjectsResponseBodyDeploymentExpiration,
  GetProjectsResponseBodyDeploymentExpiration$inboundSchema,
  GetProjectsResponseBodyEnv,
  GetProjectsResponseBodyEnv$inboundSchema,
  GetProjectsResponseBodyFramework,
  GetProjectsResponseBodyFramework$inboundSchema,
  GetProjectsResponseBodyIpBuckets,
  GetProjectsResponseBodyIpBuckets$inboundSchema,
  GetProjectsResponseBodyLatestDeployments,
  GetProjectsResponseBodyLatestDeployments$inboundSchema,
  GetProjectsResponseBodyLink,
  GetProjectsResponseBodyLink$inboundSchema,
  GetProjectsResponseBodyProjectsNodeVersion,
  GetProjectsResponseBodyProjectsNodeVersion$inboundSchema,
  ResponseBodyAlias,
  ResponseBodyAlias$inboundSchema,
} from "./getprojectsresponsebodyprojectsnodeversion.js";
import { Pagination, Pagination$inboundSchema } from "./pagination.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

export type GetProjectsResponseBodyPasswordProtection = {};

export const GetProjectsResponseBodyProjectsDeploymentType = {
  All: "all",
  AllExceptCustomDomains: "all_except_custom_domains",
  Preview: "preview",
  ProdDeploymentUrlsAndAllPreviews: "prod_deployment_urls_and_all_previews",
} as const;
export type GetProjectsResponseBodyProjectsDeploymentType = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsDeploymentType
>;

export type GetProjectsResponseBodyPassport = {
  deploymentType: GetProjectsResponseBodyProjectsDeploymentType;
  connectorId: string;
};

export const GetProjectsResponseBodyFunctionDefaultMemoryType = {
  Performance: "performance",
  PerformanceXl: "performance_xl",
  Standard: "standard",
  StandardLegacy: "standard_legacy",
} as const;
export type GetProjectsResponseBodyFunctionDefaultMemoryType = ClosedEnum<
  typeof GetProjectsResponseBodyFunctionDefaultMemoryType
>;

export const GetProjectsResponseBodyBuildMachineType = {
  Enhanced: "enhanced",
  Standard: "standard",
  Turbo: "turbo",
} as const;
export type GetProjectsResponseBodyBuildMachineType = ClosedEnum<
  typeof GetProjectsResponseBodyBuildMachineType
>;

export const GetProjectsResponseBodyBuildMachineSelection = {
  Elastic: "elastic",
  Fixed: "fixed",
} as const;
export type GetProjectsResponseBodyBuildMachineSelection = ClosedEnum<
  typeof GetProjectsResponseBodyBuildMachineSelection
>;

export const GetProjectsResponseBodyProjectsConfiguration = {
  SkipNamespaceQueue: "SKIP_NAMESPACE_QUEUE",
  WaitForNamespaceQueue: "WAIT_FOR_NAMESPACE_QUEUE",
} as const;
export type GetProjectsResponseBodyProjectsConfiguration = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsConfiguration
>;

export type GetProjectsResponseBodyBuildQueue = {
  configuration?: GetProjectsResponseBodyProjectsConfiguration | undefined;
};

export type GetProjectsResponseBodyResourceConfig = {
  elasticConcurrencyEnabled?: boolean | undefined;
  fluid?: boolean | undefined;
  functionDefaultRegions: Array<string>;
  functionDefaultTimeout?: number | undefined;
  functionDefaultMemoryType?:
    | GetProjectsResponseBodyFunctionDefaultMemoryType
    | undefined;
  functionZeroConfigFailover?: boolean | undefined;
  buildMachineType?: GetProjectsResponseBodyBuildMachineType | undefined;
  buildMachineSelection?:
    | GetProjectsResponseBodyBuildMachineSelection
    | undefined;
  buildMachineElasticLastUpdated?: number | undefined;
  isNSNBDisabled?: boolean | undefined;
  buildQueue?: GetProjectsResponseBodyBuildQueue | undefined;
  enableFunctionsBeta?: boolean | undefined;
};

/**
 * An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100.
 */
export type GetProjectsResponseBodyStages = {
  /**
   * The percentage of traffic to serve to the canary deployment (0-100)
   */
  targetPercentage: number;
  /**
   * Whether or not this stage requires manual approval to proceed
   */
  requireApproval?: boolean | undefined;
  /**
   * Duration in minutes for automatic advancement to the next stage
   */
  duration?: number | undefined;
  /**
   * Whether to linearly shift traffic over the duration of this stage
   */
  linearShift?: boolean | undefined;
};

/**
 * Project-level rolling release configuration that defines how deployments should be gradually rolled out
 */
export type GetProjectsResponseBodyRollingRelease = {
  /**
   * The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.
   */
  target: string;
  /**
   * An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100.
   */
  stages?: Array<GetProjectsResponseBodyStages> | null | undefined;
  /**
   * Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.
   */
  canaryResponseHeader?: boolean | undefined;
};

export type GetProjectsResponseBodySpeedInsights = {
  id: string;
  enabledAt?: number | undefined;
  disabledAt?: number | undefined;
  canceledAt?: number | undefined;
  hasData?: boolean | undefined;
  paidAt?: number | undefined;
};

export const GetProjectsResponseBodyProjectsResponseDeploymentType = {
  All: "all",
  AllExceptCustomDomains: "all_except_custom_domains",
  Preview: "preview",
  ProdDeploymentUrlsAndAllPreviews: "prod_deployment_urls_and_all_previews",
} as const;
export type GetProjectsResponseBodyProjectsResponseDeploymentType = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsResponseDeploymentType
>;

export const GetProjectsResponseBodyCve55182MigrationAppliedFrom = {
  All: "all",
  AllExceptCustomDomains: "all_except_custom_domains",
  Preview: "preview",
  ProdDeploymentUrlsAndAllPreviews: "prod_deployment_urls_and_all_previews",
} as const;
export type GetProjectsResponseBodyCve55182MigrationAppliedFrom = ClosedEnum<
  typeof GetProjectsResponseBodyCve55182MigrationAppliedFrom
>;

export const GetProjectsResponseBodyApril2026SecurityIncidentMigrationAppliedFrom =
  {
    All: "all",
    AllExceptCustomDomains: "all_except_custom_domains",
    Preview: "preview",
    ProdDeploymentUrlsAndAllPreviews: "prod_deployment_urls_and_all_previews",
  } as const;
export type GetProjectsResponseBodyApril2026SecurityIncidentMigrationAppliedFrom =
  ClosedEnum<
    typeof GetProjectsResponseBodyApril2026SecurityIncidentMigrationAppliedFrom
  >;

export type GetProjectsResponseBodySsoProtection = {
  deploymentType: GetProjectsResponseBodyProjectsResponseDeploymentType;
  cve55182MigrationAppliedFrom?:
    | GetProjectsResponseBodyCve55182MigrationAppliedFrom
    | null
    | undefined;
  april2026SecurityIncidentMigrationAppliedFrom?:
    | GetProjectsResponseBodyApril2026SecurityIncidentMigrationAppliedFrom
    | null
    | undefined;
};

export type GetProjectsResponseBodyProjectsResponse200AliasAssigned =
  | number
  | boolean;

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

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

export type GetProjectsResponseBodyTargets = {
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  builds?:
    | Array<GetProjectsResponseBodyProjectsResponse200ApplicationJSONBuilds>
    | undefined;
  createdAt: number;
  createdIn: string;
  creator:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJSONCreator
    | null;
  deploymentHostname: string;
  name: string;
  forced?: boolean | undefined;
  id: string;
  meta?: { [k: string]: string } | undefined;
  plan: string;
  private: boolean;
  readyState: string;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type: string;
  url: string;
  userId: string;
  withCache?: boolean | undefined;
};

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

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

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

/**
 * 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 = {
  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;
};

export type ResponseBodySrc = string | GetProjectsSrc2;

export const GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsType =
  {
    Cookie: "cookie",
    Environment: "environment",
    Header: "header",
    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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsType
  >;

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

export type GetProjectsResponseBodyProjectsResponse200Value =
  | string
  | GetProjectsValueProjectsResponse2;

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

export const GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType =
  {
    Cookie: "cookie",
    Environment: "environment",
    Header: "header",
    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 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;
};

export type GetProjectsResponseBodyProjectsResponseValue =
  | string
  | GetProjectsValueProjectsResponse2002;

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsResponse200LogHeaders =
  | Array<string>
  | GetProjectsLogHeadersProjectsResponse200ApplicationJson2;

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

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

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

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

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

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

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

export type GetProjectsResponseBodyBotFilter = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesAction
    | 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 GetProjectsLogHeadersProjects2 = {
  Wildcard: "*",
} as const;
export type GetProjectsLogHeadersProjects2 = ClosedEnum<
  typeof GetProjectsLogHeadersProjects2
>;

export type GetProjectsResponseBodyLogHeaders =
  | Array<string>
  | GetProjectsLogHeadersProjects2;

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;
  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> | GetProjectsLogHeadersProjects2 | 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 type GetProjectsResponseBodyHistory = {
  scanner: string;
  reason: string;
  by: string;
  byId: string;
  at: number;
};

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

export type GetProjectsResponseBodyBlock = {
  action: GetProjectsResponseBodyProjectsResponse200ApplicationJson2Action;
  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;
};

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

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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction =
  {
    AddDeploymentInterstitial: "add-deployment-interstitial",
    AddProjectInterstitial: "add-project-interstitial",
    RemoveDeploymentInterstitial: "remove-deployment-interstitial",
    RemoveProjectInterstitial: "remove-project-interstitial",
  } as const;
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction
  >;

export type GetProjectsResponseBodyInterstitialHistory = {
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction;
  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;
};

export type GetProjectsResponseBodyInternalRoutes =
  | GetProjectsInternalRoutesProjects1
  | GetProjectsInternalRoutesProjects2;

export type ResponseBodyProjects = {
  accountId: string;
  alias: Array<ResponseBodyAlias>;
  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: GetProjectsResponseBodyResourceConfig;
  /**
   * 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?: string | 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 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 GetProjectsResponseBodyProjectsResponseBuilds = {
  use: string;
  src?: string | undefined;
  dest?: string | undefined;
};

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

export type ResponseBodyDeployment = {
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  builds?: Array<GetProjectsResponseBodyProjectsResponseBuilds> | undefined;
  createdAt: number;
  createdIn: string;
  creator: GetProjectsResponseBodyProjectsResponseCreator | null;
  deploymentHostname: string;
  name: string;
  forced?: boolean | undefined;
  id: string;
  meta?: { [k: string]: string } | undefined;
  plan: string;
  private: boolean;
  readyState: string;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type: string;
  url: string;
  userId: string;
  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 Alias = {
  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;
};

export type ResponseBodyIpBuckets = {
  bucket: string;
  default?: boolean | undefined;
  supportUntil?: number | undefined;
};

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

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

export type GetProjectsResponseBodyProjectsTarget =
  | Array<GetProjectsTarget1>
  | GetProjectsTarget2;

export const GetProjectsResponseBodyType = {
  Encrypted: "encrypted",
  Plain: "plain",
  Secret: "secret",
  Sensitive: "sensitive",
  System: "system",
} as const;
export type GetProjectsResponseBodyType = ClosedEnum<
  typeof GetProjectsResponseBodyType
>;

export type GetProjectsContentHint17 = {
  type: "flags-connection-string";
  projectId: string;
};

export type GetProjectsContentHint16 = {
  type: "integration-store-secret";
  storeId: string;
  integrationId: string;
  integrationProductId: string;
  integrationConfigurationId: string;
};

export type GetProjectsContentHint15 = {
  type: "postgres-url-no-ssl";
  storeId: string;
};

export type GetProjectsContentHint14 = {
  type: "postgres-database";
  storeId: string;
};

export type GetProjectsContentHint13 = {
  type: "postgres-password";
  storeId: string;
};

export type GetProjectsContentHint12 = {
  type: "postgres-host";
  storeId: string;
};

export type GetProjectsContentHint11 = {
  type: "postgres-user";
  storeId: string;
};

export type GetProjectsContentHint10 = {
  type: "postgres-prisma-url";
  storeId: string;
};

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyResourceConfig$inboundSchema: z.ZodType<
  GetProjectsResponseBodyResourceConfig,
  z.ZodTypeDef,
  unknown
> = z.object({
  elasticConcurrencyEnabled: types.optional(types.boolean()),
  fluid: types.optional(types.boolean()),
  functionDefaultRegions: z.array(types.string()),
  functionDefaultTimeout: types.optional(types.number()),
  functionDefaultMemoryType: types.optional(
    GetProjectsResponseBodyFunctionDefaultMemoryType$inboundSchema,
  ),
  functionZeroConfigFailover: types.optional(types.boolean()),
  buildMachineType: types.optional(
    GetProjectsResponseBodyBuildMachineType$inboundSchema,
  ),
  buildMachineSelection: types.optional(
    GetProjectsResponseBodyBuildMachineSelection$inboundSchema,
  ),
  buildMachineElasticLastUpdated: types.optional(types.number()),
  isNSNBDisabled: types.optional(types.boolean()),
  buildQueue: types.optional(
    z.lazy(() => GetProjectsResponseBodyBuildQueue$inboundSchema),
  ),
  enableFunctionsBeta: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsResponseBodyStages$inboundSchema: z.ZodType<
  GetProjectsResponseBodyStages,
  z.ZodTypeDef,
  unknown
> = z.object({
  targetPercentage: types.number(),
  requireApproval: types.optional(types.boolean()),
  duration: types.optional(types.number()),
  linearShift: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsResponseBodyRollingRelease$inboundSchema: z.ZodType<
  GetProjectsResponseBodyRollingRelease,
  z.ZodTypeDef,
  unknown
> = z.object({
  target: types.string(),
  stages: z.nullable(
    z.array(z.lazy(() => GetProjectsResponseBodyStages$inboundSchema)),
  ).optional(),
  canaryResponseHeader: types.optional(types.boolean()),
});

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodySsoProtection$inboundSchema: z.ZodType<
  GetProjectsResponseBodySsoProtection,
  z.ZodTypeDef,
  unknown
> = z.object({
  deploymentType:
    GetProjectsResponseBodyProjectsResponseDeploymentType$inboundSchema,
  cve55182MigrationAppliedFrom: z.nullable(
    GetProjectsResponseBodyCve55182MigrationAppliedFrom$inboundSchema,
  ).optional(),
  april2026SecurityIncidentMigrationAppliedFrom: z.nullable(
    GetProjectsResponseBodyApril2026SecurityIncidentMigrationAppliedFrom$inboundSchema,
  ).optional(),
});

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyTargets$inboundSchema: z.ZodType<
  GetProjectsResponseBodyTargets,
  z.ZodTypeDef,
  unknown
> = z.object({
  alias: types.optional(z.array(types.string())),
  aliasAssigned: z.nullable(smartUnion([types.number(), types.boolean()]))
    .optional(),
  builds: types.optional(
    z.array(z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJSONBuilds$inboundSchema
    )),
  ),
  createdAt: types.number(),
  createdIn: types.string(),
  creator: types.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJSONCreator$inboundSchema
    ),
  ),
  deploymentHostname: types.string(),
  name: types.string(),
  forced: types.optional(types.boolean()),
  id: types.string(),
  meta: types.optional(z.record(types.string())),
  plan: types.string(),
  private: types.boolean(),
  readyState: types.string(),
  requestedAt: types.optional(types.number()),
  target: z.nullable(types.string()).optional(),
  teamId: z.nullable(types.string()).optional(),
  type: types.string(),
  url: types.string(),
  userId: types.string(),
  withCache: types.optional(types.boolean()),
});

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

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

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

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

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

/** @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),
  z.lazy(() => 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),
    z.lazy(() => 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({
  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()),
});

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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsType$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsType
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsType,
  );

/** @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()),
});

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:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsType$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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType,
  );

/** @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()),
});

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:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityType$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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesAction$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesAction
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesAction,
  );

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

/** @internal */
export const ResponseBodyErl$inboundSchema: z.ZodType<
  ResponseBodyErl,
  z.ZodTypeDef,
  unknown
> = z.object({
  algo: GetProjectsResponseBodyAlgo$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 GetProjectsLogHeadersProjectsResponse200ApplicationJson2$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsLogHeadersProjectsResponse200ApplicationJson2
  > = z.nativeEnum(GetProjectsLogHeadersProjectsResponse200ApplicationJson2);

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsMitigate$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsMitigate,
  z.ZodTypeDef,
  unknown
> = z.object({
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityFirewallRoutesAction$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()),
      GetProjectsLogHeadersProjectsResponse200ApplicationJson2$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 ResponseBodyFirewallRoutes$inboundSchema: z.ZodType<
  ResponseBodyFirewallRoutes,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.optional(
    smartUnion([types.string(), z.lazy(() => GetProjectsSrc2$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),
  ),
});

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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesVercelRulesetAction$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesVercelRulesetAction
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesVercelRulesetAction,
  );

/** @internal */
export const GetProjectsResponseBodyVercelRuleset$inboundSchema: z.ZodType<
  GetProjectsResponseBodyVercelRuleset,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesVercelRulesetAction$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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityAction$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityAction
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityAction,
  );

/** @internal */
export const GetProjectsResponseBodyTrafficSources$inboundSchema: z.ZodType<
  GetProjectsResponseBodyTrafficSources,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityAction$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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesAction$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesAction
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesAction,
  );

/** @internal */
export const GetProjectsResponseBodyBotFilter$inboundSchema: z.ZodType<
  GetProjectsResponseBodyBotFilter,
  z.ZodTypeDef,
  unknown
> = z.object({
  active: types.boolean(),
  action: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsSecurityManagedRulesAction$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 GetProjectsLogHeadersProjects2$inboundSchema: z.ZodNativeEnum<
  typeof GetProjectsLogHeadersProjects2
> = z.nativeEnum(GetProjectsLogHeadersProjects2);

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

export function getProjectsResponseBodyLogHeadersFromJSON(
  jsonString: string,
): SafeParseResult<GetProjectsResponseBodyLogHeaders, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => GetProjectsResponseBodyLogHeaders$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetProjectsResponseBodyLogHeaders' 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)),
  ),
  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()),
      GetProjectsLogHeadersProjects2$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 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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2Action$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2Action
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2Action,
  );

/** @internal */
export const GetProjectsResponseBodyBlock$inboundSchema: z.ZodType<
  GetProjectsResponseBodyBlock,
  z.ZodTypeDef,
  unknown
> = z.object({
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2Action$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(),
});

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(),
});

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 GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction$inboundSchema:
  z.ZodNativeEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction
  > = z.nativeEnum(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction,
  );

/** @internal */
export const GetProjectsResponseBodyInterstitialHistory$inboundSchema:
  z.ZodType<GetProjectsResponseBodyInterstitialHistory, z.ZodTypeDef, unknown> =
    z.object({
      action:
        GetProjectsResponseBodyProjectsResponse200ApplicationJson2ProjectsAction$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(),
});

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(),
  alias: z.array(ResponseBodyAlias$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(
    z.lazy(() => GetProjectsResponseBodyPasswordProtection$inboundSchema),
  ).optional(),
  passport: z.nullable(
    z.lazy(() => GetProjectsResponseBodyPassport$inboundSchema),
  ).optional(),
  resourceConfig: z.lazy(() =>
    GetProjectsResponseBodyResourceConfig$inboundSchema
  ),
  rollingRelease: z.nullable(
    z.lazy(() => GetProjectsResponseBodyRollingRelease$inboundSchema),
  ).optional(),
  rootDirectory: z.nullable(types.string()).optional(),
  serverlessFunctionRegion: types.string(),
  serverlessFunctionZeroConfigFailover: types.optional(types.boolean()),
  speedInsights: types.optional(
    z.lazy(() => GetProjectsResponseBodySpeedInsights$inboundSchema),
  ),
  skipGitConnectDuringLink: types.optional(types.boolean()),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  ssoProtection: z.nullable(
    z.lazy(() => GetProjectsResponseBodySsoProtection$inboundSchema),
  ).optional(),
  targets: types.optional(
    z.record(types.nullable(z.lazy(() =>
      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(types.string()),
  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 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 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 GetProjectsResponseBodyProjectsResponseCreator$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsResponseCreator,
    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 getProjectsResponseBodyProjectsResponseCreatorFromJSON(
  jsonString: string,
): SafeParseResult<
  GetProjectsResponseBodyProjectsResponseCreator,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetProjectsResponseBodyProjectsResponseCreator$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetProjectsResponseBodyProjectsResponseCreator' from JSON`,
  );
}

/** @internal */
export const ResponseBodyDeployment$inboundSchema: z.ZodType<
  ResponseBodyDeployment,
  z.ZodTypeDef,
  unknown
> = z.object({
  alias: types.optional(z.array(types.string())),
  aliasAssigned: z.nullable(smartUnion([types.number(), types.boolean()]))
    .optional(),
  builds: types.optional(
    z.array(z.lazy(() =>
      GetProjectsResponseBodyProjectsResponseBuilds$inboundSchema
    )),
  ),
  createdAt: types.number(),
  createdIn: types.string(),
  creator: types.nullable(
    z.lazy(() => GetProjectsResponseBodyProjectsResponseCreator$inboundSchema),
  ),
  deploymentHostname: types.string(),
  name: types.string(),
  forced: types.optional(types.boolean()),
  id: types.string(),
  meta: types.optional(z.record(types.string())),
  plan: types.string(),
  private: types.boolean(),
  readyState: types.string(),
  requestedAt: types.optional(types.number()),
  target: z.nullable(types.string()).optional(),
  teamId: z.nullable(types.string()).optional(),
  type: types.string(),
  url: types.string(),
  userId: 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 Alias$inboundSchema: z.ZodType<Alias, 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 aliasFromJSON(
  jsonString: string,
): SafeParseResult<Alias, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => Alias$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'Alias' 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`,
  );
}

/** @internal */
export const ResponseBodyIpBuckets$inboundSchema: z.ZodType<
  ResponseBodyIpBuckets,
  z.ZodTypeDef,
  unknown
> = z.object({
  bucket: types.string(),
  default: types.optional(types.boolean()),
  supportUntil: types.optional(types.number()),
});

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsTarget$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsTarget,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.array(GetProjectsTarget1$inboundSchema),
  GetProjectsTarget2$inboundSchema,
]);

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

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

/** @internal */
export const GetProjectsContentHint17$inboundSchema: z.ZodType<
  GetProjectsContentHint17,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("flags-connection-string"),
  projectId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint16$inboundSchema: z.ZodType<
  GetProjectsContentHint16,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("integration-store-secret"),
  storeId: types.string(),
  integrationId: types.string(),
  integrationProductId: types.string(),
  integrationConfigurationId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint15$inboundSchema: z.ZodType<
  GetProjectsContentHint15,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-url-no-ssl"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint14$inboundSchema: z.ZodType<
  GetProjectsContentHint14,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-database"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint13$inboundSchema: z.ZodType<
  GetProjectsContentHint13,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-password"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint12$inboundSchema: z.ZodType<
  GetProjectsContentHint12,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-host"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint11$inboundSchema: z.ZodType<
  GetProjectsContentHint11,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-user"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint10$inboundSchema: z.ZodType<
  GetProjectsContentHint10,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("postgres-prisma-url"),
  storeId: types.string(),
});

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