mirror of
https://github.com/ankitects/anki.git
synced 2025-11-08 13:47:13 -05:00
Realised this is clearer than tagging each method individually. The enum has been retained for the case where we want to implement the backend method separately from the collection one.
60 lines
1.5 KiB
Protocol Buffer
60 lines
1.5 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";
|
|
|
|
service BackendSyncService {
|
|
rpc SyncMedia(SyncAuth) returns (generic.Empty);
|
|
rpc AbortMediaSync(generic.Empty) returns (generic.Empty);
|
|
rpc SyncLogin(SyncLoginRequest) returns (SyncAuth);
|
|
rpc SyncStatus(SyncAuth) returns (SyncStatusResponse);
|
|
rpc SyncCollection(SyncAuth) returns (SyncCollectionResponse);
|
|
rpc FullUpload(SyncAuth) returns (generic.Empty);
|
|
rpc FullDownload(SyncAuth) returns (generic.Empty);
|
|
rpc AbortSync(generic.Empty) returns (generic.Empty);
|
|
}
|
|
|
|
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 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;
|
|
}
|