syntax = "proto3"; package komp_ac.backup; import "common.proto"; service BackupService { rpc StartBackup(StartBackupRequest) returns (BackupOperationResponse); rpc StartCheck(komp_ac.common.Empty) returns (BackupOperationResponse); rpc StartDump(komp_ac.common.Empty) returns (BackupOperationResponse); rpc GetBackupInfo(komp_ac.common.Empty) returns (BackupInfoResponse); rpc GetOperationStatus(GetOperationStatusRequest) returns (BackupOperationResponse); rpc ListDatabases(komp_ac.common.Empty) returns (ListDatabasesResponse); rpc CreateDatabase(CreateDatabaseRequest) returns (DatabaseInfo); rpc RunDatabaseMigrations(DatabaseRequest) returns (DatabaseInfo); } message DatabaseRequest { string database_name = 1; } message CreateDatabaseRequest { string database_name = 1; } message DatabaseInfo { string database_name = 1; bool active = 2; bool connectable = 3; int64 size_bytes = 4; int32 applied_migrations = 5; int32 pending_migrations = 6; bool migration_dirty = 7; bool application_database = 8; string status = 9; } message ListDatabasesResponse { string mode = 1; repeated DatabaseInfo databases = 2; } enum BackupType { BACKUP_TYPE_UNSPECIFIED = 0; BACKUP_TYPE_FULL = 1; BACKUP_TYPE_DIFF = 2; BACKUP_TYPE_INCR = 3; } enum OperationKind { OPERATION_KIND_UNSPECIFIED = 0; OPERATION_KIND_BACKUP = 1; OPERATION_KIND_CHECK = 2; OPERATION_KIND_DUMP = 3; } enum OperationStatus { OPERATION_STATUS_UNSPECIFIED = 0; OPERATION_STATUS_RUNNING = 1; OPERATION_STATUS_SUCCEEDED = 2; OPERATION_STATUS_FAILED = 3; } message StartBackupRequest { BackupType backup_type = 1; } message GetOperationStatusRequest { string operation_id = 1; } message BackupOperationResponse { string operation_id = 1; OperationKind kind = 2; OperationStatus status = 3; string message = 4; string output = 5; int64 started_at_unix_seconds = 6; int64 finished_at_unix_seconds = 7; // Set when an operation produced a file, which today means a succeeded dump. // The path is on the server host, not the caller's machine. string artifact_path = 8; string artifact_sha256 = 9; } message BackupInfoResponse { bool success = 1; string output = 2; string server_version = 3; string database_name = 4; bool database_healthy = 5; bool search_healthy = 6; bool ecb_healthy = 7; string ecb_status = 8; }