2024-01-01 23:34:59 +01:00
|
|
|
syntax = "proto2";
|
|
|
|
|
|
|
|
package workspace;
|
|
|
|
import "files.proto";
|
2024-02-05 23:31:06 +01:00
|
|
|
import "auth.proto";
|
|
|
|
import "common.proto";
|
|
|
|
|
|
|
|
service Workspace {
|
|
|
|
rpc CreateWorkspace (workspace.WorkspaceId) returns (common.Empty);
|
|
|
|
|
|
|
|
rpc RequestAccess (workspace.BufferPath) returns (auth.Token);
|
|
|
|
rpc LeaveWorkspace (workspace.WorkspaceId) returns (common.Empty);
|
|
|
|
rpc CreateBuffer (workspace.BufferPath) returns (common.Empty);
|
|
|
|
rpc ListBuffers (common.Empty) returns (files.BufferTree);
|
|
|
|
rpc ListUsers (common.Empty) returns (common.UserList);
|
|
|
|
rpc ListBufferUsers (workspace.BufferPath) returns (common.UserList); //TODO discuss
|
|
|
|
rpc Attach (common.Empty) returns (stream workspace.WorkspaceEvent);
|
|
|
|
rpc Delete (workspace.BufferPath) returns (common.Empty); //deletes buffer
|
2024-02-04 13:25:26 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
message WorkspaceEvent {
|
2024-02-05 23:31:06 +01:00
|
|
|
message UserJoin {
|
|
|
|
required common.UserIdentity id = 1;
|
|
|
|
}
|
|
|
|
message UserLeave {
|
|
|
|
required common.UserIdentity id = 1;
|
|
|
|
}
|
|
|
|
message FileCreate {
|
|
|
|
required string path = 1;
|
|
|
|
}
|
|
|
|
message FileRename {
|
|
|
|
required string before = 1;
|
|
|
|
required string after = 2;
|
|
|
|
}
|
|
|
|
message FileDelete {
|
|
|
|
required string path = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
oneof event {
|
|
|
|
UserJoin join = 1;
|
|
|
|
UserLeave leave = 2;
|
|
|
|
FileCreate create = 3;
|
|
|
|
FileRename rename = 4;
|
|
|
|
FileDelete delete = 5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
message BufferPath {
|
2024-01-01 23:34:59 +01:00
|
|
|
// buffer path to operate onto
|
|
|
|
required string path = 1;
|
|
|
|
}
|
|
|
|
|
2024-01-25 16:08:35 +01:00
|
|
|
|
2024-02-05 23:31:06 +01:00
|
|
|
message WorkspaceId {
|
2024-01-25 16:31:38 +01:00
|
|
|
required string id = 1;
|
2024-02-04 13:25:26 +01:00
|
|
|
}
|