mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00

* Add support for custom certificates * Update lints * Update licenses * Changes after feedback * More changes
90 lines
2.3 KiB
Protocol Buffer
90 lines
2.3 KiB
Protocol Buffer
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
syntax = "proto3";
|
|
|
|
option java_multiple_files = true;
|
|
|
|
package anki.sync;
|
|
|
|
import "anki/generic.proto";
|
|
|
|
// Syncing methods are only available with a Backend handle.
|
|
service SyncService {}
|
|
|
|
service BackendSyncService {
|
|
rpc SyncMedia(SyncAuth) returns (generic.Empty);
|
|
rpc AbortMediaSync(generic.Empty) returns (generic.Empty);
|
|
// Can be used by the frontend to detect an active sync. If the sync aborted
|
|
// with an error, the next call to this method will return the error.
|
|
rpc MediaSyncStatus(generic.Empty) returns (MediaSyncStatusResponse);
|
|
rpc SyncLogin(SyncLoginRequest) returns (SyncAuth);
|
|
rpc SyncStatus(SyncAuth) returns (SyncStatusResponse);
|
|
rpc SyncCollection(SyncCollectionRequest) returns (SyncCollectionResponse);
|
|
rpc FullUploadOrDownload(FullUploadOrDownloadRequest) returns (generic.Empty);
|
|
rpc AbortSync(generic.Empty) returns (generic.Empty);
|
|
rpc SetCustomCertificate(generic.String) returns (generic.Bool);
|
|
}
|
|
|
|
message SyncAuth {
|
|
string hkey = 1;
|
|
optional string endpoint = 2;
|
|
optional uint32 io_timeout_secs = 3;
|
|
}
|
|
|
|
message SyncLoginRequest {
|
|
string username = 1;
|
|
string password = 2;
|
|
optional string endpoint = 3;
|
|
}
|
|
|
|
message SyncStatusResponse {
|
|
enum Required {
|
|
NO_CHANGES = 0;
|
|
NORMAL_SYNC = 1;
|
|
FULL_SYNC = 2;
|
|
}
|
|
Required required = 1;
|
|
optional string new_endpoint = 4;
|
|
}
|
|
|
|
message SyncCollectionRequest {
|
|
SyncAuth auth = 1;
|
|
bool sync_media = 2;
|
|
}
|
|
|
|
message SyncCollectionResponse {
|
|
enum ChangesRequired {
|
|
NO_CHANGES = 0;
|
|
NORMAL_SYNC = 1;
|
|
FULL_SYNC = 2;
|
|
// local collection has no cards; upload not an option
|
|
FULL_DOWNLOAD = 3;
|
|
// remote collection has no cards; download not an option
|
|
FULL_UPLOAD = 4;
|
|
}
|
|
|
|
uint32 host_number = 1;
|
|
string server_message = 2;
|
|
ChangesRequired required = 3;
|
|
optional string new_endpoint = 4;
|
|
int32 server_media_usn = 5;
|
|
}
|
|
|
|
message MediaSyncStatusResponse {
|
|
bool active = 1;
|
|
MediaSyncProgress progress = 2;
|
|
}
|
|
|
|
message MediaSyncProgress {
|
|
string checked = 1;
|
|
string added = 2;
|
|
string removed = 3;
|
|
}
|
|
|
|
message FullUploadOrDownloadRequest {
|
|
SyncAuth auth = 1;
|
|
bool upload = 2;
|
|
// if not provided, media syncing will be skipped
|
|
optional int32 server_usn = 3;
|
|
}
|