Files
corestate/shared/proto/backup.proto

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;
}