UNPKG

@vercel/sdk

Version:

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

4,494 lines 137 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 { SDKValidationError } from "./sdkvalidationerror.js";

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

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

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

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

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

/**
 * User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior.
 */
export const GetProjectsResponseBodyVisibility = {
  Config: "config",
  Secret: "secret",
} as const;
/**
 * User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior.
 */
export type GetProjectsResponseBodyVisibility = ClosedEnum<
  typeof GetProjectsResponseBodyVisibility
>;

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

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

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

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

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

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

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

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

export type GetProjectsContentHint9 = {
  type: "postgres-url-non-pooling";
  storeId: string;
};

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

export type GetProjectsContentHint7 = {
  type: "blob-webhook-public-key";
  storeId: string;
};

export type GetProjectsContentHint6 = {
  type: "blob-store-id";
  storeId: string;
};

export type GetProjectsContentHint5 = {
  type: "blob-read-write-token";
  storeId: string;
};

export type GetProjectsContentHint4 = {
  type: "redis-rest-api-read-only-token";
  storeId: string;
};

export type GetProjectsContentHint3 = {
  type: "redis-rest-api-token";
  storeId: string;
};

export type GetProjectsContentHint2 = {
  type: "redis-rest-api-url";
  storeId: string;
};

export type GetProjectsContentHint1 = {
  type: "redis-url";
  storeId: string;
};

export type GetProjectsResponseBodyContentHint =
  | GetProjectsContentHint1
  | GetProjectsContentHint2
  | GetProjectsContentHint3
  | GetProjectsContentHint4
  | GetProjectsContentHint5
  | GetProjectsContentHint6
  | GetProjectsContentHint7
  | GetProjectsContentHint8
  | GetProjectsContentHint9
  | GetProjectsContentHint10
  | GetProjectsContentHint11
  | GetProjectsContentHint12
  | GetProjectsContentHint13
  | GetProjectsContentHint14
  | GetProjectsContentHint15
  | GetProjectsContentHint16
  | GetProjectsContentHint17;

export const GetProjectsResponseBodyProjectsResponse200ApplicationJson1EnvType =
  {
    FlagsSecret: "flags-secret",
  } as const;
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson1EnvType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson1EnvType
  >;

/**
 * Similar to `contentHints`, but should not be exposed to the user.
 */
export type GetProjectsResponseBodyInternalContentHint = {
  type: GetProjectsResponseBodyProjectsResponse200ApplicationJson1EnvType;
  /**
   * Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda.
   */
  encryptedValue: string;
};

export type ResponseBodyEnv = {
  target?: Array<GetProjectsTarget1> | GetProjectsTarget2 | undefined;
  type: GetProjectsResponseBodyType;
  /**
   * This is used to identify variables that have been migrated from type secret to sensitive.
   */
  sunsetSecretId?: string | undefined;
  /**
   * Legacy now-encryption ciphertext, present after migration swaps value/vsmValue
   */
  legacyValue?: string | undefined;
  decrypted?: boolean | undefined;
  value: string;
  vsmValue?: string | undefined;
  id?: string | undefined;
  key: string;
  configurationId?: string | null | undefined;
  createdAt?: number | undefined;
  updatedAt?: number | undefined;
  createdBy?: string | null | undefined;
  updatedBy?: string | null | undefined;
  gitBranch?: string | undefined;
  /**
   * User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior.
   */
  visibility?: GetProjectsResponseBodyVisibility | undefined;
  edgeConfigId?: string | null | undefined;
  edgeConfigTokenId?: string | null | undefined;
  contentHint?:
    | GetProjectsContentHint1
    | GetProjectsContentHint2
    | GetProjectsContentHint3
    | GetProjectsContentHint4
    | GetProjectsContentHint5
    | GetProjectsContentHint6
    | GetProjectsContentHint7
    | GetProjectsContentHint8
    | GetProjectsContentHint9
    | GetProjectsContentHint10
    | GetProjectsContentHint11
    | GetProjectsContentHint12
    | GetProjectsContentHint13
    | GetProjectsContentHint14
    | GetProjectsContentHint15
    | GetProjectsContentHint16
    | GetProjectsContentHint17
    | null
    | undefined;
  /**
   * Similar to `contentHints`, but should not be exposed to the user.
   */
  internalContentHint?:
    | GetProjectsResponseBodyInternalContentHint
    | null
    | undefined;
  comment?: string | undefined;
  customEnvironmentIds?: Array<string> | undefined;
};

export const ResponseBodyFramework = {
  ActixWeb: "actix-web",
  Angular: "angular",
  Ash: "ash",
  Astro: "astro",
  Axum: "axum",
  Blitzjs: "blitzjs",
  Brunch: "brunch",
  Bun: "bun",
  Container: "container",
  CreateReactApp: "create-react-app",
  Django: "django",
  Docusaurus: "docusaurus",
  Docusaurus2: "docusaurus-2",
  Dojo: "dojo",
  Eleventy: "eleventy",
  Elysia: "elysia",
  Ember: "ember",
  Eve: "eve",
  Express: "express",
  FactoryEve: "factory-eve",
  Fastapi: "fastapi",
  Fasthtml: "fasthtml",
  Fastify: "fastify",
  Flask: "flask",
  Gatsby: "gatsby",
  Go: "go",
  Gridsome: "gridsome",
  H3: "h3",
  Hexo: "hexo",
  Hono: "hono",
  Hugo: "hugo",
  Hydrogen: "hydrogen",
  IonicAngular: "ionic-angular",
  IonicReact: "ionic-react",
  Jekyll: "jekyll",
  Koa: "koa",
  Mastra: "mastra",
  Middleman: "middleman",
  Nestjs: "nestjs",
  Nextjs: "nextjs",
  Nitro: "nitro",
  Node: "node",
  Nuxtjs: "nuxtjs",
  Parcel: "parcel",
  Polymer: "polymer",
  Preact: "preact",
  Python: "python",
  ReactRouter: "react-router",
  Redwoodjs: "redwoodjs",
  Remix: "remix",
  Ruby: "ruby",
  Rust: "rust",
  Saber: "saber",
  Sanity: "sanity",
  SanityV2: "sanity-v2",
  Sapper: "sapper",
  Scully: "scully",
  Services: "services",
  Solidstart: "solidstart",
  Solidstart1: "solidstart-1",
  Stencil: "stencil",
  Storybook: "storybook",
  Svelte: "svelte",
  Sveltekit: "sveltekit",
  Sveltekit1: "sveltekit-1",
  TanstackStart: "tanstack-start",
  TanstackStartLovable: "tanstack-start-lovable",
  Umijs: "umijs",
  Vite: "vite",
  Vitepress: "vitepress",
  Vue: "vue",
  Vuepress: "vuepress",
  Xmcp: "xmcp",
  Zola: "zola",
} as const;
export type ResponseBodyFramework = ClosedEnum<typeof ResponseBodyFramework>;

export type ResponseBodyAliasAssigned = number | boolean;

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

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

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

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

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

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

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

export type GetProjectsResponseBodyOidcTokenClaims = {
  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 GetProjectsResponseBodyPlan = {
  Enterprise: "enterprise",
  Hobby: "hobby",
  Pro: "pro",
} as const;
export type GetProjectsResponseBodyPlan = ClosedEnum<
  typeof GetProjectsResponseBodyPlan
>;

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

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

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

export type ResponseBodyLatestDeployments = {
  id: string;
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  aliasError?: GetProjectsResponseBodyAliasError | null | undefined;
  aliasFinal?: string | null | undefined;
  automaticAliases?: Array<string> | undefined;
  branchMatcher?: ResponseBodyBranchMatcher | undefined;
  buildingAt?: number | undefined;
  builds?: Array<GetProjectsResponseBodyBuilds> | undefined;
  checksConclusion?: GetProjectsResponseBodyChecksConclusion | undefined;
  checksState?: GetProjectsResponseBodyChecksState | undefined;
  connectBuildsEnabled?: boolean | undefined;
  connectConfigurationId?: string | undefined;
  createdAt: number;
  createdIn: string;
  creator: GetProjectsResponseBodyProjectsCreator | null;
  deletedAt?: number | undefined;
  deploymentHostname: string;
  forced?: boolean | undefined;
  name: string;
  meta?: { [k: string]: string } | undefined;
  monorepoManager?: string | null | undefined;
  oidcTokenClaims?: GetProjectsResponseBodyOidcTokenClaims | undefined;
  plan: GetProjectsResponseBodyPlan;
  /**
   * Whether or not preview comments are enabled for the deployment
   */
  previewCommentsEnabled?: boolean | undefined;
  private: boolean;
  readyAt?: number | undefined;
  readyState: GetProjectsResponseBodyReadyState;
  readySubstate?: GetProjectsResponseBodyReadySubstate | undefined;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type: GetProjectsResponseBodyProjectsType;
  url: string;
  /**
   * Present for user creators; omitted for app/integration/system creators.
   */
  userId?: string | undefined;
  withCache?: boolean | undefined;
};

export type GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody18DeployHooks =
  {
    createdAt?: number | undefined;
    id: string;
    name: string;
    ref: string;
    url: string;
  };

export type GetProjectsLink8 = {
  /**
   * Owner (namespace) slug, e.g. `acme`.
   */
  owner: string;
  repo: string;
  /**
   * Origin repository id.
   */
  repoId: string;
  /**
   * Origin namespace id (`ns_…`) of the owner.
   */
  ownerId: string;
  type: "cursor-origin";
  createdAt?: number | undefined;
  deployHooks: Array<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody18DeployHooks
  >;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody1DeployHooks =
  {
    createdAt?: number | undefined;
    id: string;
    name: string;
    ref: string;
    url: string;
  };

export type GetProjectsLink7 = {
  org: string;
  repo: string;
  repoId: string;
  type: "v0";
  createdAt?: number | undefined;
  deployHooks: Array<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody1DeployHooks
  >;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsLinkProjectsResponse200ApplicationJSONResponseBodyDeployHooks =
  {
    createdAt?: number | undefined;
    id: string;
    name: string;
    ref: string;
    url: string;
  };

export type GetProjectsLink6 = {
  org: string;
  repo: string;
  repoId: string;
  type: "vercel";
  createdAt?: number | undefined;
  deployHooks: Array<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBodyDeployHooks
  >;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsLinkProjectsResponse200ApplicationJSONDeployHooks = {
  createdAt?: number | undefined;
  id: string;
  name: string;
  ref: string;
  url: string;
};

export type GetProjectsLink5 = {
  name: string;
  slug: string;
  owner: string;
  type: "bitbucket";
  uuid: string;
  workspaceUuid: string;
  createdAt?: number | undefined;
  deployHooks: Array<
    GetProjectsLinkProjectsResponse200ApplicationJSONDeployHooks
  >;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsLinkProjectsResponse200DeployHooks = {
  createdAt?: number | undefined;
  id: string;
  name: string;
  ref: string;
  url: string;
};

export type GetProjectsLink4 = {
  projectId: string;
  projectName: string;
  projectNameWithNamespace: string;
  projectNamespace: string;
  /**
   * A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels).
   */
  projectOwnerId?: number | undefined;
  projectUrl: string;
  type: "gitlab";
  createdAt?: number | undefined;
  deployHooks: Array<GetProjectsLinkProjectsResponse200DeployHooks>;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsLinkProjectsResponseDeployHooks = {
  createdAt?: number | undefined;
  id: string;
  name: string;
  ref: string;
  url: string;
};

export type GetProjectsLink3 = {
  org: string;
  /**
   * A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes.
   */
  repoOwnerId?: number | undefined;
  repo?: string | undefined;
  repoId?: number | undefined;
  type: "github-custom-host";
  host: string;
  createdAt?: number | undefined;
  deployHooks: Array<GetProjectsLinkProjectsResponseDeployHooks>;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsLinkProjectsDeployHooks = {
  createdAt?: number | undefined;
  id: string;
  name: string;
  ref: string;
  url: string;
};

export type GetProjectsLink2 = {
  type: "github-limited";
  repo?: string | undefined;
  repoId?: number | undefined;
  createdAt?: number | undefined;
  updatedAt?: number | undefined;
  org: string;
  /**
   * A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes.
   */
  repoOwnerId?: number | undefined;
  deployHooks: Array<GetProjectsLinkProjectsDeployHooks>;
  gitCredentialId: string;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsLinkDeployHooks = {
  createdAt?: number | undefined;
  id: string;
  name: string;
  ref: string;
  url: string;
};

export type GetProjectsLink1 = {
  org: string;
  /**
   * A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes.
   */
  repoOwnerId?: number | undefined;
  repo?: string | undefined;
  repoId?: number | undefined;
  type: "github";
  createdAt?: number | undefined;
  deployHooks: Array<GetProjectsLinkDeployHooks>;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type ResponseBodyLink =
  | GetProjectsLink1
  | GetProjectsLink2
  | GetProjectsLink3
  | GetProjectsLink4
  | GetProjectsLink5
  | GetProjectsLink6
  | GetProjectsLink7
  | GetProjectsLink8;

export const GetProjectsResponseBodyNodeVersion = {
  TenDotX: "10.x",
  TwelveDotX: "12.x",
  FourteenDotX: "14.x",
  SixteenDotX: "16.x",
  EighteenDotX: "18.x",
  TwentyDotX: "20.x",
  TwentyTwoDotX: "22.x",
  TwentyFourDotX: "24.x",
  EightDot10DotX: "8.10.x",
} as const;
export type GetProjectsResponseBodyNodeVersion = ClosedEnum<
  typeof GetProjectsResponseBodyNodeVersion
>;

export type ResponseBodyPasswordProtection = {};

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

export type ResponseBodyPassport = {
  deploymentType: ResponseBodyDeploymentType;
  connectorId: string;
};

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

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

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

export const ResponseBodyBuildMachineElasticReason = {
  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 ResponseBodyBuildMachineElasticReason = ClosedEnum<
  typeof ResponseBodyBuildMachineElasticReason
>;

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

export type ResponseBodyBuildQueue = {
  configuration?: GetProjectsResponseBodyConfiguration | undefined;
};

export type GetProjectsResponseBodyResourceConfig = {
  elasticConcurrencyEnabled?: boolean | undefined;
  fluid?: boolean | undefined;
  functionDefaultRegions: Array<string>;
  functionDefaultTimeout?: number | undefined;
  functionDefaultMemoryType?: ResponseBodyFunctionDefaultMemoryType | undefined;
  functionZeroConfigFailover?: boolean | undefined;
  buildMachineType?: ResponseBodyBuildMachineType | undefined;
  buildMachineSelection?: ResponseBodyBuildMachineSelection | undefined;
  buildMachineElasticLastUpdated?: number | undefined;
  buildMachineElasticReason?: ResponseBodyBuildMachineElasticReason | undefined;
  isNSNBDisabled?: boolean | undefined;
  buildQueue?: ResponseBodyBuildQueue | undefined;
  enableFunctionsBeta?: boolean | undefined;
};

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

/**
 * The metric this check evaluates.
 */
export const GetProjectsResponseBodyProjectsResponse200ApplicationJson1RollingReleaseType =
  {
    ErrorRate5xx: "error-rate-5xx",
  } as const;
/**
 * The metric this check evaluates.
 */
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson1RollingReleaseType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson1RollingReleaseType
  >;

/**
 * The checks to evaluate. An empty array means nothing is evaluated.
 */
export type GetProjectsResponseBodyChecks = {
  /**
   * The metric this check evaluates.
   */
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1RollingReleaseType;
  /**
   * Minimum number of requests required in the window before the check can fail. Below this, the check is inconclusive rather than failing, so low-traffic stages don't gate on noise. Defaults to `100` when omitted.
   */
  minSampleSize?: number | undefined;
  /**
   * Response status codes to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Defaults to `[]` when omitted.
   */
  excludeStatusCodes?: Array<number> | undefined;
  /**
   * Request paths to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Matched exactly against the request path with any query string removed; no prefix or glob matching. Defaults to `[]` when omitted.
   */
  excludePaths?: Array<string> | undefined;
  /**
   * Seconds of ingest lag to allow for: the query's upper bound is `now() - this value`, so the check never reads a window that is still filling. Defaults to `30` when omitted.
   */
  ingestWatermarkSeconds?: number | undefined;
};

/**
 * What to do when the gate trips: pause the rollout, or roll it back.
 */
export const GetProjectsResponseBodyProjectsResponse200ApplicationJSONAction = {
  Pause: "pause",
  Rollback: "rollback",
} as const;
/**
 * What to do when the gate trips: pause the rollout, or roll it back.
 */
export type GetProjectsResponseBodyProjectsResponse200ApplicationJSONAction =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJSONAction
  >;

/**
 * Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`.
 */
export type ResponseBodyGate = {
  /**
   * 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<GetProjectsResponseBodyChecks>;
  /**
   * 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: GetProjectsResponseBodyProjectsResponse200ApplicationJSONAction;
  /**
   * 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 ResponseBodyRollingRelease = {
  /**
   * 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<ResponseBodyStages> | 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?: ResponseBodyGate | undefined;
};

export type ResponseBodySpeedInsights = {
  id: string;
  enabledAt?: number | undefined;
  disabledAt?: number | undefined;
  canceledAt?: number | undefined;
  hasData?: boolean | undefined;
  /**
   * When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads "first free data point observed", not necessarily "first ever".
   */
  dataReceivedAt?: number | undefined;
  paidAt?: number | undefined;
};

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

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

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

export type ResponseBodySsoProtection = {
  deploymentType: GetProjectsResponseBodyDeploymentType;
  cve55182MigrationAppliedFrom?:
    | ResponseBodyCve55182MigrationAppliedFrom
    | null
    | undefined;
  april2026SecurityIncidentMigrationAppliedFrom?:
    | ResponseBodyApril2026SecurityIncidentMigrationAppliedFrom
    | null
    | undefined;
};

export type GetProjectsResponseBodyAliasAssigned = number | boolean;

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsOidcTokenClaims = {
  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 GetProjectsResponseBodyProjectsPlan = {
  Enterprise: "enterprise",
  Hobby: "hobby",
  Pro: "pro",
} as const;
export type GetProjectsResponseBodyProjectsPlan = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsPlan
>;

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

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

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

export type ResponseBodyTargets = {
  id: string;
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  aliasError?: GetProjectsResponseBodyProjectsAliasError | null | undefined;
  aliasFinal?: string | null | undefined;
  automaticAliases?: Array<string> | undefined;
  branchMatcher?: GetProjectsResponseBodyBranchMatcher | undefined;
  buildingAt?: number | undefined;
  builds?: Array<GetProjectsResponseBodyProjectsBuilds> | undefined;
  checksConclusion?:
    | GetProjectsResponseBodyProjectsChecksConclusion
    | undefined;
  checksState?: GetProjectsResponseBodyProjectsChecksState | undefined;
  connectBuildsEnabled?: boolean | undefined;
  connectConfigurationId?: string | undefined;
  createdAt: number;
  createdIn: string;
  creator: GetProjectsResponseBodyProjectsResponseCreator | null;
  deletedAt?: number | undefined;
  deploymentHostname: string;
  forced?: boolean | undefined;
  name: string;
  meta?: { [k: string]: string } | undefined;
  monorepoManager?: string | null | undefined;
  oidcTokenClaims?: GetProjectsResponseBodyProjectsOidcTokenClaims | undefined;
  plan: GetProjectsResponseBodyProjectsPlan;
  /**
   * Whether or not preview comments are enabled for the deployment
   */
  previewCommentsEnabled?: boolean | undefined;
  private: boolean;
  readyAt?: number | undefined;
  readyState: GetProjectsResponseBodyProjectsReadyState;
  readySubstate?: GetProjectsResponseBodyProjectsReadySubstate | undefined;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type: GetProjectsResponseBodyProjectsResponseType;
  url: string;
  /**
   * Present for user creators; omitted for app/integration/system creators.
   */
  userId?: string | undefined;
  withCache?: boolean | undefined;
};

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

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

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

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

export type ResponseBodyFrom = GetProjectsFrom1 | GetProjectsFrom2;

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

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

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

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

export type GetProjectsResponseBodyTo =
  | GetProjectsToProjects1
  | GetProjectsToProjects2;

/**
 * Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets.
 */
export type ResponseBodyCustomAllow = {
  from: GetProjectsFrom1 | GetProjectsFrom2;
  to: GetProjectsToProjects1 | GetProjectsToProjects2;
};

export type GetProjectsResponseBodyProjectsProjects = {
  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<ResponseBodyCustomAllow> | undefined;
};

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

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

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

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

export type ResponseBodyTo = GetProjectsTo1 | GetProjectsTo2;

export type ResponseBodyOidcProviders = {
  to: GetProjectsTo1 | GetProjectsTo2;
  label?: string | undefined;
  claims: { [k: string]: Array<string> };
};

export type ResponseBodyTrustedSources = {
  /**
   * 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]: GetProjectsResponseBodyProjectsProjects }
    | undefined;
  oidcProviders?: { [k: string]: Array<ResponseBodyOidcProviders> } | undefined;
};

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

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

export type ResponseBodyGitProviderOptions = {
  /**
   * 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: ResponseBodyCreateDeployments;
  /**
   * 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?:
    | ResponseBodyConsolidatedGitCommitStatus
    | undefined;
};

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

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

export type Src = string | Src2;

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

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

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

export type GetProjectsResponseBodyProjectsResponseValue =
  | string
  | GetProjectsValue2;

export type GetProjectsResponseBodyHas = {
  type: GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityType;
  key?: string | undefined;
  value?: string | GetProjectsValue2 | undefined;
};

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

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

export type GetProjectsResponseBodyProjectsValue =
  | string
  | GetProjectsValueProjects2;

export type GetProjectsResponseBodyMissing = {
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityFirewallRoutesType;
  key?: string | undefined;
  value?: string | GetProjectsValueProjects2 | undefined;
};

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

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

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

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

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

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

export type GetProjectsResponseBodyMitigate = {
  action:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityFirewallRoutesAction;
  ruleId: string;
  ttl?: number | undefined;
  erl?: Erl | undefined;
  logHeaders?:
    | Array<string>
    | GetProjectsLogHeadersProjectsResponse200ApplicationJson2
    | undefined;
};

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

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

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson1Target = {
  key: string;
};

export type GetProjectsResponseBodyTransforms = {
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityFirewallRoutesTransformsType;
  op: ResponseBodyOp;
  target: GetProjectsResponseBodyProjectsResponse200ApplicationJson1Target;
  args: string;
};

export type FirewallRoutes = {
  src?: string | Src2 | undefined;
  tierRequirement?: TierRequirement | undefined;
  has?: Array<GetProjectsResponseBodyHas> | undefined;
  missing?: Array<GetProjectsResponseBodyMissing> | undefined;
  dest?: string | undefined;
  status?: number | undefined;
  handle?: ResponseBodyHandle | undefined;
  mitigate?: GetProjectsResponseBodyMitigate | undefined;
  transforms?: Array<GetProjectsResponseBodyTransforms> | undefined;
};

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

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

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

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

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

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

export type ResponseBodyRulesets = {
  action: GetProjectsResponseBodyAction;
  rateLimit?: ResponseBodyRateLimit | null | undefined;
  redirect?: ResponseBodyRedirect | null | undefined;
  actionDuration?: string | null | undefined;
  bypassSystem?: boolean | null | undefined;
  logHeaders?: Array<string> | GetProjectsLogHeadersProjects2 | undefined;
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsContentHint7$inboundSchema: z.ZodType<
  GetProjectsContentHint7,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-webhook-public-key"),
  storeId: types.string(),
});

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

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

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

/** @internal */
export const GetProjectsContentHint5$inboundSchema: z.ZodType<
  GetProjectsContentHint5,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("blob-read-write-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint4$inboundSchema: z.ZodType<
  GetProjectsContentHint4,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-read-only-token"),
  storeId: types.string(),
});

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

/** @internal */
export const GetProjectsContentHint3$inboundSchema: z.ZodType<
  GetProjectsContentHint3,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("redis-rest-api-token"),
  storeId: types.string(),
});

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyContentHint$inboundSchema: z.ZodType<
  GetProjectsResponseBodyContentHint,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsContentHint1$inboundSchema),
  z.lazy(() => GetProjectsContentHint2$inboundSchema),
  z.lazy(() => GetProjectsContentHint3$inboundSchema),
  z.lazy(() => GetProjectsContentHint4$inboundSchema),
  z.lazy(() => GetProjectsContentHint5$inboundSchema),
  z.lazy(() => GetProjectsContentHint6$inboundSchema),
  z.lazy(() => GetProjectsContentHint7$inboundSchema),
  z.lazy(() => GetProjectsContentHint8$inboundSchema),
  z.lazy(() => GetProjectsContentHint9$inboundSchema),
  z.lazy(() => GetProjectsContentHint10$inboundSchema),
  z.lazy(() => GetProjectsContentHint11$inboundSchema),
  z.lazy(() => GetProjectsContentHint12$inboundSchema),
  z.lazy(() => GetProjectsContentHint13$inboundSchema),
  z.lazy(() => GetProjectsContentHint14$inboundSchema),
  z.lazy(() => GetProjectsContentHint15$inboundSchema),
  z.lazy(() => GetProjectsContentHint16$inboundSchema),
  z.lazy(() => GetProjectsContentHint17$inboundSchema),
]);

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

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

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

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

/** @internal */
export const ResponseBodyEnv$inboundSchema: z.ZodType<
  ResponseBodyEnv,
  z.ZodTypeDef,
  unknown
> = z.object({
  target: types.optional(
    smartUnion([
      z.array(GetProjectsTarget1$inboundSchema),
      GetProjectsTarget2$inboundSchema,
    ]),
  ),
  type: GetProjectsResponseBodyType$inboundSchema,
  sunsetSecretId: types.optional(types.string()),
  legacyValue: types.optional(types.string()),
  decrypted: types.optional(types.boolean()),
  value: types.string(),
  vsmValue: types.optional(types.string()),
  id: types.optional(types.string()),
  key: types.string(),
  configurationId: z.nullable(types.string()).optional(),
  createdAt: types.optional(types.number()),
  updatedAt: types.optional(types.number()),
  createdBy: z.nullable(types.string()).optional(),
  updatedBy: z.nullable(types.string()).optional(),
  gitBranch: types.optional(types.string()),
  visibility: types.optional(GetProjectsResponseBodyVisibility$inboundSchema),
  edgeConfigId: z.nullable(types.string()).optional(),
  edgeConfigTokenId: z.nullable(types.string()).optional(),
  contentHint: z.nullable(
    z.union([
      z.lazy(() => GetProjectsContentHint1$inboundSchema),
      z.lazy(() => GetProjectsContentHint2$inboundSchema),
      z.lazy(() => GetProjectsContentHint3$inboundSchema),
      z.lazy(() => GetProjectsContentHint4$inboundSchema),
      z.lazy(() => GetProjectsContentHint5$inboundSchema),
      z.lazy(() => GetProjectsContentHint6$inboundSchema),
      z.lazy(() => GetProjectsContentHint7$inboundSchema),
      z.lazy(() => GetProjectsContentHint8$inboundSchema),
      z.lazy(() => GetProjectsContentHint9$inboundSchema),
      z.lazy(() => GetProjectsContentHint10$inboundSchema),
      z.lazy(() => GetProjectsContentHint11$inboundSchema),
      z.lazy(() => GetProjectsContentHint12$inboundSchema),
      z.lazy(() => GetProjectsContentHint13$inboundSchema),
      z.lazy(() => GetProjectsContentHint14$inboundSchema),
      z.lazy(() => GetProjectsContentHint15$inboundSchema),
      z.lazy(() => GetProjectsContentHint16$inboundSchema),
      z.lazy(() => GetProjectsContentHint17$inboundSchema),
    ]),
  ).optional(),
  internalContentHint: z.nullable(
    z.lazy(() => GetProjectsResponseBodyInternalContentHint$inboundSchema),
  ).optional(),
  comment: types.optional(types.string()),
  customEnvironmentIds: types.optional(z.array(types.string())),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyLatestDeployments$inboundSchema: z.ZodType<
  ResponseBodyLatestDeployments,
  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(() => GetProjectsResponseBodyAliasError$inboundSchema),
  ).optional(),
  aliasFinal: z.nullable(types.string()).optional(),
  automaticAliases: types.optional(z.array(types.string())),
  branchMatcher: types.optional(
    z.lazy(() => ResponseBodyBranchMatcher$inboundSchema),
  ),
  buildingAt: types.optional(types.number()),
  builds: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyBuilds$inboundSchema)),
  ),
  checksConclusion: types.optional(
    GetProjectsResponseBodyChecksConclusion$inboundSchema,
  ),
  checksState: types.optional(GetProjectsResponseBodyChecksState$inboundSchema),
  connectBuildsEnabled: types.optional(types.boolean()),
  connectConfigurationId: types.optional(types.string()),
  createdAt: types.number(),
  createdIn: types.string(),
  creator: types.nullable(
    z.lazy(() => GetProjectsResponseBodyProjectsCreator$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(() => GetProjectsResponseBodyOidcTokenClaims$inboundSchema),
  ),
  plan: GetProjectsResponseBodyPlan$inboundSchema,
  previewCommentsEnabled: types.optional(types.boolean()),
  private: types.boolean(),
  readyAt: types.optional(types.number()),
  readyState: GetProjectsResponseBodyReadyState$inboundSchema,
  readySubstate: types.optional(
    GetProjectsResponseBodyReadySubstate$inboundSchema,
  ),
  requestedAt: types.optional(types.number()),
  target: z.nullable(types.string()).optional(),
  teamId: z.nullable(types.string()).optional(),
  type: GetProjectsResponseBodyProjectsType$inboundSchema,
  url: types.string(),
  userId: types.optional(types.string()),
  withCache: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody18DeployHooks$inboundSchema:
  z.ZodType<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody18DeployHooks,
    z.ZodTypeDef,
    unknown
  > = z.object({
    createdAt: types.optional(types.number()),
    id: types.string(),
    name: types.string(),
    ref: types.string(),
    url: types.string(),
  });

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

/** @internal */
export const GetProjectsLink8$inboundSchema: z.ZodType<
  GetProjectsLink8,
  z.ZodTypeDef,
  unknown
> = z.object({
  owner: types.string(),
  repo: types.string(),
  repoId: types.string(),
  ownerId: types.string(),
  type: types.literal("cursor-origin"),
  createdAt: types.optional(types.number()),
  deployHooks: z.array(
    z.lazy(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody18DeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody1DeployHooks$inboundSchema:
  z.ZodType<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody1DeployHooks,
    z.ZodTypeDef,
    unknown
  > = z.object({
    createdAt: types.optional(types.number()),
    id: types.string(),
    name: types.string(),
    ref: types.string(),
    url: types.string(),
  });

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

/** @internal */
export const GetProjectsLink7$inboundSchema: z.ZodType<
  GetProjectsLink7,
  z.ZodTypeDef,
  unknown
> = z.object({
  org: types.string(),
  repo: types.string(),
  repoId: types.string(),
  type: types.literal("v0"),
  createdAt: types.optional(types.number()),
  deployHooks: z.array(
    z.lazy(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody1DeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsLinkProjectsResponse200ApplicationJSONResponseBodyDeployHooks$inboundSchema:
  z.ZodType<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBodyDeployHooks,
    z.ZodTypeDef,
    unknown
  > = z.object({
    createdAt: types.optional(types.number()),
    id: types.string(),
    name: types.string(),
    ref: types.string(),
    url: types.string(),
  });

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

/** @internal */
export const GetProjectsLink6$inboundSchema: z.ZodType<
  GetProjectsLink6,
  z.ZodTypeDef,
  unknown
> = z.object({
  org: types.string(),
  repo: types.string(),
  repoId: types.string(),
  type: types.literal("vercel"),
  createdAt: types.optional(types.number()),
  deployHooks: z.array(
    z.lazy(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBodyDeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsLinkProjectsResponse200ApplicationJSONDeployHooks$inboundSchema:
  z.ZodType<
    GetProjectsLinkProjectsResponse200ApplicationJSONDeployHooks,
    z.ZodTypeDef,
    unknown
  > = z.object({
    createdAt: types.optional(types.number()),
    id: types.string(),
    name: types.string(),
    ref: types.string(),
    url: types.string(),
  });

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

/** @internal */
export const GetProjectsLink5$inboundSchema: z.ZodType<
  GetProjectsLink5,
  z.ZodTypeDef,
  unknown
> = z.object({
  name: types.string(),
  slug: types.string(),
  owner: types.string(),
  type: types.literal("bitbucket"),
  uuid: types.string(),
  workspaceUuid: types.string(),
  createdAt: types.optional(types.number()),
  deployHooks: z.array(
    z.lazy(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONDeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsLinkProjectsResponse200DeployHooks$inboundSchema:
  z.ZodType<
    GetProjectsLinkProjectsResponse200DeployHooks,
    z.ZodTypeDef,
    unknown
  > = z.object({
    createdAt: types.optional(types.number()),
    id: types.string(),
    name: types.string(),
    ref: types.string(),
    url: types.string(),
  });

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

/** @internal */
export const GetProjectsLink4$inboundSchema: z.ZodType<
  GetProjectsLink4,
  z.ZodTypeDef,
  unknown
> = z.object({
  projectId: types.string(),
  projectName: types.string(),
  projectNameWithNamespace: types.string(),
  projectNamespace: types.string(),
  projectOwnerId: types.optional(types.number()),
  projectUrl: types.string(),
  type: types.literal("gitlab"),
  createdAt: types.optional(types.number()),
  deployHooks: z.array(
    z.lazy(() => GetProjectsLinkProjectsResponse200DeployHooks$inboundSchema),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsLinkProjectsResponseDeployHooks$inboundSchema:
  z.ZodType<GetProjectsLinkProjectsResponseDeployHooks, z.ZodTypeDef, unknown> =
    z.object({
      createdAt: types.optional(types.number()),
      id: types.string(),
      name: types.string(),
      ref: types.string(),
      url: types.string(),
    });

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

/** @internal */
export const GetProjectsLink3$inboundSchema: z.ZodType<
  GetProjectsLink3,
  z.ZodTypeDef,
  unknown
> = z.object({
  org: types.string(),
  repoOwnerId: types.optional(types.number()),
  repo: types.optional(types.string()),
  repoId: types.optional(types.number()),
  type: types.literal("github-custom-host"),
  host: types.string(),
  createdAt: types.optional(types.number()),
  deployHooks: z.array(
    z.lazy(() => GetProjectsLinkProjectsResponseDeployHooks$inboundSchema),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsLinkProjectsDeployHooks$inboundSchema: z.ZodType<
  GetProjectsLinkProjectsDeployHooks,
  z.ZodTypeDef,
  unknown
> = z.object({
  createdAt: types.optional(types.number()),
  id: types.string(),
  name: types.string(),
  ref: types.string(),
  url: types.string(),
});

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

/** @internal */
export const GetProjectsLink2$inboundSchema: z.ZodType<
  GetProjectsLink2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("github-limited"),
  repo: types.optional(types.string()),
  repoId: types.optional(types.number()),
  createdAt: types.optional(types.number()),
  updatedAt: types.optional(types.number()),
  org: types.string(),
  repoOwnerId: types.optional(types.number()),
  deployHooks: z.array(
    z.lazy(() => GetProjectsLinkProjectsDeployHooks$inboundSchema),
  ),
  gitCredentialId: types.string(),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsLinkDeployHooks$inboundSchema: z.ZodType<
  GetProjectsLinkDeployHooks,
  z.ZodTypeDef,
  unknown
> = z.object({
  createdAt: types.optional(types.number()),
  id: types.string(),
  name: types.string(),
  ref: types.string(),
  url: types.string(),
});

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

/** @internal */
export const GetProjectsLink1$inboundSchema: z.ZodType<
  GetProjectsLink1,
  z.ZodTypeDef,
  unknown
> = z.object({
  org: types.string(),
  repoOwnerId: types.optional(types.number()),
  repo: types.optional(types.string()),
  repoId: types.optional(types.number()),
  type: types.literal("github"),
  createdAt: types.optional(types.number()),
  deployHooks: z.array(z.lazy(() => GetProjectsLinkDeployHooks$inboundSchema)),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const ResponseBodyLink$inboundSchema: z.ZodType<
  ResponseBodyLink,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsLink1$inboundSchema),
  z.lazy(() => GetProjectsLink2$inboundSchema),
  z.lazy(() => GetProjectsLink3$inboundSchema),
  z.lazy(() => GetProjectsLink4$inboundSchema),
  z.lazy(() => GetProjectsLink5$inboundSchema),
  z.lazy(() => GetProjectsLink6$inboundSchema),
  z.lazy(() => GetProjectsLink7$inboundSchema),
  z.lazy(() => GetProjectsLink8$inboundSchema),
]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyChecks$inboundSchema: z.ZodType<
  GetProjectsResponseBodyChecks,
  z.ZodTypeDef,
  unknown
> = z.object({
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1RollingReleaseType$inboundSchema,
  minSampleSize: types.optional(types.number()),
  excludeStatusCodes: types.optional(z.array(types.number())),
  excludePaths: types.optional(z.array(types.string())),
  ingestWatermarkSeconds: types.optional(types.number()),
});

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodySsoProtection$inboundSchema: z.ZodType<
  ResponseBodySsoProtection,
  z.ZodTypeDef,
  unknown
> = z.object({
  deploymentType: GetProjectsResponseBodyDeploymentType$inboundSchema,
  cve55182MigrationAppliedFrom: z.nullable(
    ResponseBodyCve55182MigrationAppliedFrom$inboundSchema,
  ).optional(),
  april2026SecurityIncidentMigrationAppliedFrom: z.nullable(
    ResponseBodyApril2026SecurityIncidentMigrationAppliedFrom$inboundSchema,
  ).optional(),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyTargets$inboundSchema: z.ZodType<
  ResponseBodyTargets,
  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(() => GetProjectsResponseBodyProjectsAliasError$inboundSchema),
  ).optional(),
  aliasFinal: z.nullable(types.string()).optional(),
  automaticAliases: types.optional(z.array(types.string())),
  branchMatcher: types.optional(
    z.lazy(() => GetProjectsResponseBodyBranchMatcher$inboundSchema),
  ),
  buildingAt: types.optional(types.number()),
  builds: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyProjectsBuilds$inboundSchema)),
  ),
  checksConclusion: types.optional(
    GetProjectsResponseBodyProjectsChecksConclusion$inboundSchema,
  ),
  checksState: types.optional(
    GetProjectsResponseBodyProjectsChecksState$inboundSchema,
  ),
  connectBuildsEnabled: types.optional(types.boolean()),
  connectConfigurationId: types.optional(types.string()),
  createdAt: types.number(),
  createdIn: types.string(),
  creator: types.nullable(
    z.lazy(() => GetProjectsResponseBodyProjectsResponseCreator$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(() => GetProjectsResponseBodyProjectsOidcTokenClaims$inboundSchema),
  ),
  plan: GetProjectsResponseBodyProjectsPlan$inboundSchema,
  previewCommentsEnabled: types.optional(types.boolean()),
  private: types.boolean(),
  readyAt: types.optional(types.number()),
  readyState: GetProjectsResponseBodyProjectsReadyState$inboundSchema,
  readySubstate: types.optional(
    GetProjectsResponseBodyProjectsReadySubstate$inboundSchema,
  ),
  requestedAt: types.optional(types.number()),
  target: z.nullable(types.string()).optional(),
  teamId: z.nullable(types.string()).optional(),
  type: GetProjectsResponseBodyProjectsResponseType$inboundSchema,
  url: types.string(),
  userId: types.optional(types.string()),
  withCache: types.optional(types.boolean()),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyCustomAllow$inboundSchema: z.ZodType<
  ResponseBodyCustomAllow,
  z.ZodTypeDef,
  unknown
> = z.object({
  from: smartUnion([
    z.lazy(() => GetProjectsFrom1$inboundSchema),
    z.lazy(() => GetProjectsFrom2$inboundSchema),
  ]),
  to: smartUnion([
    z.lazy(() => GetProjectsToProjects1$inboundSchema),
    z.lazy(() => GetProjectsToProjects2$inboundSchema),
  ]),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyTransforms$inboundSchema: z.ZodType<
  GetProjectsResponseBodyTransforms,
  z.ZodTypeDef,
  unknown
> = z.object({
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1SecurityFirewallRoutesTransformsType$inboundSchema,
  op: ResponseBodyOp$inboundSchema,
  target: z.lazy(() =>
    GetProjectsResponseBodyProjectsResponse200ApplicationJson1Target$inboundSchema
  ),
  args: types.string(),
});

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

/** @internal */
export const FirewallRoutes$inboundSchema: z.ZodType<
  FirewallRoutes,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.optional(
    smartUnion([types.string(), z.lazy(() => Src2$inboundSchema)]),
  ),
  tierRequirement: types.optional(TierRequirement$inboundSchema),
  has: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyHas$inboundSchema)),
  ),
  missing: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyMissing$inboundSchema)),
  ),
  dest: types.optional(types.string()),
  status: types.optional(types.number()),
  handle: types.optional(ResponseBodyHandle$inboundSchema),
  mitigate: types.optional(
    z.lazy(() => GetProjectsResponseBodyMitigate$inboundSchema),
  ),
  transforms: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyTransforms$inboundSchema)),
  ),
});

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

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

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

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

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

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

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

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

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

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

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

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

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