syntax = "proto3"; package versevdi.tunnel.v1; import "google/protobuf/timestamp.proto"; option go_package = "git.sechmachine.io.vn/sechmachine/VerseVDI-Protocol/gen/go/tunnel"; message VersionNegotiation { repeated string supported_versions = 1; repeated string features = 2; } message AdmissionRequest { string session_id = 1; string protocol_version = 2; string audience = 3; string purpose = 4; string grant = 5; } message AdmissionResult { bool admitted = 1; string session_id = 2; string failure_code = 3; int64 session_version = 4; } message SessionClose { string session_id = 1; string code = 2; string reason = 3; google.protobuf.Timestamp occurred_at = 4; } message Health { string session_id = 1; int64 sequence = 2; google.protobuf.Timestamp observed_at = 3; } message BoundedError { string code = 1; string message = 2; } message ChannelOpen { string channel_id = 1; string direction = 2; uint32 maximum_frame_bytes = 3; } message CapabilityProfile { string transport = 1; string framing = 2; string media = 3; string audio = 4; string source_rate_control = 5; string client_decode = 6; } message GatewayRegistration { string version = 1; string gateway_id = 2; string instance_identity = 3; string certificate_identity = 4; string public_identity = 5; string address = 6; uint32 protocol_min_version = 7; uint32 protocol_max_version = 8; uint32 connection_capacity = 9; uint64 bandwidth_capacity_kbps = 10; repeated string features = 11; CapabilityProfile capabilities = 12; string provider_identity = 13; } message GatewayHeartbeat { string version = 1; string gateway_id = 2; uint64 sequence = 3; google.protobuf.Timestamp observed_at = 4; uint32 active_connections = 5; uint64 egress_kbps = 6; string state = 7; } message GatewayDrain { string version = 1; string gateway_id = 2; uint64 sequence = 3; string reason = 4; google.protobuf.Timestamp deadline = 5; } message TunnelAdmissionRequest { string version = 1; string session_id = 2; string gateway_id = 3; string audience = 4; string grant = 5; uint64 reconnect_sequence = 6; string client_nonce = 7; CapabilityProfile capabilities = 8; string device_signature = 9; } message SessionAuthority { string version = 1; string session_id = 2; string gateway_id = 3; string audience = 4; uint64 reconnect_sequence = 5; google.protobuf.Timestamp expires_at = 6; CapabilityProfile capabilities = 7; string provider_profile = 8; string provider_identity = 9; } message ProviderSessionWork { string version = 1; string session_id = 2; string gateway_id = 3; uint64 reconnect_sequence = 4; google.protobuf.Timestamp expires_at = 5; string provider_profile = 6; string provider_identity = 7; string policy_version_id = 8; string application_id = 9; string management_host = 10; uint32 management_port = 11; string stream_host = 12; uint32 stream_port = 13; string client_certificate_pem = 14; string client_private_key_pem = 15; string server_certificate_pem = 16; string client_id = 17; } message ChannelFrame { string version = 1; string flow_id = 2; uint64 sequence = 3; uint32 flags = 4; uint32 fragment_index = 5; uint32 fragment_count = 6; uint64 timestamp_ms = 7; bytes payload = 8; } message ProviderState { string version = 1; string session_id = 2; string state = 3; bool cleanup_pending = 4; repeated string channels = 5; } message StableError { string version = 1; string code = 2; string message = 3; bool retryable = 4; }