syntax = "proto3"; package pb; import "account.proto"; import "cities.proto"; import "common.proto"; import "connect.proto"; import "defaults.proto"; import "features.proto"; import "login.proto"; import "login_with_token.proto"; import "logout.proto"; import "pause.proto"; import "ping.proto"; import "purchase.proto"; import "rate.proto"; import "recent_connections.proto"; import "servers.proto"; import "set.proto"; import "settings.proto"; import "state.proto"; import "status.proto"; import "token.proto"; import "uievent.proto"; option go_package = "github.com/NordSecurity/nordvpn-linux/daemon/pb"; service Daemon { // ==================== Authentication ==================== rpc IsLoggedIn(Empty) returns (IsLoggedInResponse); rpc LoginWithToken(LoginWithTokenRequest) returns (LoginResponse); rpc LoginOAuth2(LoginOAuth2Request) returns (LoginOAuth2Response); rpc LoginOAuth2Callback(LoginOAuth2CallbackRequest) returns (LoginOAuth2CallbackResponse); rpc Logout(LogoutRequest) returns (Payload); // ==================== Account Management ==================== rpc AccountInfo(AccountRequest) returns (AccountResponse); rpc TokenInfo(Empty) returns (TokenInfoResponse); rpc ClaimOnlinePurchase(Empty) returns (ClaimOnlinePurchaseResponse); // ==================== Connection Operations ==================== rpc Connect(ConnectRequest) returns (stream Payload); rpc ConnectCancel(Empty) returns (Payload); rpc Disconnect(Empty) returns (stream Payload); rpc Status(Empty) returns (StatusResponse); rpc RateConnection(RateRequest) returns (Payload); rpc PauseConnection(PauseRequest) returns (Payload); // ==================== Server Discovery ==================== rpc GetServers(Empty) returns (ServersResponse); rpc Countries(Empty) returns (ServerGroupsList); rpc Cities(CitiesRequest) returns (ServerGroupsList); rpc Groups(Empty) returns (ServerGroupsList); rpc RecommendedServer(Empty) returns (RecommendedServerLocation); // ==================== General Settings ==================== rpc Settings(Empty) returns (SettingsResponse); rpc SetDefaults(SetDefaultsRequest) returns (Payload); // ==================== Connection Settings ==================== rpc SetAutoConnect(SetAutoconnectRequest) returns (Payload); rpc SetProtocol(SetProtocolRequest) returns (SetProtocolResponse); rpc SetTechnology(SetTechnologyRequest) returns (Payload); rpc SetObfuscate(SetGenericRequest) returns (Payload); rpc SetPostQuantum(SetGenericRequest) returns (Payload); rpc GetRecentConnections(RecentConnectionsRequest) returns (RecentConnectionsResponse); // ==================== Network Settings ==================== rpc SetDNS(SetDNSRequest) returns (SetDNSResponse); rpc SetFirewall(SetGenericRequest) returns (Payload); rpc SetFirewallMark(SetUint32Request) returns (Payload); rpc SetRouting(SetGenericRequest) returns (Payload); rpc SetKillSwitch(SetKillSwitchRequest) returns (Payload); rpc SetLANDiscovery(SetLANDiscoveryRequest) returns (SetLANDiscoveryResponse); rpc SetVirtualLocation(SetGenericRequest) returns (Payload); // ==================== UI Settings ==================== rpc SetNotify(SetNotifyRequest) returns (Payload); rpc SetTray(SetTrayRequest) returns (Payload); // ==================== Configuration Info ==================== rpc SettingsProtocols(Empty) returns (Payload); rpc SettingsTechnologies(Empty) returns (Payload); rpc GetFeatureToggles(Empty) returns (FeatureToggles); // ==================== Allowlist Management ==================== rpc SetAllowlist(SetAllowlistRequest) returns (Payload); rpc SetARPIgnore(SetGenericRequest) returns (Payload); rpc UnsetAllowlist(SetAllowlistRequest) returns (Payload); rpc UnsetAllAllowlist(Empty) returns (Payload); // ==================== Privacy & Security ==================== rpc SetAnalytics(SetGenericRequest) returns (Payload); rpc SetThreatProtectionLite(SetThreatProtectionLiteRequest) returns (SetThreatProtectionLiteResponse); // ==================== System & Monitoring ==================== rpc Ping(Empty) returns (PingResponse); rpc ReportUIEvent(UIEvent) returns (Payload); rpc SubscribeToStateChanges(Empty) returns (stream AppState); // InjectVpnConnectionError is a DEV-only endpoint that injects a simulated ENS event rpc InjectVpnConnectionError(InjectVpnConnectionErrorRequest) returns (Payload); // ==================== Diagnostics ==================== rpc CollectDiagnostics(Empty) returns (stream DiagnosticsProgress); }