2023-03-02 19:11:55 +03:00

121 lines
2.5 KiB
Protocol Buffer

syntax = "proto3";
package filesync;
option go_package = "commonfile/fileproto";
enum ErrCodes {
Unexpected = 0;
CIDNotFound = 1;
ErrorOffset = 200;
}
service File {
// BlockGet gets one block from a server
rpc BlockGet(BlockGetRequest) returns (BlockGetResponse);
// BlockPush pushes one block to a server
rpc BlockPush(BlockPushRequest) returns (BlockPushResponse);
// BlocksCheck checks is CIDs exists
rpc BlocksCheck(BlocksCheckRequest) returns (BlocksCheckResponse);
// BlocksBind binds CIDs to space
rpc BlocksBind(BlocksBindRequest) returns (BlocksBindResponse);
// FilesDelete deletes files by id
rpc FilesDelete(FilesDeleteRequest) returns (FilesDeleteResponse);
// FileCheck checks file CIDs and children for exists
rpc FilesCheck(FilesCheckRequest) returns (FilesCheckResponse);
// Check checks the connection and credentials
rpc Check(CheckRequest) returns (CheckResponse);
// SpaceInfo returns usage, limit, etc about space
rpc SpaceInfo(SpaceInfoRequest) returns (SpaceInfoResponse);
}
message BlockGetRequest {
string spaceId = 1;
bytes cid = 2;
}
message BlockGetResponse {
bytes cid = 1;
bytes data = 2;
}
message BlockPushRequest {
string spaceId = 1;
string fileId = 2;
bytes cid = 3;
bytes data = 4;
}
message BlockPushResponse {}
message BlocksDeleteRequest {
string spaceId = 1;
repeated bytes cids = 2;
}
message BlocksDeleteResponse {}
message BlocksCheckRequest {
string spaceId = 1;
repeated bytes cids = 2;
}
message BlocksCheckResponse {
repeated BlockAvailability blocksAvailability = 1;
}
message BlockAvailability {
bytes cid = 1;
AvailabilityStatus status = 2;
}
enum AvailabilityStatus {
NotExists = 0;
Exists = 1;
ExistsInSpace = 2;
}
message BlocksBindRequest {
string spaceId = 1;
string fileId = 2;
repeated bytes cids = 3;
}
message BlocksBindResponse {}
message FilesDeleteRequest {
string spaceId = 1;
repeated bytes fileIds = 2;
}
message FilesDeleteResponse {}
message FilesCheckRequest {
string spaceId = 1;
repeated bytes fileIds = 2;
}
message FilesCheckResponse {
repeated BlockAvailability blocksAvailability = 1;
}
message CheckRequest {}
message CheckResponse {
repeated string spaceIds = 1;
bool allowWrite = 2;
}
message SpaceInfoRequest {
string spaceId = 1;
}
message SpaceInfoResponse {
uint64 limitBytes = 1;
uint64 usageBytes = 2;
uint64 cidsCount = 3;
uint64 filesCount = 4;
}