// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1

syntax = "proto3";

package hashicorp.consul.internal.operator;

import "annotations/ratelimit/ratelimit.proto";

// Operator defines a set of operators operation applicable to Consul
service OperatorService {
  //Transfer raft leadership to another node
  rpc TransferLeader(TransferLeaderRequest) returns (TransferLeaderResponse) {
    option (hashicorp.consul.internal.ratelimit.spec) = {
      operation_type: OPERATION_TYPE_EXEMPT,
      operation_category: OPERATION_CATEGORY_OPERATOR
    };
  }
}

message TransferLeaderRequest {
  string ID = 1;
}

//
// mog annotation:
//
// target=github.com/hashicorp/consul/api.TransferLeaderResponse
// output=operator.gen.go
// name=API
message TransferLeaderResponse {
  // true if the transfer is a success
  bool success = 1;
}
