/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import * as z from "zod/v3";
import { remap as remap$ } from "../lib/primitives.js";
import { safeParse } from "../lib/schemas.js";
import { ClosedEnum } from "../types/enums.js";
import { Result as SafeParseResult } from "../types/fp.js";
import * as types from "../types/primitives.js";
import { smartUnion } from "../types/smartUnion.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

/**
 * Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed
 */
export const GitForkProtection = {
  One: "1",
  Zero: "0",
} as const;
/**
 * Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed
 */
export type GitForkProtection = ClosedEnum<typeof GitForkProtection>;

/**
 * Filter results by projects with elastic concurrency enabled
 */
export const ElasticConcurrencyEnabled = {
  One: "1",
  Zero: "0",
} as const;
/**
 * Filter results by projects with elastic concurrency enabled
 */
export type ElasticConcurrencyEnabled = ClosedEnum<
  typeof ElasticConcurrencyEnabled
>;

/**
 * Filter results by projects with Static IPs enabled
 */
export const StaticIpsEnabled = {
  Zero: "0",
  One: "1",
} as const;
/**
 * Filter results by projects with Static IPs enabled
 */
export type StaticIpsEnabled = ClosedEnum<typeof StaticIpsEnabled>;

/**
 * Filter results by build queue configuration. SKIP_NAMESPACE_QUEUE includes projects without a configuration set.
 */
export const QueryParamBuildQueueConfiguration = {
  SkipNamespaceQueue: "SKIP_NAMESPACE_QUEUE",
  WaitForNamespaceQueue: "WAIT_FOR_NAMESPACE_QUEUE",
} as const;
/**
 * Filter results by build queue configuration. SKIP_NAMESPACE_QUEUE includes projects without a configuration set.
 */
export type QueryParamBuildQueueConfiguration = ClosedEnum<
  typeof QueryParamBuildQueueConfiguration
>;

export type GetProjectsRequest = {
  /**
   * Query only projects updated after the given timestamp or continuation token.
   */
  from?: string | undefined;
  /**
   * Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed
   */
  gitForkProtection?: GitForkProtection | undefined;
  /**
   * Limit the number of projects returned
   */
  limit?: string | undefined;
  /**
   * Search projects by the name field
   */
  search?: string | undefined;
  /**
   * Filter results by repo. Also used for project count
   */
  repo?: string | undefined;
  /**
   * Filter results by Repository ID.
   */
  repoId?: string | undefined;
  /**
   * Filter results by Repository URL.
   */
  repoUrl?: string | undefined;
  /**
   * Filter results by excluding those projects that belong to a repo
   */
  excludeRepos?: string | undefined;
  /**
   * Filter results by connected Global Config ID
   */
  edgeConfigId?: string | undefined;
  /**
   * Filter results by connected Global Config Token ID
   */
  edgeConfigTokenId?: string | undefined;
  deprecated?: boolean | undefined;
  /**
   * Filter results by projects with elastic concurrency enabled
   */
  elasticConcurrencyEnabled?: ElasticConcurrencyEnabled | undefined;
  /**
   * Filter results by projects with Static IPs enabled
   */
  staticIpsEnabled?: StaticIpsEnabled | undefined;
  /**
   * Filter results by effective build machine types. Accepts comma-separated values. Use "elastic" for projects with elastic selection and "default" for projects without a build machine type set.
   */
  buildMachineTypes?: string | undefined;
  /**
   * Filter results by build queue configuration. SKIP_NAMESPACE_QUEUE includes projects without a configuration set.
   */
  buildQueueConfiguration?: QueryParamBuildQueueConfiguration | undefined;
  /**
   * The Team identifier to perform the request on behalf of.
   */
  teamId?: string | undefined;
  /**
   * The Team slug to perform the request on behalf of.
   */
  slug?: string | undefined;
};

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

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

export type GetProjectsCreatorProjectsResponse3 = {
  type: "integration";
  integration: GetProjectsCreatorProjectsResponseIntegration;
};

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

export type GetProjectsCreatorProjectsResponse2 = {
  type: "app";
  app: GetProjectsCreatorProjectsResponseApp;
};

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

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

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

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

export type GetProjectsCreatorProjectsResponseVia =
  | GetProjectsViaProjectsResponse1
  | GetProjectsViaProjectsResponse2;

export type GetProjectsCreatorProjectsResponseUser = {
  id: string;
};

export type GetProjectsCreatorProjectsResponse1 = {
  type: "user";
  via: GetProjectsViaProjectsResponse1 | GetProjectsViaProjectsResponse2 | null;
  user: GetProjectsCreatorProjectsResponseUser;
};

export type GetProjectsResponseBodyProjectsResponse200ApplicationJSONCreator =
  | GetProjectsCreatorProjectsResponse1
  | GetProjectsCreatorProjectsResponse2
  | GetProjectsCreatorProjectsResponse3
  | GetProjectsCreatorProjectsResponse4;

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

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasAssigned =
  | number
  | boolean;

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

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

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

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsDeployment = {
  id: string;
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  aliasError?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasAliasError
    | null
    | undefined;
  aliasFinal?: string | null | undefined;
  automaticAliases?: Array<string> | undefined;
  branchMatcher?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasBranchMatcher
    | undefined;
  buildingAt?: number | undefined;
  builds?:
    | Array<
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasBuilds
    >
    | undefined;
  checksConclusion?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasChecksConclusion
    | undefined;
  checksState?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasChecksState
    | undefined;
  connectBuildsEnabled?: boolean | undefined;
  connectConfigurationId?: string | undefined;
  createdAt: number;
  createdIn: string;
  creator:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasCreator
    | null;
  deletedAt?: number | undefined;
  deploymentHostname: string;
  forced?: boolean | undefined;
  name: string;
  meta?: { [k: string]: string } | undefined;
  monorepoManager?: string | null | undefined;
  oidcTokenClaims?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasOidcTokenClaims
    | undefined;
  plan:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasPlan;
  /**
   * Whether or not preview comments are enabled for the deployment
   */
  previewCommentsEnabled?: boolean | undefined;
  private: boolean;
  readyAt?: number | undefined;
  readyState:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasReadyState;
  readySubstate?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasReadySubstate
    | undefined;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasType;
  url: string;
  /**
   * Present for user creators; omitted for app/integration/system creators.
   */
  userId?: string | undefined;
  withCache?: boolean | undefined;
};

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

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

export type GetProjectsResponseBodyProjectsAlias = {
  configuredBy?: GetProjectsResponseBodyProjectsConfiguredBy | null | undefined;
  configuredChangedAt?: number | null | undefined;
  createdAt?: number | null | undefined;
  deployment: GetProjectsResponseBodyProjectsDeployment | null;
  domain: string;
  environment: GetProjectsResponseBodyProjectsEnvironment;
  gitBranch?: string | null | undefined;
  redirect?: string | null | undefined;
  redirectStatusCode?: number | null | undefined;
  target: GetProjectsResponseBodyProjectsResponse200ApplicationJSONTarget;
};

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

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

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

export type ResponseBodyEnvId = string | GetProjectsEnvId2;

export type ResponseBodyAws = {
  subnetIds: Array<string>;
  securityGroupId?: string | undefined;
};

export type ResponseBodyConnectConfigurations = {
  envId: string | GetProjectsEnvId2;
  connectConfigurationId: string;
  dc?: string | undefined;
  passive: boolean;
  buildsEnabled: boolean;
  aws?: ResponseBodyAws | undefined;
  createdAt: number;
  updatedAt: number;
};

/**
 * The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json).
 */
export const GetProjectsResponseBodySource = {
  Api: "api",
} as const;
/**
 * The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json).
 */
export type GetProjectsResponseBodySource = ClosedEnum<
  typeof GetProjectsResponseBodySource
>;

export type ResponseBodyDefinitions = {
  /**
   * The hostname that should be used.
   */
  host: string;
  /**
   * The path that should be called for the cronjob.
   */
  path: string;
  /**
   * The cron expression.
   */
  schedule: string;
  /**
   * The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json).
   */
  source?: GetProjectsResponseBodySource | undefined;
  /**
   * A human-readable description of what this cron job does.
   */
  description?: string | undefined;
  /**
   * Whether the host was inferred from the production deployment URL rather than explicitly provided.
   */
  hostInferred?: boolean | undefined;
};

export type GetProjectsResponseBodyCrons = {
  /**
   * The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs.
   */
  enabledAt: number;
  /**
   * The time the feature was disabled for this project.
   */
  disabledAt: number | null;
  updatedAt: number;
  /**
   * The ID of the Deployment from which the definitions originated.
   */
  deploymentId: string | null;
  definitions: Array<ResponseBodyDefinitions>;
};

export type ResponseBodyDataCache = {
  userDisabled: boolean;
  storageSizeBytes?: number | null | undefined;
  unlimited?: boolean | 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 GetProjectsResponseBodyProjectsDeploymentExpiration = {
  /**
   * 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 GetProjectsExpiration2 = {
  /**
   * Unix ms timestamp when the project was locked.
   */
  lockedAt: number;
  /**
   * userId of the actor that triggered the lock (system or admin).
   */
  lockedBy: string;
};

export type GetProjectsExpiration1 = {
  /**
   * Unix ms timestamp when the project is scheduled to expire.
   */
  expiresAt: number;
};

export type ResponseBodyExpiration =
  | GetProjectsExpiration2
  | GetProjectsExpiration1;

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

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

export type GetProjectsResponseBodyProjectsResponse200ApplicationJson3Target =
  | Array<GetProjectsTargetProjectsResponse1>
  | GetProjectsTargetProjectsResponse2;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsContentHint =
  | GetProjectsContentHintProjectsResponse1
  | GetProjectsContentHintProjectsResponse2
  | GetProjectsContentHintProjectsResponse3
  | GetProjectsContentHintProjectsResponse4
  | GetProjectsContentHintProjectsResponse5
  | GetProjectsContentHintProjectsResponse6
  | GetProjectsContentHintProjectsResponse7
  | GetProjectsContentHintProjectsResponse8
  | GetProjectsContentHintProjectsResponse9
  | GetProjectsContentHintProjectsResponse10
  | GetProjectsContentHintProjectsResponse11
  | GetProjectsContentHintProjectsResponse12
  | GetProjectsContentHintProjectsResponse13
  | GetProjectsContentHintProjectsResponse14
  | GetProjectsContentHintProjectsResponse15
  | GetProjectsContentHintProjectsResponse16
  | GetProjectsContentHintProjectsResponse17;

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

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

export type GetProjectsResponseBodyProjectsEnv = {
  target?:
    | Array<GetProjectsTargetProjectsResponse1>
    | GetProjectsTargetProjectsResponse2
    | undefined;
  type: GetProjectsResponseBodyProjectsResponse200ApplicationJson3Type;
  /**
   * This is used to identify variables that have been migrated from type secret to sensitive.
   */
  sunsetSecretId?: string | undefined;
  /**
   * Legacy now-encryption ciphertext, present after migration swaps value/vsmValue
   */
  legacyValue?: string | undefined;
  decrypted?: boolean | undefined;
  value: string;
  vsmValue?: string | undefined;
  id?: string | undefined;
  key: string;
  configurationId?: string | null | undefined;
  createdAt?: number | undefined;
  updatedAt?: number | undefined;
  createdBy?: string | null | undefined;
  updatedBy?: string | null | undefined;
  gitBranch?: string | undefined;
  /**
   * User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior.
   */
  visibility?: GetProjectsResponseBodyProjectsVisibility | undefined;
  edgeConfigId?: string | null | undefined;
  edgeConfigTokenId?: string | null | undefined;
  contentHint?:
    | GetProjectsContentHintProjectsResponse1
    | GetProjectsContentHintProjectsResponse2
    | GetProjectsContentHintProjectsResponse3
    | GetProjectsContentHintProjectsResponse4
    | GetProjectsContentHintProjectsResponse5
    | GetProjectsContentHintProjectsResponse6
    | GetProjectsContentHintProjectsResponse7
    | GetProjectsContentHintProjectsResponse8
    | GetProjectsContentHintProjectsResponse9
    | GetProjectsContentHintProjectsResponse10
    | GetProjectsContentHintProjectsResponse11
    | GetProjectsContentHintProjectsResponse12
    | GetProjectsContentHintProjectsResponse13
    | GetProjectsContentHintProjectsResponse14
    | GetProjectsContentHintProjectsResponse15
    | GetProjectsContentHintProjectsResponse16
    | GetProjectsContentHintProjectsResponse17
    | null
    | undefined;
  /**
   * Similar to `contentHints`, but should not be exposed to the user.
   */
  internalContentHint?:
    | GetProjectsResponseBodyProjectsInternalContentHint
    | null
    | undefined;
  comment?: string | undefined;
  customEnvironmentIds?: Array<string> | undefined;
};

/**
 * The type of environment (production, preview, or development)
 */
export const GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsType =
  {
    Development: "development",
    Preview: "preview",
    Production: "production",
  } as const;
/**
 * The type of environment (production, preview, or development)
 */
export type GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsType =
  ClosedEnum<
    typeof GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsType
  >;

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

/**
 * Configuration for matching git branches to this environment
 */
export type GetProjectsResponseBodyProjectsResponse200ApplicationJSONBranchMatcher =
  {
    /**
     * The type of matching to perform
     */
    type:
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsCustomEnvironmentsType;
    /**
     * The pattern to match against branch names
     */
    pattern: string;
  };

/**
 * A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`.
 */
export type GetProjectsResponseBodyVerification = {
  type: string;
  domain: string;
  value: string;
  reason: string;
};

/**
 * List of domains associated with this environment
 */
export type GetProjectsResponseBodyDomains = {
  name: string;
  apexName: string;
  projectId: string;
  redirect?: string | null | undefined;
  redirectStatusCode?: number | null | undefined;
  gitBranch?: string | null | undefined;
  customEnvironmentId?: string | null | undefined;
  updatedAt?: number | undefined;
  createdAt?: number | undefined;
  /**
   * `true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed.
   */
  verified: boolean;
  /**
   * A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`.
   */
  verification?: Array<GetProjectsResponseBodyVerification> | undefined;
};

/**
 * Internal representation of a custom environment with all required properties
 */
export type ResponseBodyCustomEnvironments = {
  /**
   * Unique identifier for the custom environment (format: env_*)
   */
  id: string;
  /**
   * URL-friendly name of the environment
   */
  slug: string;
  /**
   * The type of environment (production, preview, or development)
   */
  type: GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsType;
  /**
   * Optional description of the environment's purpose
   */
  description?: string | undefined;
  /**
   * Configuration for matching git branches to this environment
   */
  branchMatcher?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJSONBranchMatcher
    | undefined;
  /**
   * List of domains associated with this environment
   */
  domains?: Array<GetProjectsResponseBodyDomains> | undefined;
  /**
   * List of aliases for the current deployment
   */
  currentDeploymentAliases?: Array<string> | undefined;
  /**
   * Timestamp when the environment was created
   */
  createdAt: number;
  /**
   * Timestamp when the environment was last updated
   */
  updatedAt: number;
};

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

/**
 * Service kind (Service.type). Omitted for schemas that do not define one.
 */
export const ResponseBodyServiceType = {
  Cron: "cron",
  Job: "job",
  Web: "web",
  Worker: "worker",
} as const;
/**
 * Service kind (Service.type). Omitted for schemas that do not define one.
 */
export type ResponseBodyServiceType = ClosedEnum<
  typeof ResponseBodyServiceType
>;

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

export type GetProjectsResponseBodyServices = {
  /**
   * Service name from the deployment (Service.name).
   */
  serviceName: string;
  /**
   * Service kind (Service.type). Omitted for schemas that do not define one.
   */
  serviceType?: ResponseBodyServiceType | undefined;
  /**
   * Framework slug, when the service has one (omitted otherwise).
   */
  framework?: GetProjectsResponseBodyProjectsResponseFramework | undefined;
  /**
   * Generic runtime, e.g. 'node' | 'python' | 'go' | 'ruby' | 'rust' (Service.runtime). Omitted for static builds.
   */
  runtime?: string | undefined;
};

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

export type ResponseBodyLint = {
  targets: Array<string>;
};

export type ResponseBodyTypecheck = {
  targets: Array<string>;
};

export type ResponseBodyMfeConfigPresent = {
  targets: Array<string>;
};

export type ResponseBodyJobs = {
  lint?: ResponseBodyLint | undefined;
  typecheck?: ResponseBodyTypecheck | undefined;
  mfeConfigPresent?: ResponseBodyMfeConfigPresent | undefined;
};

export type GetProjectsResponseBodyProjectsResponse200ApplicationJSONAliasAssigned =
  | number
  | boolean;

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

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

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

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsLatestDeployments = {
  id: string;
  alias?: Array<string> | undefined;
  aliasAssigned?: number | boolean | null | undefined;
  aliasError?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3AliasError
    | null
    | undefined;
  aliasFinal?: string | null | undefined;
  automaticAliases?: Array<string> | undefined;
  branchMatcher?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3BranchMatcher
    | undefined;
  buildingAt?: number | undefined;
  builds?:
    | Array<GetProjectsResponseBodyProjectsResponse200ApplicationJson3Builds>
    | undefined;
  checksConclusion?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ChecksConclusion
    | undefined;
  checksState?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ChecksState
    | undefined;
  connectBuildsEnabled?: boolean | undefined;
  connectConfigurationId?: string | undefined;
  createdAt: number;
  createdIn: string;
  creator:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3Creator
    | null;
  deletedAt?: number | undefined;
  deploymentHostname: string;
  forced?: boolean | undefined;
  name: string;
  meta?: { [k: string]: string } | undefined;
  monorepoManager?: string | null | undefined;
  oidcTokenClaims?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3OidcTokenClaims
    | undefined;
  plan: GetProjectsResponseBodyProjectsResponse200ApplicationJson3Plan;
  /**
   * Whether or not preview comments are enabled for the deployment
   */
  previewCommentsEnabled?: boolean | undefined;
  private: boolean;
  readyAt?: number | undefined;
  readyState:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ReadyState;
  readySubstate?:
    | GetProjectsResponseBodyProjectsResponse200ApplicationJson3ReadySubstate
    | undefined;
  requestedAt?: number | undefined;
  target?: string | null | undefined;
  teamId?: string | null | undefined;
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsLatestDeploymentsType;
  url: string;
  /**
   * Present for user creators; omitted for app/integration/system creators.
   */
  userId?: string | undefined;
  withCache?: boolean | undefined;
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

export type GetProjectsResponseBodyProjectsLink =
  | GetProjectsLinkProjectsResponse1
  | GetProjectsLinkProjectsResponse2
  | GetProjectsLinkProjectsResponse3
  | GetProjectsLinkProjectsResponse4
  | GetProjectsLinkProjectsResponse5
  | GetProjectsLinkProjectsResponse6
  | GetProjectsLinkProjectsResponse7
  | GetProjectsLinkProjectsResponse8;

export type ResponseBodyBlobs = {
  /**
   * Marks the team-level, Vercel-managed default blob project (`vercel-blob-default-project`) that orphan blob stores are scoped to when connected without an explicit project. Set only by internal storage flows and immutable after creation — guards rely on it to protect the connected stores from being lost when the project is deleted or transferred.
   */
  isDefaultApp?: boolean | undefined;
};

export type GetProjectsMicrofrontends3 = {
  updatedAt: number;
  groupIds: Array<any>;
  enabled: false;
  freeProjectForLegacyLimits?: boolean | undefined;
};

export type GetProjectsMicrofrontends2 = {
  isDefaultApp?: false | undefined;
  /**
   * Whether observability data should be routed to this microfrontend project or a root project.
   */
  routeObservabilityToThisProject?: boolean | undefined;
  /**
   * Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend.
   */
  doNotRouteWithMicrofrontendsRouting?: boolean | undefined;
  /**
   * Timestamp when the microfrontends settings were last updated.
   */
  updatedAt: number;
  /**
   * The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together.
   */
  groupIds: Array<string>;
  /**
   * Whether microfrontends are enabled for this project.
   */
  enabled: true;
  /**
   * A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`
   */
  defaultRoute?: string | undefined;
  /**
   * Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project.
   */
  freeProjectForLegacyLimits?: boolean | undefined;
};

export type GetProjectsMicrofrontends1 = {
  isDefaultApp: true;
  /**
   * Timestamp when the microfrontends settings were last updated.
   */
  updatedAt: number;
  /**
   * The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together.
   */
  groupIds: Array<string>;
  /**
   * Whether microfrontends are enabled for this project.
   */
  enabled: true;
  /**
   * A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`
   */
  defaultRoute?: string | undefined;
  /**
   * Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project.
   */
  freeProjectForLegacyLimits?: boolean | undefined;
};

export type GetProjectsResponseBodyMicrofrontends =
  | GetProjectsMicrofrontends1
  | GetProjectsMicrofrontends2
  | GetProjectsMicrofrontends3;

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

export type ResponseBodyPaths = {
  value: string;
};

export type ResponseBodyOptionsAllowlist = {
  paths: Array<ResponseBodyPaths>;
};

export type GetProjectsResponseBodyProjectsPasswordProtection = {};

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

export type GetProjectsResponseBodyProjectsPassport = {
  deploymentType: GetProjectsResponseBodyProjectsResponse200DeploymentType;
  connectorId: string;
};

export type ResponseBodySandboxUrls = {
  inheritDeploymentProtection?: boolean | undefined;
};

export type ResponseBodyProtectionConfig = {
  sandboxUrls?: ResponseBodySandboxUrls | undefined;
};

export const ResponseBodyRegion = {
  Arn1: "arn1",
  Bom1: "bom1",
  Cdg1: "cdg1",
  Cle1: "cle1",
  Cpt1: "cpt1",
  Dub1: "dub1",
  Fra1: "fra1",
  Gru1: "gru1",
  Hkg1: "hkg1",
  Hnd1: "hnd1",
  Iad1: "iad1",
  Icn1: "icn1",
  Kix1: "kix1",
  Lhr1: "lhr1",
  Pdx1: "pdx1",
  Sfo1: "sfo1",
  Sin1: "sin1",
  Syd1: "syd1",
  Yul1: "yul1",
} as const;
export type ResponseBodyRegion = ClosedEnum<typeof ResponseBodyRegion>;

export const ResponseBodyFailoverRegions = {
  Arn1: "arn1",
  Bom1: "bom1",
  Cdg1: "cdg1",
  Cle1: "cle1",
  Cpt1: "cpt1",
  Dub1: "dub1",
  Fra1: "fra1",
  Gru1: "gru1",
  Hkg1: "hkg1",
  Hnd1: "hnd1",
  Iad1: "iad1",
  Icn1: "icn1",
  Kix1: "kix1",
  Lhr1: "lhr1",
  Pdx1: "pdx1",
  Sfo1: "sfo1",
  Sin1: "sin1",
  Syd1: "syd1",
  Yul1: "yul1",
} as const;
export type ResponseBodyFailoverRegions = ClosedEnum<
  typeof ResponseBodyFailoverRegions
>;

export type ResponseBodySandbox = {
  region?: ResponseBodyRegion | undefined;
  failoverRegions?: Array<ResponseBodyFailoverRegions> | undefined;
};

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

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

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

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

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

export type GetProjectsResponseBodyProjectsBuildQueue = {
  configuration?:
    | GetProjectsResponseBodyProjectsResponseConfiguration
    | undefined;
};

export type GetProjectsResponseBodyProjectsResponseResourceConfig = {
  elasticConcurrencyEnabled?: boolean | undefined;
  fluid?: boolean | undefined;
  functionDefaultRegions: Array<string>;
  functionDefaultTimeout?: number | undefined;
  functionDefaultMemoryType?:
    | GetProjectsResponseBodyProjectsFunctionDefaultMemoryType
    | undefined;
  functionZeroConfigFailover?: boolean | undefined;
  buildMachineType?:
    | GetProjectsResponseBodyProjectsBuildMachineType
    | undefined;
  buildMachineSelection?:
    | GetProjectsResponseBodyProjectsBuildMachineSelection
    | undefined;
  buildMachineElasticLastUpdated?: number | undefined;
  buildMachineElasticReason?:
    | GetProjectsResponseBodyProjectsBuildMachineElasticReason
    | undefined;
  isNSNBDisabled?: boolean | undefined;
  buildQueue?: GetProjectsResponseBodyProjectsBuildQueue | undefined;
  enableFunctionsBeta?: boolean | undefined;
};

/**
 * Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback.
 */
export type ResponseBodyRollbackDescription = {
  /**
   * The user who rolled back the project.
   */
  userId: string;
  /**
   * The username of the user who rolled back the project.
   */
  username: string;
  /**
   * User-supplied explanation of why they rolled back the project. Limited to 250 characters.
   */
  description: string;
  /**
   * Timestamp of when the rollback was requested.
   */
  createdAt: number;
};

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

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

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

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

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

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

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

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

/** @internal */
export type GetProjectsRequest$Outbound = {
  from?: string | undefined;
  gitForkProtection?: string | undefined;
  limit?: string | undefined;
  search?: string | undefined;
  repo?: string | undefined;
  repoId?: string | undefined;
  repoUrl?: string | undefined;
  excludeRepos?: string | undefined;
  edgeConfigId?: string | undefined;
  edgeConfigTokenId?: string | undefined;
  deprecated?: boolean | undefined;
  elasticConcurrencyEnabled?: string | undefined;
  staticIpsEnabled?: string | undefined;
  buildMachineTypes?: string | undefined;
  buildQueueConfiguration?: string | undefined;
  teamId?: string | undefined;
  slug?: string | undefined;
};

/** @internal */
export const GetProjectsRequest$outboundSchema: z.ZodType<
  GetProjectsRequest$Outbound,
  z.ZodTypeDef,
  GetProjectsRequest
> = z.object({
  from: z.string().optional(),
  gitForkProtection: GitForkProtection$outboundSchema.optional(),
  limit: z.string().optional(),
  search: z.string().optional(),
  repo: z.string().optional(),
  repoId: z.string().optional(),
  repoUrl: z.string().optional(),
  excludeRepos: z.string().optional(),
  edgeConfigId: z.string().optional(),
  edgeConfigTokenId: z.string().optional(),
  deprecated: z.boolean().optional(),
  elasticConcurrencyEnabled: ElasticConcurrencyEnabled$outboundSchema
    .optional(),
  staticIpsEnabled: StaticIpsEnabled$outboundSchema.optional(),
  buildMachineTypes: z.string().optional(),
  buildQueueConfiguration: QueryParamBuildQueueConfiguration$outboundSchema
    .optional(),
  teamId: z.string().optional(),
  slug: z.string().optional(),
});

export function getProjectsRequestToJSON(
  getProjectsRequest: GetProjectsRequest,
): string {
  return JSON.stringify(
    GetProjectsRequest$outboundSchema.parse(getProjectsRequest),
  );
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsResponse200ApplicationJSONCreator$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsResponse200ApplicationJSONCreator,
    z.ZodTypeDef,
    unknown
  > = z.union([
    z.lazy(() => GetProjectsCreatorProjectsResponse1$inboundSchema),
    z.lazy(() => GetProjectsCreatorProjectsResponse2$inboundSchema),
    z.lazy(() => GetProjectsCreatorProjectsResponse3$inboundSchema),
    z.lazy(() => GetProjectsCreatorProjectsResponse4$inboundSchema),
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsDeployment$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsDeployment,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  alias: types.optional(z.array(types.string())),
  aliasAssigned: z.nullable(smartUnion([types.number(), types.boolean()]))
    .optional(),
  aliasError: z.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasAliasError$inboundSchema
    ),
  ).optional(),
  aliasFinal: z.nullable(types.string()).optional(),
  automaticAliases: types.optional(z.array(types.string())),
  branchMatcher: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasBranchMatcher$inboundSchema
    ),
  ),
  buildingAt: types.optional(types.number()),
  builds: types.optional(
    z.array(z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasBuilds$inboundSchema
    )),
  ),
  checksConclusion: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasChecksConclusion$inboundSchema,
  ),
  checksState: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasChecksState$inboundSchema,
  ),
  connectBuildsEnabled: types.optional(types.boolean()),
  connectConfigurationId: types.optional(types.string()),
  createdAt: types.number(),
  createdIn: types.string(),
  creator: types.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasCreator$inboundSchema
    ),
  ),
  deletedAt: types.optional(types.number()),
  deploymentHostname: types.string(),
  forced: types.optional(types.boolean()),
  name: types.string(),
  meta: types.optional(z.record(types.string())),
  monorepoManager: z.nullable(types.string()).optional(),
  oidcTokenClaims: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasOidcTokenClaims$inboundSchema
    ),
  ),
  plan:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasPlan$inboundSchema,
  previewCommentsEnabled: types.optional(types.boolean()),
  private: types.boolean(),
  readyAt: types.optional(types.number()),
  readyState:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasReadyState$inboundSchema,
  readySubstate: types.optional(
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasReadySubstate$inboundSchema,
  ),
  requestedAt: types.optional(types.number()),
  target: z.nullable(types.string()).optional(),
  teamId: z.nullable(types.string()).optional(),
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsAliasType$inboundSchema,
  url: types.string(),
  userId: types.optional(types.string()),
  withCache: types.optional(types.boolean()),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyConnectConfigurations$inboundSchema: z.ZodType<
  ResponseBodyConnectConfigurations,
  z.ZodTypeDef,
  unknown
> = z.object({
  envId: smartUnion([types.string(), GetProjectsEnvId2$inboundSchema]),
  connectConfigurationId: types.string(),
  dc: types.optional(types.string()),
  passive: types.boolean(),
  buildsEnabled: types.boolean(),
  aws: types.optional(z.lazy(() => ResponseBodyAws$inboundSchema)),
  createdAt: types.number(),
  updatedAt: types.number(),
});

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

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

/** @internal */
export const ResponseBodyDefinitions$inboundSchema: z.ZodType<
  ResponseBodyDefinitions,
  z.ZodTypeDef,
  unknown
> = z.object({
  host: types.string(),
  path: types.string(),
  schedule: types.string(),
  source: types.optional(GetProjectsResponseBodySource$inboundSchema),
  description: types.optional(types.string()),
  hostInferred: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsResponseBodyCrons$inboundSchema: z.ZodType<
  GetProjectsResponseBodyCrons,
  z.ZodTypeDef,
  unknown
> = z.object({
  enabledAt: types.number(),
  disabledAt: types.nullable(types.number()),
  updatedAt: types.number(),
  deploymentId: types.nullable(types.string()),
  definitions: z.array(z.lazy(() => ResponseBodyDefinitions$inboundSchema)),
});

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

/** @internal */
export const ResponseBodyDataCache$inboundSchema: z.ZodType<
  ResponseBodyDataCache,
  z.ZodTypeDef,
  unknown
> = z.object({
  userDisabled: types.boolean(),
  storageSizeBytes: z.nullable(types.number()).optional(),
  unlimited: types.optional(types.boolean()),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsContentHint$inboundSchema:
  z.ZodType<GetProjectsResponseBodyProjectsContentHint, z.ZodTypeDef, unknown> =
    z.union([
      z.lazy(() => GetProjectsContentHintProjectsResponse1$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse2$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse3$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse4$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse5$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse6$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse7$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse8$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse9$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse10$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse11$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse12$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse13$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse14$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse15$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse16$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse17$inboundSchema),
    ]);

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsEnv$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsEnv,
  z.ZodTypeDef,
  unknown
> = z.object({
  target: types.optional(
    smartUnion([
      z.array(GetProjectsTargetProjectsResponse1$inboundSchema),
      GetProjectsTargetProjectsResponse2$inboundSchema,
    ]),
  ),
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3Type$inboundSchema,
  sunsetSecretId: types.optional(types.string()),
  legacyValue: types.optional(types.string()),
  decrypted: types.optional(types.boolean()),
  value: types.string(),
  vsmValue: types.optional(types.string()),
  id: types.optional(types.string()),
  key: types.string(),
  configurationId: z.nullable(types.string()).optional(),
  createdAt: types.optional(types.number()),
  updatedAt: types.optional(types.number()),
  createdBy: z.nullable(types.string()).optional(),
  updatedBy: z.nullable(types.string()).optional(),
  gitBranch: types.optional(types.string()),
  visibility: types.optional(
    GetProjectsResponseBodyProjectsVisibility$inboundSchema,
  ),
  edgeConfigId: z.nullable(types.string()).optional(),
  edgeConfigTokenId: z.nullable(types.string()).optional(),
  contentHint: z.nullable(
    z.union([
      z.lazy(() => GetProjectsContentHintProjectsResponse1$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse2$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse3$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse4$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse5$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse6$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse7$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse8$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse9$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse10$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse11$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse12$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse13$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse14$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse15$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse16$inboundSchema),
      z.lazy(() => GetProjectsContentHintProjectsResponse17$inboundSchema),
    ]),
  ).optional(),
  internalContentHint: z.nullable(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsInternalContentHint$inboundSchema
    ),
  ).optional(),
  comment: types.optional(types.string()),
  customEnvironmentIds: types.optional(z.array(types.string())),
});

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyVerification$inboundSchema: z.ZodType<
  GetProjectsResponseBodyVerification,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.string(),
  domain: types.string(),
  value: types.string(),
  reason: types.string(),
});

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

/** @internal */
export const GetProjectsResponseBodyDomains$inboundSchema: z.ZodType<
  GetProjectsResponseBodyDomains,
  z.ZodTypeDef,
  unknown
> = z.object({
  name: types.string(),
  apexName: types.string(),
  projectId: types.string(),
  redirect: z.nullable(types.string()).optional(),
  redirectStatusCode: z.nullable(types.number()).optional(),
  gitBranch: z.nullable(types.string()).optional(),
  customEnvironmentId: z.nullable(types.string()).optional(),
  updatedAt: types.optional(types.number()),
  createdAt: types.optional(types.number()),
  verified: types.boolean(),
  verification: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyVerification$inboundSchema)),
  ),
});

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

/** @internal */
export const ResponseBodyCustomEnvironments$inboundSchema: z.ZodType<
  ResponseBodyCustomEnvironments,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  slug: types.string(),
  type:
    GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsType$inboundSchema,
  description: types.optional(types.string()),
  branchMatcher: types.optional(
    z.lazy(() =>
      GetProjectsResponseBodyProjectsResponse200ApplicationJSONBranchMatcher$inboundSchema
    ),
  ),
  domains: types.optional(
    z.array(z.lazy(() => GetProjectsResponseBodyDomains$inboundSchema)),
  ),
  currentDeploymentAliases: types.optional(z.array(types.string())),
  createdAt: types.number(),
  updatedAt: types.number(),
});

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyServices$inboundSchema: z.ZodType<
  GetProjectsResponseBodyServices,
  z.ZodTypeDef,
  unknown
> = z.object({
  serviceName: types.string(),
  serviceType: types.optional(ResponseBodyServiceType$inboundSchema),
  framework: types.optional(
    GetProjectsResponseBodyProjectsResponseFramework$inboundSchema,
  ),
  runtime: types.optional(types.string()),
});

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyJobs$inboundSchema: z.ZodType<
  ResponseBodyJobs,
  z.ZodTypeDef,
  unknown
> = z.object({
  lint: types.optional(z.lazy(() => ResponseBodyLint$inboundSchema)),
  typecheck: types.optional(z.lazy(() => ResponseBodyTypecheck$inboundSchema)),
  "mfe-config-present": types.optional(
    z.lazy(() => ResponseBodyMfeConfigPresent$inboundSchema),
  ),
}).transform((v) => {
  return remap$(v, {
    "mfe-config-present": "mfeConfigPresent",
  });
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsLatestDeployments$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsLatestDeployments,
    z.ZodTypeDef,
    unknown
  > = z.object({
    id: types.string(),
    alias: types.optional(z.array(types.string())),
    aliasAssigned: z.nullable(smartUnion([types.number(), types.boolean()]))
      .optional(),
    aliasError: z.nullable(
      z.lazy(() =>
        GetProjectsResponseBodyProjectsResponse200ApplicationJson3AliasError$inboundSchema
      ),
    ).optional(),
    aliasFinal: z.nullable(types.string()).optional(),
    automaticAliases: types.optional(z.array(types.string())),
    branchMatcher: types.optional(
      z.lazy(() =>
        GetProjectsResponseBodyProjectsResponse200ApplicationJson3BranchMatcher$inboundSchema
      ),
    ),
    buildingAt: types.optional(types.number()),
    builds: types.optional(
      z.array(z.lazy(() =>
        GetProjectsResponseBodyProjectsResponse200ApplicationJson3Builds$inboundSchema
      )),
    ),
    checksConclusion: types.optional(
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ChecksConclusion$inboundSchema,
    ),
    checksState: types.optional(
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ChecksState$inboundSchema,
    ),
    connectBuildsEnabled: types.optional(types.boolean()),
    connectConfigurationId: types.optional(types.string()),
    createdAt: types.number(),
    createdIn: types.string(),
    creator: types.nullable(
      z.lazy(() =>
        GetProjectsResponseBodyProjectsResponse200ApplicationJson3Creator$inboundSchema
      ),
    ),
    deletedAt: types.optional(types.number()),
    deploymentHostname: types.string(),
    forced: types.optional(types.boolean()),
    name: types.string(),
    meta: types.optional(z.record(types.string())),
    monorepoManager: z.nullable(types.string()).optional(),
    oidcTokenClaims: types.optional(
      z.lazy(() =>
        GetProjectsResponseBodyProjectsResponse200ApplicationJson3OidcTokenClaims$inboundSchema
      ),
    ),
    plan:
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3Plan$inboundSchema,
    previewCommentsEnabled: types.optional(types.boolean()),
    private: types.boolean(),
    readyAt: types.optional(types.number()),
    readyState:
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ReadyState$inboundSchema,
    readySubstate: types.optional(
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ReadySubstate$inboundSchema,
    ),
    requestedAt: types.optional(types.number()),
    target: z.nullable(types.string()).optional(),
    teamId: z.nullable(types.string()).optional(),
    type:
      GetProjectsResponseBodyProjectsResponse200ApplicationJson3ProjectsLatestDeploymentsType$inboundSchema,
    url: types.string(),
    userId: types.optional(types.string()),
    withCache: types.optional(types.boolean()),
  });

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsLink$inboundSchema: z.ZodType<
  GetProjectsResponseBodyProjectsLink,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetProjectsLinkProjectsResponse1$inboundSchema),
  z.lazy(() => GetProjectsLinkProjectsResponse2$inboundSchema),
  z.lazy(() => GetProjectsLinkProjectsResponse3$inboundSchema),
  z.lazy(() => GetProjectsLinkProjectsResponse4$inboundSchema),
  z.lazy(() => GetProjectsLinkProjectsResponse5$inboundSchema),
  z.lazy(() => GetProjectsLinkProjectsResponse6$inboundSchema),
  z.lazy(() => GetProjectsLinkProjectsResponse7$inboundSchema),
  z.lazy(() => GetProjectsLinkProjectsResponse8$inboundSchema),
]);

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

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

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

/** @internal */
export const GetProjectsMicrofrontends3$inboundSchema: z.ZodType<
  GetProjectsMicrofrontends3,
  z.ZodTypeDef,
  unknown
> = z.object({
  updatedAt: types.number(),
  groupIds: z.array(z.any()),
  enabled: types.literal(false),
  freeProjectForLegacyLimits: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsMicrofrontends2$inboundSchema: z.ZodType<
  GetProjectsMicrofrontends2,
  z.ZodTypeDef,
  unknown
> = z.object({
  isDefaultApp: types.optional(types.literal(false)),
  routeObservabilityToThisProject: types.optional(types.boolean()),
  doNotRouteWithMicrofrontendsRouting: types.optional(types.boolean()),
  updatedAt: types.number(),
  groupIds: z.array(types.string()),
  enabled: types.literal(true),
  defaultRoute: types.optional(types.string()),
  freeProjectForLegacyLimits: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsMicrofrontends1$inboundSchema: z.ZodType<
  GetProjectsMicrofrontends1,
  z.ZodTypeDef,
  unknown
> = z.object({
  isDefaultApp: types.literal(true),
  updatedAt: types.number(),
  groupIds: z.array(types.string()),
  enabled: types.literal(true),
  defaultRoute: types.optional(types.string()),
  freeProjectForLegacyLimits: types.optional(types.boolean()),
});

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

/** @internal */
export const GetProjectsResponseBodyMicrofrontends$inboundSchema: z.ZodType<
  GetProjectsResponseBodyMicrofrontends,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.lazy(() => GetProjectsMicrofrontends1$inboundSchema),
  z.lazy(() => GetProjectsMicrofrontends2$inboundSchema),
  z.lazy(() => GetProjectsMicrofrontends3$inboundSchema),
]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const ResponseBodyProtectionConfig$inboundSchema: z.ZodType<
  ResponseBodyProtectionConfig,
  z.ZodTypeDef,
  unknown
> = z.object({
  sandboxUrls: types.optional(
    z.lazy(() => ResponseBodySandboxUrls$inboundSchema),
  ),
});

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

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

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

/** @internal */
export const ResponseBodySandbox$inboundSchema: z.ZodType<
  ResponseBodySandbox,
  z.ZodTypeDef,
  unknown
> = z.object({
  region: types.optional(ResponseBodyRegion$inboundSchema),
  failoverRegions: types.optional(
    z.array(ResponseBodyFailoverRegions$inboundSchema),
  ),
});

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

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

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

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

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

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

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

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

/** @internal */
export const GetProjectsResponseBodyProjectsResponseResourceConfig$inboundSchema:
  z.ZodType<
    GetProjectsResponseBodyProjectsResponseResourceConfig,
    z.ZodTypeDef,
    unknown
  > = z.object({
    elasticConcurrencyEnabled: types.optional(types.boolean()),
    fluid: types.optional(types.boolean()),
    functionDefaultRegions: z.array(types.string()),
    functionDefaultTimeout: types.optional(types.number()),
    functionDefaultMemoryType: types.optional(
      GetProjectsResponseBodyProjectsFunctionDefaultMemoryType$inboundSchema,
    ),
    functionZeroConfigFailover: types.optional(types.boolean()),
    buildMachineType: types.optional(
      GetProjectsResponseBodyProjectsBuildMachineType$inboundSchema,
    ),
    buildMachineSelection: types.optional(
      GetProjectsResponseBodyProjectsBuildMachineSelection$inboundSchema,
    ),
    buildMachineElasticLastUpdated: types.optional(types.number()),
    buildMachineElasticReason: types.optional(
      GetProjectsResponseBodyProjectsBuildMachineElasticReason$inboundSchema,
    ),
    isNSNBDisabled: types.optional(types.boolean()),
    buildQueue: types.optional(
      z.lazy(() => GetProjectsResponseBodyProjectsBuildQueue$inboundSchema),
    ),
    enableFunctionsBeta: types.optional(types.boolean()),
  });

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

/** @internal */
export const ResponseBodyRollbackDescription$inboundSchema: z.ZodType<
  ResponseBodyRollbackDescription,
  z.ZodTypeDef,
  unknown
> = z.object({
  userId: types.string(),
  username: types.string(),
  description: types.string(),
  createdAt: types.number(),
});

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

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

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

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

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

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

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