Skip to content
Snippets Groups Projects
Select Git revision
  • 78fe28a1bd48d25e476e4d7954e2d15bc13cabb0
  • master default protected
  • feature/PRXS-3421-3426-AddAPI
  • refactor/PRXS-3053-Files
  • feature/PRXS-3383-CollectionsRankSort
  • docs/3247-PerxisWebCDN
  • feature/PRXS-3421-RecursiveReferences
  • feature/3146-UpdateItemStorageInterface
  • feature/3180-RemoveOldHugo
  • feature/3264-FixExtracTranslationsArrays
  • feature/3274-ObjectIndexesFixes
  • feature/2931-AllowPartialDecode
  • feature/3055-ItemsRestAPI
  • feature/3082-gitlab-triage
  • feature/3055-LogsRestAPI
  • feature/2985-add-preset-settings
  • feature/2929-MultiInvitationFix
  • feature/2929-MultiInvitation
  • docs/2889-HugoModules
  • docs/2954-CheckResource
  • docs/3012-SplitBuild
  • v0.27.0
  • v0.21.0
  • v0.19.0
  • v0.20.0
25 results

spaces.proto

Blame
  • spaces.proto 6.71 KiB
    syntax = "proto3";
    
    option go_package = "git.perx.ru/perxis/perxis-go/proto/spaces;spaces";
    
    package content.spaces;
    
    import "google/protobuf/empty.proto";
    import "google/protobuf/timestamp.proto";
    import "common/common.proto";
    
    message Space {
      string id = 1;
      string org_id = 2;
      string name = 3;
      string description = 4;
      // Deprecated
      State state = 5;
    
      string transfer_to_org = 6; // идентификатор организации, в которую запрошен перенос пространства
    
      Config config = 10;
      StateInfo state_info = 11;
    }
    
    enum State {
      UNKNOWN = 0;
      NEW = 1;
      READY = 2;
      PREPARING = 3;
      MAINTENANCE = 4;
      MIGRATION = 5;
      DELETING = 6;
      ERROR = 7;
    }
    
    message StateInfo {
      State state = 1;
      string info = 2;
      int32 db_version = 3;
      google.protobuf.Timestamp time = 4;
    }
    
    message Config {
      // Deprecated
      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 id = 1;
      Config config = 2;
    }
    
    message DeleteRequest {
      string id = 1;
    }
    
    message TransferRequest {
      string id = 1; // Идентификатор перемещаемого пространства
      string transfer_to_org = 2; // Идентификатор организации, в которую пространство должно быть перемещено
    }
    
    message AbortTransferRequest {
      string id = 1; // Идентификатор перемещаемого пространства
    }
    
    message ListTransfersRequest {
      string org_id = 1;
    }
    
    message ListTransfersResponse {
      repeated Space spaces = 1;
    }
    
    message MoveRequest {
      string id = 1; // Идентификатор перемещаемого пространства
      string org_id = 2; // Идентификатор организации, в которую пространство должно быть перемещено. Обязателен для заполнения только в случае запросов с системным уровнем доступа, в остальных случаях опционален
    }
    
    message Filter {
      repeated string id = 1; // Список ID пространств
      repeated string org_id = 2; // Список организаций
      repeated string name = 3; // Список названий
      repeated State state = 4; // Список состояний
      repeated string transfer_to_org = 5; // Список организаций, в которые запрошен перенос пространства
    }
    
    message FindRequest {
      // Фильтры для поиска
      Filter filter = 1;
      // Опции поиска
      common.FindOptions options = 2;
    }
    
    message FindResponse {
      repeated Space spaces = 1;
      int32 total = 2;
    }
    
    service Spaces {
      rpc Create(CreateRequest) returns(CreateResponse) {}
      rpc Get(GetRequest) returns(GetResponse) {}
      rpc List(ListRequest) returns(ListResponse) {}
      rpc Find(FindRequest) returns(FindResponse) {}
      rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
      rpc UpdateConfig(UpdateConfigRequest) returns(google.protobuf.Empty) {}
      rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
    
      // Transfer устанавливает для пространства значение поля RequestedMoveTo. После этого пространство
      // будет отображаться в списке входящих запросов на перемещение в организации `orgID` (запрос ListIncoming)
      // С пространством можно продолжать работу в текущей организации, пока запрос на перемещение не будет
      // принят в целевой организации
      // Перенос может быть инициирован только владельцем организации, которой принадлежит пространство
      rpc Transfer(TransferRequest) returns(google.protobuf.Empty) {}
    
      // AbortTransfer - отменить перемещение пространства в другую организацию. Может быть вызван как
      // владельцем пространства-инициатора, там и владельцем принимающего пространства
      rpc AbortTransfer(AbortTransferRequest) returns(google.protobuf.Empty) {}
    
      // ListTransfers возвращает список пространств, перемещение которых было запрошено в текущую организацию
      rpc ListTransfers(ListTransfersRequest) returns(ListTransfersResponse) {}
    
      // Move - перенести пространство в организацию, установленную в Space.TransferToOrg. Пространство переносится со
      // всеми входящими в него данными: ролями, участниками, контентом, пр. и более не будет доступно в
      // исходной организации.
      // В случае, если запрос осуществляется с системным уровнем доступа и передан параметр `org_id`, то перенос будет
      // осуществлен вне зависимости от того, был он инициирован через метод `Transfer` или нет
      rpc Move(MoveRequest) returns(google.protobuf.Empty) {}
    }
    
    // SpacesEvent описывает события сервиса Spaces, связанные с пространствами
    message SpaceEvent {
      // Идентификатор пространства
      string space_id = 1;
      // Идентификатор организации
      string org_id = 2;
    
      // Событие создания пространства
      message CreateEvent {}
    
      // Событие обновления пространства
      message UpdateEvent {}
    
      // Событие удаления пространства
      message DeleteEvent {}
    
      // Событие перемещения пространства между организациями
      message MoveEvent {
        string prev_org_id = 1;
      }
    
      // Событие изменения состояния пространства
      message StateChangeEvent {
        StateInfo state = 1;
        StateInfo prev = 2;
      }
    
      oneof event {
        CreateEvent create = 100;
        UpdateEvent update = 101;
        DeleteEvent delete = 102;
        MoveEvent move = 103;
        StateChangeEvent state_change = 104;
      }
    }