syntax = "proto3";

package forest.v1;

message CreateDestinationRequest {
  string name = 1;
  string environment = 2;
  map<string, string> metadata = 3;
  DestinationType type = 4;
  string organisation = 5;
}
message CreateDestinationResponse {}

message UpdateDestinationRequest {
  string name = 1;
  map<string, string> metadata = 2;
}
message UpdateDestinationResponse {}

message DeleteDestinationRequest {
  string name = 1;
}
message DeleteDestinationResponse {}

message GetDestinationsRequest {
  string organisation = 1;
}
message GetDestinationsResponse {
  repeated Destination destinations = 1;
}

message ListDestinationTypesRequest {}
message ListDestinationTypesResponse {
  repeated DestinationType types = 1;
}

service DestinationService {
  rpc CreateDestination(CreateDestinationRequest) returns (CreateDestinationResponse) {}
  rpc UpdateDestination(UpdateDestinationRequest) returns (UpdateDestinationResponse) {}
  rpc DeleteDestination(DeleteDestinationRequest) returns (DeleteDestinationResponse) {}
  rpc GetDestinations(GetDestinationsRequest) returns (GetDestinationsResponse);
  rpc ListDestinationTypes(ListDestinationTypesRequest) returns (ListDestinationTypesResponse);
}

message Destination {
  string name = 1;
  string environment = 2;
  map<string, string> metadata = 3;
  DestinationType type = 4;
  string organisation = 5;
}

message DestinationType {
  string organisation = 1;
  string name = 2;
  uint64 version = 3;
}
