Skip to content
Snippets Groups Projects
Select Git revision
  • f88904eb455ec10a79c550658ecc286a114f8465
  • master default protected
  • feature/PRXS-3043-NewURLFormat
  • feature/2781-SpacesLoggingMiddleware
  • feature/PRXS-2974-FillImageDimensions
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3056-LocalesFromToMap
  • feature/PRXS-3421-ImplementNewRefAPI
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • PRXS-3421-RecursiveReferences
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

item_test.go

Blame
  • extension.pb.go 42.49 KiB
    //*
    //# Расширения (Extensions)
    //
    //Расширения представляют собой отдельные сервисы предоставляющие дополнительные возможности для пользователей. Сервис
    //может предоставлять несколько расширений одновременно.
    //
    //Для координации взаимодействия используется сервис менеджер расширений (Extension Manager). Для предоставления своих функций в систему сервис должен
    //зарегистрироваться на контроллере.
    //
    
    // Code generated by protoc-gen-go. DO NOT EDIT.
    // versions:
    // 	protoc-gen-go v1.35.1
    // 	protoc        v5.28.3
    // source: extensions/extension.proto
    
    package extensions
    
    import (
    	references "git.perx.ru/perxis/perxis-go/proto/references"
    	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    	reflect "reflect"
    	sync "sync"
    )
    
    const (
    	// Verify that this generated code is sufficiently up-to-date.
    	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    	// Verify that runtime/protoimpl is sufficiently up-to-date.
    	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    )
    
    // Target - определяет как открывать результат выполнения действия в пользовательском интерфейсе
    type Target int32
    
    const (
    	Target_DEFAULT      Target = 0   // По умолчанию (если нет других условий, то MODAL)
    	Target_MODAL        Target = 1   // Открывать в модальном окне
    	Target_WIDE         Target = 2   // Открывать в широком модальном окне
    	Target_MAIN         Target = 4   // Открывать в главной рабочей области (часть без меню)
    	Target_DRAWER       Target = 5   // Открывать в боковой панели
    	Target_NOTIFICATION Target = 6   // Открывать виде всплывающего уведомлении
    	Target_BLANK        Target = 7   // Открывать в новой вкладке
    	Target_NONE         Target = 100 // Не отображать результат
    )
    
    // Enum value maps for Target.
    var (
    	Target_name = map[int32]string{
    		0:   "DEFAULT",
    		1:   "MODAL",
    		2:   "WIDE",
    		4:   "MAIN",
    		5:   "DRAWER",
    		6:   "NOTIFICATION",
    		7:   "BLANK",
    		100: "NONE",
    	}
    	Target_value = map[string]int32{
    		"DEFAULT":      0,
    		"MODAL":        1,
    		"WIDE":         2,
    		"MAIN":         4,
    		"DRAWER":       5,
    		"NOTIFICATION": 6,
    		"BLANK":        7,
    		"NONE":         100,
    	}
    )
    
    func (x Target) Enum() *Target {
    	p := new(Target)
    	*p = x
    	return p
    }
    
    func (x Target) String() string {
    	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    }
    
    func (Target) Descriptor() protoreflect.EnumDescriptor {
    	return file_extensions_extension_proto_enumTypes[0].Descriptor()
    }
    
    func (Target) Type() protoreflect.EnumType {
    	return &file_extensions_extension_proto_enumTypes[0]
    }
    
    func (x Target) Number() protoreflect.EnumNumber {
    	return protoreflect.EnumNumber(x)
    }
    
    // Deprecated: Use Target.Descriptor instead.
    func (Target) EnumDescriptor() ([]byte, []int) {
    	return file_extensions_extension_proto_rawDescGZIP(), []int{0}
    }
    
    // Kind описывает c какой сущность системы связано действие и что требуется передать в качестве параметров
    // Интерфейс загружает пользовательские действия и отображает их в интерфейсе в зависимости от ActionType.
    type Action_Kind int32
    
    const (
    	Action_DEFAULT     Action_Kind = 0 // Действие не отображается в интерфейсе и может использоваться для выполнения дополнительных запросов (см. `ActionResponse.next`) или напрямую из сторонних приложений.
    	Action_SPACE       Action_Kind = 1 // Действие связано с пространством (требуется передача space_id). Отображается в меню "Действия".
    	Action_ENVIRONMENT Action_Kind = 2 // Действие связано с окружением (требуется передача space_id, env_id). Отображается в меню "Действия".
    	Action_COLLECTION  Action_Kind = 3 // Действие связано с коллекцией (требуется передача space_id, env_id, collection_id). Отображается на экране списка записей.
    	Action_ITEM        Action_Kind = 4 // Действие связано с записью (требуется передача space_id, env_id, collection_id, item_id). Отображается на экране редактирования записи.
    	Action_ITEMS       Action_Kind = 5 // Действие связано с несколькими записями (требуется передача space_id, env_id, collection_id, item_ids). Отображается на экране списка записей.
    	Action_REVISION    Action_Kind = 6 // Действие связано с ревизией записи (требуется передача space_id, env_id, collection_id, item_id, rev_id). На данный момент не используется.
    	Action_CREATE      Action_Kind = 7 // Действие создание записи (требуется передача space_id, env_id, collection_id).
    )
    
    // Enum value maps for Action_Kind.
    var (
    	Action_Kind_name = map[int32]string{
    		0: "DEFAULT",
    		1: "SPACE",
    		2: "ENVIRONMENT",
    		3: "COLLECTION",
    		4: "ITEM",
    		5: "ITEMS",
    		6: "REVISION",
    		7: "CREATE",
    	}
    	Action_Kind_value = map[string]int32{
    		"DEFAULT":     0,
    		"SPACE":       1,
    		"ENVIRONMENT": 2,
    		"COLLECTION":  3,
    		"ITEM":        4,
    		"ITEMS":       5,
    		"REVISION":    6,
    		"CREATE":      7,
    	}
    )
    
    func (x Action_Kind) Enum() *Action_Kind {
    	p := new(Action_Kind)
    	*p = x
    	return p
    }
    
    func (x Action_Kind) String() string {
    	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    }
    
    func (Action_Kind) Descriptor() protoreflect.EnumDescriptor {
    	return file_extensions_extension_proto_enumTypes[1].Descriptor()
    }
    
    func (Action_Kind) Type() protoreflect.EnumType {
    	return &file_extensions_extension_proto_enumTypes[1]
    }
    
    func (x Action_Kind) Number() protoreflect.EnumNumber {
    	return protoreflect.EnumNumber(x)
    }
    
    // Deprecated: Use Action_Kind.Descriptor instead.
    func (Action_Kind) EnumDescriptor() ([]byte, []int) {
    	return file_extensions_extension_proto_rawDescGZIP(), []int{0, 0}
    }
    
    type Action_View int32
    
    const (
    	Action_DEFAULT_VIEW          Action_View = 0 // Отображать в интерфейсе по умолчанию
    	Action_HIDDEN_VIEW           Action_View = 1 // Не отображать в интерфейсе
    	Action_MAIN_MENU_VIEW        Action_View = 2 // Отображать в главном меню
    	Action_MAIN_MENU_BOTTOM_VIEW Action_View = 3 // Отображать в главном меню внизу
    )
    
    // Enum value maps for Action_View.
    var (
    	Action_View_name = map[int32]string{
    		0: "DEFAULT_VIEW",
    		1: "HIDDEN_VIEW",
    		2: "MAIN_MENU_VIEW",
    		3: "MAIN_MENU_BOTTOM_VIEW",
    	}
    	Action_View_value = map[string]int32{
    		"DEFAULT_VIEW":          0,
    		"HIDDEN_VIEW":           1,
    		"MAIN_MENU_VIEW":        2,
    		"MAIN_MENU_BOTTOM_VIEW": 3,
    	}
    )
    
    func (x Action_View) Enum() *Action_View {
    	p := new(Action_View)
    	*p = x
    	return p
    }
    
    func (x Action_View) String() string {
    	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    }
    
    func (Action_View) Descriptor() protoreflect.EnumDescriptor {
    	return file_extensions_extension_proto_enumTypes[2].Descriptor()
    }
    
    func (Action_View) Type() protoreflect.EnumType {
    	return &file_extensions_extension_proto_enumTypes[2]
    }
    
    func (x Action_View) Number() protoreflect.EnumNumber {
    	return protoreflect.EnumNumber(x)
    }
    
    // Deprecated: Use Action_View.Descriptor instead.
    func (Action_View) EnumDescriptor() ([]byte, []int) {
    	return file_extensions_extension_proto_rawDescGZIP(), []int{0, 1}
    }
    
    // *
    // Action описывает как коллекцию в системе с предустановленными действиями, так и возможные дальнейшие действия после
    // получения ответа  (см. `ActionResponse.next`)
    //
    // Если поле `request` присутствует, но не все требуемые поля заполнены, то значения для них берутся из текущих значений.
    //
    // Коллекция: space_actions (Пространство/Действия)
    // Действия сохраненные в коллекции не содержат поля `request`. Значение заполняется текущими значениями.
    //
    // Пользовательские действия добавляются при установке расширений или при
    // настройке в системную коллекции `Пространство/Действия` (system_actions). Расширения самостоятельно контролирует создание необходимых
    // им действий в коллекции.
    //
    // Интерфейс загружает пользовательские действия и отображает их в интерфейсе соответствующим образом.
    type Action struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	// DEPRECATED: Используйте `action` в формате URI
    	Extension string `protobuf:"bytes,10000,opt,name=extension,proto3" json:"extension,omitempty"` // Расширение
    	// Идентификатор действия (в формате URI)
    	// Варианты использования:
    	// - пустой - никаких действий не выполняется
    	// - `action_id` - простое действие (если установлено значение `extension`, то оно используется)
    	// - `grpc:///extension_id/action_id` - полное действие с указанием расширения
    	// - `https://host/path` - действие по HTTP(S)
    	// - `ui:///path` - действие в интерфейсе
    	// - `/path` - действие в интерфейсе - DEPRECATED: Используйте `ui:///path`
    	//
    	// Пример: `https://example.com/api/v1/action` - будет выполнен запрос HTTP по указанному URL.
    	// Сервер может вернуть ответ в формате JSON или HTML/MD. Дальнейшие действия определяется оп заголовку ответа
    	// `Content-Type`:
    	// - `application/json` - ответ в формате JSON. Структура ответа соответствует `ActionResponse` и интерпретируется
    	// тем же способом что и ответ от GRPC.
    	// - `text/html` - ответ в формате HTML. Интерфейс отображает ответ в виде сообщения в IFrame
    	// - `text/markdown` - ответ в формате MD. Интерфейс отображает ответ в виде сообщения.
    	//
    	// Переменные `:var` заменяются на текуще значение в пользовательском интерфейсе
    	// Перечень переменных для подстановки:
    	// - :spaceId
    	// - :envId
    	// - :colId
    	// - :itemId
    	//
    	// Пример: `ui:///spaces/:spaceId/envs/:envId/cols/:colId` - будет выполнено действие в интерфейсе.
    	Action      string                `protobuf:"bytes,10100,opt,name=action,proto3" json:"action,omitempty"`
    	Target      Target                `protobuf:"varint,10110,opt,name=target,proto3,enum=extensions.Target" json:"target,omitempty"`  // как должен отображаться результат действия
    	Parent      string                `protobuf:"bytes,10120,opt,name=parent,proto3" json:"parent,omitempty"`                          // Идентификатор родительского действия (для отображения в меню)
    	Name        string                `protobuf:"bytes,10200,opt,name=name,proto3" json:"name,omitempty"`                              // Название действия для отображения в интерфейсе (пункт меню, кнопка).
    	Description string                `protobuf:"bytes,10210,opt,name=description,proto3" json:"description,omitempty"`                // Описание действия для отображения в интерфейсе
    	Icon        string                `protobuf:"bytes,10220,opt,name=icon,proto3" json:"icon,omitempty"`                              // Название иконки для отображения действия в интерфейсе
    	Image       *references.Reference `protobuf:"bytes,10230,opt,name=image,proto3" json:"image,omitempty"`                            // Изображение для отображения в действия в интерфейсе
    	Groups      []string              `protobuf:"bytes,10240,rep,name=groups,proto3" json:"groups,omitempty"`                          // Группы отображения действия в интерфейсе
    	Kind        Action_Kind           `protobuf:"varint,10300,opt,name=kind,proto3,enum=extensions.Action_Kind" json:"kind,omitempty"` // Указывает область действия (где отображается действие)
    	Classes     []string              `protobuf:"bytes,10310,rep,name=classes,proto3" json:"classes,omitempty"`                        // Классы данных к которым применимо действие (название коллекций или специальных групп в рамках которых данное действие применимо)
    	// Для `CREATE` действуют следующие правила:
    	// - Для создание записей в коллекции применимы действия которые содержат в classes название коллекции
    	// - Для создания записей в виджетах которые допускают создание записей (Block/BlockList) применимы действия которые содержат:
    	//   - в classes хотя бы одно значение из classes виджета
    	//   - если у виджета не указан classes, тогда названия коллекций которые могут быть использованы для создания элементов в поле (allowed_collections)
    	Refs []*references.Reference `protobuf:"bytes,10320,rep,name=refs,proto3" json:"refs,omitempty"` // Ссылки на записи используемые для выполнения действия (назначение ссылок зависит от действия и расширения)
    	// Коллекция для сохранения параметрами действия. Если параметр указан, то при выполнении действия будет открываться
    	// форма создания записи в указанной коллекции
    	ParamsCollection string         `protobuf:"bytes,10330,opt,name=params_collection,json=paramsCollection,proto3" json:"params_collection,omitempty"`
    	Request          *ActionRequest `protobuf:"bytes,10400,opt,name=request,proto3" json:"request,omitempty"` // Параметры запроса (используется в случае `ActionResponse.next`)
    	// DEPRECATED: Используйте `action` вместо `navigation_route`
    	NavigationAction bool `protobuf:"varint,10500,opt,name=navigation_action,json=navigationAction,proto3" json:"navigation_action,omitempty"` // Флаг указывающий что действие переносить пользователя в другую часть интерфейса, а не отправляет запрос на сервер
    	// navigation_route - Строка шаблон для перехода в интерфейсе
    	// При указании полного адреса (http(s)://xyz), URL открывается в новом окне браузера
    	// Относительный адрес в пользовательском интерфейсе переносит пользователя в соответствующий раздел без перезагрузки приложения
    	//
    	// Переменные `:var` заменяются на текуще значение в пользовательском интерфейсе (Пример: `/spaces/:spaceId/envs/:envId/cols/:colId`)
    	// Перечень переменных для подстановки:
    	// - :spaceId
    	// - :envId
    	// - :colId
    	// - :itemId
    	//
    	// DEPRECATED: Используйте `action`
    	NavigationRoute string `protobuf:"bytes,10510,opt,name=navigation_route,json=navigationRoute,proto3" json:"navigation_route,omitempty"`
    	// Параметр указывающий что действие выполняется автоматически
    	// Если указано, то действие выполняется автоматически каждый раз при загрузке приложения
    	Autorun bool `protobuf:"varint,10520,opt,name=autorun,proto3" json:"autorun,omitempty"`
    	// Параметр указывающий что действие требует подтверждения пользователя
    	// Перед выполнением действия пользователю отображается информация о действии и кнопки подтверждения/отмены
    	Confirm bool        `protobuf:"varint,10530,opt,name=confirm,proto3" json:"confirm,omitempty"`
    	View    Action_View `protobuf:"varint,10540,opt,name=view,proto3,enum=extensions.Action_View" json:"view,omitempty"` // Отображение действия в интерфейсе
    	Order   int32       `protobuf:"varint,10550,opt,name=order,proto3" json:"order,omitempty"`                           // Порядок отображения действия в интерфейсе (Для пунктов меню)
    }
    
    func (x *Action) Reset() {
    	*x = Action{}
    	mi := &file_extensions_extension_proto_msgTypes[0]
    	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    	ms.StoreMessageInfo(mi)
    }
    
    func (x *Action) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*Action) ProtoMessage() {}
    
    func (x *Action) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_extension_proto_msgTypes[0]
    	if x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use Action.ProtoReflect.Descriptor instead.
    func (*Action) Descriptor() ([]byte, []int) {
    	return file_extensions_extension_proto_rawDescGZIP(), []int{0}
    }
    
    func (x *Action) GetExtension() string {
    	if x != nil {
    		return x.Extension
    	}
    	return ""
    }
    
    func (x *Action) GetAction() string {
    	if x != nil {
    		return x.Action
    	}
    	return ""
    }
    
    func (x *Action) GetTarget() Target {
    	if x != nil {
    		return x.Target
    	}
    	return Target_DEFAULT
    }
    
    func (x *Action) GetParent() string {
    	if x != nil {
    		return x.Parent
    	}
    	return ""
    }
    
    func (x *Action) GetName() string {
    	if x != nil {
    		return x.Name
    	}
    	return ""
    }
    
    func (x *Action) GetDescription() string {
    	if x != nil {
    		return x.Description
    	}
    	return ""
    }
    
    func (x *Action) GetIcon() string {
    	if x != nil {
    		return x.Icon
    	}
    	return ""
    }
    
    func (x *Action) GetImage() *references.Reference {
    	if x != nil {
    		return x.Image
    	}
    	return nil
    }
    
    func (x *Action) GetGroups() []string {
    	if x != nil {
    		return x.Groups
    	}
    	return nil
    }
    
    func (x *Action) GetKind() Action_Kind {
    	if x != nil {
    		return x.Kind
    	}
    	return Action_DEFAULT
    }
    
    func (x *Action) GetClasses() []string {
    	if x != nil {
    		return x.Classes
    	}
    	return nil
    }
    
    func (x *Action) GetRefs() []*references.Reference {
    	if x != nil {
    		return x.Refs
    	}
    	return nil
    }
    
    func (x *Action) GetParamsCollection() string {
    	if x != nil {
    		return x.ParamsCollection
    	}
    	return ""
    }
    
    func (x *Action) GetRequest() *ActionRequest {
    	if x != nil {
    		return x.Request
    	}
    	return nil
    }
    
    func (x *Action) GetNavigationAction() bool {
    	if x != nil {
    		return x.NavigationAction
    	}
    	return false
    }
    
    func (x *Action) GetNavigationRoute() string {
    	if x != nil {
    		return x.NavigationRoute
    	}
    	return ""
    }
    
    func (x *Action) GetAutorun() bool {
    	if x != nil {
    		return x.Autorun
    	}
    	return false
    }
    
    func (x *Action) GetConfirm() bool {
    	if x != nil {
    		return x.Confirm
    	}
    	return false
    }
    
    func (x *Action) GetView() Action_View {
    	if x != nil {
    		return x.View
    	}
    	return Action_DEFAULT_VIEW
    }
    
    func (x *Action) GetOrder() int32 {
    	if x != nil {
    		return x.Order
    	}
    	return 0
    }
    
    // ActionRequest - запрос на выполнение действия к расширению (или менеджеру расширений)
    type ActionRequest struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extension    string   `protobuf:"bytes,1000,opt,name=extension,proto3" json:"extension,omitempty"`
    	Action       string   `protobuf:"bytes,10100,opt,name=action,proto3" json:"action,omitempty"`
    	SpaceId      string   `protobuf:"bytes,10500,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"`
    	EnvId        string   `protobuf:"bytes,10510,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"`
    	CollectionId string   `protobuf:"bytes,10520,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"`
    	ItemId       string   `protobuf:"bytes,10530,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"`
    	ItemIds      []string `protobuf:"bytes,10540,rep,name=item_ids,json=itemIds,proto3" json:"item_ids,omitempty"`
    	// Идентификатор локали в пространстве: поле может использоваться расширением, если действие возможно выполнить на разных локалях
    	LocaleId string `protobuf:"bytes,11050,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"`
    	// Поля к которым применимо действие. В случае если действие выполняется из списка записей, содержит перечень
    	// полей которые пользователь выбрал для отображения в интерфейсе.
    	Fields   []string          `protobuf:"bytes,10550,rep,name=fields,proto3" json:"fields,omitempty"`
    	Metadata map[string]string `protobuf:"bytes,11000,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
    	// Ссылки на записи используемые для выполнения действия (назначение ссылок зависит от действия и расширения)
    	Refs []*references.Reference `protobuf:"bytes,11010,rep,name=refs,proto3" json:"refs,omitempty"`
    	// Ссылка на документ с параметрами выполнения Action.
    	// Чтобы при выполнении действия открывалась форма параметров, необходимо указать `Action.params_collection`
    	Params *references.Reference          `protobuf:"bytes,11020,opt,name=params,proto3" json:"params,omitempty"`
    	User   *ActionRequest_UserPreferences `protobuf:"bytes,11030,opt,name=user,proto3" json:"user,omitempty"`
    }
    
    func (x *ActionRequest) Reset() {
    	*x = ActionRequest{}
    	mi := &file_extensions_extension_proto_msgTypes[1]
    	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    	ms.StoreMessageInfo(mi)
    }
    
    func (x *ActionRequest) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ActionRequest) ProtoMessage() {}
    
    func (x *ActionRequest) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_extension_proto_msgTypes[1]
    	if x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ActionRequest.ProtoReflect.Descriptor instead.
    func (*ActionRequest) Descriptor() ([]byte, []int) {
    	return file_extensions_extension_proto_rawDescGZIP(), []int{1}
    }
    
    func (x *ActionRequest) GetExtension() string {
    	if x != nil {
    		return x.Extension
    	}
    	return ""
    }
    
    func (x *ActionRequest) GetAction() string {
    	if x != nil {
    		return x.Action
    	}
    	return ""
    }
    
    func (x *ActionRequest) GetSpaceId() string {
    	if x != nil {
    		return x.SpaceId
    	}
    	return ""
    }
    
    func (x *ActionRequest) GetEnvId() string {
    	if x != nil {
    		return x.EnvId
    	}
    	return ""
    }
    
    func (x *ActionRequest) GetCollectionId() string {
    	if x != nil {
    		return x.CollectionId
    	}
    	return ""
    }
    
    func (x *ActionRequest) GetItemId() string {
    	if x != nil {
    		return x.ItemId
    	}
    	return ""
    }
    
    func (x *ActionRequest) GetItemIds() []string {
    	if x != nil {
    		return x.ItemIds
    	}
    	return nil
    }
    
    func (x *ActionRequest) GetLocaleId() string {
    	if x != nil {
    		return x.LocaleId
    	}
    	return ""
    }
    
    func (x *ActionRequest) GetFields() []string {
    	if x != nil {
    		return x.Fields
    	}
    	return nil
    }
    
    func (x *ActionRequest) GetMetadata() map[string]string {
    	if x != nil {
    		return x.Metadata
    	}
    	return nil
    }
    
    func (x *ActionRequest) GetRefs() []*references.Reference {
    	if x != nil {
    		return x.Refs
    	}
    	return nil
    }
    
    func (x *ActionRequest) GetParams() *references.Reference {
    	if x != nil {
    		return x.Params
    	}
    	return nil
    }
    
    func (x *ActionRequest) GetUser() *ActionRequest_UserPreferences {
    	if x != nil {
    		return x.User
    	}
    	return nil
    }
    
    // Параметры запроса пользователя
    type ActionRequest_UserPreferences struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Timezone string `protobuf:"bytes,1000,opt,name=timezone,proto3" json:"timezone,omitempty"` // Timezone в формате IANA. Пример: "Europe/Moscow", "America/New_York" https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
    	Locale   string `protobuf:"bytes,1020,opt,name=locale,proto3" json:"locale,omitempty"`     // Текущая локаль пользователя в UI
    	Theme    string `protobuf:"bytes,1030,opt,name=theme,proto3" json:"theme,omitempty"`       // Текущая тема пользователя в UI
    	Agent    string `protobuf:"bytes,1040,opt,name=agent,proto3" json:"agent,omitempty"`       // Браузера или приложение пользователя
    }
    
    func (x *ActionRequest_UserPreferences) Reset() {
    	*x = ActionRequest_UserPreferences{}
    	mi := &file_extensions_extension_proto_msgTypes[3]
    	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    	ms.StoreMessageInfo(mi)
    }
    
    func (x *ActionRequest_UserPreferences) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ActionRequest_UserPreferences) ProtoMessage() {}
    
    func (x *ActionRequest_UserPreferences) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_extension_proto_msgTypes[3]
    	if x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ActionRequest_UserPreferences.ProtoReflect.Descriptor instead.
    func (*ActionRequest_UserPreferences) Descriptor() ([]byte, []int) {
    	return file_extensions_extension_proto_rawDescGZIP(), []int{1, 1}
    }
    
    func (x *ActionRequest_UserPreferences) GetTimezone() string {
    	if x != nil {
    		return x.Timezone
    	}
    	return ""
    }
    
    func (x *ActionRequest_UserPreferences) GetLocale() string {
    	if x != nil {
    		return x.Locale
    	}
    	return ""
    }
    
    func (x *ActionRequest_UserPreferences) GetTheme() string {
    	if x != nil {
    		return x.Theme
    	}
    	return ""
    }
    
    func (x *ActionRequest_UserPreferences) GetAgent() string {
    	if x != nil {
    		return x.Agent
    	}
    	return ""
    }
    
    var File_extensions_extension_proto protoreflect.FileDescriptor
    
    var file_extensions_extension_proto_rawDesc = []byte{
    	0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74,
    	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x65, 0x78,
    	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
    	0x6e, 0x63, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e,
    	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2, 0x07, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
    	0x12, 0x1d, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x90, 0x4e,
    	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12,
    	0x17, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09,
    	0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67,
    	0x65, 0x74, 0x18, 0xfe, 0x4e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74,
    	0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18,
    	0x88, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x13,
    	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0xd8, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
    	0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
    	0x6f, 0x6e, 0x18, 0xe2, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
    	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0xec,
    	0x4f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x05, 0x69,
    	0x6d, 0x61, 0x67, 0x65, 0x18, 0xf6, 0x4f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f,
    	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73,
    	0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67,
    	0x65, 0x12, 0x17, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x80, 0x50, 0x20, 0x03,
    	0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x04, 0x6b, 0x69,
    	0x6e, 0x64, 0x18, 0xbc, 0x50, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x69,
    	0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73,
    	0x73, 0x65, 0x73, 0x18, 0xc6, 0x50, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73,
    	0x73, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0xd0, 0x50, 0x20, 0x03,
    	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x72, 0x65, 0x66,
    	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
    	0x65, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x61, 0x6d,
    	0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xda, 0x50, 0x20,
    	0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65,
    	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
    	0x18, 0xa0, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
    	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
    	0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6e,
    	0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
    	0x18, 0x84, 0x52, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74,
    	0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x61, 0x76,
    	0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x8e, 0x52,
    	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
    	0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x72, 0x75, 0x6e,
    	0x18, 0x98, 0x52, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x72, 0x75, 0x6e,
    	0x12, 0x19, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x18, 0xa2, 0x52, 0x20, 0x01,
    	0x28, 0x08, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x2c, 0x0a, 0x04, 0x76,
    	0x69, 0x65, 0x77, 0x18, 0xac, 0x52, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x65, 0x78, 0x74,
    	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56,
    	0x69, 0x65, 0x77, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x12, 0x15, 0x0a, 0x05, 0x6f, 0x72, 0x64,
    	0x65, 0x72, 0x18, 0xb6, 0x52, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72,
    	0x22, 0x6e, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41,
    	0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x01,
    	0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10,
    	0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10,
    	0x03, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x49,
    	0x54, 0x45, 0x4d, 0x53, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x56, 0x49, 0x53, 0x49,
    	0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x07,
    	0x22, 0x58, 0x0a, 0x04, 0x56, 0x69, 0x65, 0x77, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x46, 0x41,
    	0x55, 0x4c, 0x54, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x49,
    	0x44, 0x44, 0x45, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4d,
    	0x41, 0x49, 0x4e, 0x5f, 0x4d, 0x45, 0x4e, 0x55, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x02, 0x12,
    	0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x5f, 0x4d, 0x45, 0x4e, 0x55, 0x5f, 0x42, 0x4f, 0x54,
    	0x54, 0x4f, 0x4d, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x03, 0x22, 0xb4, 0x05, 0x0a, 0x0d, 0x41,
    	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09,
    	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x09,
    	0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x06, 0x61,
    	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63,
    	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64,
    	0x18, 0x84, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64,
    	0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x8e, 0x52, 0x20, 0x01, 0x28,
    	0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c,
    	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x98, 0x52, 0x20, 0x01, 0x28, 0x09,
    	0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18,
    	0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0xa2, 0x52, 0x20, 0x01, 0x28, 0x09,
    	0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d,
    	0x5f, 0x69, 0x64, 0x73, 0x18, 0xac, 0x52, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x69, 0x74, 0x65,
    	0x6d, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69,
    	0x64, 0x18, 0xaa, 0x56, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65,
    	0x49, 0x64, 0x12, 0x17, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0xb6, 0x52, 0x20,
    	0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x6d,
    	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0xf8, 0x55, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
    	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69,
    	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
    	0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
    	0x61, 0x12, 0x32, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x82, 0x56, 0x20, 0x03, 0x28, 0x0b,
    	0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x72, 0x65, 0x66, 0x65, 0x72,
    	0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52,
    	0x04, 0x72, 0x65, 0x66, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
    	0x8c, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
    	0x2e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x66, 0x65,
    	0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3e, 0x0a,
    	0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x96, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65,
    	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
    	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66,
    	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x3b, 0x0a,
    	0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
    	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
    	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
    	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x75, 0x0a, 0x0f, 0x55, 0x73,
    	0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x0a,
    	0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x09,
    	0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x6c, 0x6f,
    	0x63, 0x61, 0x6c, 0x65, 0x18, 0xfc, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63,
    	0x61, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x86, 0x08, 0x20,
    	0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x05, 0x61, 0x67,
    	0x65, 0x6e, 0x74, 0x18, 0x90, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x67, 0x65, 0x6e,
    	0x74, 0x2a, 0x67, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x44,
    	0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x44, 0x41,
    	0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x49, 0x44, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a,
    	0x04, 0x4d, 0x41, 0x49, 0x4e, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x52, 0x41, 0x57, 0x45,
    	0x52, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54,
    	0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x41, 0x4e, 0x4b, 0x10, 0x07,
    	0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x64, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69,
    	0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73,
    	0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
    	0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
    }
    
    var (
    	file_extensions_extension_proto_rawDescOnce sync.Once
    	file_extensions_extension_proto_rawDescData = file_extensions_extension_proto_rawDesc
    )
    
    func file_extensions_extension_proto_rawDescGZIP() []byte {
    	file_extensions_extension_proto_rawDescOnce.Do(func() {
    		file_extensions_extension_proto_rawDescData = protoimpl.X.CompressGZIP(file_extensions_extension_proto_rawDescData)
    	})
    	return file_extensions_extension_proto_rawDescData
    }
    
    var file_extensions_extension_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
    var file_extensions_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
    var file_extensions_extension_proto_goTypes = []any{
    	(Target)(0),                           // 0: extensions.Target
    	(Action_Kind)(0),                      // 1: extensions.Action.Kind
    	(Action_View)(0),                      // 2: extensions.Action.View
    	(*Action)(nil),                        // 3: extensions.Action
    	(*ActionRequest)(nil),                 // 4: extensions.ActionRequest
    	nil,                                   // 5: extensions.ActionRequest.MetadataEntry
    	(*ActionRequest_UserPreferences)(nil), // 6: extensions.ActionRequest.UserPreferences
    	(*references.Reference)(nil),          // 7: content.references.Reference
    }
    var file_extensions_extension_proto_depIdxs = []int32{
    	0,  // 0: extensions.Action.target:type_name -> extensions.Target
    	7,  // 1: extensions.Action.image:type_name -> content.references.Reference
    	1,  // 2: extensions.Action.kind:type_name -> extensions.Action.Kind
    	7,  // 3: extensions.Action.refs:type_name -> content.references.Reference
    	4,  // 4: extensions.Action.request:type_name -> extensions.ActionRequest
    	2,  // 5: extensions.Action.view:type_name -> extensions.Action.View
    	5,  // 6: extensions.ActionRequest.metadata:type_name -> extensions.ActionRequest.MetadataEntry
    	7,  // 7: extensions.ActionRequest.refs:type_name -> content.references.Reference
    	7,  // 8: extensions.ActionRequest.params:type_name -> content.references.Reference
    	6,  // 9: extensions.ActionRequest.user:type_name -> extensions.ActionRequest.UserPreferences
    	10, // [10:10] is the sub-list for method output_type
    	10, // [10:10] is the sub-list for method input_type
    	10, // [10:10] is the sub-list for extension type_name
    	10, // [10:10] is the sub-list for extension extendee
    	0,  // [0:10] is the sub-list for field type_name
    }
    
    func init() { file_extensions_extension_proto_init() }
    func file_extensions_extension_proto_init() {
    	if File_extensions_extension_proto != nil {
    		return
    	}
    	type x struct{}
    	out := protoimpl.TypeBuilder{
    		File: protoimpl.DescBuilder{
    			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
    			RawDescriptor: file_extensions_extension_proto_rawDesc,
    			NumEnums:      3,
    			NumMessages:   4,
    			NumExtensions: 0,
    			NumServices:   0,
    		},
    		GoTypes:           file_extensions_extension_proto_goTypes,
    		DependencyIndexes: file_extensions_extension_proto_depIdxs,
    		EnumInfos:         file_extensions_extension_proto_enumTypes,
    		MessageInfos:      file_extensions_extension_proto_msgTypes,
    	}.Build()
    	File_extensions_extension_proto = out.File
    	file_extensions_extension_proto_rawDesc = nil
    	file_extensions_extension_proto_goTypes = nil
    	file_extensions_extension_proto_depIdxs = nil
    }