// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
//   protoc-gen-ts_proto  v2.6.1
//   protoc               v3.17.1
// source: policy/routing/Routing.proto

/* eslint-disable */
import { type Metadata } from "../../common/Metadata.js";
import { type Ref } from "../../common/Ref.js";
import { type PayLoadIdentifier } from "../common/PayLoadIdentifier.js";

/** Copyright Super iPaaS Integration LLC, an IBM Company 2024 */

/** The Routing related information is captured in the message Routing. */
export interface Routing {
  kind?: string | undefined;
  apiVersion?:
    | string
    | undefined;
  /** common metadata to identify a specific asset in the files */
  metadata?: Metadata | undefined;
  kindEnum?: Routing_KindEnums | undefined;
  spec?: Routing_Spec | undefined;
}

/** Kind id supported for Routing */
export enum Routing_KindEnums {
  Route = "Route",
}

export interface Routing_UseHeader {
  name?: string | undefined;
  $ref?: string | undefined;
}

export interface Routing_UseContext {
  $ref?: string | undefined;
}

/** The message specified the information related to the load balancing */
export interface Routing_LoadbalanceEndpoints {
  /**
   * Field 'ref' with JSON name '$ref' accepts the value of either 'ref' or '$ref' from the YAML file.
   * If both 'ref' and '$ref' are specified, the value of '$ref' takes priority.
   */
  $ref?:
    | string
    | undefined;
  /**
   * Field 'suspend_on_duration' with JSON name 'suspend-on-duration' accepts the value of either 'suspend_on_duration' or 'suspend-on-duration' from the YAML file.
   * If both 'suspend_on_duration' and 'suspend-on-duration' are specified, the value of 'suspend-on-duration' takes priority.
   * Single instances of suspend on duration can be given with JSON name "suspend-on-duration".
   */
  "suspend-on-duration"?: string | undefined;
}

/** The message specified the information related to conditional endpoints */
export interface Routing_ConditionalEndpoints {
  condition?: string | undefined;
  endpoint?: Ref | undefined;
}

/** The message specified the information related to contentBased endpoints */
export interface Routing_ContentBasedEndpoints {
  payLoadIdentifier?: PayLoadIdentifier | undefined;
  endpoint?: Ref | undefined;
}

/** The message specified the information related to contentBased endpoints */
export interface Routing_DynamicEndpoints {
  useHeader?: Routing_UseHeader | undefined;
  useContext?: Routing_UseContext | undefined;
}

/** The message specified the information related to MockEndpoint endpoints */
export interface Routing_MockEndpoint {
  enabled?: boolean | undefined;
  $ref?: string | undefined;
}

/** The Spec is used to define the list of load balancing endpoints, default endpoints, conditional endpoints */
export interface Routing_Spec {
  /**
   * Field 'loadbalance_endpoints' with JSON name 'loadbalance-endpoints' accepts the value of either 'loadbalance_endpoints' or 'loadbalance-endpoints' from the YAML file.
   * If both 'loadbalance_endpoints' and 'loadbalance-endpoints' are specified, the value of 'loadbalance-endpoints' takes priority.
   * Multiple instances of loadbalance endpoints can be given with JSON name "loadbalance-endpoints".
   */
  "loadbalance-endpoints"?:
    | Routing_LoadbalanceEndpoints[]
    | undefined;
  /**
   * Field 'default_endpoint' with JSON name 'default-endpoint' accepts the value of either 'default_endpoint' or 'default-endpoint' from the YAML file.
   * If both 'default_endpoint' and 'default-endpoint' are specified, the value of 'default-endpoint' takes priority.
   * Single instances of default endpoint can be given with JSON name "default-endpoint".
   */
  "default-endpoint"?:
    | Ref
    | undefined;
  /**
   * Field 'conditional_endpoints' with JSON name 'conditional-endpoints' accepts the value of either 'conditional_endpoints' or 'conditional-endpoints' from the YAML file.
   * If both 'conditional_endpoints' and 'conditional-endpoints' are specified, the value of 'conditional-endpoints' takes priority.
   * Multiple instances of conditional endpoints can be given with JSON name "conditional-endpoints".
   */
  "conditional-endpoints"?:
    | Routing_ConditionalEndpoints[]
    | undefined;
  /**
   * Field 'content_based_endpoints' with JSON name 'content-based-endpoints' accepts the value of either 'content_based_endpoints' or 'content-based-endpoints' from the YAML file.
   * If both 'content_based_endpoints' and 'content-based-endpoints' are specified, the value of 'content-based-endpoints' takes priority.
   * Multiple instances of content based endpoints can be given with JSON name "content-based-endpoints".
   */
  "content-based-endpoints"?: Routing_ContentBasedEndpoints[] | undefined;
  "dynamic-endpoints"?: Routing_DynamicEndpoints[] | undefined;
  messageConfig?: Ref | undefined;
  "mock-endpoint"?: Routing_MockEndpoint | undefined;
}
