222 lines
5.9 KiB
Protocol Buffer
222 lines
5.9 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package qsfera.messages.settings.v0;
|
|
|
|
option go_package = "github.com/qsfera/server/protogen/gen/qsfera/messages/settings/v0";
|
|
|
|
// ---
|
|
// messages for settings values
|
|
// ---
|
|
|
|
message ValueWithIdentifier {
|
|
Identifier identifier = 1;
|
|
Value value = 2;
|
|
}
|
|
|
|
message Identifier {
|
|
string extension = 1;
|
|
string bundle = 2;
|
|
string setting = 3;
|
|
}
|
|
|
|
// ---
|
|
// messages for role assignment
|
|
// ---
|
|
|
|
message UserRoleAssignment {
|
|
// id is generated upon saving the assignment
|
|
string id = 1;
|
|
string account_uuid = 2;
|
|
// the role_id is a bundle_id internally
|
|
string role_id = 3;
|
|
}
|
|
|
|
message UserRoleAssignmentFilter {
|
|
enum Type {
|
|
TYPE_UNKNOWN = 0;
|
|
TYPE_ACCOUNT = 1;
|
|
TYPE_ROLE = 2;
|
|
}
|
|
Type type = 1;
|
|
oneof term {
|
|
string account_uuid = 2;
|
|
string role_id = 3;
|
|
}
|
|
}
|
|
|
|
// ---
|
|
// resource payloads
|
|
// ---
|
|
|
|
message Resource {
|
|
enum Type {
|
|
TYPE_UNKNOWN = 0;
|
|
TYPE_SYSTEM = 1;
|
|
TYPE_FILE = 2;
|
|
TYPE_SHARE = 3;
|
|
TYPE_SETTING = 4;
|
|
TYPE_BUNDLE = 5;
|
|
TYPE_USER = 6;
|
|
TYPE_GROUP = 7;
|
|
}
|
|
Type type = 1;
|
|
string id = 2;
|
|
}
|
|
|
|
// ---
|
|
// payloads for bundles
|
|
// ---
|
|
|
|
message Bundle {
|
|
enum Type {
|
|
TYPE_UNKNOWN = 0;
|
|
TYPE_DEFAULT = 1;
|
|
TYPE_ROLE = 2;
|
|
};
|
|
string id = 1; // @gotags: yaml:"id"
|
|
string name = 2; // @gotags: yaml:"name"
|
|
Type type = 3; // @gotags: yaml:"type"
|
|
string extension = 4; // @gotags: yaml:"extension"
|
|
string display_name = 5; // @gotags: yaml:"display_name"
|
|
repeated Setting settings = 6; // @gotags: yaml:"settings"
|
|
Resource resource = 7; // @gotags: yaml:"resource"
|
|
}
|
|
|
|
message Setting {
|
|
string id = 1; // @gotags: yaml:"id"
|
|
string name = 2; // @gotags: yaml:"name"
|
|
string display_name = 3; // @gotags: yaml:"display_name"
|
|
string description = 4; // @gotags: yaml:"description"
|
|
oneof value {
|
|
Int int_value = 5; // @gotags: yaml:"int_value"
|
|
String string_value = 6; // @gotags: yaml:"string_value"
|
|
Bool bool_value = 7; // @gotags: yaml:"bool_value"
|
|
SingleChoiceList single_choice_value = 8; // @gotags: yaml:"single_choice_value"
|
|
MultiChoiceList multi_choice_value = 9; // @gotags: yaml:"multi_choice_value"
|
|
Permission permission_value = 10; // @gotags: yaml:"permission_value"
|
|
MultiChoiceCollection multi_choice_collection_value = 12; // @gotags: yaml:"multi_choice_collection_value"
|
|
}
|
|
Resource resource = 11; // @gotags: yaml:"resource"
|
|
}
|
|
|
|
message Int {
|
|
int64 default = 1; // @gotags: yaml:"default"
|
|
int64 min = 2; // @gotags: yaml:"min"
|
|
int64 max = 3; // @gotags: yaml:"max"
|
|
int64 step = 4; // @gotags: yaml:"step"
|
|
string placeholder = 5; // @gotags: yaml:"placeholder"
|
|
}
|
|
|
|
message String {
|
|
string default = 1; // @gotags: yaml:"default"
|
|
bool required = 2; // @gotags: yaml:"required"
|
|
int32 min_length = 3; // @gotags: yaml:"min_length"
|
|
int32 max_length = 4; // @gotags: yaml:"max_length"
|
|
string placeholder = 5; // @gotags: yaml:"placeholder"
|
|
}
|
|
|
|
message Bool {
|
|
bool default = 1; // @gotags: yaml:"default"
|
|
string label = 2; // @gotags: yaml:"label"
|
|
}
|
|
|
|
message SingleChoiceList {
|
|
repeated ListOption options = 1; // @gotags: yaml:"options"
|
|
}
|
|
|
|
message MultiChoiceList {
|
|
repeated ListOption options = 1; // @gotags: yaml:"options"
|
|
}
|
|
|
|
message ListOption {
|
|
ListOptionValue value = 1; // @gotags: yaml:"value"
|
|
bool default = 2; // @gotags: yaml:"default"
|
|
string display_value = 3; // @gotags: yaml:"display_value"
|
|
}
|
|
|
|
message MultiChoiceCollection {
|
|
repeated MultiChoiceCollectionOption options = 1; // @gotags: yaml:"options"
|
|
}
|
|
|
|
message MultiChoiceCollectionOption {
|
|
MultiChoiceCollectionOptionValue value = 1; // @gotags: yaml:"value"
|
|
string key = 2; // @gotags: yaml:"key"
|
|
string attribute = 3; // @gotags: yaml:"attribute"
|
|
string display_value = 4; // @gotags: yaml:"display_value"
|
|
}
|
|
|
|
message MultiChoiceCollectionOptionValue {
|
|
oneof option {
|
|
Int int_value = 1; // @gotags: yaml:"int_value"
|
|
String string_value = 2; // @gotags: yaml:"string_value"
|
|
Bool bool_value = 3; // @gotags: yaml:"bool_value"
|
|
}
|
|
}
|
|
|
|
message Permission {
|
|
enum Operation {
|
|
OPERATION_UNKNOWN = 0;
|
|
OPERATION_CREATE = 1;
|
|
OPERATION_READ = 2;
|
|
OPERATION_UPDATE = 3;
|
|
OPERATION_DELETE = 4;
|
|
OPERATION_WRITE = 5;// WRITE is a combination of CREATE and UPDATE
|
|
OPERATION_READWRITE = 6;// READWRITE is a combination of READ and WRITE
|
|
}
|
|
Operation operation = 1; // @gotags: yaml:"operation"
|
|
enum Constraint {
|
|
CONSTRAINT_UNKNOWN = 0;
|
|
CONSTRAINT_OWN = 1;
|
|
CONSTRAINT_SHARED = 2;
|
|
CONSTRAINT_ALL = 3;
|
|
}
|
|
Constraint constraint = 2; // @gotags: yaml:"constraint"
|
|
}
|
|
|
|
// ---
|
|
// payloads for values
|
|
// ---
|
|
|
|
message Value {
|
|
// id is the id of the Value. It is generated on saving it.
|
|
string id = 1; // @gotags: yaml:"id"
|
|
string bundle_id = 2; // @gotags: yaml:"bundle_id"
|
|
// setting_id is the id of the setting from within its bundle.
|
|
string setting_id = 3; // @gotags: yaml:"setting_id"
|
|
string account_uuid = 4; // @gotags: yaml:"account_uuid"
|
|
Resource resource = 5; // @gotags: yaml:"resource"
|
|
oneof value {
|
|
bool bool_value = 6; // @gotags: yaml:"bool_value"
|
|
int64 int_value = 7; // @gotags: yaml:"int_value"
|
|
string string_value = 8; // @gotags: yaml:"string_value"
|
|
ListValue list_value = 9; // @gotags: yaml:"list_value"
|
|
CollectionValue collection_value = 10; // @gotags: yaml:"collection_value"
|
|
}
|
|
}
|
|
|
|
message ListValue {
|
|
repeated ListOptionValue values = 1; // @gotags: yaml:"values"
|
|
}
|
|
|
|
message ListOptionValue {
|
|
oneof option {
|
|
string string_value = 1; // @gotags: yaml:"string_value"
|
|
int64 int_value = 2; // @gotags: yaml:"int_value"
|
|
bool bool_value = 3; // @gotags: yaml:"bool_value"
|
|
}
|
|
}
|
|
|
|
message CollectionValue {
|
|
repeated CollectionOption values = 1; // @gotags: yaml:"values"
|
|
}
|
|
|
|
message CollectionOption {
|
|
// required
|
|
string key = 1; // @gotags: yaml:"key"
|
|
oneof option {
|
|
int64 int_value = 2; // @gotags: yaml:"int_value"
|
|
string string_value = 3; // @gotags: yaml:"string_value"
|
|
bool bool_value = 4; // @gotags: yaml:"bool_value"
|
|
}
|
|
}
|