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>

5,270 lines 190 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 { ACLAction, ACLAction$inboundSchema } from "./aclaction.js";
import {
  GetProjectsResponseBodyProjectsResponse200ApplicationJson3Action,
  GetProjectsResponseBodyProjectsResponse200ApplicationJson3Action$inboundSchema,
  GetProjectsResponseBodyProjectsResponseChecks,
  GetProjectsResponseBodyProjectsResponseChecks$inboundSchema,
  GetProjectsResponseBodyProjectsStages,
  GetProjectsResponseBodyProjectsStages$inboundSchema,
} from "./getprojectsresponsebodyprojectsresponse200applicationjson3action.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

/**
 * Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`.
 */
export type GetProjectsResponseBodyProjectsGate = {
  /**
   * Whether automated gating is enabled for this project's rollouts.
   */
  enabled: boolean;
  /**
   * The checks to evaluate. An empty array means nothing is evaluated.
   */
  checks: Array<GetProjectsResponseBodyProjectsResponseChecks>;
  /**
   * How many failing evaluations within {@link windowSize} trip the gate. Defaults to `3` when omitted.
   */
  failureThreshold?: number | undefined;
  /**
   * How many of the most recent evaluations {@link failureThreshold} is counted against. Defaults to `5` when omitted.
   */
  windowSize?: number | undefined;
  /**
   * What to do when the gate trips: pause the rollout, or roll it back.
   */
  action: GetProjectsResponseBodyProjectsResponse200ApplicationJson3Action;
  /**
   * When true, a tripped gate is only reported — {@link action} is not taken.
   */
  dryRun: boolean;
};

/**
 * Project-level rolling release configuration that defines how deployments should be gradually rolled out
 */
export type GetProjectsResponseBodyProjectsRollingRelease = {
  /**
   * 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<GetProjectsResponseBodyProjectsStages> | 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;
  /**
   * Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`.
   */
  gate?: GetProjectsResponseBodyProjectsGate | undefined;
};

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

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

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

export const GetProjectsResponseBodyProjectsResponseBuildMachineElasticReason =
  {
    BasicFloor: "basic-floor",
    BuildTimeoutFailure: "build-timeout-failure",
    EnospcFailure: "enospc-failure",
    EnterpriseFloor: "enterprise-floor",
    HighPeakDisk: "high-peak-disk",
    HighPeakMemory: "high-peak-memory",
    LongBuildDuration: "long-build-duration",
    OomFailure: "oom-failure",
    ShortBuildDuration: "short-build-duration",
    SustainedHighCpu: "sustained-high-cpu",
  } as const;
export type GetProjectsResponseBodyProjectsResponseBuildMachineElasticReason =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponseBuildMachineElasticReason
  >;

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

export type GetProjectsResponseBodyProjectsResponseBuildQueue = {
  configuration?:
    | GetProjectsResponseBodyProjectsResponse200Configuration
    | undefined;
};

export type ResponseBodyDefaultResourceConfig = {
  elasticConcurrencyEnabled?: boolean | undefined;
  fluid?: boolean | undefined;
  functionDefaultRegions: Array<string>;
  functionDefaultTimeout?: number | undefined;
  functionDefaultMemoryType?:
    | GetProjectsResponseBodyProjectsResponseFunctionDefaultMemoryType
    | undefined;
  functionZeroConfigFailover?: boolean | undefined;
  buildMachineType?:
    | GetProjectsResponseBodyProjectsResponseBuildMachineType
    | undefined;
  buildMachineSelection?:
    | GetProjectsResponseBodyProjectsResponseBuildMachineSelection
    | undefined;
  buildMachineElasticLastUpdated?: number | undefined;
  buildMachineElasticReason?:
    | GetProjectsResponseBodyProjectsResponseBuildMachineElasticReason
    | undefined;
  isNSNBDisabled?: boolean | undefined;
  buildQueue?: GetProjectsResponseBodyProjectsResponseBuildQueue | undefined;
  enableFunctionsBeta?: boolean | undefined;
};

export type ResponseBodyStaticIps = {
  builds: boolean;
  enabled: boolean;
  regions: Array<string>;
};

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

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

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

export type GetProjectsResponseBodyProjectsSsoProtection = {
  deploymentType:
    GetProjectsResponseBodyProjectsResponse200ApplicationJSONDeploymentType;
  cve55182MigrationAppliedFrom?:
    | GetProjectsResponseBodyProjectsCve55182MigrationAppliedFrom
    | null
    | undefined;
  april2026SecurityIncidentMigrationAppliedFrom?:
    | GetProjectsResponseBodyProjectsApril2026SecurityIncidentMigrationAppliedFrom
    | null
    | undefined;
};

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson3AliasAssigned =
  | number
  | boolean;

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

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

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

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsTargets = {
  id: string;
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  aliasError?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasError
    | null
    | undefined;
  aliasFinal?: string | null | undefined;
  automaticAliases?: Array<string> | undefined;
  branchMatcher?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsBranchMatcher
    | undefined;
  buildingAt?: number | undefined;
  builds?:
    | Array<
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsBuilds
    >
    | undefined;
  checksConclusion?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsChecksConclusion
    | undefined;
  checksState?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsChecksState
    | undefined;
  connectBuildsEnabled?: boolean | undefined;
  connectConfigurationId?: string | undefined;
  createdAt: number;
  createdIn: string;
  creator:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsCreator
    | null;
  deletedAt?: number | undefined;
  deploymentHostname: string;
  forced?: boolean | undefined;
  name: string;
  meta?: { [k: string]: string } | undefined;
  monorepoManager?: string | null | undefined;
  oidcTokenClaims?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsOidcTokenClaims
    | undefined;
  plan: GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsPlan;
  /**
   * Whether or not preview comments are enabled for the deployment
   */
  previewCommentsEnabled?: boolean | undefined;
  private: boolean;
  readyAt?: number | undefined;
  readyState:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsReadyState;
  readySubstate?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsReadySubstate
    | undefined;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsTargetsType;
  url: string;
  /**
   * Present for user creators; omitted for app/integration/system creators.
   */
  userId?: string | undefined;
  withCache?: boolean | undefined;
};

export type ResponseBodyPermissions = {
  oauth2Connection?: Array<ACLAction> | undefined;
  user?: Array<ACLAction> | undefined;
  userConnection?: Array<ACLAction> | undefined;
  userMfaConfiguration?: Array<ACLAction> | undefined;
  userPreference?: Array<ACLAction> | undefined;
  userSudo?: Array<ACLAction> | undefined;
  webAuthn?: Array<ACLAction> | undefined;
  accessGroup?: Array<ACLAction> | undefined;
  agent?: Array<ACLAction> | undefined;
  aiGatewayApiKey?: Array<ACLAction> | undefined;
  aiGatewayApiKeyBypassAll?: Array<ACLAction> | undefined;
  aiGatewayApiKeyOwnedBySelf?: Array<ACLAction> | undefined;
  aiGatewayApiKeySpendAttribution?: Array<ACLAction> | undefined;
  aiGatewayApiKeyZdrExemption?: Array<ACLAction> | undefined;
  aiGatewayBudget?: Array<ACLAction> | undefined;
  aiGatewayCredits?: Array<ACLAction> | undefined;
  aiGatewayPrivateModels?: Array<ACLAction> | undefined;
  aiGatewayGuardrails?: Array<ACLAction> | undefined;
  aiGatewayRules?: Array<ACLAction> | undefined;
  aiGatewaySettings?: Array<ACLAction> | undefined;
  aiGatewayTranscripts?: Array<ACLAction> | undefined;
  aiGatewayTranscriptsSettings?: Array<ACLAction> | undefined;
  aiGatewayUsage?: Array<ACLAction> | undefined;
  aiGatewayVirtualModelConfigs?: Array<ACLAction> | undefined;
  alerts?: Array<ACLAction> | undefined;
  alertRules?: Array<ACLAction> | undefined;
  aliasGlobal?: Array<ACLAction> | undefined;
  analyticsSampling?: Array<ACLAction> | undefined;
  analyticsUsage?: Array<ACLAction> | undefined;
  apiKey?: Array<ACLAction> | undefined;
  apiKeyAiGateway?: Array<ACLAction> | undefined;
  apiKeyOwnedBySelf?: Array<ACLAction> | undefined;
  oauth2Application?: Array<ACLAction> | undefined;
  vercelAppInstallation?: Array<ACLAction> | undefined;
  vercelAppInstallationRequest?: Array<ACLAction> | undefined;
  auditLog?: Array<ACLAction> | undefined;
  automation?: Array<ACLAction> | undefined;
  billingAddress?: Array<ACLAction> | undefined;
  billingInformation?: Array<ACLAction> | undefined;
  billingInvoice?: Array<ACLAction> | undefined;
  billingInvoiceEmailRecipient?: Array<ACLAction> | undefined;
  billingInvoiceLanguage?: Array<ACLAction> | undefined;
  billingPlan?: Array<ACLAction> | undefined;
  billingPurchaseOrder?: Array<ACLAction> | undefined;
  billingRefund?: Array<ACLAction> | undefined;
  billingTaxId?: Array<ACLAction> | undefined;
  blob?: Array<ACLAction> | undefined;
  blobStoreTokenSet?: Array<ACLAction> | undefined;
  budget?: Array<ACLAction> | undefined;
  cacheArtifact?: Array<ACLAction> | undefined;
  cacheArtifactUsageEvent?: Array<ACLAction> | undefined;
  codeChecks?: Array<ACLAction> | undefined;
  codeOwners?: Array<ACLAction> | undefined;
  ciInvocations?: Array<ACLAction> | undefined;
  ciLogs?: Array<ACLAction> | undefined;
  concurrentBuilds?: Array<ACLAction> | undefined;
  connect?: Array<ACLAction> | undefined;
  connectConfiguration?: Array<ACLAction> | undefined;
  connectLogs?: Array<ACLAction> | undefined;
  connexClient?: Array<ACLAction> | undefined;
  connexClientProject?: Array<ACLAction> | undefined;
  connexContact?: Array<ACLAction> | undefined;
  connexInstallation?: Array<ACLAction> | undefined;
  connexToken?: Array<ACLAction> | undefined;
  buildMachineDefault?: Array<ACLAction> | undefined;
  cursorOriginInstallation?: Array<ACLAction> | undefined;
  dataCacheBillingSettings?: Array<ACLAction> | undefined;
  defaultDeploymentProtection?: Array<ACLAction> | undefined;
  deploymentPolicy?: Array<ACLAction> | undefined;
  domain?: Array<ACLAction> | undefined;
  domainAcceptDelegation?: Array<ACLAction> | undefined;
  domainAuthCodes?: Array<ACLAction> | undefined;
  domainCertificate?: Array<ACLAction> | undefined;
  domainCheckConfig?: Array<ACLAction> | undefined;
  domainMove?: Array<ACLAction> | undefined;
  domainPurchase?: Array<ACLAction> | undefined;
  domainRecord?: Array<ACLAction> | undefined;
  domainTransferIn?: Array<ACLAction> | undefined;
  drain?: Array<ACLAction> | undefined;
  edgeConfig?: Array<ACLAction> | undefined;
  edgeConfigItem?: Array<ACLAction> | undefined;
  edgeConfigSchema?: Array<ACLAction> | undefined;
  edgeConfigToken?: Array<ACLAction> | undefined;
  endpointVerification?: Array<ACLAction> | undefined;
  event?: Array<ACLAction> | undefined;
  fileUpload?: Array<ACLAction> | undefined;
  flagsExplorerSubscription?: Array<ACLAction> | undefined;
  gitRepository?: Array<ACLAction> | undefined;
  imageOptimizationNewPrice?: Array<ACLAction> | undefined;
  integration?: Array<ACLAction> | undefined;
  integrationAccount?: Array<ACLAction> | undefined;
  integrationConfiguration?: Array<ACLAction> | undefined;
  integrationConfigurationProjects?: Array<ACLAction> | undefined;
  integrationConfigurationRole?: Array<ACLAction> | undefined;
  integrationConfigurationTransfer?: Array<ACLAction> | undefined;
  integrationDeploymentAction?: Array<ACLAction> | undefined;
  integrationEvent?: Array<ACLAction> | undefined;
  integrationLog?: Array<ACLAction> | undefined;
  integrationResource?: Array<ACLAction> | undefined;
  integrationResourceData?: Array<ACLAction> | undefined;
  integrationResourceReplCommand?: Array<ACLAction> | undefined;
  integrationResourceSecrets?: Array<ACLAction> | undefined;
  integrationSSOSession?: Array<ACLAction> | undefined;
  integrationStrict?: Array<ACLAction> | undefined;
  integrationStoreTokenSet?: Array<ACLAction> | undefined;
  integrationVercelConfigurationOverride?: Array<ACLAction> | undefined;
  integrationPullRequest?: Array<ACLAction> | undefined;
  ipBlocking?: Array<ACLAction> | undefined;
  jobGlobal?: Array<ACLAction> | undefined;
  kmsIssuer?: Array<ACLAction> | undefined;
  kmsProjectGrant?: Array<ACLAction> | undefined;
  logDrain?: Array<ACLAction> | undefined;
  marketplaceBillingData?: Array<ACLAction> | undefined;
  marketplaceExperimentationEdgeConfigData?: Array<ACLAction> | undefined;
  marketplaceExperimentationItem?: Array<ACLAction> | undefined;
  marketplaceFlexCommit?: Array<ACLAction> | undefined;
  marketplaceInstallationMember?: Array<ACLAction> | undefined;
  marketplaceInvoice?: Array<ACLAction> | undefined;
  marketplaceSettings?: Array<ACLAction> | undefined;
  monitoring?: Array<ACLAction> | undefined;
  monitoringAlert?: Array<ACLAction> | undefined;
  monitoringChart?: Array<ACLAction> | undefined;
  monitoringQuery?: Array<ACLAction> | undefined;
  monitoringSettings?: Array<ACLAction> | undefined;
  notificationCustomerBudget?: Array<ACLAction> | undefined;
  notificationDeploymentFailed?: Array<ACLAction> | undefined;
  notificationDomainConfiguration?: Array<ACLAction> | undefined;
  notificationDomainExpire?: Array<ACLAction> | undefined;
  notificationDomainMoved?: Array<ACLAction> | undefined;
  notificationDomainPurchase?: Array<ACLAction> | undefined;
  notificationDomainRenewal?: Array<ACLAction> | undefined;
  notificationDomainTransfer?: Array<ACLAction> | undefined;
  notificationDomainUnverified?: Array<ACLAction> | undefined;
  notificationMonitoringAlert?: Array<ACLAction> | undefined;
  notificationPaymentFailed?: Array<ACLAction> | undefined;
  notificationPreferences?: Array<ACLAction> | undefined;
  notificationStatementOfReasons?: Array<ACLAction> | undefined;
  notificationUsageAlert?: Array<ACLAction> | undefined;
  oidcFederationPolicy?: Array<ACLAction> | undefined;
  observabilityConfiguration?: Array<ACLAction> | undefined;
  observabilityFunnel?: Array<ACLAction> | undefined;
  observabilityNotebook?: Array<ACLAction> | undefined;
  openTelemetryEndpoint?: Array<ACLAction> | undefined;
  ownEvent?: Array<ACLAction> | undefined;
  organization?: Array<ACLAction> | undefined;
  organizationDomain?: Array<ACLAction> | undefined;
  organizationTeam?: Array<ACLAction> | undefined;
  passwordProtectionInvoiceItem?: Array<ACLAction> | undefined;
  paymentMethod?: Array<ACLAction> | undefined;
  permissions?: Array<ACLAction> | undefined;
  postgres?: Array<ACLAction> | undefined;
  postgresStoreTokenSet?: Array<ACLAction> | undefined;
  previewDeploymentSuffix?: Array<ACLAction> | undefined;
  privateCloudAccount?: Array<ACLAction> | undefined;
  projectTransferIn?: Array<ACLAction> | undefined;
  projectTransferRequest?: Array<ACLAction> | undefined;
  proTrialOnboarding?: Array<ACLAction> | undefined;
  rateLimit?: Array<ACLAction> | undefined;
  redis?: Array<ACLAction> | undefined;
  redisStoreTokenSet?: Array<ACLAction> | undefined;
  remoteCaching?: Array<ACLAction> | undefined;
  repository?: Array<ACLAction> | undefined;
  samlConfig?: Array<ACLAction> | undefined;
  secret?: Array<ACLAction> | undefined;
  securityConfig?: Array<ACLAction> | undefined;
  sensitiveEnvironmentVariablePolicy?: Array<ACLAction> | undefined;
  sharedEnvVars?: Array<ACLAction> | undefined;
  sharedEnvVarsProduction?: Array<ACLAction> | undefined;
  space?: Array<ACLAction> | undefined;
  spaceRun?: Array<ACLAction> | undefined;
  storeIsLocked?: Array<ACLAction> | undefined;
  storeTokenSetSensitive?: Array<ACLAction> | undefined;
  storeTransfer?: Array<ACLAction> | undefined;
  supportCase?: Array<ACLAction> | undefined;
  supportCaseComment?: Array<ACLAction> | undefined;
  team?: Array<ACLAction> | undefined;
  teamAccessRequest?: Array<ACLAction> | undefined;
  teamFellowMembership?: Array<ACLAction> | undefined;
  teamGitExclusivity?: Array<ACLAction> | undefined;
  teamInvite?: Array<ACLAction> | undefined;
  teamInviteCode?: Array<ACLAction> | undefined;
  teamInviteLink?: Array<ACLAction> | undefined;
  teamJoin?: Array<ACLAction> | undefined;
  teamMemberMfaStatus?: Array<ACLAction> | undefined;
  teamMicrofrontends?: Array<ACLAction> | undefined;
  teamOwnMembership?: Array<ACLAction> | undefined;
  teamOwnMembershipDisconnectSAML?: Array<ACLAction> | undefined;
  teamSudo?: Array<ACLAction> | undefined;
  teamTokenInvalidation?: Array<ACLAction> | undefined;
  token?: Array<ACLAction> | undefined;
  toolbarComment?: Array<ACLAction> | undefined;
  usage?: Array<ACLAction> | undefined;
  usageCycle?: Array<ACLAction> | undefined;
  vcrRepository?: Array<ACLAction> | undefined;
  vpcPeeringConnection?: Array<ACLAction> | undefined;
  webAnalyticsPlan?: Array<ACLAction> | undefined;
  webhook?: Array<ACLAction> | undefined;
  webhookEvent?: Array<ACLAction> | undefined;
  aliasProject?: Array<ACLAction> | undefined;
  aliasProtectionBypass?: Array<ACLAction> | undefined;
  bulkRedirects?: Array<ACLAction> | undefined;
  buildMachine?: Array<ACLAction> | undefined;
  connectConfigurationLink?: Array<ACLAction> | undefined;
  dataCacheNamespace?: Array<ACLAction> | undefined;
  deployment?: Array<ACLAction> | undefined;
  deploymentBuildLogs?: Array<ACLAction> | undefined;
  deploymentCheck?: Array<ACLAction> | undefined;
  deploymentCheckPreview?: Array<ACLAction> | undefined;
  deploymentCheckReRunFromProductionBranch?: Array<ACLAction> | undefined;
  deploymentProductionGit?: Array<ACLAction> | undefined;
  deploymentV0?: Array<ACLAction> | undefined;
  deploymentPreview?: Array<ACLAction> | undefined;
  deploymentPrivate?: Array<ACLAction> | undefined;
  deploymentPromote?: Array<ACLAction> | undefined;
  deploymentRollback?: Array<ACLAction> | undefined;
  edgeCacheNamespace?: Array<ACLAction> | undefined;
  environments?: Array<ACLAction> | undefined;
  job?: Array<ACLAction> | undefined;
  logs?: Array<ACLAction> | undefined;
  logsPreset?: Array<ACLAction> | undefined;
  observabilityData?: Array<ACLAction> | undefined;
  onDemandBuild?: Array<ACLAction> | undefined;
  onDemandConcurrency?: Array<ACLAction> | undefined;
  optionsAllowlist?: Array<ACLAction> | undefined;
  passwordProtection?: Array<ACLAction> | undefined;
  privateLinkEndpoint?: Array<ACLAction> | undefined;
  productionAliasProtectionBypass?: Array<ACLAction> | undefined;
  productionShareableLink?: Array<ACLAction> | undefined;
  project?: Array<ACLAction> | undefined;
  projectAccessGroup?: Array<ACLAction> | undefined;
  projectAnalyticsSampling?: Array<ACLAction> | undefined;
  projectAnalyticsUsage?: Array<ACLAction> | undefined;
  projectCheck?: Array<ACLAction> | undefined;
  projectCheckRun?: Array<ACLAction> | undefined;
  projectDeploymentExpiration?: Array<ACLAction> | undefined;
  projectDeploymentHook?: Array<ACLAction> | undefined;
  projectDeploymentProtectionStrict?: Array<ACLAction> | undefined;
  projectDomain?: Array<ACLAction> | undefined;
  projectDomainCheckConfig?: Array<ACLAction> | undefined;
  projectDomainMove?: Array<ACLAction> | undefined;
  projectDomainVerify?: Array<ACLAction> | undefined;
  projectEvent?: Array<ACLAction> | undefined;
  projectEnvVars?: Array<ACLAction> | undefined;
  projectEnvVarsProduction?: Array<ACLAction> | undefined;
  projectEnvVarsUnownedByIntegration?: Array<ACLAction> | undefined;
  projectFlags?: Array<ACLAction> | undefined;
  projectFlagsProduction?: Array<ACLAction> | undefined;
  projectFlagsSDKKey?: Array<ACLAction> | undefined;
  projectFromV0?: Array<ACLAction> | undefined;
  projectId?: Array<ACLAction> | undefined;
  projectIntegrationConfiguration?: Array<ACLAction> | undefined;
  projectLink?: Array<ACLAction> | undefined;
  projectMember?: Array<ACLAction> | undefined;
  projectMonitoring?: Array<ACLAction> | undefined;
  projectOIDCToken?: Array<ACLAction> | undefined;
  projectPermissions?: Array<ACLAction> | undefined;
  projectProductionBranch?: Array<ACLAction> | undefined;
  projectProtectionBypass?: Array<ACLAction> | undefined;
  projectRollingRelease?: Array<ACLAction> | undefined;
  projectRoutes?: Array<ACLAction> | undefined;
  projectSupportCase?: Array<ACLAction> | undefined;
  projectSupportCaseComment?: Array<ACLAction> | undefined;
  projectTier?: Array<ACLAction> | undefined;
  projectTransfer?: Array<ACLAction> | undefined;
  projectTransferOut?: Array<ACLAction> | undefined;
  projectUsage?: Array<ACLAction> | undefined;
  pageIntegrity?: Array<ACLAction> | undefined;
  seawallConfig?: Array<ACLAction> | undefined;
  securityPlusConfiguration?: Array<ACLAction> | undefined;
  shareableLink?: Array<ACLAction> | undefined;
  shareableLinkStrict?: Array<ACLAction> | undefined;
  sharedEnvVarConnection?: Array<ACLAction> | undefined;
  skewProtection?: Array<ACLAction> | undefined;
  analytics?: Array<ACLAction> | undefined;
  trustedIps?: Array<ACLAction> | undefined;
  trustedSources?: Array<ACLAction> | undefined;
  v0Chat?: Array<ACLAction> | undefined;
  vercelAuth?: Array<ACLAction> | undefined;
  vercelRun?: Array<ACLAction> | undefined;
  webAnalytics?: Array<ACLAction> | undefined;
  workflowRunData?: Array<ACLAction> | undefined;
};

export type ResponseBodyLastRollbackTarget = {};

export const ResponseBodyJobStatus = {
  Failed: "failed",
  InProgress: "in-progress",
  Pending: "pending",
  Skipped: "skipped",
  Succeeded: "succeeded",
} as const;
export type ResponseBodyJobStatus = ClosedEnum<typeof ResponseBodyJobStatus>;

export const GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsLastAliasRequestType =
  {
    Promote: "promote",
    Rollback: "rollback",
  } as const;
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsLastAliasRequestType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsLastAliasRequestType
  >;

export type ResponseBodyLastAliasRequest = {
  fromDeploymentId: string | null;
  toDeploymentId: string;
  /**
   * If rolling back from a rolling release, fromDeploymentId captures the "base" of that rolling release, and fromRollingReleaseId captures the "target" of that rolling release.
   */
  fromRollingReleaseId?: string | undefined;
  jobStatus: ResponseBodyJobStatus;
  requestedAt: number;
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsLastAliasRequestType;
};

export type GetProjectsProtectionBypass2 = {
  createdAt: number;
  createdBy: string;
  scope: "automation-bypass";
  /**
   * When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var.
   */
  isEnvVar?: boolean | undefined;
  /**
   * Optional note about the bypass to be displayed in the UI
   */
  note?: string | undefined;
};

export type GetProjectsProtectionBypass1 = {
  createdAt: number;
  createdBy: string;
  scope: "integration-automation-bypass";
  integrationId: string;
  configurationId: string;
};

export type ResponseBodyProtectionBypass =
  | GetProjectsProtectionBypass1
  | GetProjectsProtectionBypass2;

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

export type GetProjectsTrustedIps2 = {
  deploymentType: GetProjectsTrustedIpsProjectsDeploymentType;
};

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

export type GetProjectsTrustedIpsAddresses = {
  value: string;
  note?: string | undefined;
};

export const GetProjectsTrustedIpsProtectionMode = {
  Additional: "additional",
  Exclusive: "exclusive",
} as const;
export type GetProjectsTrustedIpsProtectionMode = ClosedEnum<
  typeof GetProjectsTrustedIpsProtectionMode
>;

export type GetProjectsTrustedIps1 = {
  deploymentType: GetProjectsTrustedIpsDeploymentType;
  addresses: Array<GetProjectsTrustedIpsAddresses>;
  protectionMode: GetProjectsTrustedIpsProtectionMode;
};

export type ResponseBodyTrustedIps =
  | GetProjectsTrustedIps1
  | GetProjectsTrustedIps2;

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

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

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

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

export type GetProjectsResponseBodyProjectsFrom =
  | GetProjectsFromProjectsResponse1
  | GetProjectsFromProjectsResponse2;

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

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

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

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

export type GetProjectsResponseBodyProjectsResponse200To =
  | GetProjectsToProjectsResponse200ApplicationJson1
  | GetProjectsToProjectsResponse200ApplicationJson2;

/**
 * Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets.
 */
export type GetProjectsResponseBodyProjectsCustomAllow = {
  from: GetProjectsFromProjectsResponse1 | GetProjectsFromProjectsResponse2;
  to:
    | GetProjectsToProjectsResponse200ApplicationJson1
    | GetProjectsToProjectsResponse200ApplicationJson2;
};

export type GetProjectsResponseBodyProjectsResponseProjects = {
  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<GetProjectsResponseBodyProjectsCustomAllow> | undefined;
};

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

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

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

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

export type GetProjectsResponseBodyProjectsResponseTo =
  | GetProjectsToProjectsResponse2001
  | GetProjectsToProjectsResponse2002;

export type GetProjectsResponseBodyProjectsOidcProviders = {
  to: GetProjectsToProjectsResponse2001 | GetProjectsToProjectsResponse2002;
  label?: string | undefined;
  claims: { [k: string]: Array<string> };
};

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

export type GetProjectsResponseBodyProjectsGitComments = {
  /**
   * 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 GetProjectsResponseBodyProjectsCreateDeployments = {
  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 GetProjectsResponseBodyProjectsCreateDeployments = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsCreateDeployments
>;

/**
 * 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 GetProjectsResponseBodyProjectsConsolidatedGitCommitStatus = {
  /**
   * Whether consolidated commit status is enabled.
   */
  enabled: boolean;
  /**
   * Whether to propagate individual deployment failures to the consolidated status.
   */
  propagateFailures: boolean;
};

export type GetProjectsResponseBodyProjectsGitProviderOptions = {
  /**
   * 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: GetProjectsResponseBodyProjectsCreateDeployments;
  /**
   * 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?:
    | GetProjectsResponseBodyProjectsConsolidatedGitCommitStatus
    | undefined;
};

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsResponse200ApplicationJSONLogHeaders =
  | Array<string>
  | GetProjectsLogHeadersProjectsResponse200ApplicationJSONResponseBody2;

export type GetProjectsResponseBodyProjectsRulesets = {
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAction;
  rateLimit?: GetProjectsResponseBodyProjectsRateLimit | null | undefined;
  redirect?: GetProjectsResponseBodyProjectsRedirect | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?:
    | Array<string>
    | GetProjectsLogHeadersProjectsResponse200ApplicationJSONResponseBody2
    | undefined;
};

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

export type GetProjectsResponseBodyProjectsVercelRuleset = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsSecurityAction
    | undefined;
};

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

export type GetProjectsResponseBodyProjectsTrafficSources = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsSecurityManagedRulesAction
    | undefined;
};

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

export type GetProjectsResponseBodyProjectsBotFilter = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsSecurityManagedRulesBotFilterAction
    | undefined;
};

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

export type GetProjectsResponseBodyProjectsAiBots = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsSecurityManagedRulesAiBotsAction
    | undefined;
};

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

export type GetProjectsResponseBodyProjectsOwasp = {
  active: boolean;
  action?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsSecurityManagedRulesOwaspAction
    | undefined;
};

export type GetProjectsResponseBodyProjectsManagedRules = {
  vercelRuleset: GetProjectsResponseBodyProjectsVercelRuleset;
  trafficSources: GetProjectsResponseBodyProjectsTrafficSources;
  botFilter: GetProjectsResponseBodyProjectsBotFilter;
  aiBots: GetProjectsResponseBodyProjectsAiBots;
  owasp: GetProjectsResponseBodyProjectsOwasp;
};

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

export type GetProjectsResponseBodyProjectsResponseLogHeaders =
  | Array<string>
  | GetProjectsLogHeadersProjectsResponse2002;

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

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

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

/**
 * Allowlist entry for GitLab, which uses nested groups rather than a flat org/repo. `namespace` is the full group path (e.g. `group` or `group/subgroup`); `project` is the leaf project name. Omit `project` to match any project under the namespace. Namespace is matched case-insensitively.
 */
export type GetProjectsSources2 = {
  provider: "gitlab";
  namespace: string;
  project?: string | undefined;
};

export const GetProjectsSourcesProvider = {
  Bitbucket: "bitbucket",
  Github: "github",
} as const;
export type GetProjectsSourcesProvider = ClosedEnum<
  typeof GetProjectsSourcesProvider
>;

/**
 * Allowlist entry for GitHub and Bitbucket, whose repos are identified by a flat `org`/`repo` (Bitbucket's workspace/owner maps to `org`, its repo slug to `repo`). Omit `repo` to match any repo in the org. Org is matched case-insensitively.
 */
export type GetProjectsSources1 = {
  provider: GetProjectsSourcesProvider;
  org: string;
  repo?: string | undefined;
};

export type ResponseBodySources =
  | (GetProjectsSources1 & { provider: "bitbucket" })
  | (GetProjectsSources1 & { provider: "github" })
  | GetProjectsSources2;

export type GetProjectsEnvironments2 = {
  type: "custom";
  environmentId: string;
};

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

export type GetProjectsEnvironments1 = {
  type: "system";
  target: GetProjectsEnvironmentsTarget;
};

export type GetProjectsResponseBodyEnvironments =
  | GetProjectsEnvironments1
  | GetProjectsEnvironments2;

/**
 * `enabled: true` with empty `sources` is deny-all.
 */
export type ResponseBodyGitSources = {
  sources: Array<
    | (GetProjectsSources1 & { provider: "bitbucket" })
    | (GetProjectsSources1 & { provider: "github" })
    | GetProjectsSources2
  >;
  enabled: boolean;
  environments: Array<GetProjectsEnvironments1 | GetProjectsEnvironments2>;
};

/**
 * Customer-configurable deployment sources. Every deploy classifies to exactly one. JSON schema in `packages/deployment-policy/schemas/body.ts` enumerates exactly these values. - `'git'` — git provider webhook. - `'cli'` — Vercel CLI (legacy classic-token CLI and SIWV CLI both). - `'rest-api'` — direct user/team-token REST upload. Does NOT cover deploy hooks, Marketplace integrations, or first-party app tokens. - `'deploy-hook'` — project deploy-hook URL. The URL is the credential. - `'integration'` — third-party Marketplace actor: Marketplace integration token, user-delegated OAuth from a Marketplace app, or an unrecognized third-party Vercel App. First-party Vercel Apps are never `'integration'`. - `'v0'` — the v0 product surface (entitlement-gated). v0 deploys through the CLI under the hood, but classifies as its own source so a team can allow or deny v0 independently of `'cli'`. First-party Vercel apps (Toolbar, etc.) classify as `'first-party'` — see `ClassifiedSource` in `./checks`. They're not in this union because they aren't customer-configurable; they bypass `checkDeploymentSources` entirely. v0 is intentionally NOT among them: like the CLI, it's a real product surface and is policy-controllable.
 */
export const GetProjectsResponseBodySources = {
  Cli: "cli",
  DeployHook: "deploy-hook",
  Git: "git",
  Integration: "integration",
  RestApi: "rest-api",
  V0: "v0",
} as const;
/**
 * Customer-configurable deployment sources. Every deploy classifies to exactly one. JSON schema in `packages/deployment-policy/schemas/body.ts` enumerates exactly these values. - `'git'` — git provider webhook. - `'cli'` — Vercel CLI (legacy classic-token CLI and SIWV CLI both). - `'rest-api'` — direct user/team-token REST upload. Does NOT cover deploy hooks, Marketplace integrations, or first-party app tokens. - `'deploy-hook'` — project deploy-hook URL. The URL is the credential. - `'integration'` — third-party Marketplace actor: Marketplace integration token, user-delegated OAuth from a Marketplace app, or an unrecognized third-party Vercel App. First-party Vercel Apps are never `'integration'`. - `'v0'` — the v0 product surface (entitlement-gated). v0 deploys through the CLI under the hood, but classifies as its own source so a team can allow or deny v0 independently of `'cli'`. First-party Vercel apps (Toolbar, etc.) classify as `'first-party'` — see `ClassifiedSource` in `./checks`. They're not in this union because they aren't customer-configurable; they bypass `checkDeploymentSources` entirely. v0 is intentionally NOT among them: like the CLI, it's a real product surface and is policy-controllable.
 */
export type GetProjectsResponseBodySources = ClosedEnum<
  typeof GetProjectsResponseBodySources
>;

export type GetProjectsEnvironmentsProjects2 = {
  type: "custom";
  environmentId: string;
};

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

export type GetProjectsEnvironmentsProjects1 = {
  type: "system";
  target: GetProjectsEnvironmentsProjectsTarget;
};

export type GetProjectsResponseBodyProjectsEnvironments =
  | GetProjectsEnvironmentsProjects1
  | GetProjectsEnvironmentsProjects2;

/**
 * `enabled: true` with empty `sources` is deny-all.
 */
export type ResponseBodyDeploymentSources = {
  sources: Array<GetProjectsResponseBodySources>;
  enabled: boolean;
  environments: Array<
    GetProjectsEnvironmentsProjects1 | GetProjectsEnvironmentsProjects2
  >;
};

/**
 * Project shape. `null` on a rule list clears the project's override for that rule type (fall back to team for every env); omitting is equivalent. Setting `deploymentPolicy` itself to `null` clears every override at once. Kept structurally distinct from {@link TeamDeploymentPolicy} so the two storage locations don't share a type by accident.
 */
export type ResponseBodyDeploymentPolicy = {
  gitSources?: Array<ResponseBodyGitSources> | null | undefined;
  deploymentSources?: Array<ResponseBodyDeploymentSources> | null | undefined;
};

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

/**
 * Billing mode. Always 'flat' for flat-rate projects.
 */
export const GetProjectsResponseBodyKind = {
  Flat: "flat",
} as const;
/**
 * Billing mode. Always 'flat' for flat-rate projects.
 */
export type GetProjectsResponseBodyKind = ClosedEnum<
  typeof GetProjectsResponseBodyKind
>;

export type ResponseBodyUsageStatus = {
  /**
   * Billing mode. Always 'flat' for flat-rate projects.
   */
  kind: GetProjectsResponseBodyKind;
  /**
   * Timestamp until which the project has exceeded its CDN allowance.
   */
  exceededAllowanceUntil?: number | undefined;
  /**
   * Timestamp until which throttling is bypassed (project pays list rates for overage).
   */
  bypassThrottleUntil?: number | undefined;
  /**
   * Per-project throttle, set explicitly for this project (e.g. via the per-project Flat Rate CDN endpoint).
   */
  throttled?: boolean | undefined;
  /**
   * Synced from `team.billing.usageStatus.throttled`. When `true`, the team has throttled all of its projects regardless of `throttled`. The effective throttle the CDN enforces is `throttled || teamThrottled`.
   */
  teamThrottled?: boolean | undefined;
};

export type ResponseBodyFeatures = {
  webAnalytics?: boolean | undefined;
};

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

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

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsAbuseBlockHistoryValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects2 =
  {
    type: "host";
    value:
      GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsAbuseBlockHistoryValue;
  };

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsAbuseValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects1 =
  {
    type: "header";
    key:
      GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsKey;
    value:
      GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsAbuseValue;
  };

export type GetProjectsRouteProjectsResponse200ApplicationJSONResponseBodyHas =
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects1
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects2;

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

export type GetProjectsRouteProjectsResponse200ApplicationJSONResponseBodyMitigate =
  {
    action:
      GetProjectsRouteProjectsResponse200ApplicationJSONResponseBodyAction;
  };

export type GetProjectsRouteProjectsResponse200ApplicationJSONResponseBody2 = {
  has: Array<
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects1
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects2
  >;
  mitigate:
    GetProjectsRouteProjectsResponse200ApplicationJSONResponseBodyMitigate;
  src?: string | undefined;
};

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

export type GetProjectsBlockHistoryProjectsResponse200ApplicationJSONResponseBodyRoute =
  | GetProjectsRouteProjectsResponse200ApplicationJSONResponseBody1
  | GetProjectsRouteProjectsResponse200ApplicationJSONResponseBody2;

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody32 = {
  type: "host";
  value:
    GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsValue;
};

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Value =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody31 = {
  type: "header";
  key: GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Key;
  value: GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Value;
};

export type GetProjectsRouteProjectsResponse200ApplicationJSONHas =
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody31
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody32;

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

export type GetProjectsRouteProjectsResponse200ApplicationJSONMitigate = {
  action: GetProjectsRouteProjectsResponse200ApplicationJSONAction;
};

export type GetProjectsRouteProjectsResponse200ApplicationJson2 = {
  has: Array<
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody31
    | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody32
  >;
  mitigate: GetProjectsRouteProjectsResponse200ApplicationJSONMitigate;
  src?: string | undefined;
};

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

export type GetProjectsBlockHistoryProjectsResponse200ApplicationJSONRoute =
  | GetProjectsRouteProjectsResponse200ApplicationJson1
  | GetProjectsRouteProjectsResponse200ApplicationJson2;

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

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

export type GetProjectsBlockHistoryProjectsResponse1 = {
  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 GetProjectsResponseBodyProjectsBlockHistory =
  | GetProjectsBlockHistoryProjectsResponse1
  | GetProjectsBlockHistoryProjectsResponse2
  | GetProjectsBlockHistoryProjectsResponse3
  | GetProjectsBlockHistoryProjectsResponse4;

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

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

export type GetProjectsResponseBodyProjectsAbuse = {
  scanner?: string | undefined;
  history: Array<GetProjectsResponseBodyProjectsHistory>;
  updatedAt: number;
  block?: GetProjectsResponseBodyProjectsBlock | undefined;
  blockHistory?:
    | Array<
      | GetProjectsBlockHistoryProjectsResponse1
      | GetProjectsBlockHistoryProjectsResponse2
      | GetProjectsBlockHistoryProjectsResponse3
      | GetProjectsBlockHistoryProjectsResponse4
    >
    | undefined;
  interstitial?: boolean | undefined;
  interstitialHistory?:
    | Array<GetProjectsResponseBodyProjectsInterstitialHistory>
    | undefined;
};

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBodyValue =
  {
    eq: string;
  };

export type GetProjectsHasProjectsResponse2 = {
  type: "host";
  value: GetProjectsHasProjectsResponse200ApplicationJSONResponseBodyValue;
};

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

export type GetProjectsHasProjectsResponse200ApplicationJSONValue = {
  eq: string;
};

export type GetProjectsHasProjectsResponse1 = {
  type: "header";
  key: GetProjectsHasProjectsResponseKey;
  value: GetProjectsHasProjectsResponse200ApplicationJSONValue;
};

export type GetProjectsInternalRoutesProjectsResponseHas =
  | GetProjectsHasProjectsResponse1
  | GetProjectsHasProjectsResponse2;

/** @internal */
export const GetProjectsResponseBodyProjectsGate$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsGate,
  z.ZodTypeDef,
  unknown
> = z.object({
  enabled: types.boolean(),
  checks: z.array(GetProjectsResponseBodyProjectsResponseChecks$inboundSchema),
  failureThreshold: types.optional(types.number()),
  windowSize: types.optional(types.number()),
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3Action$inboundSchema,
  dryRun: types.boolean(),
});

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyDefaultResourceConfig$inboundSchema: z.ZodType<
  ResponseBodyDefaultResourceConfig,
  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(
    GetProjectsResponseBodyProjectsResponseFunctionDefaultMemoryType$inboundSchema,
  ),
  functionZeroConfigFailover: types.optional(types.boolean()),
  buildMachineType: types.optional(
    GetProjectsResponseBodyProjectsResponseBuildMachineType$inboundSchema,
  ),
  buildMachineSelection: types.optional(
    GetProjectsResponseBodyProjectsResponseBuildMachineSelection$inboundSchema,
  ),
  buildMachineElasticLastUpdated: types.optional(types.number()),
  buildMachineElasticReason: types.optional(
    GetProjectsResponseBodyProjectsResponseBuildMachineElasticReason$inboundSchema,
  ),
  isNSNBDisabled: types.optional(types.boolean()),
  buildQueue: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponseBuildQueue$inboundSchema
    ),
  ),
  enableFunctionsBeta: types.optional(types.boolean()),
});

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

/** @internal */
export const ResponseBodyStaticIps$inboundSchema: z.ZodType<
  ResponseBodyStaticIps,
  z.ZodTypeDef,
  unknown
> = z.object({
  builds: types.boolean(),
  enabled: types.boolean(),
  regions: z.array(types.string()),
});

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsSsoProtection$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsSsoProtection,
    z.ZodTypeDef,
    unknown
  > = z.object({
    deploymentType:
      GetProjectsResponseBodyProjectsResponse200ApplicationJSONDeploymentType$inboundSchema,
    cve55182MigrationAppliedFrom: z.nullable(
      GetProjectsResponseBodyProjectsCve55182MigrationAppliedFrom$inboundSchema,
    ).optional(),
    april2026SecurityIncidentMigrationAppliedFrom: z.nullable(
      GetProjectsResponseBodyProjectsApril2026SecurityIncidentMigrationAppliedFrom$inboundSchema,
    ).optional(),
  });

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsTargets$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsTargets,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  alias: types.optional(z.array(types.string())),
  aliasAssigned: z.nullable(smartUnion([types.number(), types.boolean()]))
    .optional(),
  aliasError: z.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasError$inboundSchema
    ),
  ).optional(),
  aliasFinal: z.nullable(types.string()).optional(),
  automaticAliases: types.optional(z.array(types.string())),
  branchMatcher: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsBranchMatcher$inboundSchema
    ),
  ),
  buildingAt: types.optional(types.number()),
  builds: types.optional(
    z.array(z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsBuilds$inboundSchema
    )),
  ),
  checksConclusion: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsChecksConclusion$inboundSchema,
  ),
  checksState: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsChecksState$inboundSchema,
  ),
  connectBuildsEnabled: types.optional(types.boolean()),
  connectConfigurationId: types.optional(types.string()),
  createdAt: types.number(),
  createdIn: types.string(),
  creator: types.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsCreator$inboundSchema
    ),
  ),
  deletedAt: types.optional(types.number()),
  deploymentHostname: types.string(),
  forced: types.optional(types.boolean()),
  name: types.string(),
  meta: types.optional(z.record(types.string())),
  monorepoManager: z.nullable(types.string()).optional(),
  oidcTokenClaims: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsOidcTokenClaims$inboundSchema
    ),
  ),
  plan:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsPlan$inboundSchema,
  previewCommentsEnabled: types.optional(types.boolean()),
  private: types.boolean(),
  readyAt: types.optional(types.number()),
  readyState:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsReadyState$inboundSchema,
  readySubstate: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsReadySubstate$inboundSchema,
  ),
  requestedAt: types.optional(types.number()),
  target: z.nullable(types.string()).optional(),
  teamId: z.nullable(types.string()).optional(),
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsTargetsType$inboundSchema,
  url: types.string(),
  userId: types.optional(types.string()),
  withCache: types.optional(types.boolean()),
});

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

/** @internal */
export const ResponseBodyPermissions$inboundSchema: z.ZodType<
  ResponseBodyPermissions,
  z.ZodTypeDef,
  unknown
> = z.object({
  oauth2Connection: types.optional(z.array(ACLAction$inboundSchema)),
  user: types.optional(z.array(ACLAction$inboundSchema)),
  userConnection: types.optional(z.array(ACLAction$inboundSchema)),
  userMfaConfiguration: types.optional(z.array(ACLAction$inboundSchema)),
  userPreference: types.optional(z.array(ACLAction$inboundSchema)),
  userSudo: types.optional(z.array(ACLAction$inboundSchema)),
  webAuthn: types.optional(z.array(ACLAction$inboundSchema)),
  accessGroup: types.optional(z.array(ACLAction$inboundSchema)),
  agent: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayApiKey: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayApiKeyBypassAll: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayApiKeyOwnedBySelf: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayApiKeySpendAttribution: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  aiGatewayApiKeyZdrExemption: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayBudget: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayCredits: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayPrivateModels: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayGuardrails: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayRules: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewaySettings: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayTranscripts: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayTranscriptsSettings: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  aiGatewayUsage: types.optional(z.array(ACLAction$inboundSchema)),
  aiGatewayVirtualModelConfigs: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  alerts: types.optional(z.array(ACLAction$inboundSchema)),
  alertRules: types.optional(z.array(ACLAction$inboundSchema)),
  aliasGlobal: types.optional(z.array(ACLAction$inboundSchema)),
  analyticsSampling: types.optional(z.array(ACLAction$inboundSchema)),
  analyticsUsage: types.optional(z.array(ACLAction$inboundSchema)),
  apiKey: types.optional(z.array(ACLAction$inboundSchema)),
  apiKeyAiGateway: types.optional(z.array(ACLAction$inboundSchema)),
  apiKeyOwnedBySelf: types.optional(z.array(ACLAction$inboundSchema)),
  oauth2Application: types.optional(z.array(ACLAction$inboundSchema)),
  vercelAppInstallation: types.optional(z.array(ACLAction$inboundSchema)),
  vercelAppInstallationRequest: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  auditLog: types.optional(z.array(ACLAction$inboundSchema)),
  automation: types.optional(z.array(ACLAction$inboundSchema)),
  billingAddress: types.optional(z.array(ACLAction$inboundSchema)),
  billingInformation: types.optional(z.array(ACLAction$inboundSchema)),
  billingInvoice: types.optional(z.array(ACLAction$inboundSchema)),
  billingInvoiceEmailRecipient: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  billingInvoiceLanguage: types.optional(z.array(ACLAction$inboundSchema)),
  billingPlan: types.optional(z.array(ACLAction$inboundSchema)),
  billingPurchaseOrder: types.optional(z.array(ACLAction$inboundSchema)),
  billingRefund: types.optional(z.array(ACLAction$inboundSchema)),
  billingTaxId: types.optional(z.array(ACLAction$inboundSchema)),
  blob: types.optional(z.array(ACLAction$inboundSchema)),
  blobStoreTokenSet: types.optional(z.array(ACLAction$inboundSchema)),
  budget: types.optional(z.array(ACLAction$inboundSchema)),
  cacheArtifact: types.optional(z.array(ACLAction$inboundSchema)),
  cacheArtifactUsageEvent: types.optional(z.array(ACLAction$inboundSchema)),
  codeChecks: types.optional(z.array(ACLAction$inboundSchema)),
  codeOwners: types.optional(z.array(ACLAction$inboundSchema)),
  ciInvocations: types.optional(z.array(ACLAction$inboundSchema)),
  ciLogs: types.optional(z.array(ACLAction$inboundSchema)),
  concurrentBuilds: types.optional(z.array(ACLAction$inboundSchema)),
  connect: types.optional(z.array(ACLAction$inboundSchema)),
  connectConfiguration: types.optional(z.array(ACLAction$inboundSchema)),
  connectLogs: types.optional(z.array(ACLAction$inboundSchema)),
  connexClient: types.optional(z.array(ACLAction$inboundSchema)),
  connexClientProject: types.optional(z.array(ACLAction$inboundSchema)),
  connexContact: types.optional(z.array(ACLAction$inboundSchema)),
  connexInstallation: types.optional(z.array(ACLAction$inboundSchema)),
  connexToken: types.optional(z.array(ACLAction$inboundSchema)),
  buildMachineDefault: types.optional(z.array(ACLAction$inboundSchema)),
  cursorOriginInstallation: types.optional(z.array(ACLAction$inboundSchema)),
  dataCacheBillingSettings: types.optional(z.array(ACLAction$inboundSchema)),
  defaultDeploymentProtection: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentPolicy: types.optional(z.array(ACLAction$inboundSchema)),
  domain: types.optional(z.array(ACLAction$inboundSchema)),
  domainAcceptDelegation: types.optional(z.array(ACLAction$inboundSchema)),
  domainAuthCodes: types.optional(z.array(ACLAction$inboundSchema)),
  domainCertificate: types.optional(z.array(ACLAction$inboundSchema)),
  domainCheckConfig: types.optional(z.array(ACLAction$inboundSchema)),
  domainMove: types.optional(z.array(ACLAction$inboundSchema)),
  domainPurchase: types.optional(z.array(ACLAction$inboundSchema)),
  domainRecord: types.optional(z.array(ACLAction$inboundSchema)),
  domainTransferIn: types.optional(z.array(ACLAction$inboundSchema)),
  drain: types.optional(z.array(ACLAction$inboundSchema)),
  edgeConfig: types.optional(z.array(ACLAction$inboundSchema)),
  edgeConfigItem: types.optional(z.array(ACLAction$inboundSchema)),
  edgeConfigSchema: types.optional(z.array(ACLAction$inboundSchema)),
  edgeConfigToken: types.optional(z.array(ACLAction$inboundSchema)),
  endpointVerification: types.optional(z.array(ACLAction$inboundSchema)),
  event: types.optional(z.array(ACLAction$inboundSchema)),
  fileUpload: types.optional(z.array(ACLAction$inboundSchema)),
  flagsExplorerSubscription: types.optional(z.array(ACLAction$inboundSchema)),
  gitRepository: types.optional(z.array(ACLAction$inboundSchema)),
  imageOptimizationNewPrice: types.optional(z.array(ACLAction$inboundSchema)),
  integration: types.optional(z.array(ACLAction$inboundSchema)),
  integrationAccount: types.optional(z.array(ACLAction$inboundSchema)),
  integrationConfiguration: types.optional(z.array(ACLAction$inboundSchema)),
  integrationConfigurationProjects: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  integrationConfigurationRole: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  integrationConfigurationTransfer: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  integrationDeploymentAction: types.optional(z.array(ACLAction$inboundSchema)),
  integrationEvent: types.optional(z.array(ACLAction$inboundSchema)),
  integrationLog: types.optional(z.array(ACLAction$inboundSchema)),
  integrationResource: types.optional(z.array(ACLAction$inboundSchema)),
  integrationResourceData: types.optional(z.array(ACLAction$inboundSchema)),
  integrationResourceReplCommand: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  integrationResourceSecrets: types.optional(z.array(ACLAction$inboundSchema)),
  integrationSSOSession: types.optional(z.array(ACLAction$inboundSchema)),
  integrationStrict: types.optional(z.array(ACLAction$inboundSchema)),
  integrationStoreTokenSet: types.optional(z.array(ACLAction$inboundSchema)),
  integrationVercelConfigurationOverride: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  integrationPullRequest: types.optional(z.array(ACLAction$inboundSchema)),
  ipBlocking: types.optional(z.array(ACLAction$inboundSchema)),
  jobGlobal: types.optional(z.array(ACLAction$inboundSchema)),
  kmsIssuer: types.optional(z.array(ACLAction$inboundSchema)),
  kmsProjectGrant: types.optional(z.array(ACLAction$inboundSchema)),
  logDrain: types.optional(z.array(ACLAction$inboundSchema)),
  marketplaceBillingData: types.optional(z.array(ACLAction$inboundSchema)),
  marketplaceExperimentationEdgeConfigData: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  marketplaceExperimentationItem: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  marketplaceFlexCommit: types.optional(z.array(ACLAction$inboundSchema)),
  marketplaceInstallationMember: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  marketplaceInvoice: types.optional(z.array(ACLAction$inboundSchema)),
  marketplaceSettings: types.optional(z.array(ACLAction$inboundSchema)),
  Monitoring: types.optional(z.array(ACLAction$inboundSchema)),
  monitoringAlert: types.optional(z.array(ACLAction$inboundSchema)),
  monitoringChart: types.optional(z.array(ACLAction$inboundSchema)),
  monitoringQuery: types.optional(z.array(ACLAction$inboundSchema)),
  monitoringSettings: types.optional(z.array(ACLAction$inboundSchema)),
  notificationCustomerBudget: types.optional(z.array(ACLAction$inboundSchema)),
  notificationDeploymentFailed: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  notificationDomainConfiguration: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  notificationDomainExpire: types.optional(z.array(ACLAction$inboundSchema)),
  notificationDomainMoved: types.optional(z.array(ACLAction$inboundSchema)),
  notificationDomainPurchase: types.optional(z.array(ACLAction$inboundSchema)),
  notificationDomainRenewal: types.optional(z.array(ACLAction$inboundSchema)),
  notificationDomainTransfer: types.optional(z.array(ACLAction$inboundSchema)),
  notificationDomainUnverified: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  NotificationMonitoringAlert: types.optional(z.array(ACLAction$inboundSchema)),
  notificationPaymentFailed: types.optional(z.array(ACLAction$inboundSchema)),
  notificationPreferences: types.optional(z.array(ACLAction$inboundSchema)),
  notificationStatementOfReasons: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  notificationUsageAlert: types.optional(z.array(ACLAction$inboundSchema)),
  oidcFederationPolicy: types.optional(z.array(ACLAction$inboundSchema)),
  observabilityConfiguration: types.optional(z.array(ACLAction$inboundSchema)),
  observabilityFunnel: types.optional(z.array(ACLAction$inboundSchema)),
  observabilityNotebook: types.optional(z.array(ACLAction$inboundSchema)),
  openTelemetryEndpoint: types.optional(z.array(ACLAction$inboundSchema)),
  ownEvent: types.optional(z.array(ACLAction$inboundSchema)),
  organization: types.optional(z.array(ACLAction$inboundSchema)),
  organizationDomain: types.optional(z.array(ACLAction$inboundSchema)),
  organizationTeam: types.optional(z.array(ACLAction$inboundSchema)),
  passwordProtectionInvoiceItem: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  paymentMethod: types.optional(z.array(ACLAction$inboundSchema)),
  permissions: types.optional(z.array(ACLAction$inboundSchema)),
  postgres: types.optional(z.array(ACLAction$inboundSchema)),
  postgresStoreTokenSet: types.optional(z.array(ACLAction$inboundSchema)),
  previewDeploymentSuffix: types.optional(z.array(ACLAction$inboundSchema)),
  privateCloudAccount: types.optional(z.array(ACLAction$inboundSchema)),
  projectTransferIn: types.optional(z.array(ACLAction$inboundSchema)),
  projectTransferRequest: types.optional(z.array(ACLAction$inboundSchema)),
  proTrialOnboarding: types.optional(z.array(ACLAction$inboundSchema)),
  rateLimit: types.optional(z.array(ACLAction$inboundSchema)),
  redis: types.optional(z.array(ACLAction$inboundSchema)),
  redisStoreTokenSet: types.optional(z.array(ACLAction$inboundSchema)),
  remoteCaching: types.optional(z.array(ACLAction$inboundSchema)),
  repository: types.optional(z.array(ACLAction$inboundSchema)),
  samlConfig: types.optional(z.array(ACLAction$inboundSchema)),
  secret: types.optional(z.array(ACLAction$inboundSchema)),
  securityConfig: types.optional(z.array(ACLAction$inboundSchema)),
  sensitiveEnvironmentVariablePolicy: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  sharedEnvVars: types.optional(z.array(ACLAction$inboundSchema)),
  sharedEnvVarsProduction: types.optional(z.array(ACLAction$inboundSchema)),
  space: types.optional(z.array(ACLAction$inboundSchema)),
  spaceRun: types.optional(z.array(ACLAction$inboundSchema)),
  storeIsLocked: types.optional(z.array(ACLAction$inboundSchema)),
  storeTokenSetSensitive: types.optional(z.array(ACLAction$inboundSchema)),
  storeTransfer: types.optional(z.array(ACLAction$inboundSchema)),
  supportCase: types.optional(z.array(ACLAction$inboundSchema)),
  supportCaseComment: types.optional(z.array(ACLAction$inboundSchema)),
  team: types.optional(z.array(ACLAction$inboundSchema)),
  teamAccessRequest: types.optional(z.array(ACLAction$inboundSchema)),
  teamFellowMembership: types.optional(z.array(ACLAction$inboundSchema)),
  teamGitExclusivity: types.optional(z.array(ACLAction$inboundSchema)),
  teamInvite: types.optional(z.array(ACLAction$inboundSchema)),
  teamInviteCode: types.optional(z.array(ACLAction$inboundSchema)),
  teamInviteLink: types.optional(z.array(ACLAction$inboundSchema)),
  teamJoin: types.optional(z.array(ACLAction$inboundSchema)),
  teamMemberMfaStatus: types.optional(z.array(ACLAction$inboundSchema)),
  teamMicrofrontends: types.optional(z.array(ACLAction$inboundSchema)),
  teamOwnMembership: types.optional(z.array(ACLAction$inboundSchema)),
  teamOwnMembershipDisconnectSAML: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  teamSudo: types.optional(z.array(ACLAction$inboundSchema)),
  teamTokenInvalidation: types.optional(z.array(ACLAction$inboundSchema)),
  token: types.optional(z.array(ACLAction$inboundSchema)),
  toolbarComment: types.optional(z.array(ACLAction$inboundSchema)),
  usage: types.optional(z.array(ACLAction$inboundSchema)),
  usageCycle: types.optional(z.array(ACLAction$inboundSchema)),
  vcrRepository: types.optional(z.array(ACLAction$inboundSchema)),
  vpcPeeringConnection: types.optional(z.array(ACLAction$inboundSchema)),
  webAnalyticsPlan: types.optional(z.array(ACLAction$inboundSchema)),
  webhook: types.optional(z.array(ACLAction$inboundSchema)),
  "webhook-event": types.optional(z.array(ACLAction$inboundSchema)),
  aliasProject: types.optional(z.array(ACLAction$inboundSchema)),
  aliasProtectionBypass: types.optional(z.array(ACLAction$inboundSchema)),
  bulkRedirects: types.optional(z.array(ACLAction$inboundSchema)),
  buildMachine: types.optional(z.array(ACLAction$inboundSchema)),
  connectConfigurationLink: types.optional(z.array(ACLAction$inboundSchema)),
  dataCacheNamespace: types.optional(z.array(ACLAction$inboundSchema)),
  deployment: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentBuildLogs: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentCheck: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentCheckPreview: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentCheckReRunFromProductionBranch: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  deploymentProductionGit: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentV0: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentPreview: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentPrivate: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentPromote: types.optional(z.array(ACLAction$inboundSchema)),
  deploymentRollback: types.optional(z.array(ACLAction$inboundSchema)),
  edgeCacheNamespace: types.optional(z.array(ACLAction$inboundSchema)),
  environments: types.optional(z.array(ACLAction$inboundSchema)),
  job: types.optional(z.array(ACLAction$inboundSchema)),
  logs: types.optional(z.array(ACLAction$inboundSchema)),
  logsPreset: types.optional(z.array(ACLAction$inboundSchema)),
  observabilityData: types.optional(z.array(ACLAction$inboundSchema)),
  onDemandBuild: types.optional(z.array(ACLAction$inboundSchema)),
  onDemandConcurrency: types.optional(z.array(ACLAction$inboundSchema)),
  optionsAllowlist: types.optional(z.array(ACLAction$inboundSchema)),
  passwordProtection: types.optional(z.array(ACLAction$inboundSchema)),
  privateLinkEndpoint: types.optional(z.array(ACLAction$inboundSchema)),
  productionAliasProtectionBypass: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  productionShareableLink: types.optional(z.array(ACLAction$inboundSchema)),
  project: types.optional(z.array(ACLAction$inboundSchema)),
  projectAccessGroup: types.optional(z.array(ACLAction$inboundSchema)),
  projectAnalyticsSampling: types.optional(z.array(ACLAction$inboundSchema)),
  projectAnalyticsUsage: types.optional(z.array(ACLAction$inboundSchema)),
  projectCheck: types.optional(z.array(ACLAction$inboundSchema)),
  projectCheckRun: types.optional(z.array(ACLAction$inboundSchema)),
  projectDeploymentExpiration: types.optional(z.array(ACLAction$inboundSchema)),
  projectDeploymentHook: types.optional(z.array(ACLAction$inboundSchema)),
  projectDeploymentProtectionStrict: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  projectDomain: types.optional(z.array(ACLAction$inboundSchema)),
  projectDomainCheckConfig: types.optional(z.array(ACLAction$inboundSchema)),
  projectDomainMove: types.optional(z.array(ACLAction$inboundSchema)),
  projectDomainVerify: types.optional(z.array(ACLAction$inboundSchema)),
  projectEvent: types.optional(z.array(ACLAction$inboundSchema)),
  projectEnvVars: types.optional(z.array(ACLAction$inboundSchema)),
  projectEnvVarsProduction: types.optional(z.array(ACLAction$inboundSchema)),
  projectEnvVarsUnownedByIntegration: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  projectFlags: types.optional(z.array(ACLAction$inboundSchema)),
  projectFlagsProduction: types.optional(z.array(ACLAction$inboundSchema)),
  projectFlagsSdkKey: types.optional(z.array(ACLAction$inboundSchema)),
  projectFromV0: types.optional(z.array(ACLAction$inboundSchema)),
  projectId: types.optional(z.array(ACLAction$inboundSchema)),
  projectIntegrationConfiguration: types.optional(
    z.array(ACLAction$inboundSchema),
  ),
  projectLink: types.optional(z.array(ACLAction$inboundSchema)),
  projectMember: types.optional(z.array(ACLAction$inboundSchema)),
  projectMonitoring: types.optional(z.array(ACLAction$inboundSchema)),
  projectOIDCToken: types.optional(z.array(ACLAction$inboundSchema)),
  projectPermissions: types.optional(z.array(ACLAction$inboundSchema)),
  projectProductionBranch: types.optional(z.array(ACLAction$inboundSchema)),
  projectProtectionBypass: types.optional(z.array(ACLAction$inboundSchema)),
  projectRollingRelease: types.optional(z.array(ACLAction$inboundSchema)),
  projectRoutes: types.optional(z.array(ACLAction$inboundSchema)),
  projectSupportCase: types.optional(z.array(ACLAction$inboundSchema)),
  projectSupportCaseComment: types.optional(z.array(ACLAction$inboundSchema)),
  projectTier: types.optional(z.array(ACLAction$inboundSchema)),
  projectTransfer: types.optional(z.array(ACLAction$inboundSchema)),
  projectTransferOut: types.optional(z.array(ACLAction$inboundSchema)),
  projectUsage: types.optional(z.array(ACLAction$inboundSchema)),
  pageIntegrity: types.optional(z.array(ACLAction$inboundSchema)),
  seawallConfig: types.optional(z.array(ACLAction$inboundSchema)),
  securityPlusConfiguration: types.optional(z.array(ACLAction$inboundSchema)),
  shareableLink: types.optional(z.array(ACLAction$inboundSchema)),
  shareableLinkStrict: types.optional(z.array(ACLAction$inboundSchema)),
  sharedEnvVarConnection: types.optional(z.array(ACLAction$inboundSchema)),
  skewProtection: types.optional(z.array(ACLAction$inboundSchema)),
  analytics: types.optional(z.array(ACLAction$inboundSchema)),
  trustedIps: types.optional(z.array(ACLAction$inboundSchema)),
  trustedSources: types.optional(z.array(ACLAction$inboundSchema)),
  v0Chat: types.optional(z.array(ACLAction$inboundSchema)),
  vercelAuth: types.optional(z.array(ACLAction$inboundSchema)),
  vercelRun: types.optional(z.array(ACLAction$inboundSchema)),
  webAnalytics: types.optional(z.array(ACLAction$inboundSchema)),
  workflowRunData: types.optional(z.array(ACLAction$inboundSchema)),
}).transform((v) => {
  return remap$(v, {
    "Monitoring": "monitoring",
    "NotificationMonitoringAlert": "notificationMonitoringAlert",
    "webhook-event": "webhookEvent",
    "projectFlagsSdkKey": "projectFlagsSDKKey",
  });
});

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

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

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

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

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

/** @internal */
export const ResponseBodyLastAliasRequest$inboundSchema: z.ZodType<
  ResponseBodyLastAliasRequest,
  z.ZodTypeDef,
  unknown
> = z.object({
  fromDeploymentId: types.nullable(types.string()),
  toDeploymentId: types.string(),
  fromRollingReleaseId: types.optional(types.string()),
  jobStatus: ResponseBodyJobStatus$inboundSchema,
  requestedAt: types.number(),
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsLastAliasRequestType$inboundSchema,
});

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

/** @internal */
export const GetProjectsProtectionBypass2$inboundSchema: z.ZodType<
  GetProjectsProtectionBypass2,
  z.ZodTypeDef,
  unknown
> = z.object({
  createdAt: types.number(),
  createdBy: types.string(),
  scope: types.literal("automation-bypass"),
  isEnvVar: types.optional(types.boolean()),
  note: types.optional(types.string()),
});

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

/** @internal */
export const GetProjectsProtectionBypass1$inboundSchema: z.ZodType<
  GetProjectsProtectionBypass1,
  z.ZodTypeDef,
  unknown
> = z.object({
  createdAt: types.number(),
  createdBy: types.string(),
  scope: types.literal("integration-automation-bypass"),
  integrationId: types.string(),
  configurationId: types.string(),
});

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsTrustedIps1$inboundSchema: z.ZodType<
  GetProjectsTrustedIps1,
  z.ZodTypeDef,
  unknown
> = z.object({
  deploymentType: GetProjectsTrustedIpsDeploymentType$inboundSchema,
  addresses: z.array(
    z.lazy(() => GetProjectsTrustedIpsAddresses$inboundSchema),
  ),
  protectionMode: GetProjectsTrustedIpsProtectionMode$inboundSchema,
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsCustomAllow$inboundSchema:
  z.ZodType<GetProjectsResponseBodyProjectsCustomAllow, z.ZodTypeDef, unknown> =
    z.object({
      from: smartUnion([
        z.lazy(() => GetProjectsFromProjectsResponse1$inboundSchema),
        z.lazy(() => GetProjectsFromProjectsResponse2$inboundSchema),
      ]),
      to: smartUnion([
        z.lazy(() =>
          GetProjectsToProjectsResponse200ApplicationJson1$inboundSchema
        ),
        z.lazy(() =>
          GetProjectsToProjectsResponse200ApplicationJson2$inboundSchema
        ),
      ]),
    });

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsManagedRules$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsManagedRules,
    z.ZodTypeDef,
    unknown
  > = z.object({
    vercel_ruleset: z.lazy(() =>
      GetProjectsResponseBodyProjectsVercelRuleset$inboundSchema
    ),
    traffic_sources: z.lazy(() =>
      GetProjectsResponseBodyProjectsTrafficSources$inboundSchema
    ),
    bot_filter: z.lazy(() =>
      GetProjectsResponseBodyProjectsBotFilter$inboundSchema
    ),
    ai_bots: z.lazy(() => GetProjectsResponseBodyProjectsAiBots$inboundSchema),
    owasp: z.lazy(() => GetProjectsResponseBodyProjectsOwasp$inboundSchema),
  }).transform((v) => {
    return remap$(v, {
      "vercel_ruleset": "vercelRuleset",
      "traffic_sources": "trafficSources",
      "bot_filter": "botFilter",
      "ai_bots": "aiBots",
    });
  });

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsSources2$inboundSchema: z.ZodType<
  GetProjectsSources2,
  z.ZodTypeDef,
  unknown
> = z.object({
  provider: types.literal("gitlab"),
  namespace: types.string(),
  project: types.optional(types.string()),
});

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

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

/** @internal */
export const GetProjectsSources1$inboundSchema: z.ZodType<
  GetProjectsSources1,
  z.ZodTypeDef,
  unknown
> = z.object({
  provider: GetProjectsSourcesProvider$inboundSchema,
  org: types.string(),
  repo: types.optional(types.string()),
});

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

/** @internal */
export const ResponseBodySources$inboundSchema: z.ZodType<
  ResponseBodySources,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsSources1$inboundSchema).and(
    z.object({ provider: z.literal("bitbucket") }),
  ),
  z.lazy(() => GetProjectsSources1$inboundSchema).and(
    z.object({ provider: z.literal("github") }),
  ),
  z.lazy(() => GetProjectsSources2$inboundSchema),
]);

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyGitSources$inboundSchema: z.ZodType<
  ResponseBodyGitSources,
  z.ZodTypeDef,
  unknown
> = z.object({
  sources: z.array(
    z.union([
      z.lazy(() => GetProjectsSources1$inboundSchema).and(
        z.object({ provider: z.literal("bitbucket") }),
      ),
      z.lazy(() => GetProjectsSources1$inboundSchema).and(
        z.object({ provider: z.literal("github") }),
      ),
      z.lazy(() => GetProjectsSources2$inboundSchema),
    ]),
  ),
  enabled: types.boolean(),
  environments: z.array(
    z.union([
      z.lazy(() => GetProjectsEnvironments1$inboundSchema),
      z.lazy(() => GetProjectsEnvironments2$inboundSchema),
    ]),
  ),
});

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyDeploymentSources$inboundSchema: z.ZodType<
  ResponseBodyDeploymentSources,
  z.ZodTypeDef,
  unknown
> = z.object({
  sources: z.array(GetProjectsResponseBodySources$inboundSchema),
  enabled: types.boolean(),
  environments: z.array(
    z.union([
      z.lazy(() => GetProjectsEnvironmentsProjects1$inboundSchema),
      z.lazy(() => GetProjectsEnvironmentsProjects2$inboundSchema),
    ]),
  ),
});

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

/** @internal */
export const ResponseBodyDeploymentPolicy$inboundSchema: z.ZodType<
  ResponseBodyDeploymentPolicy,
  z.ZodTypeDef,
  unknown
> = z.object({
  gitSources: z.nullable(
    z.array(z.lazy(() => ResponseBodyGitSources$inboundSchema)),
  ).optional(),
  deploymentSources: z.nullable(
    z.array(z.lazy(() => ResponseBodyDeploymentSources$inboundSchema)),
  ).optional(),
});

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

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

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

/** @internal */
export const ResponseBodyUsageStatus$inboundSchema: z.ZodType<
  ResponseBodyUsageStatus,
  z.ZodTypeDef,
  unknown
> = z.object({
  kind: GetProjectsResponseBodyKind$inboundSchema,
  exceededAllowanceUntil: types.optional(types.number()),
  bypassThrottleUntil: types.optional(types.number()),
  throttled: types.optional(types.boolean()),
  teamThrottled: types.optional(types.boolean()),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsBlockHistory$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsBlockHistory,
    z.ZodTypeDef,
    unknown
  > = z.union([
    z.lazy(() => GetProjectsBlockHistoryProjectsResponse1$inboundSchema),
    z.lazy(() => GetProjectsBlockHistoryProjectsResponse2$inboundSchema),
    z.lazy(() => GetProjectsBlockHistoryProjectsResponse3$inboundSchema),
    z.lazy(() => GetProjectsBlockHistoryProjectsResponse4$inboundSchema),
  ]);

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsAbuse$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsAbuse,
  z.ZodTypeDef,
  unknown
> = z.object({
  scanner: types.optional(types.string()),
  history: z.array(
    z.lazy(() => GetProjectsResponseBodyProjectsHistory$inboundSchema),
  ),
  updatedAt: types.number(),
  block: types.optional(
    z.lazy(() => GetProjectsResponseBodyProjectsBlock$inboundSchema),
  ),
  blockHistory: types.optional(
    z.array(z.union([
      z.lazy(() => GetProjectsBlockHistoryProjectsResponse1$inboundSchema),
      z.lazy(() =>
        GetProjectsBlockHistoryProjectsResponse2$inboundSchema
      ),
      z.lazy(() => GetProjectsBlockHistoryProjectsResponse3$inboundSchema),
      z.lazy(() => GetProjectsBlockHistoryProjectsResponse4$inboundSchema),
    ])),
  ),
  interstitial: types.optional(types.boolean()),
  interstitialHistory: types.optional(
    z.array(z.lazy(() =>
      GetProjectsResponseBodyProjectsInterstitialHistory$inboundSchema
    )),
  ),
});

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

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

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

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

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

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

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

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

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

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

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

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