syntax = "proto3"; package events; option go_package = "./gen"; import "google/protobuf/timestamp.proto"; service EventService { rpc Subscribe(stream Node) returns (stream Events); } enum EventType { AUTHENTICATION = 0; SLUG_CHANGE = 1; SLUG_CHANGE_RESPONSE = 2; GET_SESSIONS = 3; TERMINATE_SESSION = 4; } message Events { EventType type = 1; oneof payload { SlugChangeEvent slug_event = 11; GetSessionsEvent get_sessions_event = 12; TerminateSessionEvent terminate_session_event = 13; } } message Node { EventType type = 1; oneof payload { Authentication auth_event = 10; SlugChangeEventResponse slug_event_response = 11; GetSessionsResponse get_sessions_event = 12; TerminateSessionEventResponse terminate_session_event_response = 13; } } message Authentication { string auth_token = 1; string identity = 2; } message SlugChangeEvent { string user = 1; string old = 2; string new = 3; } message SlugChangeEventResponse { bool success = 1; string message = 2; } message GetSessionsEvent { string identity = 1; } message GetSessionsResponse { repeated Detail details = 1; } message Detail { string node = 1; string forwarding_type = 2; string slug = 3; string user_id = 4; bool active = 5; google.protobuf.Timestamp started_at = 6; } enum TunnelType { UNSPECIFIED = 0; HTTP = 1; TCP = 2; } message TerminateSessionEvent { string user = 1; TunnelType tunnelType = 2; string slug = 3; } message TerminateSessionEventResponse { bool success = 1; string message = 2; }