UNPKG

@vercel/sdk

Version:

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

5,195 lines 169 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 {
  GetProjectsResponseBodyCrons,
  GetProjectsResponseBodyCrons$inboundSchema,
  GetProjectsResponseBodyMicrofrontends,
  GetProjectsResponseBodyMicrofrontends$inboundSchema,
  GetProjectsResponseBodyProjectsAnalytics,
  GetProjectsResponseBodyProjectsAnalytics$inboundSchema,
  GetProjectsResponseBodyProjectsDeploymentExpiration,
  GetProjectsResponseBodyProjectsDeploymentExpiration$inboundSchema,
  GetProjectsResponseBodyProjectsEnv,
  GetProjectsResponseBodyProjectsEnv$inboundSchema,
  GetProjectsResponseBodyProjectsFramework,
  GetProjectsResponseBodyProjectsFramework$inboundSchema,
  GetProjectsResponseBodyProjectsGitComments,
  GetProjectsResponseBodyProjectsGitComments$inboundSchema,
  GetProjectsResponseBodyProjectsGitProviderOptions,
  GetProjectsResponseBodyProjectsGitProviderOptions$inboundSchema,
  GetProjectsResponseBodyProjectsIpBuckets,
  GetProjectsResponseBodyProjectsIpBuckets$inboundSchema,
  GetProjectsResponseBodyProjectsLatestDeployments,
  GetProjectsResponseBodyProjectsLatestDeployments$inboundSchema,
  GetProjectsResponseBodyProjectsLink,
  GetProjectsResponseBodyProjectsLink$inboundSchema,
  GetProjectsResponseBodyProjectsPassport,
  GetProjectsResponseBodyProjectsPassport$inboundSchema,
  GetProjectsResponseBodyProjectsPasswordProtection,
  GetProjectsResponseBodyProjectsPasswordProtection$inboundSchema,
  GetProjectsResponseBodyProjectsResourceConfig,
  GetProjectsResponseBodyProjectsResourceConfig$inboundSchema,
  GetProjectsResponseBodyProjectsResponseNodeVersion,
  GetProjectsResponseBodyProjectsResponseNodeVersion$inboundSchema,
  GetProjectsResponseBodyProjectsRollingRelease,
  GetProjectsResponseBodyProjectsRollingRelease$inboundSchema,
  GetProjectsResponseBodyProjectsSpeedInsights,
  GetProjectsResponseBodyProjectsSpeedInsights$inboundSchema,
  GetProjectsResponseBodyProjectsSsoProtection,
  GetProjectsResponseBodyProjectsSsoProtection$inboundSchema,
  GetProjectsResponseBodyProjectsTargets,
  GetProjectsResponseBodyProjectsTargets$inboundSchema,
  GetProjectsResponseBodyProjectsTrustedSources,
  GetProjectsResponseBodyProjectsTrustedSources$inboundSchema,
  ResponseBodyConnectConfigurations,
  ResponseBodyConnectConfigurations$inboundSchema,
  ResponseBodyCustomEnvironments,
  ResponseBodyCustomEnvironments$inboundSchema,
  ResponseBodyDataCache,
  ResponseBodyDataCache$inboundSchema,
  ResponseBodyDefaultResourceConfig,
  ResponseBodyDefaultResourceConfig$inboundSchema,
  ResponseBodyExpiration,
  ResponseBodyExpiration$inboundSchema,
  ResponseBodyJobs,
  ResponseBodyJobs$inboundSchema,
  ResponseBodyLastAliasRequest,
  ResponseBodyLastAliasRequest$inboundSchema,
  ResponseBodyLastRollbackTarget,
  ResponseBodyLastRollbackTarget$inboundSchema,
  ResponseBodyOptionsAllowlist,
  ResponseBodyOptionsAllowlist$inboundSchema,
  ResponseBodyPermissions,
  ResponseBodyPermissions$inboundSchema,
  ResponseBodyProtectionBypass,
  ResponseBodyProtectionBypass$inboundSchema,
  ResponseBodyProtectionConfig,
  ResponseBodyProtectionConfig$inboundSchema,
  ResponseBodyRollbackDescription,
  ResponseBodyRollbackDescription$inboundSchema,
  ResponseBodyServices,
  ResponseBodyServices$inboundSchema,
  ResponseBodyStaticIps,
  ResponseBodyStaticIps$inboundSchema,
  ResponseBodyTrustedIps,
  ResponseBodyTrustedIps$inboundSchema,
} from "./getprojectsresponsebodyprojectsgitprovideroptions.js";
import { Pagination, Pagination$inboundSchema } from "./pagination.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsSecurity = {
  attackModeEnabled?: boolean | undefined;
  attackModeUpdatedAt?: number | undefined;
  firewallEnabled?: boolean | undefined;
  firewallUpdatedAt?: number | undefined;
  attackModeActiveUntil?: number | null | undefined;
  firewallConfigVersion?: number | undefined;
  firewallSeawallEnabled?: boolean | undefined;
  ja3Enabled?: boolean | undefined;
  ja4Enabled?: boolean | undefined;
  firewallBypassIps?: Array<string> | undefined;
  managedRules?: GetProjectsResponseBodyProjectsManagedRules | null | undefined;
  botIdEnabled?: boolean | undefined;
  logHeaders?:
    | Array<string>
    | GetProjectsLogHeadersProjectsResponse2
    | undefined;
  securityPlus?: boolean | undefined;
  securityPlusMetadata?:
    | GetProjectsResponseBodyProjectsSecurityPlusMetadata
    | undefined;
  /**
   * Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table.
   */
  pageIntegrityEnabled?: boolean | undefined;
};

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyEnvironments =
  | GetProjectsEnvironments1
  | GetProjectsEnvironments2;

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

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

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

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

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

export type GetProjectsResponseBodyProjectsEnvironments =
  | GetProjectsEnvironmentsProjects1
  | GetProjectsEnvironmentsProjects2;

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

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

export const ResponseBodyFlatRateTier = {
  Advanced: "advanced",
  Base: "base",
  Critical: "critical",
  Standard: "standard",
} as const;
export type ResponseBodyFlatRateTier = ClosedEnum<
  typeof ResponseBodyFlatRateTier
>;

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

export type ResponseBodyUsageStatus = {
  /**
   * Billing mode. Always 'flat' for flat-rate projects.
   */
  kind: GetProjectsResponseBodyKind;
  /**
   * Timestamp until which the project has exceeded its CDN allowance.
   */
  exceededAllowanceUntil?: number | undefined;
  /**
   * Timestamp until which throttling is bypassed (project pays list rates for overage).
   */
  bypassThrottleUntil?: number | undefined;
  /**
   * Whether the project is currently throttled.
   */
  throttled?: boolean | undefined;
};

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

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

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

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsAbuseBlockHistoryValue =
  {
    eq: string;
  };

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

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsAbuseValue =
  {
    eq: string;
  };

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

export type GetProjectsRouteProjectsResponse200ApplicationJSONResponseBodyHas =
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects1
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Projects2;

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

export type GetProjectsRouteProjectsResponse200ApplicationJSONResponseBodyMitigate =
  {
    action:
      GetProjectsRouteProjectsResponse200ApplicationJSONResponseBodyAction;
  };

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

export type GetProjectsRouteProjectsResponse200ApplicationJSONResponseBody1 = {
  src: string;
  status: number;
};

export type GetProjectsBlockHistoryProjectsResponse200ApplicationJSONResponseBodyRoute =
  | GetProjectsRouteProjectsResponse200ApplicationJSONResponseBody1
  | GetProjectsRouteProjectsResponse200ApplicationJSONResponseBody2;

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3ProjectsValue =
  {
    eq: string;
  };

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

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBody3Value =
  {
    eq: string;
  };

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

export type GetProjectsRouteProjectsResponse200ApplicationJSONHas =
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody31
  | GetProjectsHasProjectsResponse200ApplicationJSONResponseBody32;

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

export type GetProjectsRouteProjectsResponse200ApplicationJSONMitigate = {
  action: GetProjectsRouteProjectsResponse200ApplicationJSONAction;
};

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

export type GetProjectsRouteProjectsResponse200ApplicationJson1 = {
  src: string;
  status: number;
};

export type GetProjectsBlockHistoryProjectsResponse200ApplicationJSONRoute =
  | GetProjectsRouteProjectsResponse200ApplicationJson1
  | GetProjectsRouteProjectsResponse200ApplicationJson2;

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

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

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

export type GetProjectsResponseBodyProjectsBlockHistory =
  | GetProjectsBlockHistoryProjectsResponse1
  | GetProjectsBlockHistoryProjectsResponse2
  | GetProjectsBlockHistoryProjectsResponse3
  | GetProjectsBlockHistoryProjectsResponse4;

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

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

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

export type GetProjectsHasProjectsResponse200ApplicationJSONResponseBodyValue =
  {
    eq: string;
  };

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

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

export type GetProjectsHasProjectsResponse200ApplicationJSONValue = {
  eq: string;
};

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

export type GetProjectsInternalRoutesProjectsResponseHas =
  | GetProjectsHasProjectsResponse1
  | GetProjectsHasProjectsResponse2;

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

export type GetProjectsInternalRoutesProjectsResponseMitigate = {
  action: GetProjectsInternalRoutesProjectsResponseAction;
};

export type GetProjectsInternalRoutesProjectsResponse2 = {
  has: Array<GetProjectsHasProjectsResponse1 | GetProjectsHasProjectsResponse2>;
  mitigate: GetProjectsInternalRoutesProjectsResponseMitigate;
  src?: string | undefined;
};

export type GetProjectsInternalRoutesProjectsResponse1 = {
  src: string;
  status: number;
};

export type GetProjectsResponseBodyProjectsInternalRoutes =
  | GetProjectsInternalRoutesProjectsResponse1
  | GetProjectsInternalRoutesProjectsResponse2;

export const GetProjectsResponseBodyProjectsAction = {
  Accept: "accept",
  Cancel: "cancel",
  Delete: "delete",
} as const;
export type GetProjectsResponseBodyProjectsAction = ClosedEnum<
  typeof GetProjectsResponseBodyProjectsAction
>;

export type GetProjectsValuePreviousValue = string | number | boolean;

export type GetProjectsValueCurrentValue = string | number | boolean;

export type GetProjectsValue3 = {
  previousValue: string | number | boolean;
  currentValue: string | number | boolean;
};

export type ResponseBodyValue = GetProjectsValue3 | string | number | boolean;

export type ResponseBodyDismissedToasts = {
  key: string;
  dismissedAt: number;
  action: GetProjectsResponseBodyProjectsAction;
  value: GetProjectsValue3 | string | number | boolean | null;
};

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

export type ResponseBodySamplingRules = {
  rate: number;
  env?: GetProjectsResponseBodyProjectsResponseEnv | undefined;
  requestPath?: string | undefined;
};

export type ResponseBodyTracing = {
  domains?: string | undefined;
  ignorePaths?: Array<string> | undefined;
  samplingRules?: Array<ResponseBodySamplingRules> | undefined;
};

export type GetProjectsResponseBodyProjects = {
  accountId: string;
  analytics?: GetProjectsResponseBodyProjectsAnalytics | undefined;
  appliedCve55182Migration?: boolean | undefined;
  speedInsights?: GetProjectsResponseBodyProjectsSpeedInsights | undefined;
  autoExposeSystemEnvs?: boolean | undefined;
  autoAssignCustomDomains?: boolean | undefined;
  autoAssignCustomDomainsUpdatedBy?: string | undefined;
  buildCommand?: string | null | undefined;
  commandForIgnoringBuildStep?: string | null | undefined;
  connectConfigurations?:
    | Array<ResponseBodyConnectConfigurations>
    | null
    | undefined;
  connectConfigurationId?: string | null | undefined;
  connectBuildsEnabled?: boolean | undefined;
  passiveConnectConfigurationId?: string | null | undefined;
  createdAt?: number | undefined;
  customerSupportCodeVisibility?: boolean | undefined;
  crons?: GetProjectsResponseBodyCrons | undefined;
  dataCache?: ResponseBodyDataCache | undefined;
  /**
   * Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects.
   */
  deploymentExpiration: GetProjectsResponseBodyProjectsDeploymentExpiration;
  expiration?: ResponseBodyExpiration | undefined;
  devCommand?: string | null | undefined;
  directoryListing: boolean;
  installCommand?: string | null | undefined;
  env?: Array<GetProjectsResponseBodyProjectsEnv> | undefined;
  customEnvironments?: Array<ResponseBodyCustomEnvironments> | undefined;
  framework?: GetProjectsResponseBodyProjectsFramework | null | undefined;
  services?: Array<ResponseBodyServices> | undefined;
  gitForkProtection?: boolean | undefined;
  gitLFS?: boolean | undefined;
  id: string;
  ipBuckets?: Array<GetProjectsResponseBodyProjectsIpBuckets> | undefined;
  jobs?: ResponseBodyJobs | undefined;
  latestDeployments?:
    | Array<GetProjectsResponseBodyProjectsLatestDeployments>
    | undefined;
  link?: GetProjectsResponseBodyProjectsLink | undefined;
  microfrontends?: GetProjectsResponseBodyMicrofrontends | undefined;
  name: string;
  nodeVersion: GetProjectsResponseBodyProjectsResponseNodeVersion;
  optionsAllowlist?: ResponseBodyOptionsAllowlist | null | undefined;
  outputDirectory?: string | null | undefined;
  passwordProtection?:
    | GetProjectsResponseBodyProjectsPasswordProtection
    | null
    | undefined;
  passport?: GetProjectsResponseBodyProjectsPassport | null | undefined;
  protectionConfig?: ResponseBodyProtectionConfig | undefined;
  productionDeploymentsFastLane?: boolean | undefined;
  resourceConfig: GetProjectsResponseBodyProjectsResourceConfig;
  /**
   * Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback.
   */
  rollbackDescription?: ResponseBodyRollbackDescription | undefined;
  /**
   * Project-level rolling release configuration that defines how deployments should be gradually rolled out
   */
  rollingRelease?:
    | GetProjectsResponseBodyProjectsRollingRelease
    | null
    | undefined;
  defaultResourceConfig: ResponseBodyDefaultResourceConfig;
  rootDirectory?: string | null | undefined;
  serverlessFunctionZeroConfigFailover?: boolean | undefined;
  skewProtectionBoundaryAt?: number | undefined;
  skewProtectionMaxAge?: number | undefined;
  skewProtectionAllowedDomains?: Array<string> | undefined;
  skipGitConnectDuringLink?: boolean | undefined;
  staticIps?: ResponseBodyStaticIps | undefined;
  sourceFilesOutsideRootDirectory?: boolean | undefined;
  enableAffectedProjectsDeployments?: boolean | undefined;
  enableExternalRewriteCaching?: boolean | undefined;
  ssoProtection?:
    | GetProjectsResponseBodyProjectsSsoProtection
    | null
    | undefined;
  targets?:
    | { [k: string]: GetProjectsResponseBodyProjectsTargets | null }
    | undefined;
  transferCompletedAt?: number | undefined;
  transferStartedAt?: number | undefined;
  transferToAccountId?: string | undefined;
  transferredFromAccountId?: string | undefined;
  updatedAt?: number | undefined;
  live?: boolean | undefined;
  enablePreviewFeedback?: boolean | null | undefined;
  enableProductionFeedback?: boolean | null | undefined;
  permissions?: ResponseBodyPermissions | undefined;
  lastRollbackTarget?: ResponseBodyLastRollbackTarget | null | undefined;
  lastAliasRequest?: ResponseBodyLastAliasRequest | null | undefined;
  protectionBypass?: { [k: string]: ResponseBodyProtectionBypass } | undefined;
  hasActiveBranches?: boolean | undefined;
  trustedIps?: ResponseBodyTrustedIps | null | undefined;
  trustedSources?:
    | GetProjectsResponseBodyProjectsTrustedSources
    | null
    | undefined;
  gitComments?: GetProjectsResponseBodyProjectsGitComments | undefined;
  gitProviderOptions?:
    | GetProjectsResponseBodyProjectsGitProviderOptions
    | undefined;
  paused?: boolean | undefined;
  concurrencyBucketName?: string | undefined;
  webAnalytics?: GetProjectsResponseBodyProjectsWebAnalytics | undefined;
  security?: GetProjectsResponseBodyProjectsSecurity | undefined;
  oidcTokenConfig?: GetProjectsResponseBodyProjectsOidcTokenConfig | undefined;
  /**
   * Project shape. `null` on a rule list clears the project's override for that rule type (fall back to team for every env); omitting is equivalent. Setting `deploymentPolicy` itself to `null` clears every override at once. Kept structurally distinct from {@link TeamDeploymentPolicy} so the two storage locations don't share a type by accident.
   */
  deploymentPolicy?: ResponseBodyDeploymentPolicy | null | undefined;
  tier?: string | undefined;
  flatRateTier?: ResponseBodyFlatRateTier | undefined;
  usageStatus?: ResponseBodyUsageStatus | undefined;
  features?: ResponseBodyFeatures | undefined;
  v0?: boolean | undefined;
  v0Created?: boolean | undefined;
  abuse?: GetProjectsResponseBodyProjectsAbuse | undefined;
  internalRoutes?:
    | Array<
      | GetProjectsInternalRoutesProjectsResponse1
      | GetProjectsInternalRoutesProjectsResponse2
    >
    | undefined;
  hasDeployments?: boolean | undefined;
  dismissedToasts?: Array<ResponseBodyDismissedToasts> | undefined;
  protectedSourcemaps?: boolean | undefined;
  tracing?: ResponseBodyTracing | undefined;
  avatar?: string | null | undefined;
};

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

export type GetProjectsResponseBodyProjectsPagination =
  | Pagination
  | GetProjectsPagination1;

export type GetProjectsResponseBody3 = {
  projects: Array<GetProjectsResponseBodyProjects>;
  pagination: Pagination | GetProjectsPagination1;
};

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

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson2AliasAssigned =
  | number
  | boolean;

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

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

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

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

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

export type ResponseBodyAlias = {
  configuredBy?: GetProjectsResponseBodyConfiguredBy | null | undefined;
  configuredChangedAt?: number | null | undefined;
  createdAt?: number | null | undefined;
  deployment: GetProjectsResponseBodyDeployment | null;
  domain: string;
  environment: GetProjectsResponseBodyEnvironment;
  gitBranch?: string | null | undefined;
  redirect?: string | null | undefined;
  redirectStatusCode?: number | null | undefined;
  target: GetProjectsResponseBodyProjectsResponseTarget;
};

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

/**
 * Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects.
 */
export type GetProjectsResponseBodyDeploymentExpiration = {
  /**
   * Number of days to keep non-production deployments (mostly preview deployments) before soft deletion.
   */
  expirationDays?: number | undefined;
  /**
   * Number of days to keep production deployments before soft deletion.
   */
  expirationDaysProduction?: number | undefined;
  /**
   * Number of days to keep canceled deployments before soft deletion.
   */
  expirationDaysCanceled?: number | undefined;
  /**
   * Number of days to keep errored deployments before soft deletion.
   */
  expirationDaysErrored?: number | undefined;
  /**
   * Minimum number of production deployments to keep for this project, even if they are over the production expiration limit.
   */
  deploymentsToKeep?: number | undefined;
};

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

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

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

export type GetProjectsResponseBodyProjectsResponse200Target =
  | Array<GetProjectsTargetProjects1>
  | GetProjectsTargetProjects2;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsResponseContentHint =
  | GetProjectsContentHintProjects1
  | GetProjectsContentHintProjects2
  | GetProjectsContentHintProjects3
  | GetProjectsContentHintProjects4
  | GetProjectsContentHintProjects5
  | GetProjectsContentHintProjects6
  | GetProjectsContentHintProjects7
  | GetProjectsContentHintProjects8
  | GetProjectsContentHintProjects9
  | GetProjectsContentHintProjects10
  | GetProjectsContentHintProjects11
  | GetProjectsContentHintProjects12
  | GetProjectsContentHintProjects13
  | GetProjectsContentHintProjects14
  | GetProjectsContentHintProjects15
  | GetProjectsContentHintProjects16
  | GetProjectsContentHintProjects17;

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

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

export type GetProjectsResponseBodyEnv = {
  target?:
    | Array<GetProjectsTargetProjects1>
    | GetProjectsTargetProjects2
    | undefined;
  type: GetProjectsResponseBodyProjectsResponseType;
  /**
   * 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;
  edgeConfigId?: string | null | undefined;
  edgeConfigTokenId?: string | null | undefined;
  contentHint?:
    | GetProjectsContentHintProjects1
    | GetProjectsContentHintProjects2
    | GetProjectsContentHintProjects3
    | GetProjectsContentHintProjects4
    | GetProjectsContentHintProjects5
    | GetProjectsContentHintProjects6
    | GetProjectsContentHintProjects7
    | GetProjectsContentHintProjects8
    | GetProjectsContentHintProjects9
    | GetProjectsContentHintProjects10
    | GetProjectsContentHintProjects11
    | GetProjectsContentHintProjects12
    | GetProjectsContentHintProjects13
    | GetProjectsContentHintProjects14
    | GetProjectsContentHintProjects15
    | GetProjectsContentHintProjects16
    | GetProjectsContentHintProjects17
    | null
    | undefined;
  /**
   * Similar to `contentHints`, but should not be exposed to the user.
   */
  internalContentHint?:
    | GetProjectsResponseBodyProjectsResponseInternalContentHint
    | null
    | undefined;
  comment?: string | undefined;
  customEnvironmentIds?: Array<string> | undefined;
};

export const GetProjectsResponseBodyFramework = {
  ActixWeb: "actix-web",
  Angular: "angular",
  Ash: "ash",
  Astro: "astro",
  Axum: "axum",
  Blitzjs: "blitzjs",
  Brunch: "brunch",
  Bun: "bun",
  CreateReactApp: "create-react-app",
  Django: "django",
  Docusaurus: "docusaurus",
  Docusaurus2: "docusaurus-2",
  Dojo: "dojo",
  Eleventy: "eleventy",
  Elysia: "elysia",
  Ember: "ember",
  Eve: "eve",
  Express: "express",
  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",
  Umijs: "umijs",
  Vite: "vite",
  Vitepress: "vitepress",
  Vue: "vue",
  Vuepress: "vuepress",
  Xmcp: "xmcp",
  Zola: "zola",
} as const;
export type GetProjectsResponseBodyFramework = ClosedEnum<
  typeof GetProjectsResponseBodyFramework
>;

export type GetProjectsResponseBodyProjectsResponseAliasAssigned =
  | number
  | boolean;

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

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

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

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

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

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

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

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

export type GetProjectsLinkProjects4 = {
  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<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2Projects4DeployHooks
  >;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

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

export type GetProjectsLinkProjects3 = {
  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<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2Projects3DeployHooks
  >;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

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

export type GetProjectsLinkProjects2 = {
  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<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2ProjectsDeployHooks
  >;
  gitCredentialId: string;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

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

export type GetProjectsLinkProjects1 = {
  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<
    GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2DeployHooks
  >;
  gitCredentialId: string;
  updatedAt?: number | undefined;
  sourceless?: boolean | undefined;
  productionBranch: string;
};

export type GetProjectsResponseBodyLink =
  | GetProjectsLinkProjects1
  | GetProjectsLinkProjects2
  | GetProjectsLinkProjects3
  | GetProjectsLinkProjects4
  | GetProjectsLinkProjects5
  | GetProjectsLinkProjects6;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsValue3$inboundSchema: z.ZodType<
  GetProjectsValue3,
  z.ZodTypeDef,
  unknown
> = z.object({
  previousValue: smartUnion([types.string(), types.number(), types.boolean()]),
  currentValue: smartUnion([types.string(), types.number(), types.boolean()]),
});

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

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

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

/** @internal */
export const ResponseBodyDismissedToasts$inboundSchema: z.ZodType<
  ResponseBodyDismissedToasts,
  z.ZodTypeDef,
  unknown
> = z.object({
  key: types.string(),
  dismissedAt: types.number(),
  action: GetProjectsResponseBodyProjectsAction$inboundSchema,
  value: types.nullable(
    smartUnion([
      z.lazy(() => GetProjectsValue3$inboundSchema),
      types.string(),
      types.number(),
      types.boolean(),
    ]),
  ),
});

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

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

/** @internal */
export const ResponseBodySamplingRules$inboundSchema: z.ZodType<
  ResponseBodySamplingRules,
  z.ZodTypeDef,
  unknown
> = z.object({
  rate: types.number(),
  env: types.optional(GetProjectsResponseBodyProjectsResponseEnv$inboundSchema),
  requestPath: types.optional(types.string()),
});

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

/** @internal */
export const ResponseBodyTracing$inboundSchema: z.ZodType<
  ResponseBodyTracing,
  z.ZodTypeDef,
  unknown
> = z.object({
  domains: types.optional(types.string()),
  ignorePaths: types.optional(z.array(types.string())),
  samplingRules: types.optional(
    z.array(z.lazy(() => ResponseBodySamplingRules$inboundSchema)),
  ),
});

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

/** @internal */
export const GetProjectsResponseBodyProjects$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjects,
  z.ZodTypeDef,
  unknown
> = z.object({
  accountId: types.string(),
  analytics: types.optional(
    GetProjectsResponseBodyProjectsAnalytics$inboundSchema,
  ),
  appliedCve55182Migration: types.optional(types.boolean()),
  speedInsights: types.optional(
    GetProjectsResponseBodyProjectsSpeedInsights$inboundSchema,
  ),
  autoExposeSystemEnvs: types.optional(types.boolean()),
  autoAssignCustomDomains: types.optional(types.boolean()),
  autoAssignCustomDomainsUpdatedBy: types.optional(types.string()),
  buildCommand: z.nullable(types.string()).optional(),
  commandForIgnoringBuildStep: z.nullable(types.string()).optional(),
  connectConfigurations: z.nullable(
    z.array(ResponseBodyConnectConfigurations$inboundSchema),
  ).optional(),
  connectConfigurationId: z.nullable(types.string()).optional(),
  connectBuildsEnabled: types.optional(types.boolean()),
  passiveConnectConfigurationId: z.nullable(types.string()).optional(),
  createdAt: types.optional(types.number()),
  customerSupportCodeVisibility: types.optional(types.boolean()),
  crons: types.optional(GetProjectsResponseBodyCrons$inboundSchema),
  dataCache: types.optional(ResponseBodyDataCache$inboundSchema),
  deploymentExpiration:
    GetProjectsResponseBodyProjectsDeploymentExpiration$inboundSchema,
  expiration: types.optional(ResponseBodyExpiration$inboundSchema),
  devCommand: z.nullable(types.string()).optional(),
  directoryListing: types.boolean(),
  installCommand: z.nullable(types.string()).optional(),
  env: types.optional(
    z.array(GetProjectsResponseBodyProjectsEnv$inboundSchema),
  ),
  customEnvironments: types.optional(
    z.array(ResponseBodyCustomEnvironments$inboundSchema),
  ),
  framework: z.nullable(GetProjectsResponseBodyProjectsFramework$inboundSchema)
    .optional(),
  services: types.optional(z.array(ResponseBodyServices$inboundSchema)),
  gitForkProtection: types.optional(types.boolean()),
  gitLFS: types.optional(types.boolean()),
  id: types.string(),
  ipBuckets: types.optional(
    z.array(GetProjectsResponseBodyProjectsIpBuckets$inboundSchema),
  ),
  jobs: types.optional(ResponseBodyJobs$inboundSchema),
  latestDeployments: types.optional(
    z.array(GetProjectsResponseBodyProjectsLatestDeployments$inboundSchema),
  ),
  link: types.optional(GetProjectsResponseBodyProjectsLink$inboundSchema),
  microfrontends: types.optional(
    GetProjectsResponseBodyMicrofrontends$inboundSchema,
  ),
  name: types.string(),
  nodeVersion: GetProjectsResponseBodyProjectsResponseNodeVersion$inboundSchema,
  optionsAllowlist: z.nullable(ResponseBodyOptionsAllowlist$inboundSchema)
    .optional(),
  outputDirectory: z.nullable(types.string()).optional(),
  passwordProtection: z.nullable(
    GetProjectsResponseBodyProjectsPasswordProtection$inboundSchema,
  ).optional(),
  passport: z.nullable(GetProjectsResponseBodyProjectsPassport$inboundSchema)
    .optional(),
  protectionConfig: types.optional(ResponseBodyProtectionConfig$inboundSchema),
  productionDeploymentsFastLane: types.optional(types.boolean()),
  resourceConfig: GetProjectsResponseBodyProjectsResourceConfig$inboundSchema,
  rollbackDescription: types.optional(
    ResponseBodyRollbackDescription$inboundSchema,
  ),
  rollingRelease: z.nullable(
    GetProjectsResponseBodyProjectsRollingRelease$inboundSchema,
  ).optional(),
  defaultResourceConfig: ResponseBodyDefaultResourceConfig$inboundSchema,
  rootDirectory: z.nullable(types.string()).optional(),
  serverlessFunctionZeroConfigFailover: types.optional(types.boolean()),
  skewProtectionBoundaryAt: types.optional(types.number()),
  skewProtectionMaxAge: types.optional(types.number()),
  skewProtectionAllowedDomains: types.optional(z.array(types.string())),
  skipGitConnectDuringLink: types.optional(types.boolean()),
  staticIps: types.optional(ResponseBodyStaticIps$inboundSchema),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  enableAffectedProjectsDeployments: types.optional(types.boolean()),
  enableExternalRewriteCaching: types.optional(types.boolean()),
  ssoProtection: z.nullable(
    GetProjectsResponseBodyProjectsSsoProtection$inboundSchema,
  ).optional(),
  targets: types.optional(
    z.record(
      types.nullable(GetProjectsResponseBodyProjectsTargets$inboundSchema),
    ),
  ),
  transferCompletedAt: types.optional(types.number()),
  transferStartedAt: types.optional(types.number()),
  transferToAccountId: types.optional(types.string()),
  transferredFromAccountId: types.optional(types.string()),
  updatedAt: types.optional(types.number()),
  live: types.optional(types.boolean()),
  enablePreviewFeedback: z.nullable(types.boolean()).optional(),
  enableProductionFeedback: z.nullable(types.boolean()).optional(),
  permissions: types.optional(ResponseBodyPermissions$inboundSchema),
  lastRollbackTarget: z.nullable(ResponseBodyLastRollbackTarget$inboundSchema)
    .optional(),
  lastAliasRequest: z.nullable(ResponseBodyLastAliasRequest$inboundSchema)
    .optional(),
  protectionBypass: types.optional(
    z.record(ResponseBodyProtectionBypass$inboundSchema),
  ),
  hasActiveBranches: types.optional(types.boolean()),
  trustedIps: z.nullable(ResponseBodyTrustedIps$inboundSchema).optional(),
  trustedSources: z.nullable(
    GetProjectsResponseBodyProjectsTrustedSources$inboundSchema,
  ).optional(),
  gitComments: types.optional(
    GetProjectsResponseBodyProjectsGitComments$inboundSchema,
  ),
  gitProviderOptions: types.optional(
    GetProjectsResponseBodyProjectsGitProviderOptions$inboundSchema,
  ),
  paused: types.optional(types.boolean()),
  concurrencyBucketName: types.optional(types.string()),
  webAnalytics: types.optional(
    z.lazy(() => GetProjectsResponseBodyProjectsWebAnalytics$inboundSchema),
  ),
  security: types.optional(
    z.lazy(() => GetProjectsResponseBodyProjectsSecurity$inboundSchema),
  ),
  oidcTokenConfig: types.optional(
    z.lazy(() => GetProjectsResponseBodyProjectsOidcTokenConfig$inboundSchema),
  ),
  deploymentPolicy: z.nullable(
    z.lazy(() => ResponseBodyDeploymentPolicy$inboundSchema),
  ).optional(),
  tier: types.optional(types.string()),
  flatRateTier: types.optional(ResponseBodyFlatRateTier$inboundSchema),
  usageStatus: types.optional(
    z.lazy(() => ResponseBodyUsageStatus$inboundSchema),
  ),
  features: types.optional(z.lazy(() => ResponseBodyFeatures$inboundSchema)),
  v0: types.optional(types.boolean()),
  v0Created: types.optional(types.boolean()),
  abuse: types.optional(
    z.lazy(() => GetProjectsResponseBodyProjectsAbuse$inboundSchema),
  ),
  internalRoutes: types.optional(
    z.array(smartUnion([
      z.lazy(() => GetProjectsInternalRoutesProjectsResponse1$inboundSchema),
      z.lazy(() =>
        GetProjectsInternalRoutesProjectsResponse2$inboundSchema
      ),
    ])),
  ),
  hasDeployments: types.optional(types.boolean()),
  dismissedToasts: types.optional(
    z.array(z.lazy(() => ResponseBodyDismissedToasts$inboundSchema)),
  ),
  protectedSourcemaps: types.optional(types.boolean()),
  tracing: types.optional(z.lazy(() => ResponseBodyTracing$inboundSchema)),
  avatar: z.nullable(types.string()).optional(),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsResponseContentHint$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsResponseContentHint,
    z.ZodTypeDef,
    unknown
  > = z.union([
    z.lazy(() => GetProjectsContentHintProjects1$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects2$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects3$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects4$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects5$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects6$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects7$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects8$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects9$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects10$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects11$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects12$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects13$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects14$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects15$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects16$inboundSchema),
    z.lazy(() => GetProjectsContentHintProjects17$inboundSchema),
  ]);

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyEnv$inboundSchema: z.ZodType<
  GetProjectsResponseBodyEnv,
  z.ZodTypeDef,
  unknown
> = z.object({
  target: types.optional(
    smartUnion([
      z.array(GetProjectsTargetProjects1$inboundSchema),
      GetProjectsTargetProjects2$inboundSchema,
    ]),
  ),
  type: GetProjectsResponseBodyProjectsResponseType$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()),
  edgeConfigId: z.nullable(types.string()).optional(),
  edgeConfigTokenId: z.nullable(types.string()).optional(),
  contentHint: z.nullable(
    z.union([
      z.lazy(() => GetProjectsContentHintProjects1$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects2$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects3$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects4$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects5$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects6$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects7$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects8$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects9$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects10$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects11$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects12$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects13$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects14$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects15$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects16$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjects17$inboundSchema),
    ]),
  ).optional(),
  internalContentHint: z.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponseInternalContentHint$inboundSchema
    ),
  ).optional(),
  comment: types.optional(types.string()),
  customEnvironmentIds: types.optional(z.array(types.string())),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsLinkProjects5$inboundSchema: z.ZodType<
  GetProjectsLinkProjects5,
  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(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2Projects5DeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

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

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

/** @internal */
export const GetProjectsLinkProjects4$inboundSchema: z.ZodType<
  GetProjectsLinkProjects4,
  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(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2Projects4DeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

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

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

/** @internal */
export const GetProjectsLinkProjects3$inboundSchema: z.ZodType<
  GetProjectsLinkProjects3,
  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(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2Projects3DeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

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

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

/** @internal */
export const GetProjectsLinkProjects2$inboundSchema: z.ZodType<
  GetProjectsLinkProjects2,
  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(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2ProjectsDeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

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

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

/** @internal */
export const GetProjectsLinkProjects1$inboundSchema: z.ZodType<
  GetProjectsLinkProjects1,
  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(() =>
      GetProjectsLinkProjectsResponse200ApplicationJSONResponseBody2DeployHooks$inboundSchema
    ),
  ),
  gitCredentialId: types.string(),
  updatedAt: types.optional(types.number()),
  sourceless: types.optional(types.boolean()),
  productionBranch: types.string(),
});

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

/** @internal */
export const GetProjectsResponseBodyLink$inboundSchema: z.ZodType<
  GetProjectsResponseBodyLink,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsLinkProjects1$inboundSchema),
  z.lazy(() => GetProjectsLinkProjects2$inboundSchema),
  z.lazy(() => GetProjectsLinkProjects3$inboundSchema),
  z.lazy(() => GetProjectsLinkProjects4$inboundSchema),
  z.lazy(() => GetProjectsLinkProjects5$inboundSchema),
  z.lazy(() => GetProjectsLinkProjects6$inboundSchema),
]);

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

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