UNPKG

@vercel/sdk

Version:

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

2,727 lines 90.8 kB
/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import * as z from "zod/v3";
import { remap as remap$ } from "../lib/primitives.js";
import { safeParse } from "../lib/schemas.js";
import { ClosedEnum } from "../types/enums.js";
import { Result as SafeParseResult } from "../types/fp.js";
import * as types from "../types/primitives.js";
import { smartUnion } from "../types/smartUnion.js";
import { SDKValidationError } from "./sdkvalidationerror.js";
import {
  UploadProjectAvatarAnalytics,
  UploadProjectAvatarAnalytics$inboundSchema,
  UploadProjectAvatarConnectConfigurations,
  UploadProjectAvatarConnectConfigurations$inboundSchema,
  UploadProjectAvatarCrons,
  UploadProjectAvatarCrons$inboundSchema,
  UploadProjectAvatarCustomEnvironments,
  UploadProjectAvatarCustomEnvironments$inboundSchema,
  UploadProjectAvatarDataCache,
  UploadProjectAvatarDataCache$inboundSchema,
  UploadProjectAvatarDefaultResourceConfig,
  UploadProjectAvatarDefaultResourceConfig$inboundSchema,
  UploadProjectAvatarDeploymentExpiration,
  UploadProjectAvatarDeploymentExpiration$inboundSchema,
  UploadProjectAvatarEnv,
  UploadProjectAvatarEnv$inboundSchema,
  UploadProjectAvatarExpiration,
  UploadProjectAvatarExpiration$inboundSchema,
  UploadProjectAvatarFramework,
  UploadProjectAvatarFramework$inboundSchema,
  UploadProjectAvatarGitComments,
  UploadProjectAvatarGitComments$inboundSchema,
  UploadProjectAvatarGitProviderOptions,
  UploadProjectAvatarGitProviderOptions$inboundSchema,
  UploadProjectAvatarIpBuckets,
  UploadProjectAvatarIpBuckets$inboundSchema,
  UploadProjectAvatarJobs,
  UploadProjectAvatarJobs$inboundSchema,
  UploadProjectAvatarLastAliasRequest,
  UploadProjectAvatarLastAliasRequest$inboundSchema,
  UploadProjectAvatarLastRollbackTarget,
  UploadProjectAvatarLastRollbackTarget$inboundSchema,
  UploadProjectAvatarLatestDeployments,
  UploadProjectAvatarLatestDeployments$inboundSchema,
  UploadProjectAvatarLink,
  UploadProjectAvatarLink$inboundSchema,
  UploadProjectAvatarMicrofrontends,
  UploadProjectAvatarMicrofrontends$inboundSchema,
  UploadProjectAvatarNodeVersion,
  UploadProjectAvatarNodeVersion$inboundSchema,
  UploadProjectAvatarOptionsAllowlist,
  UploadProjectAvatarOptionsAllowlist$inboundSchema,
  UploadProjectAvatarPassport,
  UploadProjectAvatarPassport$inboundSchema,
  UploadProjectAvatarPasswordProtection,
  UploadProjectAvatarPasswordProtection$inboundSchema,
  UploadProjectAvatarPermissions,
  UploadProjectAvatarPermissions$inboundSchema,
  UploadProjectAvatarProjectsResponse200ApplicationJSONResponseBodySecurityAction,
  UploadProjectAvatarProjectsResponse200ApplicationJSONResponseBodySecurityAction$inboundSchema,
  UploadProjectAvatarProtectionBypass,
  UploadProjectAvatarProtectionBypass$inboundSchema,
  UploadProjectAvatarProtectionConfig,
  UploadProjectAvatarProtectionConfig$inboundSchema,
  UploadProjectAvatarResourceConfig,
  UploadProjectAvatarResourceConfig$inboundSchema,
  UploadProjectAvatarRollbackDescription,
  UploadProjectAvatarRollbackDescription$inboundSchema,
  UploadProjectAvatarRollingRelease,
  UploadProjectAvatarRollingRelease$inboundSchema,
  UploadProjectAvatarServices,
  UploadProjectAvatarServices$inboundSchema,
  UploadProjectAvatarSpeedInsights,
  UploadProjectAvatarSpeedInsights$inboundSchema,
  UploadProjectAvatarSsoProtection,
  UploadProjectAvatarSsoProtection$inboundSchema,
  UploadProjectAvatarStaticIps,
  UploadProjectAvatarStaticIps$inboundSchema,
  UploadProjectAvatarTargets,
  UploadProjectAvatarTargets$inboundSchema,
  UploadProjectAvatarTrustedIps,
  UploadProjectAvatarTrustedIps$inboundSchema,
  UploadProjectAvatarTrustedSources,
  UploadProjectAvatarTrustedSources$inboundSchema,
  UploadProjectAvatarVercelRuleset,
  UploadProjectAvatarVercelRuleset$inboundSchema,
  UploadProjectAvatarWebAnalytics,
  UploadProjectAvatarWebAnalytics$inboundSchema,
} from "./uploadprojectavatarprojectsresponse200applicationjsonresponsebodysecurityaction.js";

export type UploadProjectAvatarTrafficSources = {
  active: boolean;
  action?:
    | UploadProjectAvatarProjectsResponse200ApplicationJSONResponseBodySecurityAction
    | undefined;
};

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

export type UploadProjectAvatarBotFilter = {
  active: boolean;
  action?:
    | UploadProjectAvatarProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction
    | undefined;
};

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

export type UploadProjectAvatarAiBots = {
  active: boolean;
  action?: UploadProjectAvatarProjectsResponse200Action | undefined;
};

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

export type UploadProjectAvatarOwasp = {
  active: boolean;
  action?:
    | UploadProjectAvatarProjectsResponse200ApplicationJSONAction
    | undefined;
};

export type UploadProjectAvatarManagedRules = {
  vercelRuleset: UploadProjectAvatarVercelRuleset;
  trafficSources: UploadProjectAvatarTrafficSources;
  botFilter: UploadProjectAvatarBotFilter;
  aiBots: UploadProjectAvatarAiBots;
  owasp: UploadProjectAvatarOwasp;
};

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

export type UploadProjectAvatarLogHeaders =
  | Array<string>
  | UploadProjectAvatarLogHeaders2;

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

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

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

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

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

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

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

export type UploadProjectAvatarSources =
  | (UploadProjectAvatarSources1 & { provider: "bitbucket" })
  | (UploadProjectAvatarSources1 & { provider: "github" })
  | UploadProjectAvatarSources2;

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

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

export type UploadProjectAvatarEnvironments1 = {
  type: "system";
  target: UploadProjectAvatarEnvironmentsTarget;
};

export type UploadProjectAvatarEnvironments =
  | UploadProjectAvatarEnvironments1
  | UploadProjectAvatarEnvironments2;

/**
 * `enabled: true` with empty `sources` is deny-all.
 */
export type UploadProjectAvatarGitSources = {
  sources: Array<
    | (UploadProjectAvatarSources1 & { provider: "bitbucket" })
    | (UploadProjectAvatarSources1 & { provider: "github" })
    | UploadProjectAvatarSources2
  >;
  enabled: boolean;
  environments: Array<
    UploadProjectAvatarEnvironments1 | UploadProjectAvatarEnvironments2
  >;
};

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

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

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

export type UploadProjectAvatarEnvironmentsProjects1 = {
  type: "system";
  target: UploadProjectAvatarEnvironmentsProjectsTarget;
};

export type UploadProjectAvatarProjectsEnvironments =
  | UploadProjectAvatarEnvironmentsProjects1
  | UploadProjectAvatarEnvironmentsProjects2;

/**
 * `enabled: true` with empty `sources` is deny-all.
 */
export type UploadProjectAvatarDeploymentSources = {
  sources: Array<UploadProjectAvatarProjectsSources>;
  enabled: boolean;
  environments: Array<
    | UploadProjectAvatarEnvironmentsProjects1
    | UploadProjectAvatarEnvironmentsProjects2
  >;
};

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

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

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

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

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

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

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

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

export type UploadProjectAvatarHasProjectsResponse200Value = {
  eq: string;
};

export type UploadProjectAvatarHasProjects2 = {
  type: "host";
  value: UploadProjectAvatarHasProjectsResponse200Value;
};

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

export type UploadProjectAvatarHasProjectsResponseValue = {
  eq: string;
};

export type UploadProjectAvatarHasProjects1 = {
  type: "header";
  key: UploadProjectAvatarHasProjectsKey;
  value: UploadProjectAvatarHasProjectsResponseValue;
};

export type UploadProjectAvatarRouteProjectsHas =
  | UploadProjectAvatarHasProjects1
  | UploadProjectAvatarHasProjects2;

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

export type UploadProjectAvatarRouteProjectsMitigate = {
  action: UploadProjectAvatarRouteProjectsAction;
};

export type UploadProjectAvatarRouteProjects2 = {
  has: Array<UploadProjectAvatarHasProjects1 | UploadProjectAvatarHasProjects2>;
  mitigate: UploadProjectAvatarRouteProjectsMitigate;
  src?: string | undefined;
};

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

export type UploadProjectAvatarBlockHistoryProjectsRoute =
  | UploadProjectAvatarRouteProjects1
  | UploadProjectAvatarRouteProjects2;

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

export type UploadProjectAvatarHasProjectsResponse200ApplicationJSONResponseBodyValue =
  {
    eq: string;
  };

export type UploadProjectAvatarHasProjectsResponse2 = {
  type: "host";
  value:
    UploadProjectAvatarHasProjectsResponse200ApplicationJSONResponseBodyValue;
};

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

export type UploadProjectAvatarHasProjectsResponse200ApplicationJSONValue = {
  eq: string;
};

export type UploadProjectAvatarHasProjectsResponse1 = {
  type: "header";
  key: UploadProjectAvatarHasProjectsResponseKey;
  value: UploadProjectAvatarHasProjectsResponse200ApplicationJSONValue;
};

export type UploadProjectAvatarRouteHas =
  | UploadProjectAvatarHasProjectsResponse1
  | UploadProjectAvatarHasProjectsResponse2;

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

export type UploadProjectAvatarRouteMitigate = {
  action: UploadProjectAvatarRouteAction;
};

export type UploadProjectAvatarRoute2 = {
  has: Array<
    | UploadProjectAvatarHasProjectsResponse1
    | UploadProjectAvatarHasProjectsResponse2
  >;
  mitigate: UploadProjectAvatarRouteMitigate;
  src?: string | undefined;
};

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

export type UploadProjectAvatarBlockHistoryRoute =
  | UploadProjectAvatarRoute1
  | UploadProjectAvatarRoute2;

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

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

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

export type UploadProjectAvatarBlockHistory =
  | UploadProjectAvatarBlockHistory1
  | UploadProjectAvatarBlockHistory2
  | UploadProjectAvatarBlockHistory3
  | UploadProjectAvatarBlockHistory4;

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

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

export type UploadProjectAvatarAbuse = {
  scanner?: string | undefined;
  history: Array<UploadProjectAvatarHistory>;
  updatedAt: number;
  block?: UploadProjectAvatarBlock | undefined;
  blockHistory?:
    | Array<
      | UploadProjectAvatarBlockHistory1
      | UploadProjectAvatarBlockHistory2
      | UploadProjectAvatarBlockHistory3
      | UploadProjectAvatarBlockHistory4
    >
    | undefined;
  interstitial?: boolean | undefined;
  interstitialHistory?:
    | Array<UploadProjectAvatarInterstitialHistory>
    | undefined;
};

export type UploadProjectAvatarHasProjectsValue = {
  eq: string;
};

export type UploadProjectAvatarHas2 = {
  type: "host";
  value: UploadProjectAvatarHasProjectsValue;
};

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

export type UploadProjectAvatarHasValue = {
  eq: string;
};

export type UploadProjectAvatarHas1 = {
  type: "header";
  key: UploadProjectAvatarHasKey;
  value: UploadProjectAvatarHasValue;
};

export type UploadProjectAvatarInternalRoutesHas =
  | UploadProjectAvatarHas1
  | UploadProjectAvatarHas2;

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

export type UploadProjectAvatarInternalRoutesMitigate = {
  action: UploadProjectAvatarInternalRoutesAction;
};

export type UploadProjectAvatarInternalRoutes2 = {
  has: Array<UploadProjectAvatarHas1 | UploadProjectAvatarHas2>;
  mitigate: UploadProjectAvatarInternalRoutesMitigate;
  src?: string | undefined;
};

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

export type UploadProjectAvatarInternalRoutes =
  | UploadProjectAvatarInternalRoutes1
  | UploadProjectAvatarInternalRoutes2;

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

export type UploadProjectAvatarValuePreviousValue = string | number | boolean;

export type UploadProjectAvatarValueCurrentValue = string | number | boolean;

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

export type UploadProjectAvatarValue =
  | UploadProjectAvatarValue3
  | string
  | number
  | boolean;

export type UploadProjectAvatarDismissedToasts = {
  key: string;
  dismissedAt: number;
  action: UploadProjectAvatarAction;
  value: UploadProjectAvatarValue3 | string | number | boolean | null;
};

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

export type UploadProjectAvatarSamplingRules = {
  rate: number;
  env?: UploadProjectAvatarProjectsEnv | undefined;
  requestPath?: string | undefined;
};

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

export type UploadProjectAvatarResponseBody = {
  accountId: string;
  analytics?: UploadProjectAvatarAnalytics | undefined;
  appliedCve55182Migration?: boolean | undefined;
  speedInsights?: UploadProjectAvatarSpeedInsights | undefined;
  autoExposeSystemEnvs?: boolean | undefined;
  autoAssignCustomDomains?: boolean | undefined;
  autoAssignCustomDomainsUpdatedBy?: string | undefined;
  buildCommand?: string | null | undefined;
  commandForIgnoringBuildStep?: string | null | undefined;
  connectConfigurations?:
    | Array<UploadProjectAvatarConnectConfigurations>
    | null
    | undefined;
  connectConfigurationId?: string | null | undefined;
  connectBuildsEnabled?: boolean | undefined;
  passiveConnectConfigurationId?: string | null | undefined;
  createdAt?: number | undefined;
  customerSupportCodeVisibility?: boolean | undefined;
  crons?: UploadProjectAvatarCrons | undefined;
  dataCache?: UploadProjectAvatarDataCache | undefined;
  /**
   * Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects.
   */
  deploymentExpiration: UploadProjectAvatarDeploymentExpiration;
  expiration?: UploadProjectAvatarExpiration | undefined;
  devCommand?: string | null | undefined;
  directoryListing: boolean;
  installCommand?: string | null | undefined;
  env?: Array<UploadProjectAvatarEnv> | undefined;
  customEnvironments?: Array<UploadProjectAvatarCustomEnvironments> | undefined;
  framework?: UploadProjectAvatarFramework | null | undefined;
  services?: Array<UploadProjectAvatarServices> | undefined;
  gitForkProtection?: boolean | undefined;
  gitLFS?: boolean | undefined;
  id: string;
  ipBuckets?: Array<UploadProjectAvatarIpBuckets> | undefined;
  jobs?: UploadProjectAvatarJobs | undefined;
  latestDeployments?: Array<UploadProjectAvatarLatestDeployments> | undefined;
  link?: UploadProjectAvatarLink | undefined;
  microfrontends?: UploadProjectAvatarMicrofrontends | undefined;
  name: string;
  nodeVersion: UploadProjectAvatarNodeVersion;
  optionsAllowlist?: UploadProjectAvatarOptionsAllowlist | null | undefined;
  outputDirectory?: string | null | undefined;
  passwordProtection?: UploadProjectAvatarPasswordProtection | null | undefined;
  passport?: UploadProjectAvatarPassport | null | undefined;
  protectionConfig?: UploadProjectAvatarProtectionConfig | undefined;
  productionDeploymentsFastLane?: boolean | undefined;
  resourceConfig: UploadProjectAvatarResourceConfig;
  /**
   * Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback.
   */
  rollbackDescription?: UploadProjectAvatarRollbackDescription | undefined;
  /**
   * Project-level rolling release configuration that defines how deployments should be gradually rolled out
   */
  rollingRelease?: UploadProjectAvatarRollingRelease | null | undefined;
  defaultResourceConfig: UploadProjectAvatarDefaultResourceConfig;
  rootDirectory?: string | null | undefined;
  serverlessFunctionZeroConfigFailover?: boolean | undefined;
  skewProtectionBoundaryAt?: number | undefined;
  skewProtectionMaxAge?: number | undefined;
  skewProtectionAllowedDomains?: Array<string> | undefined;
  skipGitConnectDuringLink?: boolean | undefined;
  staticIps?: UploadProjectAvatarStaticIps | undefined;
  sourceFilesOutsideRootDirectory?: boolean | undefined;
  enableAffectedProjectsDeployments?: boolean | undefined;
  enableExternalRewriteCaching?: boolean | undefined;
  ssoProtection?: UploadProjectAvatarSsoProtection | null | undefined;
  targets?: { [k: string]: UploadProjectAvatarTargets | null } | undefined;
  transferCompletedAt?: number | undefined;
  transferStartedAt?: number | undefined;
  transferToAccountId?: string | undefined;
  transferredFromAccountId?: string | undefined;
  updatedAt?: number | undefined;
  live?: boolean | undefined;
  enablePreviewFeedback?: boolean | null | undefined;
  enableProductionFeedback?: boolean | null | undefined;
  permissions?: UploadProjectAvatarPermissions | undefined;
  lastRollbackTarget?: UploadProjectAvatarLastRollbackTarget | null | undefined;
  lastAliasRequest?: UploadProjectAvatarLastAliasRequest | null | undefined;
  protectionBypass?:
    | { [k: string]: UploadProjectAvatarProtectionBypass }
    | undefined;
  hasActiveBranches?: boolean | undefined;
  trustedIps?: UploadProjectAvatarTrustedIps | null | undefined;
  trustedSources?: UploadProjectAvatarTrustedSources | null | undefined;
  gitComments?: UploadProjectAvatarGitComments | undefined;
  gitProviderOptions?: UploadProjectAvatarGitProviderOptions | undefined;
  paused?: boolean | undefined;
  concurrencyBucketName?: string | undefined;
  webAnalytics?: UploadProjectAvatarWebAnalytics | undefined;
  security?: UploadProjectAvatarSecurity | undefined;
  oidcTokenConfig?: UploadProjectAvatarOidcTokenConfig | undefined;
  /**
   * Project shape. `null` on a rule list clears the project's override for that rule type (fall back to team for every env); omitting is equivalent. Setting `deploymentPolicy` itself to `null` clears every override at once. Kept structurally distinct from {@link TeamDeploymentPolicy} so the two storage locations don't share a type by accident.
   */
  deploymentPolicy?: UploadProjectAvatarDeploymentPolicy | null | undefined;
  tier?: string | undefined;
  flatRateTier?: UploadProjectAvatarFlatRateTier | undefined;
  usageStatus?: UploadProjectAvatarUsageStatus | undefined;
  features?: UploadProjectAvatarFeatures | undefined;
  v0?: boolean | undefined;
  v0Created?: boolean | undefined;
  abuse?: UploadProjectAvatarAbuse | undefined;
  internalRoutes?:
    | Array<
      UploadProjectAvatarInternalRoutes1 | UploadProjectAvatarInternalRoutes2
    >
    | undefined;
  hasDeployments?: boolean | undefined;
  dismissedToasts?: Array<UploadProjectAvatarDismissedToasts> | undefined;
  protectedSourcemaps?: boolean | undefined;
  tracing?: UploadProjectAvatarTracing | undefined;
  avatar?: string | null | undefined;
};

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const UploadProjectAvatarManagedRules$inboundSchema: z.ZodType<
  UploadProjectAvatarManagedRules,
  z.ZodTypeDef,
  unknown
> = z.object({
  vercel_ruleset: UploadProjectAvatarVercelRuleset$inboundSchema,
  traffic_sources: z.lazy(() =>
    UploadProjectAvatarTrafficSources$inboundSchema
  ),
  bot_filter: z.lazy(() => UploadProjectAvatarBotFilter$inboundSchema),
  ai_bots: z.lazy(() => UploadProjectAvatarAiBots$inboundSchema),
  owasp: z.lazy(() => UploadProjectAvatarOwasp$inboundSchema),
}).transform((v) => {
  return remap$(v, {
    "vercel_ruleset": "vercelRuleset",
    "traffic_sources": "trafficSources",
    "bot_filter": "botFilter",
    "ai_bots": "aiBots",
  });
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const UploadProjectAvatarBlockHistory$inboundSchema: z.ZodType<
  UploadProjectAvatarBlockHistory,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => UploadProjectAvatarBlockHistory1$inboundSchema),
  z.lazy(() => UploadProjectAvatarBlockHistory2$inboundSchema),
  z.lazy(() => UploadProjectAvatarBlockHistory3$inboundSchema),
  z.lazy(() => UploadProjectAvatarBlockHistory4$inboundSchema),
]);

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

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

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

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

/** @internal */
export const UploadProjectAvatarAbuse$inboundSchema: z.ZodType<
  UploadProjectAvatarAbuse,
  z.ZodTypeDef,
  unknown
> = z.object({
  scanner: types.optional(types.string()),
  history: z.array(z.lazy(() => UploadProjectAvatarHistory$inboundSchema)),
  updatedAt: types.number(),
  block: types.optional(z.lazy(() => UploadProjectAvatarBlock$inboundSchema)),
  blockHistory: types.optional(
    z.array(z.union([
      z.lazy(() => UploadProjectAvatarBlockHistory1$inboundSchema),
      z.lazy(() =>
        UploadProjectAvatarBlockHistory2$inboundSchema
      ),
      z.lazy(() => UploadProjectAvatarBlockHistory3$inboundSchema),
      z.lazy(() => UploadProjectAvatarBlockHistory4$inboundSchema),
    ])),
  ),
  interstitial: types.optional(types.boolean()),
  interstitialHistory: types.optional(
    z.array(z.lazy(() => UploadProjectAvatarInterstitialHistory$inboundSchema)),
  ),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const UploadProjectAvatarResponseBody$inboundSchema: z.ZodType<
  UploadProjectAvatarResponseBody,
  z.ZodTypeDef,
  unknown
> = z.object({
  accountId: types.string(),
  analytics: types.optional(UploadProjectAvatarAnalytics$inboundSchema),
  appliedCve55182Migration: types.optional(types.boolean()),
  speedInsights: types.optional(UploadProjectAvatarSpeedInsights$inboundSchema),
  autoExposeSystemEnvs: types.optional(types.boolean()),
  autoAssignCustomDomains: types.optional(types.boolean()),
  autoAssignCustomDomainsUpdatedBy: types.optional(types.string()),
  buildCommand: z.nullable(types.string()).optional(),
  commandForIgnoringBuildStep: z.nullable(types.string()).optional(),
  connectConfigurations: z.nullable(
    z.array(UploadProjectAvatarConnectConfigurations$inboundSchema),
  ).optional(),
  connectConfigurationId: z.nullable(types.string()).optional(),
  connectBuildsEnabled: types.optional(types.boolean()),
  passiveConnectConfigurationId: z.nullable(types.string()).optional(),
  createdAt: types.optional(types.number()),
  customerSupportCodeVisibility: types.optional(types.boolean()),
  crons: types.optional(UploadProjectAvatarCrons$inboundSchema),
  dataCache: types.optional(UploadProjectAvatarDataCache$inboundSchema),
  deploymentExpiration: UploadProjectAvatarDeploymentExpiration$inboundSchema,
  expiration: types.optional(UploadProjectAvatarExpiration$inboundSchema),
  devCommand: z.nullable(types.string()).optional(),
  directoryListing: types.boolean(),
  installCommand: z.nullable(types.string()).optional(),
  env: types.optional(z.array(UploadProjectAvatarEnv$inboundSchema)),
  customEnvironments: types.optional(
    z.array(UploadProjectAvatarCustomEnvironments$inboundSchema),
  ),
  framework: z.nullable(UploadProjectAvatarFramework$inboundSchema).optional(),
  services: types.optional(z.array(UploadProjectAvatarServices$inboundSchema)),
  gitForkProtection: types.optional(types.boolean()),
  gitLFS: types.optional(types.boolean()),
  id: types.string(),
  ipBuckets: types.optional(
    z.array(UploadProjectAvatarIpBuckets$inboundSchema),
  ),
  jobs: types.optional(UploadProjectAvatarJobs$inboundSchema),
  latestDeployments: types.optional(
    z.array(UploadProjectAvatarLatestDeployments$inboundSchema),
  ),
  link: types.optional(UploadProjectAvatarLink$inboundSchema),
  microfrontends: types.optional(
    UploadProjectAvatarMicrofrontends$inboundSchema,
  ),
  name: types.string(),
  nodeVersion: UploadProjectAvatarNodeVersion$inboundSchema,
  optionsAllowlist: z.nullable(
    UploadProjectAvatarOptionsAllowlist$inboundSchema,
  ).optional(),
  outputDirectory: z.nullable(types.string()).optional(),
  passwordProtection: z.nullable(
    UploadProjectAvatarPasswordProtection$inboundSchema,
  ).optional(),
  passport: z.nullable(UploadProjectAvatarPassport$inboundSchema).optional(),
  protectionConfig: types.optional(
    UploadProjectAvatarProtectionConfig$inboundSchema,
  ),
  productionDeploymentsFastLane: types.optional(types.boolean()),
  resourceConfig: UploadProjectAvatarResourceConfig$inboundSchema,
  rollbackDescription: types.optional(
    UploadProjectAvatarRollbackDescription$inboundSchema,
  ),
  rollingRelease: z.nullable(UploadProjectAvatarRollingRelease$inboundSchema)
    .optional(),
  defaultResourceConfig: UploadProjectAvatarDefaultResourceConfig$inboundSchema,
  rootDirectory: z.nullable(types.string()).optional(),
  serverlessFunctionZeroConfigFailover: types.optional(types.boolean()),
  skewProtectionBoundaryAt: types.optional(types.number()),
  skewProtectionMaxAge: types.optional(types.number()),
  skewProtectionAllowedDomains: types.optional(z.array(types.string())),
  skipGitConnectDuringLink: types.optional(types.boolean()),
  staticIps: types.optional(UploadProjectAvatarStaticIps$inboundSchema),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  enableAffectedProjectsDeployments: types.optional(types.boolean()),
  enableExternalRewriteCaching: types.optional(types.boolean()),
  ssoProtection: z.nullable(UploadProjectAvatarSsoProtection$inboundSchema)
    .optional(),
  targets: types.optional(
    z.record(types.nullable(UploadProjectAvatarTargets$inboundSchema)),
  ),
  transferCompletedAt: types.optional(types.number()),
  transferStartedAt: types.optional(types.number()),
  transferToAccountId: types.optional(types.string()),
  transferredFromAccountId: types.optional(types.string()),
  updatedAt: types.optional(types.number()),
  live: types.optional(types.boolean()),
  enablePreviewFeedback: z.nullable(types.boolean()).optional(),
  enableProductionFeedback: z.nullable(types.boolean()).optional(),
  permissions: types.optional(UploadProjectAvatarPermissions$inboundSchema),
  lastRollbackTarget: z.nullable(
    UploadProjectAvatarLastRollbackTarget$inboundSchema,
  ).optional(),
  lastAliasRequest: z.nullable(
    UploadProjectAvatarLastAliasRequest$inboundSchema,
  ).optional(),
  protectionBypass: types.optional(
    z.record(UploadProjectAvatarProtectionBypass$inboundSchema),
  ),
  hasActiveBranches: types.optional(types.boolean()),
  trustedIps: z.nullable(UploadProjectAvatarTrustedIps$inboundSchema)
    .optional(),
  trustedSources: z.nullable(UploadProjectAvatarTrustedSources$inboundSchema)
    .optional(),
  gitComments: types.optional(UploadProjectAvatarGitComments$inboundSchema),
  gitProviderOptions: types.optional(
    UploadProjectAvatarGitProviderOptions$inboundSchema,
  ),
  paused: types.optional(types.boolean()),
  concurrencyBucketName: types.optional(types.string()),
  webAnalytics: types.optional(UploadProjectAvatarWebAnalytics$inboundSchema),
  security: types.optional(
    z.lazy(() => UploadProjectAvatarSecurity$inboundSchema),
  ),
  oidcTokenConfig: types.optional(
    z.lazy(() => UploadProjectAvatarOidcTokenConfig$inboundSchema),
  ),
  deploymentPolicy: z.nullable(
    z.lazy(() => UploadProjectAvatarDeploymentPolicy$inboundSchema),
  ).optional(),
  tier: types.optional(types.string()),
  flatRateTier: types.optional(UploadProjectAvatarFlatRateTier$inboundSchema),
  usageStatus: types.optional(
    z.lazy(() => UploadProjectAvatarUsageStatus$inboundSchema),
  ),
  features: types.optional(
    z.lazy(() => UploadProjectAvatarFeatures$inboundSchema),
  ),
  v0: types.optional(types.boolean()),
  v0Created: types.optional(types.boolean()),
  abuse: types.optional(z.lazy(() => UploadProjectAvatarAbuse$inboundSchema)),
  internalRoutes: types.optional(
    z.array(smartUnion([
      z.lazy(() => UploadProjectAvatarInternalRoutes1$inboundSchema),
      z.lazy(() =>
        UploadProjectAvatarInternalRoutes2$inboundSchema
      ),
    ])),
  ),
  hasDeployments: types.optional(types.boolean()),
  dismissedToasts: types.optional(
    z.array(z.lazy(() => UploadProjectAvatarDismissedToasts$inboundSchema)),
  ),
  protectedSourcemaps: types.optional(types.boolean()),
  tracing: types.optional(
    z.lazy(() => UploadProjectAvatarTracing$inboundSchema),
  ),
  avatar: z.nullable(types.string()).optional(),
});

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