syntax = "proto3";

option go_package = "git.perx.ru/perxis/perxis-go/proto/spaces;spaces";

package content.spaces;

import "google/protobuf/empty.proto";

message Space {
  string id = 1;
  string org_id = 2;
  string name = 3;
  string description = 4;
  State state = 5;
  Config config = 10;
}

enum State {
  UNKNOWN = 0;
  NEW = 1;
  READY = 2;
  PREPARING = 3;
  MAINTENANCE = 4;
  MIGRATION = 5;
  DELETING = 6;
  ERROR = 7;
}

message Config {
  repeated string features = 1;
}

message CreateRequest {
  Space space = 1;
}

message CreateResponse {
  Space created = 1;
}

message GetRequest {
  string space_id = 1;
}

message GetResponse {
  Space space = 1;
}

message ListRequest {
  string org_id = 1;
}

message ListResponse {
  repeated Space spaces = 1;
}

message UpdateRequest {
  Space space = 1;
}

message UpdateConfigRequest {
  string space_id = 1;
  Config config = 2;
}

message DeleteRequest {
  string space_id = 1;
}

service Spaces {
  rpc Create(CreateRequest) returns(CreateResponse) {}
  rpc Get(GetRequest) returns(GetResponse) {}
  rpc List(ListRequest) returns(ListResponse) {}
  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
  rpc UpdateConfig(UpdateConfigRequest) returns(google.protobuf.Empty) {}
  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
}