64 lines
1.3 KiB
Protocol Buffer
64 lines
1.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package corestate.v2.backup;
|
|
|
|
option java_package = "com.corestate.v2.proto.backup";
|
|
option java_multiple_files = true;
|
|
|
|
// Represents a single chunk of a file
|
|
message DataChunk {
|
|
string chunk_id = 1; // Blake3 hash of the content
|
|
bytes data = 2;
|
|
}
|
|
|
|
// Metadata for a single file in a backup
|
|
message FileMetadata {
|
|
string path = 1;
|
|
int64 size = 2;
|
|
int64 modified_time = 3;
|
|
string checksum = 4; // Blake3 checksum of the full file
|
|
repeated string chunk_ids = 5;
|
|
}
|
|
|
|
// A complete backup manifest
|
|
message BackupManifest {
|
|
string backup_id = 1;
|
|
int64 timestamp = 2;
|
|
enum BackupType {
|
|
FULL = 0;
|
|
INCREMENTAL = 1;
|
|
SYNTHETIC_FULL = 2;
|
|
}
|
|
BackupType type = 3;
|
|
repeated FileMetadata files = 4;
|
|
}
|
|
|
|
service BackupService {
|
|
rpc StartBackup(StartBackupRequest) returns (StartBackupResponse);
|
|
rpc UploadChunk(stream DataChunk) returns (UploadChunkResponse);
|
|
rpc FinishBackup(FinishBackupRequest) returns (FinishBackupResponse);
|
|
}
|
|
|
|
message StartBackupRequest {
|
|
BackupManifest.BackupType type = 1;
|
|
string device_id = 2;
|
|
}
|
|
|
|
message StartBackupResponse {
|
|
string backup_id = 1;
|
|
string upload_token = 2;
|
|
}
|
|
|
|
message UploadChunkResponse {
|
|
string chunk_id = 1;
|
|
bool success = 2;
|
|
}
|
|
|
|
message FinishBackupRequest {
|
|
string backup_id = 1;
|
|
BackupManifest manifest = 2;
|
|
}
|
|
|
|
message FinishBackupResponse {
|
|
bool success = 1;
|
|
} |