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

/* eslint-disable */
import { type Any } from "google-protobuf/google/protobuf/any_pb.js";
import { type Metadata } from "../../common/Metadata.js";
import { type Ref } from "../../common/Ref.js";
import { type Namespaces } from "../common/Namespaces.js";
import { type RequestProcess } from "../common/RequestProcess.js";
import { type Set } from "../common/Set.js";

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

/** The Messaging Extension related information is captured in the message MessagingExtension. */
export interface MessagingExtension {
  kind?: string | undefined;
  apiVersion?:
    | string
    | undefined;
  /** common metadata to identify a specific asset in the files */
  metadata?: Metadata | undefined;
  kindEnums?: MessagingExtension_KindEnums | undefined;
  spec?: MessagingExtension_Spec | undefined;
}

/** Kind id supported for Message Extension */
export enum MessagingExtension_KindEnums {
  InvokeMessagingExtension = "InvokeMessagingExtension",
}

/** The message specified the information related to the destination */
export interface MessagingExtension_Destination {
  name?: string | undefined;
  type?: string | undefined;
}

/** The message specified the information related to the reply to */
export interface MessagingExtension_ReplyTo {
  name?: string | undefined;
  type?: string | undefined;
}

/** The message specified the information related to the response processing */
export interface MessagingExtension_ResponseProcess {
  transformations?: Any | undefined;
  set?: Set[] | undefined;
  "copy-entire-response"?: boolean | undefined;
  "abort-API-execution-for-failure"?: string | undefined;
}

/** The Spec is used to define the list of condition, message configuration, request-processing, response-processing, namespace */
export interface MessagingExtension_Spec {
  /** Single instance of conidition can be given */
  condition?:
    | string
    | undefined;
  /**
   * Field 'messaging_config' with JSON name 'messaging-config' accepts the value of either 'messaging_config' or 'messaging-config' from the YAML file.
   * If both 'messaging_config' and 'messaging-config' are specified, the value of 'messaging-config' takes priority.
   * Single instances of message configuration can be given with JSON name "messaging-config".
   */
  messageConfig?:
    | Ref
    | undefined;
  /**
   * Field 'request_processing' with JSON name 'request-processing' accepts the value of either 'request_processing' or 'request-processing' from the YAML file.
   * If both 'request_processing' and 'request-processing' are specified, the value of 'request-processing' takes priority.
   * Single instances of request processing can be given with JSON name "request-processing".
   */
  "request-processing"?:
    | RequestProcess
    | undefined;
  /**
   * Field 'response_processing' with JSON name 'response-processing' accepts the value of either 'response_processing' or 'response-processing' from the YAML file.
   * If both 'response_processing' and 'response-processing' are specified, the value of 'response-processing' takes priority.
   * Single instances of response processing can be given with JSON name "response-processing".
   */
  "response-processing"?: MessagingExtension_ResponseProcess | undefined;
  namespaces?: Namespaces[] | undefined;
}
