Files
foxhunt/proto/config.proto
jgrusewski ed1ab8ed88 feat: create consolidated proto/ directory at workspace root
Merge monitoring_service training metrics into trading_service system health
monitoring.proto. All 11 proto files now in one canonical location.

Merged monitoring.proto has 13 RPCs (10 system + 3 training) with all
message types from both source protos preserved. Added cpu_percent,
memory_used_mb, memory_total_mb fields to GetLiveTrainingMetricsResponse.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:15:11 +01:00

326 lines
9.3 KiB
Protocol Buffer

syntax = "proto3";
package config;
// Configuration Service provides centralized, PostgreSQL-based configuration management with hot-reload capabilities.
// This service supports real-time configuration updates, validation, history tracking, and import/export functionality
// for all trading system components with comprehensive audit trails and rollback capabilities.
service ConfigService {
// Configuration CRUD Operations
// Get configuration settings by category, key, or environment
rpc GetConfiguration(GetConfigurationRequest) returns (GetConfigurationResponse);
// Update configuration value with validation and audit logging
rpc UpdateConfiguration(UpdateConfigurationRequest) returns (UpdateConfigurationResponse);
// Delete configuration setting with audit trail
rpc DeleteConfiguration(DeleteConfigurationRequest) returns (DeleteConfigurationResponse);
// List available configuration categories
rpc ListCategories(ListCategoriesRequest) returns (ListCategoriesResponse);
// Real-time Configuration Streaming
// Stream real-time configuration changes with hot-reload support
rpc StreamConfigChanges(StreamConfigChangesRequest) returns (stream ConfigChangeEvent);
// Configuration Management Operations
// Validate configuration value against schema and rules
rpc ValidateConfiguration(ValidateConfigurationRequest) returns (ValidateConfigurationResponse);
// Get configuration change history with audit details
rpc GetConfigurationHistory(GetConfigurationHistoryRequest) returns (GetConfigurationHistoryResponse);
// Rollback configuration to previous value
rpc RollbackConfiguration(RollbackConfigurationRequest) returns (RollbackConfigurationResponse);
// Export configuration data in various formats
rpc ExportConfiguration(ExportConfigurationRequest) returns (ExportConfigurationResponse);
// Import configuration data with validation
rpc ImportConfiguration(ImportConfigurationRequest) returns (ImportConfigurationResponse);
// Schema Management Operations
// Get configuration schema definitions
rpc GetConfigSchema(GetConfigSchemaRequest) returns (GetConfigSchemaResponse);
// Update configuration schema with validation rules
rpc UpdateConfigSchema(UpdateConfigSchemaRequest) returns (UpdateConfigSchemaResponse);
}
// Configuration CRUD Messages
message GetConfigurationRequest {
optional string category = 1;
optional string key = 2;
optional string environment = 3;
}
message GetConfigurationResponse {
repeated ConfigurationSetting settings = 1;
}
message UpdateConfigurationRequest {
string category = 1;
string key = 2;
string value = 3;
string changed_by = 4;
optional string change_reason = 5;
optional string environment = 6;
}
message UpdateConfigurationResponse {
bool success = 1;
string message = 2;
optional ValidationResult validation_result = 3;
int64 timestamp = 4;
}
message DeleteConfigurationRequest {
string category = 1;
string key = 2;
string deleted_by = 3;
optional string delete_reason = 4;
}
message DeleteConfigurationResponse {
bool success = 1;
string message = 2;
int64 timestamp = 3;
}
message ListCategoriesRequest {
optional string parent_category = 1;
}
message ListCategoriesResponse {
repeated ConfigurationCategory categories = 1;
}
// Streaming Messages
message StreamConfigChangesRequest {
repeated string categories = 1;
repeated string keys = 2;
}
// Validation Messages
message ValidateConfigurationRequest {
string category = 1;
string key = 2;
string value = 3;
}
message ValidateConfigurationResponse {
bool is_valid = 1;
ValidationResult validation_result = 2;
}
// History Messages
message GetConfigurationHistoryRequest {
optional string category = 1;
optional string key = 2;
optional int64 start_time = 3;
optional int64 end_time = 4;
optional int32 limit = 5;
}
message GetConfigurationHistoryResponse {
repeated ConfigurationHistoryEntry history = 1;
}
message RollbackConfigurationRequest {
string category = 1;
string key = 2;
int64 rollback_to_timestamp = 3;
string rolled_back_by = 4;
optional string rollback_reason = 5;
}
message RollbackConfigurationResponse {
bool success = 1;
string message = 2;
ConfigurationSetting restored_setting = 3;
int64 timestamp = 4;
}
// Import/Export Messages
message ExportConfigurationRequest {
repeated string categories = 1;
optional string environment = 2;
ExportFormat format = 3;
}
message ExportConfigurationResponse {
string exported_data = 1;
ExportFormat format = 2;
int32 settings_count = 3;
int64 exported_at = 4;
}
message ImportConfigurationRequest {
string imported_data = 1;
ExportFormat format = 2;
string imported_by = 3;
bool dry_run = 4;
bool overwrite_existing = 5;
}
message ImportConfigurationResponse {
bool success = 1;
string message = 2;
repeated ImportResult import_results = 3;
int32 imported_count = 4;
int32 skipped_count = 5;
int32 error_count = 6;
}
// Schema Messages
message GetConfigSchemaRequest {
optional string category = 1;
}
message GetConfigSchemaResponse {
repeated ConfigurationSchema schemas = 1;
}
message UpdateConfigSchemaRequest {
string schema_name = 1;
string schema_definition = 2;
string updated_by = 3;
}
message UpdateConfigSchemaResponse {
bool success = 1;
string message = 2;
int64 timestamp = 3;
}
// Core Data Types
// Complete configuration setting with metadata and validation rules
message ConfigurationSetting {
int64 id = 1; // Unique setting identifier
string category = 2; // Configuration category (e.g., "trading.limits")
string key = 3; // Configuration key (e.g., "max_position_size")
string value = 4; // Current configuration value
ConfigDataType data_type = 5; // Data type (string, number, boolean, etc.)
bool hot_reload = 6; // Whether changes trigger hot-reload
string description = 7; // Human-readable description
optional string default_value = 8; // Default value if not set
bool required = 9; // Whether this setting is required
bool sensitive = 10; // Whether value contains sensitive data
optional string validation_rule = 11; // Validation rule expression
optional string environment_override = 12; // Environment-specific override
optional double min_value = 13; // Minimum numeric value
optional double max_value = 14; // Maximum numeric value
optional string enum_values = 15; // Allowed enum values (comma-separated)
repeated string depends_on = 16; // Dependencies on other settings
repeated string tags = 17; // Tags for categorization
int32 display_order = 18; // Display order in UI
int64 created_at = 19; // Creation timestamp
int64 modified_at = 20; // Last modification timestamp
}
message ConfigurationCategory {
int64 id = 1;
string name = 2;
string description = 3;
optional int64 parent_id = 4;
int32 display_order = 5;
optional string icon = 6;
int64 created_at = 7;
repeated ConfigurationCategory children = 8;
}
message ConfigurationHistoryEntry {
int64 id = 1;
int64 setting_id = 2;
optional string old_value = 3;
string new_value = 4;
optional string change_reason = 5;
string changed_by = 6;
int64 changed_at = 7;
string change_source = 8;
optional ValidationResult validation_result = 9;
optional int64 rollback_id = 10;
}
message ConfigurationSchema {
int64 id = 1;
string name = 2;
string schema_definition = 3;
string description = 4;
int64 created_at = 5;
}
message ValidationResult {
bool is_valid = 1;
repeated ValidationError errors = 2;
repeated ValidationWarning warnings = 3;
}
message ValidationError {
string field = 1;
string message = 2;
string error_code = 3;
}
message ValidationWarning {
string field = 1;
string message = 2;
string warning_code = 3;
}
message ImportResult {
string category = 1;
string key = 2;
ImportStatus status = 3;
optional string error_message = 4;
}
// Event Messages
message ConfigChangeEvent {
int64 setting_id = 1;
string category = 2;
string key = 3;
string old_value = 4;
string new_value = 5;
string changed_by = 6;
int64 timestamp = 7;
ConfigChangeType change_type = 8;
bool hot_reload = 9;
}
// Enums
// Data types for configuration values
enum ConfigDataType {
CONFIG_DATA_TYPE_UNSPECIFIED = 0; // Default/unknown type
CONFIG_DATA_TYPE_STRING = 1; // Text string value
CONFIG_DATA_TYPE_NUMBER = 2; // Numeric value (int or float)
CONFIG_DATA_TYPE_BOOLEAN = 3; // Boolean true/false value
CONFIG_DATA_TYPE_JSON = 4; // JSON object or array
CONFIG_DATA_TYPE_ENCRYPTED = 5; // Encrypted sensitive value
}
enum ExportFormat {
EXPORT_FORMAT_UNSPECIFIED = 0;
EXPORT_FORMAT_JSON = 1;
EXPORT_FORMAT_YAML = 2;
EXPORT_FORMAT_TOML = 3;
EXPORT_FORMAT_ENV = 4;
}
enum ImportStatus {
IMPORT_STATUS_UNSPECIFIED = 0;
IMPORT_STATUS_SUCCESS = 1;
IMPORT_STATUS_SKIPPED = 2;
IMPORT_STATUS_ERROR = 3;
IMPORT_STATUS_VALIDATION_FAILED = 4;
}
enum ConfigChangeType {
CONFIG_CHANGE_TYPE_UNSPECIFIED = 0;
CONFIG_CHANGE_TYPE_CREATED = 1;
CONFIG_CHANGE_TYPE_UPDATED = 2;
CONFIG_CHANGE_TYPE_DELETED = 3;
CONFIG_CHANGE_TYPE_ROLLBACK = 4;
}