syntax = "proto3";

// If you make any changes make sure you run: make regenerate-proto

package gitlab.agent.agent_configuration.rpc;

option go_package = "gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v16/internal/module/agent_configuration/rpc";

import "pkg/agentcfg/agentcfg.proto";
import "internal/module/modshared/modshared.proto";
//import "github.com/envoyproxy/protoc-gen-validate/blob/master/validate/validate.proto";
import "validate/validate.proto";

message ConfigurationRequest {
  // Last processed commit id. Optional.
  // Server will only send configuration if the last commit on the branch
  // is a different one. If a connection breaks, this allows to resume
  // the stream without sending the same data again.
  string commit_id = 1;
  // Information about the agent.
  modshared.AgentMeta agent_meta = 2;
}

message ConfigurationResponse {
  agentcfg.AgentConfiguration configuration = 1;
  // Commit id of the configuration repository.
  // Can be used to resume connection from where it dropped.
  string commit_id = 2 [(validate.rules).string.min_bytes = 1];
}

service AgentConfiguration {
  // Get agentk configuration.
  rpc GetConfiguration (ConfigurationRequest) returns (stream ConfigurationResponse) {
  }
}
