/*
 * Copyright 2020-2020 Exactpro (Exactpro Systems Limited)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto3";

import "th2_grpc_common/common.proto";

option java_multiple_files = true;
option java_package = "com.exactpro.th2.act.grpc";

service Act {
  /* This action executes next steps:
      1) Registers checkpoint in Verifier microservice
      2) Sends passed message as is to Connectivity microservice
      3) Waits Execution Report or Business Message Reject with the same ClOrdID as in passed message
          from Connectivity microservice
      4) Returns the message repose and the Checkpoint */
  rpc placeOrderFIX (PlaceMessageRequest) returns (PlaceMessageResponse) {
  }

  /*Send fix message without response awaiting */
  rpc sendMessage (PlaceMessageRequest) returns (SendMessageResponse) {
  }

  rpc placeQuoteRequestFIX (PlaceMessageRequest) returns (PlaceMessageResponse) {
  }

  rpc placeQuoteFIX (PlaceMessageRequest) returns (PlaceMessageResponse) {
  }

  rpc placeOrderMassCancelRequestFIX (PlaceMessageRequest) returns (PlaceMessageResponse) {
  }

  rpc placeQuoteCancelFIX (PlaceMessageRequest) returns (PlaceMessageResponse) {
  }

  rpc placeQuoteResponseFIX (PlaceMessageRequest) returns (PlaceMessageResponse) {
  }
}

message SendMessageResponse {
  RequestStatus status = 1;
  Checkpoint checkpoint_id = 2;
}

message PlaceMessageRequest {
  Message message = 1;
  /* Please set connection_id into message. Act transfer this value into message
   * automatically if message hasn't connectivityID for backward compatibility */
  ConnectionID connection_id = 2[deprecated = true];
  EventID parent_event_id = 4;
  string description = 5;
}

message PlaceMessageResponse {
  Message response_message = 1;
  RequestStatus status = 2;
  Checkpoint checkpoint_id = 3;
}
