2023-02-28 12:04:05 +03:00

126 lines
2.8 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);
// FilesBind binds root file CIDs and their children to space
rpc FilesBind(FilesBindRequest) returns (FilesBindResponse);
// FilesDelete deletes file CIDs and their children from space
rpc FilesDelete(FilesDeleteRequest) returns (FilesDeleteResponse);
// FileCheck checks file CIDs and children for exists
rpc FilesCheck(FilesCheckRequest) returns (FilesCheckResponse);
// BlocksDelete deletes block from space
rpc BlocksDelete(BlocksDeleteRequest) returns (BlocksDeleteResponse);
// Check checks the connection and credentials
rpc Check(CheckRequest) returns (CheckResponse);
// CheckUsage checks current usage and limits for a space
rpc CheckUsage(CheckUsageRequest) returns (CheckUsageResponse);
}
message BlockGetRequest {
string spaceId = 1;
bytes cid = 2;
}
message BlockGetResponse {
bytes cid = 1;
bytes data = 2;
}
message BlockPushRequest {
string spaceId = 1;
bytes cid = 2;
bytes data = 3;
}
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;
repeated bytes cids = 2;
}
message BlocksBindResponse {}
message FilesBindRequest {
repeated bytes fileCids = 1;
}
message FilesBindResponse {}
message FilesDeleteRequest {
repeated bytes fileCids = 1;
}
message FilesDeleteResponse {}
message FilesCheckRequest {
repeated bytes fileCids = 1;
}
message FilesCheckResponse {
repeated BlockAvailability blocksAvailability = 1;
}
message CheckRequest {}
message CheckResponse {
repeated string spaceIds = 1;
bool allowWrite = 2;
}
message CheckUsageRequest {
string spaceId = 1;
}
message CheckUsageResponse {
uint64 limitBytes = 1;
uint64 usageBytes = 2;
uint64 usageCids = 3;
}