syntax = "proto3"; package keymanager.v1; option go_package = "github.com/mrhid6/keymanager/server/internal/grpc/pb"; service KeyManager { rpc Register(RegisterRequest) returns (RegisterResponse); rpc SyncKeys(SyncRequest) returns (SyncResponse); rpc UploadGeneratedKey(UploadKeyRequest) returns (UploadKeyResponse); // Bidirectional stream: agent sends auth once, server pushes commands. rpc CommandStream(stream AgentMessage) returns (stream ServerCommand); } message RegisterRequest { string server_id = 1; string pre_reg_token = 2; string hostname = 3; string ip_address = 4; string os_info = 5; } message RegisterResponse { string agent_token = 1; } message SyncRequest { string server_id = 1; string agent_token = 2; } message SyncResponse { repeated string public_keys = 1; } message UploadKeyRequest { string server_id = 1; string agent_token = 2; string public_key = 3; string label = 4; } message UploadKeyResponse { string key_id = 1; } // CommandStream messages message AgentMessage { string server_id = 1; string agent_token = 2; oneof payload { AgentReady ready = 3; CommandResult result = 4; } } message AgentReady {} message CommandResult { string command_id = 1; bool success = 2; string message = 3; } message ServerCommand { string command_id = 1; oneof command { GenerateKeyCmd generate_key = 2; } } message GenerateKeyCmd { string label = 1; }