UNPKG

@vercel/sdk

Version:

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

4,143 lines 128 kB
/*
 * 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";

export const QueryParamFilter = {
  Rewrite: "rewrite",
  Redirect: "redirect",
  SetStatus: "set_status",
  Transform: "transform",
} as const;
export type QueryParamFilter = ClosedEnum<typeof QueryParamFilter>;

export const DiffQueryParam2 = {
  Only: "only",
} as const;
export type DiffQueryParam2 = ClosedEnum<typeof DiffQueryParam2>;

export type QueryParamDiff = boolean | DiffQueryParam2;

export type GetRoutesRequest = {
  projectId: string;
  versionId?: string | undefined;
  q?: string | undefined;
  filter?: QueryParamFilter | undefined;
  diff?: boolean | DiffQueryParam2 | undefined;
  /**
   * The Team identifier to perform the request on behalf of.
   */
  teamId?: string | undefined;
  /**
   * The Team slug to perform the request on behalf of.
   */
  slug?: string | undefined;
};

export const GetRoutesHasProjectRoutesResponse200ApplicationJSONResponseBodyType =
  {
    Cookie: "cookie",
    Header: "header",
    Query: "query",
  } as const;
export type GetRoutesHasProjectRoutesResponse200ApplicationJSONResponseBodyType =
  ClosedEnum<
    typeof GetRoutesHasProjectRoutesResponse200ApplicationJSONResponseBodyType
  >;

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesEq =
  | string
  | number;

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

export type GetRoutesHasProjectRoutesResponse200ApplicationJSONResponseBodyValue =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4Routes2;

export type GetRoutesHasProjectRoutesResponse2 = {
  type: GetRoutesHasProjectRoutesResponse200ApplicationJSONResponseBodyType;
  key: string;
  value?:
    | string
    | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4Routes2
    | undefined;
};

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4Eq =
  | string
  | number;

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

export type GetRoutesHasProjectRoutesResponse200ApplicationJSONValue =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody42;

export type GetRoutesHasProjectRoutesResponse1 = {
  type: "host";
  value:
    | string
    | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody42;
};

export type GetRoutesResponseBodyProjectRoutesHas =
  | GetRoutesHasProjectRoutesResponse1
  | (GetRoutesHasProjectRoutesResponse2 & { type: "cookie" })
  | (GetRoutesHasProjectRoutesResponse2 & { type: "header" })
  | (GetRoutesHasProjectRoutesResponse2 & { type: "query" });

export const GetRoutesMissingProjectRoutesResponse200ApplicationJSONResponseBodyType =
  {
    Cookie: "cookie",
    Header: "header",
    Query: "query",
  } as const;
export type GetRoutesMissingProjectRoutesResponse200ApplicationJSONResponseBodyType =
  ClosedEnum<
    typeof GetRoutesMissingProjectRoutesResponse200ApplicationJSONResponseBodyType
  >;

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesRouteMissingEq =
  | string
  | number;

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

export type GetRoutesMissingProjectRoutesResponse200ApplicationJSONResponseBodyValue =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesRouteMissing2;

export type GetRoutesMissingProjectRoutesResponse2 = {
  type: GetRoutesMissingProjectRoutesResponse200ApplicationJSONResponseBodyType;
  key: string;
  value?:
    | string
    | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesRouteMissing2
    | undefined;
};

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesRouteEq =
  | string
  | number;

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

export type GetRoutesMissingProjectRoutesResponse200ApplicationJSONValue =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesRoute2;

export type GetRoutesMissingProjectRoutesResponse1 = {
  type: "host";
  value:
    | string
    | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesRoute2;
};

export type GetRoutesResponseBodyProjectRoutesMissing =
  | GetRoutesMissingProjectRoutesResponse1
  | (GetRoutesMissingProjectRoutesResponse2 & { type: "cookie" })
  | (GetRoutesMissingProjectRoutesResponse2 & { type: "header" })
  | (GetRoutesMissingProjectRoutesResponse2 & { type: "query" });

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

export type GetRoutesResponseBodyProjectRoutesMitigate = {
  action: GetRoutesResponseBodyProjectRoutesAction;
};

export const GetRoutesResponseBodyProjectRoutesResponseType = {
  RequestHeaders: "request.headers",
  RequestQuery: "request.query",
  ResponseHeaders: "response.headers",
} as const;
export type GetRoutesResponseBodyProjectRoutesResponseType = ClosedEnum<
  typeof GetRoutesResponseBodyProjectRoutesResponseType
>;

export const GetRoutesResponseBodyProjectRoutesOp = {
  Append: "append",
  Delete: "delete",
  Set: "set",
} as const;
export type GetRoutesResponseBodyProjectRoutesOp = ClosedEnum<
  typeof GetRoutesResponseBodyProjectRoutesOp
>;

export type GetRoutesKeyProjectRoutesResponseEq = string | number;

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

export type GetRoutesResponseBodyProjectRoutesKey =
  | string
  | GetRoutesKeyProjectRoutesResponse2;

export type GetRoutesResponseBodyProjectRoutesResponseTarget = {
  key: string | GetRoutesKeyProjectRoutesResponse2;
};

export type GetRoutesResponseBodyProjectRoutesArgs = string | Array<string>;

export type GetRoutesResponseBodyProjectRoutesTransforms = {
  type: GetRoutesResponseBodyProjectRoutesResponseType;
  op: GetRoutesResponseBodyProjectRoutesOp;
  target: GetRoutesResponseBodyProjectRoutesResponseTarget;
  args?: string | Array<string> | undefined;
  env?: Array<string> | undefined;
};

export type GetRoutesResponseBodyProjectRoutesLocale = {
  redirect?: { [k: string]: string } | undefined;
  cookie?: string | undefined;
};

export const GetRoutesDestinationProjectRoutesResponseType = {
  Service: "service",
} as const;
export type GetRoutesDestinationProjectRoutesResponseType = ClosedEnum<
  typeof GetRoutesDestinationProjectRoutesResponseType
>;

export type GetRoutesDestinationProjectRoutesResponse2 = {
  type: GetRoutesDestinationProjectRoutesResponseType;
  service: string;
  /**
   * Routing-only path used to select a route inside the target service.
   */
  path?: string | undefined;
};

export type GetRoutesResponseBodyProjectRoutesDestination =
  | GetRoutesDestinationProjectRoutesResponse2
  | string;

/**
 * The route definition from @vercel/routing-utils.
 */
export type GetRoutesResponseBodyRoute = {
  src: string;
  dest?: string | undefined;
  headers?: { [k: string]: string } | undefined;
  methods?: Array<string> | undefined;
  continue?: boolean | undefined;
  override?: boolean | undefined;
  caseSensitive?: boolean | undefined;
  check?: boolean | undefined;
  important?: boolean | undefined;
  status?: number | undefined;
  has?:
    | Array<
      | GetRoutesHasProjectRoutesResponse1
      | (GetRoutesHasProjectRoutesResponse2 & { type: "cookie" })
      | (GetRoutesHasProjectRoutesResponse2 & { type: "header" })
      | (GetRoutesHasProjectRoutesResponse2 & { type: "query" })
    >
    | undefined;
  missing?:
    | Array<
      | GetRoutesMissingProjectRoutesResponse1
      | (GetRoutesMissingProjectRoutesResponse2 & { type: "cookie" })
      | (GetRoutesMissingProjectRoutesResponse2 & { type: "header" })
      | (GetRoutesMissingProjectRoutesResponse2 & { type: "query" })
    >
    | undefined;
  mitigate?: GetRoutesResponseBodyProjectRoutesMitigate | undefined;
  transforms?: Array<GetRoutesResponseBodyProjectRoutesTransforms> | undefined;
  env?: Array<string> | undefined;
  locale?: GetRoutesResponseBodyProjectRoutesLocale | undefined;
  /**
   * Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`).
   */
  source?: string | undefined;
  destination?: GetRoutesDestinationProjectRoutesResponse2 | string | undefined;
  statusCode?: number | undefined;
  /**
   * A middleware key within the `output` key under the build result. Overrides a `middleware` definition.
   */
  middlewarePath?: string | undefined;
  /**
   * The original middleware matchers.
   */
  middlewareRawSrc?: Array<string> | undefined;
  /**
   * A middleware index in the `middleware` key under the build result
   */
  middleware?: number | undefined;
  respectOriginCacheControl?: boolean | undefined;
};

/**
 * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
 */
export const GetRoutesResponseBodySrcSyntax = {
  Equals: "equals",
  PathToRegexp: "path-to-regexp",
  Regex: "regex",
} as const;
/**
 * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
 */
export type GetRoutesResponseBodySrcSyntax = ClosedEnum<
  typeof GetRoutesResponseBodySrcSyntax
>;

/**
 * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
 */
export const GetRoutesResponseBodyRouteType = {
  Redirect: "redirect",
  Rewrite: "rewrite",
  SetStatus: "set_status",
  Transform: "transform",
} as const;
/**
 * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
 */
export type GetRoutesResponseBodyRouteType = ClosedEnum<
  typeof GetRoutesResponseBodyRouteType
>;

/**
 * A routing rule with metadata for project-level routing.
 */
export type GetRoutesResponseBodyProjectRoutesResponseRoutes = {
  /**
   * Unique identifier for the routing rule.
   */
  id: string;
  /**
   * Human-readable name for the routing rule.
   */
  name: string;
  /**
   * Optional description of what the routing rule does.
   */
  description?: string | undefined;
  /**
   * Whether the routing rule is enabled. Defaults to true.
   */
  enabled?: boolean | undefined;
  /**
   * Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production.
   */
  staged?: boolean | undefined;
  /**
   * The route definition from @vercel/routing-utils.
   */
  route: GetRoutesResponseBodyRoute;
  /**
   * Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses.
   */
  rawSrc?: string | undefined;
  /**
   * Original destination provided by user.
   */
  rawDest?: string | undefined;
  /**
   * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
   */
  srcSyntax?: GetRoutesResponseBodySrcSyntax | undefined;
  /**
   * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
   */
  routeType?: GetRoutesResponseBodyRouteType | undefined;
};

/**
 * A version of routing rules stored in S3.
 */
export type GetRoutesResponseBodyProjectRoutesResponseVersion = {
  /**
   * Unique identifier for the version.
   */
  id: string;
  /**
   * The S3 key where the routing rules are stored.
   */
  s3Key: string;
  /**
   * Timestamp of when this version was last modified.
   */
  lastModified: number;
  /**
   * The user who created this version.
   */
  createdBy: string;
  /**
   * Whether this version is staged and not yet promoted to production.
   */
  isStaging?: boolean | undefined;
  /**
   * Whether this version is currently live in production.
   */
  isLive?: boolean | undefined;
  /**
   * The number of routing rules in this version.
   */
  ruleCount?: number | undefined;
  /**
   * The staging alias for previewing this version.
   */
  alias?: string | undefined;
};

export type ResponseBodyLimit = {
  maxRoutes: number;
  currentRoutes: number;
};

export type ResponseBody4 = {
  routes: Array<GetRoutesResponseBodyProjectRoutesResponseRoutes>;
  /**
   * A version of routing rules stored in S3.
   */
  version: GetRoutesResponseBodyProjectRoutesResponseVersion;
  limit: ResponseBodyLimit;
};

export const GetRoutesHasProjectRoutesResponse200Type = {
  Cookie: "cookie",
  Header: "header",
  Query: "query",
} as const;
export type GetRoutesHasProjectRoutesResponse200Type = ClosedEnum<
  typeof GetRoutesHasProjectRoutesResponse200Type
>;

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBodyEq =
  | string
  | number;

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

export type GetRoutesHasProjectRoutesResponse200Value =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody2;

export type GetRoutesHasProjectRoutes2 = {
  type: GetRoutesHasProjectRoutesResponse200Type;
  key: string;
  value?:
    | string
    | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody2
    | undefined;
};

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONEq =
  | string
  | number;

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

export type GetRoutesHasProjectRoutesResponseValue =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJson2;

export type GetRoutesHasProjectRoutes1 = {
  type: "host";
  value: string | GetRoutesValueProjectRoutesResponse200ApplicationJson2;
};

export type GetRoutesResponseBodyHas =
  | GetRoutesHasProjectRoutes1
  | (GetRoutesHasProjectRoutes2 & { type: "cookie" })
  | (GetRoutesHasProjectRoutes2 & { type: "header" })
  | (GetRoutesHasProjectRoutes2 & { type: "query" });

export const GetRoutesMissingProjectRoutesResponse200Type = {
  Cookie: "cookie",
  Header: "header",
  Query: "query",
} as const;
export type GetRoutesMissingProjectRoutesResponse200Type = ClosedEnum<
  typeof GetRoutesMissingProjectRoutesResponse200Type
>;

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody3RoutesEq =
  | string
  | number;

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

export type GetRoutesMissingProjectRoutesResponse200Value =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody3Routes2;

export type GetRoutesMissingProjectRoutes2 = {
  type: GetRoutesMissingProjectRoutesResponse200Type;
  key: string;
  value?:
    | string
    | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody3Routes2
    | undefined;
};

export type GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody3Eq =
  | string
  | number;

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

export type GetRoutesMissingProjectRoutesResponseValue =
  | string
  | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody32;

export type GetRoutesMissingProjectRoutes1 = {
  type: "host";
  value:
    | string
    | GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody32;
};

export type GetRoutesResponseBodyMissing =
  | GetRoutesMissingProjectRoutes1
  | (GetRoutesMissingProjectRoutes2 & { type: "cookie" })
  | (GetRoutesMissingProjectRoutes2 & { type: "header" })
  | (GetRoutesMissingProjectRoutes2 & { type: "query" });

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

export type GetRoutesResponseBodyMitigate = {
  action: GetRoutesResponseBodyAction;
};

export const GetRoutesResponseBodyProjectRoutesType = {
  RequestHeaders: "request.headers",
  RequestQuery: "request.query",
  ResponseHeaders: "response.headers",
} as const;
export type GetRoutesResponseBodyProjectRoutesType = ClosedEnum<
  typeof GetRoutesResponseBodyProjectRoutesType
>;

export const GetRoutesResponseBodyOp = {
  Append: "append",
  Delete: "delete",
  Set: "set",
} as const;
export type GetRoutesResponseBodyOp = ClosedEnum<
  typeof GetRoutesResponseBodyOp
>;

export type GetRoutesKeyProjectRoutesEq = string | number;

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

export type GetRoutesResponseBodyKey = string | GetRoutesKeyProjectRoutes2;

export type GetRoutesResponseBodyProjectRoutesTarget = {
  key: string | GetRoutesKeyProjectRoutes2;
};

export type GetRoutesResponseBodyArgs = string | Array<string>;

export type GetRoutesResponseBodyTransforms = {
  type: GetRoutesResponseBodyProjectRoutesType;
  op: GetRoutesResponseBodyOp;
  target: GetRoutesResponseBodyProjectRoutesTarget;
  args?: string | Array<string> | undefined;
  env?: Array<string> | undefined;
};

export type GetRoutesResponseBodyLocale = {
  redirect?: { [k: string]: string } | undefined;
  cookie?: string | undefined;
};

export const GetRoutesDestinationProjectRoutesType = {
  Service: "service",
} as const;
export type GetRoutesDestinationProjectRoutesType = ClosedEnum<
  typeof GetRoutesDestinationProjectRoutesType
>;

export type GetRoutesDestinationProjectRoutes2 = {
  type: GetRoutesDestinationProjectRoutesType;
  service: string;
  /**
   * Routing-only path used to select a route inside the target service.
   */
  path?: string | undefined;
};

export type GetRoutesResponseBodyDestination =
  | GetRoutesDestinationProjectRoutes2
  | string;

/**
 * The route definition from @vercel/routing-utils.
 */
export type ResponseBodyRoute = {
  src: string;
  dest?: string | undefined;
  headers?: { [k: string]: string } | undefined;
  methods?: Array<string> | undefined;
  continue?: boolean | undefined;
  override?: boolean | undefined;
  caseSensitive?: boolean | undefined;
  check?: boolean | undefined;
  important?: boolean | undefined;
  status?: number | undefined;
  has?:
    | Array<
      | GetRoutesHasProjectRoutes1
      | (GetRoutesHasProjectRoutes2 & { type: "cookie" })
      | (GetRoutesHasProjectRoutes2 & { type: "header" })
      | (GetRoutesHasProjectRoutes2 & { type: "query" })
    >
    | undefined;
  missing?:
    | Array<
      | GetRoutesMissingProjectRoutes1
      | (GetRoutesMissingProjectRoutes2 & { type: "cookie" })
      | (GetRoutesMissingProjectRoutes2 & { type: "header" })
      | (GetRoutesMissingProjectRoutes2 & { type: "query" })
    >
    | undefined;
  mitigate?: GetRoutesResponseBodyMitigate | undefined;
  transforms?: Array<GetRoutesResponseBodyTransforms> | undefined;
  env?: Array<string> | undefined;
  locale?: GetRoutesResponseBodyLocale | undefined;
  /**
   * Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`).
   */
  source?: string | undefined;
  destination?: GetRoutesDestinationProjectRoutes2 | string | undefined;
  statusCode?: number | undefined;
  /**
   * A middleware key within the `output` key under the build result. Overrides a `middleware` definition.
   */
  middlewarePath?: string | undefined;
  /**
   * The original middleware matchers.
   */
  middlewareRawSrc?: Array<string> | undefined;
  /**
   * A middleware index in the `middleware` key under the build result
   */
  middleware?: number | undefined;
  respectOriginCacheControl?: boolean | undefined;
};

/**
 * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
 */
export const ResponseBodySrcSyntax = {
  Equals: "equals",
  PathToRegexp: "path-to-regexp",
  Regex: "regex",
} as const;
/**
 * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
 */
export type ResponseBodySrcSyntax = ClosedEnum<typeof ResponseBodySrcSyntax>;

/**
 * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
 */
export const ResponseBodyRouteType = {
  Redirect: "redirect",
  Rewrite: "rewrite",
  SetStatus: "set_status",
  Transform: "transform",
} as const;
/**
 * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
 */
export type ResponseBodyRouteType = ClosedEnum<typeof ResponseBodyRouteType>;

/**
 * A routing rule with metadata for project-level routing.
 */
export type GetRoutesResponseBodyProjectRoutesRoutes = {
  /**
   * Unique identifier for the routing rule.
   */
  id: string;
  /**
   * Human-readable name for the routing rule.
   */
  name: string;
  /**
   * Optional description of what the routing rule does.
   */
  description?: string | undefined;
  /**
   * Whether the routing rule is enabled. Defaults to true.
   */
  enabled?: boolean | undefined;
  /**
   * Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production.
   */
  staged?: boolean | undefined;
  /**
   * The route definition from @vercel/routing-utils.
   */
  route: ResponseBodyRoute;
  /**
   * Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses.
   */
  rawSrc?: string | undefined;
  /**
   * Original destination provided by user.
   */
  rawDest?: string | undefined;
  /**
   * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
   */
  srcSyntax?: ResponseBodySrcSyntax | undefined;
  /**
   * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
   */
  routeType?: ResponseBodyRouteType | undefined;
};

/**
 * A version of routing rules stored in S3.
 */
export type GetRoutesResponseBodyProjectRoutesVersion = {
  /**
   * Unique identifier for the version.
   */
  id: string;
  /**
   * The S3 key where the routing rules are stored.
   */
  s3Key: string;
  /**
   * Timestamp of when this version was last modified.
   */
  lastModified: number;
  /**
   * The user who created this version.
   */
  createdBy: string;
  /**
   * Whether this version is staged and not yet promoted to production.
   */
  isStaging?: boolean | undefined;
  /**
   * Whether this version is currently live in production.
   */
  isLive?: boolean | undefined;
  /**
   * The number of routing rules in this version.
   */
  ruleCount?: number | undefined;
  /**
   * The staging alias for previewing this version.
   */
  alias?: string | undefined;
};

export type GetRoutesResponseBody3 = {
  routes: Array<GetRoutesResponseBodyProjectRoutesRoutes>;
  /**
   * A version of routing rules stored in S3.
   */
  version: GetRoutesResponseBodyProjectRoutesVersion;
};

export const GetRoutesHasProjectRoutesType = {
  Cookie: "cookie",
  Header: "header",
  Query: "query",
} as const;
export type GetRoutesHasProjectRoutesType = ClosedEnum<
  typeof GetRoutesHasProjectRoutesType
>;

export type GetRoutesValueProjectRoutesEq = string | number;

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

export type GetRoutesHasProjectRoutesValue =
  | string
  | GetRoutesValueProjectRoutes2;

export type GetRoutesHas2 = {
  type: GetRoutesHasProjectRoutesType;
  key: string;
  value?: string | GetRoutesValueProjectRoutes2 | undefined;
};

export type GetRoutesValueEq = string | number;

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

export type GetRoutesHasValue = string | GetRoutesValue2;

export type GetRoutesHas1 = {
  type: "host";
  value: string | GetRoutesValue2;
};

export type ResponseBodyHas =
  | GetRoutesHas1
  | (GetRoutesHas2 & { type: "cookie" })
  | (GetRoutesHas2 & { type: "header" })
  | (GetRoutesHas2 & { type: "query" });

export const GetRoutesMissingProjectRoutesType = {
  Cookie: "cookie",
  Header: "header",
  Query: "query",
} as const;
export type GetRoutesMissingProjectRoutesType = ClosedEnum<
  typeof GetRoutesMissingProjectRoutesType
>;

export type GetRoutesValueProjectRoutesResponse200Eq = string | number;

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

export type GetRoutesMissingProjectRoutesValue =
  | string
  | GetRoutesValueProjectRoutesResponse2002;

export type GetRoutesMissing2 = {
  type: GetRoutesMissingProjectRoutesType;
  key: string;
  value?: string | GetRoutesValueProjectRoutesResponse2002 | undefined;
};

export type GetRoutesValueProjectRoutesResponseEq = string | number;

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

export type GetRoutesMissingValue =
  | string
  | GetRoutesValueProjectRoutesResponse2;

export type GetRoutesMissing1 = {
  type: "host";
  value: string | GetRoutesValueProjectRoutesResponse2;
};

export type ResponseBodyMissing =
  | GetRoutesMissing1
  | (GetRoutesMissing2 & { type: "cookie" })
  | (GetRoutesMissing2 & { type: "header" })
  | (GetRoutesMissing2 & { type: "query" });

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

export type ResponseBodyMitigate = {
  action: GetRoutesResponseBodyProjectRoutesResponseAction;
};

export const GetRoutesResponseBodyType = {
  RequestHeaders: "request.headers",
  RequestQuery: "request.query",
  ResponseHeaders: "response.headers",
} as const;
export type GetRoutesResponseBodyType = ClosedEnum<
  typeof GetRoutesResponseBodyType
>;

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

export type GetRoutesKeyEq = string | number;

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

export type ResponseBodyKey = string | GetRoutesKey2;

export type GetRoutesResponseBodyTarget = {
  key: string | GetRoutesKey2;
};

export type ResponseBodyArgs = string | Array<string>;

export type ResponseBodyTransforms = {
  type: GetRoutesResponseBodyType;
  op: ResponseBodyOp;
  target: GetRoutesResponseBodyTarget;
  args?: string | Array<string> | undefined;
  env?: Array<string> | undefined;
};

export type ResponseBodyLocale = {
  redirect?: { [k: string]: string } | undefined;
  cookie?: string | undefined;
};

export const GetRoutesDestinationType = {
  Service: "service",
} as const;
export type GetRoutesDestinationType = ClosedEnum<
  typeof GetRoutesDestinationType
>;

export type GetRoutesDestination2 = {
  type: GetRoutesDestinationType;
  service: string;
  /**
   * Routing-only path used to select a route inside the target service.
   */
  path?: string | undefined;
};

export type ResponseBodyDestination = GetRoutesDestination2 | string;

/**
 * The route definition from @vercel/routing-utils.
 */
export type GetRoutesResponseBodyProjectRoutesRoute = {
  src: string;
  dest?: string | undefined;
  headers?: { [k: string]: string } | undefined;
  methods?: Array<string> | undefined;
  continue?: boolean | undefined;
  override?: boolean | undefined;
  caseSensitive?: boolean | undefined;
  check?: boolean | undefined;
  important?: boolean | undefined;
  status?: number | undefined;
  has?:
    | Array<
      | GetRoutesHas1
      | (GetRoutesHas2 & { type: "cookie" })
      | (GetRoutesHas2 & { type: "header" })
      | (GetRoutesHas2 & { type: "query" })
    >
    | undefined;
  missing?:
    | Array<
      | GetRoutesMissing1
      | (GetRoutesMissing2 & { type: "cookie" })
      | (GetRoutesMissing2 & { type: "header" })
      | (GetRoutesMissing2 & { type: "query" })
    >
    | undefined;
  mitigate?: ResponseBodyMitigate | undefined;
  transforms?: Array<ResponseBodyTransforms> | undefined;
  env?: Array<string> | undefined;
  locale?: ResponseBodyLocale | undefined;
  /**
   * Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`).
   */
  source?: string | undefined;
  destination?: GetRoutesDestination2 | string | undefined;
  statusCode?: number | undefined;
  /**
   * A middleware key within the `output` key under the build result. Overrides a `middleware` definition.
   */
  middlewarePath?: string | undefined;
  /**
   * The original middleware matchers.
   */
  middlewareRawSrc?: Array<string> | undefined;
  /**
   * A middleware index in the `middleware` key under the build result
   */
  middleware?: number | undefined;
  respectOriginCacheControl?: boolean | undefined;
};

/**
 * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
 */
export const GetRoutesResponseBodyProjectRoutesSrcSyntax = {
  Equals: "equals",
  PathToRegexp: "path-to-regexp",
  Regex: "regex",
} as const;
/**
 * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
 */
export type GetRoutesResponseBodyProjectRoutesSrcSyntax = ClosedEnum<
  typeof GetRoutesResponseBodyProjectRoutesSrcSyntax
>;

/**
 * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
 */
export const GetRoutesResponseBodyProjectRoutesRouteType = {
  Redirect: "redirect",
  Rewrite: "rewrite",
  SetStatus: "set_status",
  Transform: "transform",
} as const;
/**
 * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
 */
export type GetRoutesResponseBodyProjectRoutesRouteType = ClosedEnum<
  typeof GetRoutesResponseBodyProjectRoutesRouteType
>;

/**
 * A routing rule with metadata for project-level routing.
 */
export type GetRoutesResponseBodyRoutes = {
  /**
   * Unique identifier for the routing rule.
   */
  id: string;
  /**
   * Human-readable name for the routing rule.
   */
  name: string;
  /**
   * Optional description of what the routing rule does.
   */
  description?: string | undefined;
  /**
   * Whether the routing rule is enabled. Defaults to true.
   */
  enabled?: boolean | undefined;
  /**
   * Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production.
   */
  staged?: boolean | undefined;
  /**
   * The route definition from @vercel/routing-utils.
   */
  route: GetRoutesResponseBodyProjectRoutesRoute;
  /**
   * Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses.
   */
  rawSrc?: string | undefined;
  /**
   * Original destination provided by user.
   */
  rawDest?: string | undefined;
  /**
   * The syntax type of the source pattern. Determines how the pattern is compiled to regex.
   */
  srcSyntax?: GetRoutesResponseBodyProjectRoutesSrcSyntax | undefined;
  /**
   * Computed route type based on the route configuration. Only present in API responses, not stored in S3.
   */
  routeType?: GetRoutesResponseBodyProjectRoutesRouteType | undefined;
};

/**
 * A version of routing rules stored in S3.
 */
export type GetRoutesResponseBodyVersion = {
  /**
   * Unique identifier for the version.
   */
  id: string;
  /**
   * The S3 key where the routing rules are stored.
   */
  s3Key: string;
  /**
   * Timestamp of when this version was last modified.
   */
  lastModified: number;
  /**
   * The user who created this version.
   */
  createdBy: string;
  /**
   * Whether this version is staged and not yet promoted to production.
   */
  isStaging?: boolean | undefined;
  /**
   * Whether this version is currently live in production.
   */
  isLive?: boolean | undefined;
  /**
   * The number of routing rules in this version.
   */
  ruleCount?: number | undefined;
  /**
   * The staging alias for previewing this version.
   */
  alias?: string | undefined;
};

export type GetRoutesResponseBody2 = {
  routes: Array<GetRoutesResponseBodyRoutes>;
  /**
   * A version of routing rules stored in S3.
   */
  version: GetRoutesResponseBodyVersion;
  diffCount: number;
};

export type GetRoutesResponseBody1 = {};

export type GetRoutesResponseBody =
  | GetRoutesResponseBody2
  | ResponseBody4
  | GetRoutesResponseBody3
  | GetRoutesResponseBody1;

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

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

/** @internal */
export type QueryParamDiff$Outbound = boolean | string;

/** @internal */
export const QueryParamDiff$outboundSchema: z.ZodType<
  QueryParamDiff$Outbound,
  z.ZodTypeDef,
  QueryParamDiff
> = smartUnion([z.boolean(), DiffQueryParam2$outboundSchema]);

export function queryParamDiffToJSON(queryParamDiff: QueryParamDiff): string {
  return JSON.stringify(QueryParamDiff$outboundSchema.parse(queryParamDiff));
}

/** @internal */
export type GetRoutesRequest$Outbound = {
  projectId: string;
  versionId?: string | undefined;
  q?: string | undefined;
  filter?: string | undefined;
  diff?: boolean | string | undefined;
  teamId?: string | undefined;
  slug?: string | undefined;
};

/** @internal */
export const GetRoutesRequest$outboundSchema: z.ZodType<
  GetRoutesRequest$Outbound,
  z.ZodTypeDef,
  GetRoutesRequest
> = z.object({
  projectId: z.string(),
  versionId: z.string().optional(),
  q: z.string().optional(),
  filter: QueryParamFilter$outboundSchema.optional(),
  diff: smartUnion([z.boolean(), DiffQueryParam2$outboundSchema]).optional(),
  teamId: z.string().optional(),
  slug: z.string().optional(),
});

export function getRoutesRequestToJSON(
  getRoutesRequest: GetRoutesRequest,
): string {
  return JSON.stringify(
    GetRoutesRequest$outboundSchema.parse(getRoutesRequest),
  );
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesHasProjectRoutesResponse1$inboundSchema: z.ZodType<
  GetRoutesHasProjectRoutesResponse1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: smartUnion([
    types.string(),
    z.lazy(() =>
      GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody42$inboundSchema
    ),
  ]),
});

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesHas$inboundSchema: z.ZodType<
  GetRoutesResponseBodyProjectRoutesHas,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetRoutesHasProjectRoutesResponse1$inboundSchema),
  z.lazy(() => GetRoutesHasProjectRoutesResponse2$inboundSchema).and(
    z.object({ type: z.literal("cookie") }),
  ),
  z.lazy(() => GetRoutesHasProjectRoutesResponse2$inboundSchema).and(
    z.object({ type: z.literal("header") }),
  ),
  z.lazy(() => GetRoutesHasProjectRoutesResponse2$inboundSchema).and(
    z.object({ type: z.literal("query") }),
  ),
]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesMissingProjectRoutesResponse1$inboundSchema: z.ZodType<
  GetRoutesMissingProjectRoutesResponse1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: smartUnion([
    types.string(),
    z.lazy(() =>
      GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody4RoutesRoute2$inboundSchema
    ),
  ]),
});

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesMissing$inboundSchema: z.ZodType<
  GetRoutesResponseBodyProjectRoutesMissing,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetRoutesMissingProjectRoutesResponse1$inboundSchema),
  z.lazy(() => GetRoutesMissingProjectRoutesResponse2$inboundSchema).and(
    z.object({ type: z.literal("cookie") }),
  ),
  z.lazy(() => GetRoutesMissingProjectRoutesResponse2$inboundSchema).and(
    z.object({ type: z.literal("header") }),
  ),
  z.lazy(() => GetRoutesMissingProjectRoutesResponse2$inboundSchema).and(
    z.object({ type: z.literal("query") }),
  ),
]);

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesResponseTarget$inboundSchema:
  z.ZodType<
    GetRoutesResponseBodyProjectRoutesResponseTarget,
    z.ZodTypeDef,
    unknown
  > = z.object({
    key: smartUnion([
      types.string(),
      z.lazy(() => GetRoutesKeyProjectRoutesResponse2$inboundSchema),
    ]),
  });

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

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

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesTransforms$inboundSchema:
  z.ZodType<
    GetRoutesResponseBodyProjectRoutesTransforms,
    z.ZodTypeDef,
    unknown
  > = z.object({
    type: GetRoutesResponseBodyProjectRoutesResponseType$inboundSchema,
    op: GetRoutesResponseBodyProjectRoutesOp$inboundSchema,
    target: z.lazy(() =>
      GetRoutesResponseBodyProjectRoutesResponseTarget$inboundSchema
    ),
    args: types.optional(smartUnion([types.string(), z.array(types.string())])),
    env: types.optional(z.array(types.string())),
  });

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesLocale$inboundSchema: z.ZodType<
  GetRoutesResponseBodyProjectRoutesLocale,
  z.ZodTypeDef,
  unknown
> = z.object({
  redirect: types.optional(z.record(types.string())),
  cookie: types.optional(types.string()),
});

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

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

/** @internal */
export const GetRoutesDestinationProjectRoutesResponse2$inboundSchema:
  z.ZodType<GetRoutesDestinationProjectRoutesResponse2, z.ZodTypeDef, unknown> =
    z.object({
      type: GetRoutesDestinationProjectRoutesResponseType$inboundSchema,
      service: types.string(),
      path: types.optional(types.string()),
    });

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

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

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

/** @internal */
export const GetRoutesResponseBodyRoute$inboundSchema: z.ZodType<
  GetRoutesResponseBodyRoute,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  dest: types.optional(types.string()),
  headers: types.optional(z.record(types.string())),
  methods: types.optional(z.array(types.string())),
  continue: types.optional(types.boolean()),
  override: types.optional(types.boolean()),
  caseSensitive: types.optional(types.boolean()),
  check: types.optional(types.boolean()),
  important: types.optional(types.boolean()),
  status: types.optional(types.number()),
  has: types.optional(
    z.array(z.union([
      z.lazy(() => GetRoutesHasProjectRoutesResponse1$inboundSchema),
      z.lazy(() =>
        GetRoutesHasProjectRoutesResponse2$inboundSchema
      ).and(z.object({ type: z.literal("cookie") })),
      z.lazy(() => GetRoutesHasProjectRoutesResponse2$inboundSchema).and(
        z.object({ type: z.literal("header") }),
      ),
      z.lazy(() => GetRoutesHasProjectRoutesResponse2$inboundSchema).and(
        z.object({ type: z.literal("query") }),
      ),
    ])),
  ),
  missing: types.optional(
    z.array(z.union([
      z.lazy(() => GetRoutesMissingProjectRoutesResponse1$inboundSchema),
      z.lazy(() =>
        GetRoutesMissingProjectRoutesResponse2$inboundSchema
      ).and(z.object({ type: z.literal("cookie") })),
      z.lazy(() => GetRoutesMissingProjectRoutesResponse2$inboundSchema).and(
        z.object({ type: z.literal("header") }),
      ),
      z.lazy(() => GetRoutesMissingProjectRoutesResponse2$inboundSchema).and(
        z.object({ type: z.literal("query") }),
      ),
    ])),
  ),
  mitigate: types.optional(
    z.lazy(() => GetRoutesResponseBodyProjectRoutesMitigate$inboundSchema),
  ),
  transforms: types.optional(
    z.array(z.lazy(() =>
      GetRoutesResponseBodyProjectRoutesTransforms$inboundSchema
    )),
  ),
  env: types.optional(z.array(types.string())),
  locale: types.optional(
    z.lazy(() => GetRoutesResponseBodyProjectRoutesLocale$inboundSchema),
  ),
  source: types.optional(types.string()),
  destination: types.optional(
    smartUnion([
      z.lazy(() => GetRoutesDestinationProjectRoutesResponse2$inboundSchema),
      types.string(),
    ]),
  ),
  statusCode: types.optional(types.number()),
  middlewarePath: types.optional(types.string()),
  middlewareRawSrc: types.optional(z.array(types.string())),
  middleware: types.optional(types.number()),
  respectOriginCacheControl: types.optional(types.boolean()),
});

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

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

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesResponseRoutes$inboundSchema:
  z.ZodType<
    GetRoutesResponseBodyProjectRoutesResponseRoutes,
    z.ZodTypeDef,
    unknown
  > = z.object({
    id: types.string(),
    name: types.string(),
    description: types.optional(types.string()),
    enabled: types.optional(types.boolean()),
    staged: types.optional(types.boolean()),
    route: z.lazy(() => GetRoutesResponseBodyRoute$inboundSchema),
    rawSrc: types.optional(types.string()),
    rawDest: types.optional(types.string()),
    srcSyntax: types.optional(GetRoutesResponseBodySrcSyntax$inboundSchema),
    routeType: types.optional(GetRoutesResponseBodyRouteType$inboundSchema),
  });

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesResponseVersion$inboundSchema:
  z.ZodType<
    GetRoutesResponseBodyProjectRoutesResponseVersion,
    z.ZodTypeDef,
    unknown
  > = z.object({
    id: types.string(),
    s3Key: types.string(),
    lastModified: types.number(),
    createdBy: types.string(),
    isStaging: types.optional(types.boolean()),
    isLive: types.optional(types.boolean()),
    ruleCount: types.optional(types.number()),
    alias: types.optional(types.string()),
  });

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

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

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

/** @internal */
export const ResponseBody4$inboundSchema: z.ZodType<
  ResponseBody4,
  z.ZodTypeDef,
  unknown
> = z.object({
  routes: z.array(
    z.lazy(() =>
      GetRoutesResponseBodyProjectRoutesResponseRoutes$inboundSchema
    ),
  ),
  version: z.lazy(() =>
    GetRoutesResponseBodyProjectRoutesResponseVersion$inboundSchema
  ),
  limit: z.lazy(() => ResponseBodyLimit$inboundSchema),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesHasProjectRoutes1$inboundSchema: z.ZodType<
  GetRoutesHasProjectRoutes1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: smartUnion([
    types.string(),
    z.lazy(() =>
      GetRoutesValueProjectRoutesResponse200ApplicationJson2$inboundSchema
    ),
  ]),
});

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

/** @internal */
export const GetRoutesResponseBodyHas$inboundSchema: z.ZodType<
  GetRoutesResponseBodyHas,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetRoutesHasProjectRoutes1$inboundSchema),
  z.lazy(() => GetRoutesHasProjectRoutes2$inboundSchema).and(
    z.object({ type: z.literal("cookie") }),
  ),
  z.lazy(() => GetRoutesHasProjectRoutes2$inboundSchema).and(
    z.object({ type: z.literal("header") }),
  ),
  z.lazy(() => GetRoutesHasProjectRoutes2$inboundSchema).and(
    z.object({ type: z.literal("query") }),
  ),
]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesMissingProjectRoutes1$inboundSchema: z.ZodType<
  GetRoutesMissingProjectRoutes1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: smartUnion([
    types.string(),
    z.lazy(() =>
      GetRoutesValueProjectRoutesResponse200ApplicationJSONResponseBody32$inboundSchema
    ),
  ]),
});

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

/** @internal */
export const GetRoutesResponseBodyMissing$inboundSchema: z.ZodType<
  GetRoutesResponseBodyMissing,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetRoutesMissingProjectRoutes1$inboundSchema),
  z.lazy(() => GetRoutesMissingProjectRoutes2$inboundSchema).and(
    z.object({ type: z.literal("cookie") }),
  ),
  z.lazy(() => GetRoutesMissingProjectRoutes2$inboundSchema).and(
    z.object({ type: z.literal("header") }),
  ),
  z.lazy(() => GetRoutesMissingProjectRoutes2$inboundSchema).and(
    z.object({ type: z.literal("query") }),
  ),
]);

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesTarget$inboundSchema: z.ZodType<
  GetRoutesResponseBodyProjectRoutesTarget,
  z.ZodTypeDef,
  unknown
> = z.object({
  key: smartUnion([
    types.string(),
    z.lazy(() => GetRoutesKeyProjectRoutes2$inboundSchema),
  ]),
});

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

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

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

/** @internal */
export const GetRoutesResponseBodyTransforms$inboundSchema: z.ZodType<
  GetRoutesResponseBodyTransforms,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: GetRoutesResponseBodyProjectRoutesType$inboundSchema,
  op: GetRoutesResponseBodyOp$inboundSchema,
  target: z.lazy(() => GetRoutesResponseBodyProjectRoutesTarget$inboundSchema),
  args: types.optional(smartUnion([types.string(), z.array(types.string())])),
  env: types.optional(z.array(types.string())),
});

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

/** @internal */
export const GetRoutesResponseBodyLocale$inboundSchema: z.ZodType<
  GetRoutesResponseBodyLocale,
  z.ZodTypeDef,
  unknown
> = z.object({
  redirect: types.optional(z.record(types.string())),
  cookie: types.optional(types.string()),
});

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

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

/** @internal */
export const GetRoutesDestinationProjectRoutes2$inboundSchema: z.ZodType<
  GetRoutesDestinationProjectRoutes2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: GetRoutesDestinationProjectRoutesType$inboundSchema,
  service: types.string(),
  path: types.optional(types.string()),
});

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

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

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

/** @internal */
export const ResponseBodyRoute$inboundSchema: z.ZodType<
  ResponseBodyRoute,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  dest: types.optional(types.string()),
  headers: types.optional(z.record(types.string())),
  methods: types.optional(z.array(types.string())),
  continue: types.optional(types.boolean()),
  override: types.optional(types.boolean()),
  caseSensitive: types.optional(types.boolean()),
  check: types.optional(types.boolean()),
  important: types.optional(types.boolean()),
  status: types.optional(types.number()),
  has: types.optional(
    z.array(z.union([
      z.lazy(() => GetRoutesHasProjectRoutes1$inboundSchema),
      z.lazy(() =>
        GetRoutesHasProjectRoutes2$inboundSchema
      ).and(z.object({ type: z.literal("cookie") })),
      z.lazy(() => GetRoutesHasProjectRoutes2$inboundSchema).and(
        z.object({ type: z.literal("header") }),
      ),
      z.lazy(() => GetRoutesHasProjectRoutes2$inboundSchema).and(
        z.object({ type: z.literal("query") }),
      ),
    ])),
  ),
  missing: types.optional(
    z.array(z.union([
      z.lazy(() => GetRoutesMissingProjectRoutes1$inboundSchema),
      z.lazy(() =>
        GetRoutesMissingProjectRoutes2$inboundSchema
      ).and(z.object({ type: z.literal("cookie") })),
      z.lazy(() => GetRoutesMissingProjectRoutes2$inboundSchema).and(
        z.object({ type: z.literal("header") }),
      ),
      z.lazy(() => GetRoutesMissingProjectRoutes2$inboundSchema).and(
        z.object({ type: z.literal("query") }),
      ),
    ])),
  ),
  mitigate: types.optional(
    z.lazy(() => GetRoutesResponseBodyMitigate$inboundSchema),
  ),
  transforms: types.optional(
    z.array(z.lazy(() => GetRoutesResponseBodyTransforms$inboundSchema)),
  ),
  env: types.optional(z.array(types.string())),
  locale: types.optional(
    z.lazy(() => GetRoutesResponseBodyLocale$inboundSchema),
  ),
  source: types.optional(types.string()),
  destination: types.optional(
    smartUnion([
      z.lazy(() => GetRoutesDestinationProjectRoutes2$inboundSchema),
      types.string(),
    ]),
  ),
  statusCode: types.optional(types.number()),
  middlewarePath: types.optional(types.string()),
  middlewareRawSrc: types.optional(z.array(types.string())),
  middleware: types.optional(types.number()),
  respectOriginCacheControl: types.optional(types.boolean()),
});

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

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

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesRoutes$inboundSchema: z.ZodType<
  GetRoutesResponseBodyProjectRoutesRoutes,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  name: types.string(),
  description: types.optional(types.string()),
  enabled: types.optional(types.boolean()),
  staged: types.optional(types.boolean()),
  route: z.lazy(() => ResponseBodyRoute$inboundSchema),
  rawSrc: types.optional(types.string()),
  rawDest: types.optional(types.string()),
  srcSyntax: types.optional(ResponseBodySrcSyntax$inboundSchema),
  routeType: types.optional(ResponseBodyRouteType$inboundSchema),
});

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesVersion$inboundSchema: z.ZodType<
  GetRoutesResponseBodyProjectRoutesVersion,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  s3Key: types.string(),
  lastModified: types.number(),
  createdBy: types.string(),
  isStaging: types.optional(types.boolean()),
  isLive: types.optional(types.boolean()),
  ruleCount: types.optional(types.number()),
  alias: types.optional(types.string()),
});

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

/** @internal */
export const GetRoutesResponseBody3$inboundSchema: z.ZodType<
  GetRoutesResponseBody3,
  z.ZodTypeDef,
  unknown
> = z.object({
  routes: z.array(
    z.lazy(() => GetRoutesResponseBodyProjectRoutesRoutes$inboundSchema),
  ),
  version: z.lazy(() =>
    GetRoutesResponseBodyProjectRoutesVersion$inboundSchema
  ),
});

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesHas1$inboundSchema: z.ZodType<
  GetRoutesHas1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: smartUnion([
    types.string(),
    z.lazy(() => GetRoutesValue2$inboundSchema),
  ]),
});

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

/** @internal */
export const ResponseBodyHas$inboundSchema: z.ZodType<
  ResponseBodyHas,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetRoutesHas1$inboundSchema),
  z.lazy(() => GetRoutesHas2$inboundSchema).and(
    z.object({ type: z.literal("cookie") }),
  ),
  z.lazy(() => GetRoutesHas2$inboundSchema).and(
    z.object({ type: z.literal("header") }),
  ),
  z.lazy(() => GetRoutesHas2$inboundSchema).and(
    z.object({ type: z.literal("query") }),
  ),
]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesMissing1$inboundSchema: z.ZodType<
  GetRoutesMissing1,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: types.literal("host"),
  value: smartUnion([
    types.string(),
    z.lazy(() => GetRoutesValueProjectRoutesResponse2$inboundSchema),
  ]),
});

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

/** @internal */
export const ResponseBodyMissing$inboundSchema: z.ZodType<
  ResponseBodyMissing,
  z.ZodTypeDef,
  unknown
> = z.union([
  z.lazy(() => GetRoutesMissing1$inboundSchema),
  z.lazy(() => GetRoutesMissing2$inboundSchema).and(
    z.object({ type: z.literal("cookie") }),
  ),
  z.lazy(() => GetRoutesMissing2$inboundSchema).and(
    z.object({ type: z.literal("header") }),
  ),
  z.lazy(() => GetRoutesMissing2$inboundSchema).and(
    z.object({ type: z.literal("query") }),
  ),
]);

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

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

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

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

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

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

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

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

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

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

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

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

/** @internal */
export const GetRoutesResponseBodyTarget$inboundSchema: z.ZodType<
  GetRoutesResponseBodyTarget,
  z.ZodTypeDef,
  unknown
> = z.object({
  key: smartUnion([types.string(), z.lazy(() => GetRoutesKey2$inboundSchema)]),
});

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

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

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

/** @internal */
export const ResponseBodyTransforms$inboundSchema: z.ZodType<
  ResponseBodyTransforms,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: GetRoutesResponseBodyType$inboundSchema,
  op: ResponseBodyOp$inboundSchema,
  target: z.lazy(() => GetRoutesResponseBodyTarget$inboundSchema),
  args: types.optional(smartUnion([types.string(), z.array(types.string())])),
  env: types.optional(z.array(types.string())),
});

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

/** @internal */
export const ResponseBodyLocale$inboundSchema: z.ZodType<
  ResponseBodyLocale,
  z.ZodTypeDef,
  unknown
> = z.object({
  redirect: types.optional(z.record(types.string())),
  cookie: types.optional(types.string()),
});

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

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

/** @internal */
export const GetRoutesDestination2$inboundSchema: z.ZodType<
  GetRoutesDestination2,
  z.ZodTypeDef,
  unknown
> = z.object({
  type: GetRoutesDestinationType$inboundSchema,
  service: types.string(),
  path: types.optional(types.string()),
});

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

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

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

/** @internal */
export const GetRoutesResponseBodyProjectRoutesRoute$inboundSchema: z.ZodType<
  GetRoutesResponseBodyProjectRoutesRoute,
  z.ZodTypeDef,
  unknown
> = z.object({
  src: types.string(),
  dest: types.optional(types.string()),
  headers: types.optional(z.record(types.string())),
  methods: types.optional(z.array(types.string())),
  continue: types.optional(types.boolean()),
  override: types.optional(types.boolean()),
  caseSensitive: types.optional(types.boolean()),
  check: types.optional(types.boolean()),
  important: types.optional(types.boolean()),
  status: types.optional(types.number()),
  has: types.optional(
    z.array(z.union([
      z.lazy(() => GetRoutesHas1$inboundSchema),
      z.lazy(() =>
        GetRoutesHas2$inboundSchema
      ).and(z.object({ type: z.literal("cookie") })),
      z.lazy(() => GetRoutesHas2$inboundSchema).and(
        z.object({ type: z.literal("header") }),
      ),
      z.lazy(() => GetRoutesHas2$inboundSchema).and(
        z.object({ type: z.literal("query") }),
      ),
    ])),
  ),
  missing: types.optional(
    z.array(z.union([
      z.lazy(() => GetRoutesMissing1$inboundSchema),
      z.lazy(() =>
        GetRoutesMissing2$inboundSchema
      ).and(z.object({ type: z.literal("cookie") })),
      z.lazy(() => GetRoutesMissing2$inboundSchema).and(
        z.object({ type: z.literal("header") }),
      ),
      z.lazy(() => GetRoutesMissing2$inboundSchema).and(
        z.object({ type: z.literal("query") }),
      ),
    ])),
  ),
  mitigate: types.optional(z.lazy(() => ResponseBodyMitigate$inboundSchema)),
  transforms: types.optional(
    z.array(z.lazy(() => ResponseBodyTransforms$inboundSchema)),
  ),
  env: types.optional(z.array(types.string())),
  locale: types.optional(z.lazy(() => ResponseBodyLocale$inboundSchema)),
  source: types.optional(types.string()),
  destination: types.optional(
    smartUnion([
      z.lazy(() => GetRoutesDestination2$inboundSchema),
      types.string(),
    ]),
  ),
  statusCode: types.optional(types.number()),
  middlewarePath: types.optional(types.string()),
  middlewareRawSrc: types.optional(z.array(types.string())),
  middleware: types.optional(types.number()),
  respectOriginCacheControl: types.optional(types.boolean()),
});

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

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

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

/** @internal */
export const GetRoutesResponseBodyRoutes$inboundSchema: z.ZodType<
  GetRoutesResponseBodyRoutes,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  name: types.string(),
  description: types.optional(types.string()),
  enabled: types.optional(types.boolean()),
  staged: types.optional(types.boolean()),
  route: z.lazy(() => GetRoutesResponseBodyProjectRoutesRoute$inboundSchema),
  rawSrc: types.optional(types.string()),
  rawDest: types.optional(types.string()),
  srcSyntax: types.optional(
    GetRoutesResponseBodyProjectRoutesSrcSyntax$inboundSchema,
  ),
  routeType: types.optional(
    GetRoutesResponseBodyProjectRoutesRouteType$inboundSchema,
  ),
});

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

/** @internal */
export const GetRoutesResponseBodyVersion$inboundSchema: z.ZodType<
  GetRoutesResponseBodyVersion,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: types.string(),
  s3Key: types.string(),
  lastModified: types.number(),
  createdBy: types.string(),
  isStaging: types.optional(types.boolean()),
  isLive: types.optional(types.boolean()),
  ruleCount: types.optional(types.number()),
  alias: types.optional(types.string()),
});

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

/** @internal */
export const GetRoutesResponseBody2$inboundSchema: z.ZodType<
  GetRoutesResponseBody2,
  z.ZodTypeDef,
  unknown
> = z.object({
  routes: z.array(z.lazy(() => GetRoutesResponseBodyRoutes$inboundSchema)),
  version: z.lazy(() => GetRoutesResponseBodyVersion$inboundSchema),
  diffCount: types.number(),
});

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

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

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

/** @internal */
export const GetRoutesResponseBody$inboundSchema: z.ZodType<
  GetRoutesResponseBody,
  z.ZodTypeDef,
  unknown
> = smartUnion([
  z.lazy(() => GetRoutesResponseBody2$inboundSchema),
  z.lazy(() => ResponseBody4$inboundSchema),
  z.lazy(() => GetRoutesResponseBody3$inboundSchema),
  z.lazy(() => GetRoutesResponseBody1$inboundSchema),
]);

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