Files
CMS/src/CMSMicroservice.Protobuf/Protos/configuration.proto
T

181 lines
4.5 KiB
Protocol Buffer

syntax = "proto3";
package configuration;
import "public_messages.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/wrappers.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option csharp_namespace = "CMSMicroservice.Protobuf.Protos.Configuration";
service ConfigurationContract
{
rpc CreateOrUpdateConfiguration(CreateOrUpdateConfigurationRequest) returns (google.protobuf.Empty){
option (google.api.http) = {
post: "/Configuration/CreateOrUpdate"
body: "*"
};
};
rpc DeactivateConfiguration(DeactivateConfigurationRequest) returns (google.protobuf.Empty){
option (google.api.http) = {
post: "/Configuration/Deactivate"
body: "*"
};
};
rpc GetConfigurationByKey(GetConfigurationByKeyRequest) returns (GetConfigurationByKeyResponse){
option (google.api.http) = {
get: "/Configuration/GetByKey"
};
};
rpc GetAllConfigurations(GetAllConfigurationsRequest) returns (GetAllConfigurationsResponse){
option (google.api.http) = {
get: "/Configuration/GetAll"
};
};
rpc GetConfigurationHistory(GetConfigurationHistoryRequest) returns (GetConfigurationHistoryResponse){
option (google.api.http) = {
get: "/Configuration/GetHistory"
};
};
// Customer-facing APIs
rpc GetClubConfiguration(google.protobuf.Empty) returns (GetClubConfigurationResponse){
option (google.api.http) = {
get: "/Configuration/Customer/Club"
};
};
rpc GetClubFeatures(google.protobuf.Empty) returns (GetClubFeaturesResponse){
option (google.api.http) = {
get: "/Configuration/Customer/ClubFeatures"
};
};
}
// CreateOrUpdate Command
message CreateOrUpdateConfigurationRequest
{
string key = 1;
string value = 2;
google.protobuf.StringValue description = 3;
int32 scope = 4; // ConfigurationScope enum: System=0, Network=1, Club=2, Commission=3
}
// Deactivate Command
message DeactivateConfigurationRequest
{
string key = 1;
google.protobuf.StringValue reason = 2;
}
// GetByKey Query
message GetConfigurationByKeyRequest
{
int32 scope = 1;
string key = 2;
}
message GetConfigurationByKeyResponse
{
int64 id = 1;
string key = 2;
string value = 3;
string description = 4;
int32 scope = 5;
bool is_active = 6;
google.protobuf.Timestamp created = 7;
google.protobuf.Timestamp last_modified = 8;
}
// GetAll Query
message GetAllConfigurationsRequest
{
messages.PaginationState pagination_state = 1;
google.protobuf.StringValue sort_by = 2;
GetAllConfigurationsFilter filter = 3;
}
message GetAllConfigurationsFilter
{
google.protobuf.Int32Value scope = 1;
google.protobuf.StringValue key_contains = 2;
google.protobuf.BoolValue is_active = 3;
}
message GetAllConfigurationsResponse
{
messages.MetaData meta_data = 1;
repeated ConfigurationModel models = 2;
}
message ConfigurationModel
{
int64 id = 1;
string key = 2;
string value = 3;
string description = 4;
int32 scope = 5;
bool is_active = 6;
google.protobuf.Timestamp created = 7;
}
// GetHistory Query
message GetConfigurationHistoryRequest
{
google.protobuf.Int64Value configuration_id = 1;
google.protobuf.StringValue key = 2;
int32 page_index = 3;
int32 page_size = 4;
}
message GetConfigurationHistoryResponse
{
messages.MetaData meta_data = 1;
repeated ConfigurationHistoryModel models = 2;
}
message ConfigurationHistoryModel
{
int64 id = 1;
int64 configuration_id = 2;
string key = 3;
string old_value = 4;
string new_value = 5;
string old_description = 6;
string new_description = 7;
int32 old_scope = 8;
int32 new_scope = 9;
string performed_by = 10;
string reason = 11;
google.protobuf.Timestamp created = 12;
}
// ============ Customer APIs ============
// GetClubConfiguration - for frontend customer display
message GetClubConfigurationResponse
{
int64 activation_fee = 1;
int64 membership_gift_value = 2;
}
// GetClubFeatures - for frontend customer display
message GetClubFeaturesResponse
{
repeated ClubFeatureModel features = 1;
}
message ClubFeatureModel
{
int64 id = 1;
string title = 2;
string description = 3;
bool is_enabled = 4;
int32 display_order = 5;
google.protobuf.Timestamp granted_at = 6;
google.protobuf.Timestamp created_at = 7;
string notes = 8;
}