syntax = "proto3"; import "base.proto"; package hiddifyrpc; option go_package = "./hiddifyrpc"; enum CoreState { STOPPED = 0; STARTING = 1; STARTED = 2; STOPPING = 3; } enum MessageType { EMPTY=0; EMPTY_CONFIGURATION = 1; START_COMMAND_SERVER = 2; CREATE_SERVICE = 3; START_SERVICE = 4; UNEXPECTED_ERROR = 5; ALREADY_STARTED = 6; ALREADY_STOPPED = 7; INSTANCE_NOT_FOUND = 8; INSTANCE_NOT_STOPPED = 9; INSTANCE_NOT_STARTED = 10; ERROR_BUILDING_CONFIG = 11; ERROR_PARSING_CONFIG = 12; ERROR_READING_CONFIG = 13; } message CoreInfoResponse { CoreState core_state = 1; MessageType message_type = 2; string message = 3; } message StartRequest { string config_path = 1; string config_content = 2; // Optional if configPath is not provided. bool disable_memory_limit = 3; bool delay_start = 4; bool enable_old_command_server = 5; bool enable_raw_config = 6; } message SetupRequest { string base_path = 1; string working_path = 2; string temp_path = 3; } message Response { ResponseCode response_code = 1; string message = 2; } message SystemInfo { int64 memory = 1; int32 goroutines = 2; int32 connections_in = 3; int32 connections_out = 4; bool traffic_available = 5; int64 uplink = 6; int64 downlink = 7; int64 uplink_total = 8; int64 downlink_total = 9; } message OutboundGroupItem { string tag = 1; string type = 2; int64 url_test_time = 3; int32 url_test_delay = 4; } message OutboundGroup { string tag = 1; string type = 2; string selected=3; repeated OutboundGroupItem items = 4; } message OutboundGroupList{ repeated OutboundGroup items = 1; } message WarpAccount { string account_id = 1; string access_token = 2; } message WarpWireguardConfig { string private_key = 1; string local_address_ipv4 = 2; string local_address_ipv6 = 3; string peer_public_key = 4; string client_id=5; } message WarpGenerationResponse { WarpAccount account = 1; string log = 2; WarpWireguardConfig config = 3; } message SystemProxyStatus { bool available = 1; bool enabled = 2; } message ParseRequest { string content = 1; string config_path = 2; string temp_path = 3; bool debug = 4; } message ParseResponse { ResponseCode response_code = 1; string content = 2; string message = 3; } message ChangeHiddifySettingsRequest { string hiddify_settings_json = 1; } message GenerateConfigRequest { string path = 1; string temp_path = 2; bool debug = 3; } message GenerateConfigResponse { string config_content = 1; } message SelectOutboundRequest { string group_tag = 1; string outbound_tag = 2; } message UrlTestRequest { string group_tag = 1; } message GenerateWarpConfigRequest { string license_key = 1; string account_id = 2; string access_token = 3; } message SetSystemProxyEnabledRequest { bool is_enabled = 1; } enum LogLevel { DEBUG = 0; INFO = 1; WARNING = 2; ERROR = 3; FATAL = 4; } enum LogType { CORE = 0; SERVICE = 1; CONFIG = 2; } message LogMessage { LogLevel level = 1; LogType type = 2; string message = 3; } message StopRequest{ } message TunnelStartRequest { bool ipv6 = 1; int32 server_port = 2; bool strict_route = 3; bool endpoint_independent_nat = 4; string stack = 5; } message TunnelResponse { string message = 1; } service Hello { rpc SayHello (HelloRequest) returns (HelloResponse); rpc SayHelloStream (stream HelloRequest) returns (stream HelloResponse); } service Core { rpc Start (StartRequest) returns (CoreInfoResponse); rpc CoreInfoListener (Empty) returns (stream CoreInfoResponse); rpc OutboundsInfo (Empty) returns (stream OutboundGroupList); rpc MainOutboundsInfo (Empty) returns (stream OutboundGroupList); rpc GetSystemInfo (Empty) returns (stream SystemInfo); rpc Setup (SetupRequest) returns (Response); rpc Parse (ParseRequest) returns (ParseResponse); rpc ChangeHiddifySettings (ChangeHiddifySettingsRequest) returns (CoreInfoResponse); //rpc GenerateConfig (GenerateConfigRequest) returns (GenerateConfigResponse); rpc StartService (StartRequest) returns (CoreInfoResponse); rpc Stop (Empty) returns (CoreInfoResponse); rpc Restart (StartRequest) returns (CoreInfoResponse); rpc SelectOutbound (SelectOutboundRequest) returns (Response); rpc UrlTest (UrlTestRequest) returns (Response); rpc GenerateWarpConfig (GenerateWarpConfigRequest) returns (WarpGenerationResponse); rpc GetSystemProxyStatus (Empty) returns (SystemProxyStatus); rpc SetSystemProxyEnabled (SetSystemProxyEnabledRequest) returns (Response); rpc LogListener (Empty) returns (stream LogMessage); } service TunnelService { rpc Start(TunnelStartRequest ) returns (TunnelResponse); rpc Stop(Empty) returns (TunnelResponse); rpc Status(Empty) returns (TunnelResponse); rpc Exit(Empty) returns (TunnelResponse); }