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

import * as z from "zod/v3";
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 {
  UpdateMicrofrontendsAbuse,
  UpdateMicrofrontendsAbuse$inboundSchema,
  UpdateMicrofrontendsDefaultResourceConfig,
  UpdateMicrofrontendsDefaultResourceConfig$inboundSchema,
  UpdateMicrofrontendsDeploymentPolicy,
  UpdateMicrofrontendsDeploymentPolicy$inboundSchema,
  UpdateMicrofrontendsFeatures,
  UpdateMicrofrontendsFeatures$inboundSchema,
  UpdateMicrofrontendsGitComments,
  UpdateMicrofrontendsGitComments$inboundSchema,
  UpdateMicrofrontendsGitProviderOptions,
  UpdateMicrofrontendsGitProviderOptions$inboundSchema,
  UpdateMicrofrontendsInternalRoutes2,
  UpdateMicrofrontendsInternalRoutes2$inboundSchema,
  UpdateMicrofrontendsLastAliasRequest,
  UpdateMicrofrontendsLastAliasRequest$inboundSchema,
  UpdateMicrofrontendsLastRollbackTarget,
  UpdateMicrofrontendsLastRollbackTarget$inboundSchema,
  UpdateMicrofrontendsOidcTokenConfig,
  UpdateMicrofrontendsOidcTokenConfig$inboundSchema,
  UpdateMicrofrontendsPermissions,
  UpdateMicrofrontendsPermissions$inboundSchema,
  UpdateMicrofrontendsProtectionBypass,
  UpdateMicrofrontendsProtectionBypass$inboundSchema,
  UpdateMicrofrontendsSecurity,
  UpdateMicrofrontendsSecurity$inboundSchema,
  UpdateMicrofrontendsSsoProtection,
  UpdateMicrofrontendsSsoProtection$inboundSchema,
  UpdateMicrofrontendsStaticIps,
  UpdateMicrofrontendsStaticIps$inboundSchema,
  UpdateMicrofrontendsTargets,
  UpdateMicrofrontendsTargets$inboundSchema,
  UpdateMicrofrontendsTier,
  UpdateMicrofrontendsTier$inboundSchema,
  UpdateMicrofrontendsTrustedIps,
  UpdateMicrofrontendsTrustedIps$inboundSchema,
  UpdateMicrofrontendsTrustedSources,
  UpdateMicrofrontendsTrustedSources$inboundSchema,
  UpdateMicrofrontendsUsageStatus,
  UpdateMicrofrontendsUsageStatus$inboundSchema,
  UpdateMicrofrontendsWebAnalytics,
  UpdateMicrofrontendsWebAnalytics$inboundSchema,
} from "./updatemicrofrontendsinternalroutes2.js";
import {
  UpdateMicrofrontendsAlias,
  UpdateMicrofrontendsAlias$inboundSchema,
  UpdateMicrofrontendsAnalytics,
  UpdateMicrofrontendsAnalytics$inboundSchema,
  UpdateMicrofrontendsBlobs,
  UpdateMicrofrontendsBlobs$inboundSchema,
  UpdateMicrofrontendsConnectConfigurations,
  UpdateMicrofrontendsConnectConfigurations$inboundSchema,
  UpdateMicrofrontendsCreator,
  UpdateMicrofrontendsCreator$inboundSchema,
  UpdateMicrofrontendsCrons,
  UpdateMicrofrontendsCrons$inboundSchema,
  UpdateMicrofrontendsCustomEnvironments,
  UpdateMicrofrontendsCustomEnvironments$inboundSchema,
  UpdateMicrofrontendsDataCache,
  UpdateMicrofrontendsDataCache$inboundSchema,
  UpdateMicrofrontendsDeploymentExpiration,
  UpdateMicrofrontendsDeploymentExpiration$inboundSchema,
  UpdateMicrofrontendsEnv,
  UpdateMicrofrontendsEnv$inboundSchema,
  UpdateMicrofrontendsExpiration,
  UpdateMicrofrontendsExpiration$inboundSchema,
  UpdateMicrofrontendsFramework,
  UpdateMicrofrontendsFramework$inboundSchema,
  UpdateMicrofrontendsIpBuckets,
  UpdateMicrofrontendsIpBuckets$inboundSchema,
  UpdateMicrofrontendsJobs,
  UpdateMicrofrontendsJobs$inboundSchema,
  UpdateMicrofrontendsLatestDeployments,
  UpdateMicrofrontendsLatestDeployments$inboundSchema,
  UpdateMicrofrontendsLink,
  UpdateMicrofrontendsLink$inboundSchema,
  UpdateMicrofrontendsMicrofrontends,
  UpdateMicrofrontendsMicrofrontends$inboundSchema,
  UpdateMicrofrontendsNodeVersion,
  UpdateMicrofrontendsNodeVersion$inboundSchema,
  UpdateMicrofrontendsOptionsAllowlist,
  UpdateMicrofrontendsOptionsAllowlist$inboundSchema,
  UpdateMicrofrontendsPassport,
  UpdateMicrofrontendsPassport$inboundSchema,
  UpdateMicrofrontendsPasswordProtection,
  UpdateMicrofrontendsPasswordProtection$inboundSchema,
  UpdateMicrofrontendsProtectionConfig,
  UpdateMicrofrontendsProtectionConfig$inboundSchema,
  UpdateMicrofrontendsResourceConfig,
  UpdateMicrofrontendsResourceConfig$inboundSchema,
  UpdateMicrofrontendsRollbackDescription,
  UpdateMicrofrontendsRollbackDescription$inboundSchema,
  UpdateMicrofrontendsRollingRelease,
  UpdateMicrofrontendsRollingRelease$inboundSchema,
  UpdateMicrofrontendsSandbox,
  UpdateMicrofrontendsSandbox$inboundSchema,
  UpdateMicrofrontendsServices,
  UpdateMicrofrontendsServices$inboundSchema,
  UpdateMicrofrontendsSpeedInsights,
  UpdateMicrofrontendsSpeedInsights$inboundSchema,
} from "./updatemicrofrontendsprojectsfunctiondefaultmemorytype.js";

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

export type UpdateMicrofrontendsInternalRoutes =
  | UpdateMicrofrontendsInternalRoutes1
  | UpdateMicrofrontendsInternalRoutes2;

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

export type UpdateMicrofrontendsValuePreviousValue = string | number | boolean;

export type UpdateMicrofrontendsValueCurrentValue = string | number | boolean;

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

export type UpdateMicrofrontendsValue =
  | UpdateMicrofrontendsValue3
  | string
  | number
  | boolean;

export type UpdateMicrofrontendsDismissedToasts = {
  key: string;
  dismissedAt: number;
  action: UpdateMicrofrontendsAction;
  value: UpdateMicrofrontendsValue3 | string | number | boolean | null;
};

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

/**
 * Which tracing destination this rule applies to. `internal` is the hidden Vercel production-tracing drain (internal delivery); `external` is any customer-configured drain. Derived from the owning drain's delivery type when project tracing is computed; absent on configs persisted before this field existed.
 */
export const UpdateMicrofrontendsDestination = {
  External: "external",
  Internal: "internal",
} as const;
/**
 * Which tracing destination this rule applies to. `internal` is the hidden Vercel production-tracing drain (internal delivery); `external` is any customer-configured drain. Derived from the owning drain's delivery type when project tracing is computed; absent on configs persisted before this field existed.
 */
export type UpdateMicrofrontendsDestination = ClosedEnum<
  typeof UpdateMicrofrontendsDestination
>;

export type UpdateMicrofrontendsSamplingRules = {
  rate: number;
  env?: UpdateMicrofrontendsProjectsEnv | undefined;
  requestPath?: string | undefined;
  /**
   * Which tracing destination this rule applies to. `internal` is the hidden Vercel production-tracing drain (internal delivery); `external` is any customer-configured drain. Derived from the owning drain's delivery type when project tracing is computed; absent on configs persisted before this field existed.
   */
  destination?: UpdateMicrofrontendsDestination | undefined;
};

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

export type UpdateMicrofrontendsResponseBody = {
  accountId: string;
  creator?: UpdateMicrofrontendsCreator | undefined;
  alias: Array<UpdateMicrofrontendsAlias>;
  analytics?: UpdateMicrofrontendsAnalytics | undefined;
  appliedCve55182Migration?: boolean | undefined;
  speedInsights?: UpdateMicrofrontendsSpeedInsights | undefined;
  autoExposeSystemEnvs?: boolean | undefined;
  autoAssignCustomDomains?: boolean | undefined;
  autoAssignCustomDomainsUpdatedBy?: string | undefined;
  buildCommand?: string | null | undefined;
  commandForIgnoringBuildStep?: string | null | undefined;
  connectConfigurations?:
    | Array<UpdateMicrofrontendsConnectConfigurations>
    | null
    | undefined;
  connectConfigurationId?: string | null | undefined;
  connectBuildsEnabled?: boolean | undefined;
  passiveConnectConfigurationId?: string | null | undefined;
  createdAt?: number | undefined;
  customerSupportCodeVisibility?: boolean | undefined;
  crons?: UpdateMicrofrontendsCrons | undefined;
  dataCache?: UpdateMicrofrontendsDataCache | 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: UpdateMicrofrontendsDeploymentExpiration;
  expiration?: UpdateMicrofrontendsExpiration | undefined;
  devCommand?: string | null | undefined;
  directoryListing: boolean;
  installCommand?: string | null | undefined;
  env?: Array<UpdateMicrofrontendsEnv> | undefined;
  customEnvironments?:
    | Array<UpdateMicrofrontendsCustomEnvironments>
    | undefined;
  framework?: UpdateMicrofrontendsFramework | null | undefined;
  services?: Array<UpdateMicrofrontendsServices> | undefined;
  gitForkProtection?: boolean | undefined;
  gitLFS?: boolean | undefined;
  id: string;
  ipBuckets?: Array<UpdateMicrofrontendsIpBuckets> | undefined;
  jobs?: UpdateMicrofrontendsJobs | undefined;
  latestDeployments?: Array<UpdateMicrofrontendsLatestDeployments> | undefined;
  link?: UpdateMicrofrontendsLink | undefined;
  blobs?: UpdateMicrofrontendsBlobs | undefined;
  microfrontends?: UpdateMicrofrontendsMicrofrontends | undefined;
  name: string;
  nodeVersion: UpdateMicrofrontendsNodeVersion;
  optionsAllowlist?: UpdateMicrofrontendsOptionsAllowlist | null | undefined;
  outputDirectory?: string | null | undefined;
  passwordProtection?:
    | UpdateMicrofrontendsPasswordProtection
    | null
    | undefined;
  passport?: UpdateMicrofrontendsPassport | null | undefined;
  protectionConfig?: UpdateMicrofrontendsProtectionConfig | undefined;
  sandbox?: UpdateMicrofrontendsSandbox | undefined;
  productionDeploymentsFastLane?: boolean | undefined;
  resourceConfig: UpdateMicrofrontendsResourceConfig;
  /**
   * Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback.
   */
  rollbackDescription?: UpdateMicrofrontendsRollbackDescription | undefined;
  /**
   * Project-level rolling release configuration that defines how deployments should be gradually rolled out
   */
  rollingRelease?: UpdateMicrofrontendsRollingRelease | null | undefined;
  defaultResourceConfig: UpdateMicrofrontendsDefaultResourceConfig;
  rootDirectory?: string | null | undefined;
  serverlessFunctionZeroConfigFailover?: boolean | undefined;
  skewProtectionBoundaryAt?: number | undefined;
  skewProtectionMaxAge?: number | undefined;
  skewProtectionAllowedDomains?: Array<string> | undefined;
  skipGitConnectDuringLink?: boolean | undefined;
  staticIps?: UpdateMicrofrontendsStaticIps | undefined;
  sourceFilesOutsideRootDirectory?: boolean | undefined;
  enableAffectedProjectsDeployments?: boolean | undefined;
  enableExternalRewriteCaching?: boolean | undefined;
  ssoProtection?: UpdateMicrofrontendsSsoProtection | null | undefined;
  targets?: { [k: string]: UpdateMicrofrontendsTargets | 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?: UpdateMicrofrontendsPermissions | undefined;
  lastRollbackTarget?:
    | UpdateMicrofrontendsLastRollbackTarget
    | null
    | undefined;
  lastAliasRequest?: UpdateMicrofrontendsLastAliasRequest | null | undefined;
  protectionBypass?:
    | { [k: string]: UpdateMicrofrontendsProtectionBypass }
    | undefined;
  hasActiveBranches?: boolean | undefined;
  trustedIps?: UpdateMicrofrontendsTrustedIps | null | undefined;
  trustedSources?: UpdateMicrofrontendsTrustedSources | null | undefined;
  gitComments?: UpdateMicrofrontendsGitComments | undefined;
  gitProviderOptions?: UpdateMicrofrontendsGitProviderOptions | undefined;
  paused?: boolean | undefined;
  concurrencyBucketName?: string | undefined;
  webAnalytics?: UpdateMicrofrontendsWebAnalytics | undefined;
  security?: UpdateMicrofrontendsSecurity | undefined;
  oidcTokenConfig?: UpdateMicrofrontendsOidcTokenConfig | 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?: UpdateMicrofrontendsDeploymentPolicy | null | undefined;
  tier?: UpdateMicrofrontendsTier | undefined;
  usageStatus?: UpdateMicrofrontendsUsageStatus | undefined;
  features?: UpdateMicrofrontendsFeatures | undefined;
  v0?: boolean | undefined;
  v0Created?: boolean | undefined;
  abuse?: UpdateMicrofrontendsAbuse | undefined;
  internalRoutes?:
    | Array<
      UpdateMicrofrontendsInternalRoutes1 | UpdateMicrofrontendsInternalRoutes2
    >
    | undefined;
  hasDeployments?: boolean | undefined;
  dismissedToasts?: Array<UpdateMicrofrontendsDismissedToasts> | undefined;
  protectedSourcemaps?: boolean | undefined;
  tracing?: UpdateMicrofrontendsTracing | undefined;
  avatar?: string | null | undefined;
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const UpdateMicrofrontendsResponseBody$inboundSchema: z.ZodType<
  UpdateMicrofrontendsResponseBody,
  z.ZodTypeDef,
  unknown
> = z.object({
  accountId: types.string(),
  creator: types.optional(UpdateMicrofrontendsCreator$inboundSchema),
  alias: z.array(UpdateMicrofrontendsAlias$inboundSchema),
  analytics: types.optional(UpdateMicrofrontendsAnalytics$inboundSchema),
  appliedCve55182Migration: types.optional(types.boolean()),
  speedInsights: types.optional(
    UpdateMicrofrontendsSpeedInsights$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(UpdateMicrofrontendsConnectConfigurations$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(UpdateMicrofrontendsCrons$inboundSchema),
  dataCache: types.optional(UpdateMicrofrontendsDataCache$inboundSchema),
  deploymentExpiration: UpdateMicrofrontendsDeploymentExpiration$inboundSchema,
  expiration: types.optional(UpdateMicrofrontendsExpiration$inboundSchema),
  devCommand: z.nullable(types.string()).optional(),
  directoryListing: types.boolean(),
  installCommand: z.nullable(types.string()).optional(),
  env: types.optional(z.array(UpdateMicrofrontendsEnv$inboundSchema)),
  customEnvironments: types.optional(
    z.array(UpdateMicrofrontendsCustomEnvironments$inboundSchema),
  ),
  framework: z.nullable(UpdateMicrofrontendsFramework$inboundSchema).optional(),
  services: types.optional(z.array(UpdateMicrofrontendsServices$inboundSchema)),
  gitForkProtection: types.optional(types.boolean()),
  gitLFS: types.optional(types.boolean()),
  id: types.string(),
  ipBuckets: types.optional(
    z.array(UpdateMicrofrontendsIpBuckets$inboundSchema),
  ),
  jobs: types.optional(UpdateMicrofrontendsJobs$inboundSchema),
  latestDeployments: types.optional(
    z.array(UpdateMicrofrontendsLatestDeployments$inboundSchema),
  ),
  link: types.optional(UpdateMicrofrontendsLink$inboundSchema),
  blobs: types.optional(UpdateMicrofrontendsBlobs$inboundSchema),
  microfrontends: types.optional(
    UpdateMicrofrontendsMicrofrontends$inboundSchema,
  ),
  name: types.string(),
  nodeVersion: UpdateMicrofrontendsNodeVersion$inboundSchema,
  optionsAllowlist: z.nullable(
    UpdateMicrofrontendsOptionsAllowlist$inboundSchema,
  ).optional(),
  outputDirectory: z.nullable(types.string()).optional(),
  passwordProtection: z.nullable(
    UpdateMicrofrontendsPasswordProtection$inboundSchema,
  ).optional(),
  passport: z.nullable(UpdateMicrofrontendsPassport$inboundSchema).optional(),
  protectionConfig: types.optional(
    UpdateMicrofrontendsProtectionConfig$inboundSchema,
  ),
  sandbox: types.optional(UpdateMicrofrontendsSandbox$inboundSchema),
  productionDeploymentsFastLane: types.optional(types.boolean()),
  resourceConfig: UpdateMicrofrontendsResourceConfig$inboundSchema,
  rollbackDescription: types.optional(
    UpdateMicrofrontendsRollbackDescription$inboundSchema,
  ),
  rollingRelease: z.nullable(UpdateMicrofrontendsRollingRelease$inboundSchema)
    .optional(),
  defaultResourceConfig:
    UpdateMicrofrontendsDefaultResourceConfig$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(UpdateMicrofrontendsStaticIps$inboundSchema),
  sourceFilesOutsideRootDirectory: types.optional(types.boolean()),
  enableAffectedProjectsDeployments: types.optional(types.boolean()),
  enableExternalRewriteCaching: types.optional(types.boolean()),
  ssoProtection: z.nullable(UpdateMicrofrontendsSsoProtection$inboundSchema)
    .optional(),
  targets: types.optional(
    z.record(types.nullable(UpdateMicrofrontendsTargets$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(UpdateMicrofrontendsPermissions$inboundSchema),
  lastRollbackTarget: z.nullable(
    UpdateMicrofrontendsLastRollbackTarget$inboundSchema,
  ).optional(),
  lastAliasRequest: z.nullable(
    UpdateMicrofrontendsLastAliasRequest$inboundSchema,
  ).optional(),
  protectionBypass: types.optional(
    z.record(UpdateMicrofrontendsProtectionBypass$inboundSchema),
  ),
  hasActiveBranches: types.optional(types.boolean()),
  trustedIps: z.nullable(UpdateMicrofrontendsTrustedIps$inboundSchema)
    .optional(),
  trustedSources: z.nullable(UpdateMicrofrontendsTrustedSources$inboundSchema)
    .optional(),
  gitComments: types.optional(UpdateMicrofrontendsGitComments$inboundSchema),
  gitProviderOptions: types.optional(
    UpdateMicrofrontendsGitProviderOptions$inboundSchema,
  ),
  paused: types.optional(types.boolean()),
  concurrencyBucketName: types.optional(types.string()),
  webAnalytics: types.optional(UpdateMicrofrontendsWebAnalytics$inboundSchema),
  security: types.optional(UpdateMicrofrontendsSecurity$inboundSchema),
  oidcTokenConfig: types.optional(
    UpdateMicrofrontendsOidcTokenConfig$inboundSchema,
  ),
  deploymentPolicy: z.nullable(
    UpdateMicrofrontendsDeploymentPolicy$inboundSchema,
  ).optional(),
  tier: types.optional(UpdateMicrofrontendsTier$inboundSchema),
  usageStatus: types.optional(UpdateMicrofrontendsUsageStatus$inboundSchema),
  features: types.optional(UpdateMicrofrontendsFeatures$inboundSchema),
  v0: types.optional(types.boolean()),
  v0Created: types.optional(types.boolean()),
  abuse: types.optional(UpdateMicrofrontendsAbuse$inboundSchema),
  internalRoutes: types.optional(
    z.array(smartUnion([
      z.lazy(() => UpdateMicrofrontendsInternalRoutes1$inboundSchema),
      UpdateMicrofrontendsInternalRoutes2$inboundSchema,
    ])),
  ),
  hasDeployments: types.optional(types.boolean()),
  dismissedToasts: types.optional(
    z.array(z.lazy(() => UpdateMicrofrontendsDismissedToasts$inboundSchema)),
  ),
  protectedSourcemaps: types.optional(types.boolean()),
  tracing: types.optional(
    z.lazy(() => UpdateMicrofrontendsTracing$inboundSchema),
  ),
  avatar: z.nullable(types.string()).optional(),
});

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