diff --git a/perxis-proto b/perxis-proto index 63073e8bf4bf41368a71e7e2e207625c4c67838d..fc23183a86463b2aa81e3b7570fad1f873c1e435 160000 --- a/perxis-proto +++ b/perxis-proto @@ -1 +1 @@ -Subproject commit 63073e8bf4bf41368a71e7e2e207625c4c67838d +Subproject commit fc23183a86463b2aa81e3b7570fad1f873c1e435 diff --git a/pkg/delivery/transport/grpc/protobuf_type_converters.microgen.go b/pkg/delivery/transport/grpc/protobuf_type_converters.microgen.go index 6961c709da405a34710e76ff6c1ad6f34c218f1b..05ba30084fe87ebb295c135f9d121de94e1d243b 100644 --- a/pkg/delivery/transport/grpc/protobuf_type_converters.microgen.go +++ b/pkg/delivery/transport/grpc/protobuf_type_converters.microgen.go @@ -199,7 +199,7 @@ func PtrItemsItemToProto(item *items.Item) (*itemspb.Item, error) { CreatedBy: item.CreatedBy, UpdatedBy: item.UpdatedBy, RevisionId: item.RevisionID, - Locale: item.Locale, + LocaleId: item.LocaleID, //Hidden, Template, Deleted - РЅРµ передается для delivery } @@ -235,7 +235,7 @@ func ProtoToPtrItemsItem(protoItem *itemspb.Item) (*items.Item, error) { CreatedBy: protoItem.CreatedBy, UpdatedBy: protoItem.UpdatedBy, RevisionID: protoItem.RevisionId, - Locale: protoItem.Locale, + LocaleID: protoItem.LocaleId, //Hidden, Template, Deleted - РЅРµ передается для delivery } diff --git a/pkg/items/errors.go b/pkg/items/errors.go index 2d6cc1cfb5bb047ccd1ec96bc073bb4de600ccef..1dfd328ff10b8c7d0e19cbe15d3d697c2ddecd64 100644 --- a/pkg/items/errors.go +++ b/pkg/items/errors.go @@ -11,4 +11,6 @@ var ( ErrNotFound = service.ErrNotFound ErrUniqueValueRequired = errors.New("unique value required") ErrTextSearchNotAvaluble = errors.New("fulltext search is not available in this collection") + + ErrCreateLocalizedItem = errors.New("create only supports default locale") ) diff --git a/pkg/items/item.go b/pkg/items/item.go index 1fc48d610401f41b333a9751a07a38455ba192db..b29dfe98d02f9a373504c6e75295d20c0ef7d76b 100644 --- a/pkg/items/item.go +++ b/pkg/items/item.go @@ -3,13 +3,14 @@ package items import ( "context" "fmt" - "reflect" "time" "git.perx.ru/perxis/perxis-go/pkg/data" "git.perx.ru/perxis/perxis-go/pkg/errors" + "git.perx.ru/perxis/perxis-go/pkg/locales" "git.perx.ru/perxis/perxis-go/pkg/schema" "git.perx.ru/perxis/perxis-go/pkg/schema/field" + "git.perx.ru/perxis/perxis-go/pkg/schema/localizer" pb "git.perx.ru/perxis/perxis-go/proto/items" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" @@ -73,7 +74,8 @@ var SystemFields = []string{ "revision_description", "data", "translations", - "locale", + "translations_ids", + "locale_id", "deleted", "hidden", "template", @@ -89,25 +91,37 @@ type Permissions struct { } type Item struct { - ID string `json:"id" bson:"_id"` // ID - Рдентификатор записи. Автоматически генерируется системой РїСЂРё сохранении первой ревизии. - SpaceID string `json:"spaceId" bson:"-"` - EnvID string `json:"envId" bson:"-"` - CollectionID string `json:"collectionId" bson:"-"` - State State `json:"state" bson:"state"` - CreatedRevAt time.Time `json:"createdRevAt,omitempty" bson:"created_rev_at,omitempty"` - CreatedBy string `json:"createdBy,omitempty" bson:"created_by,omitempty"` - CreatedAt time.Time `json:"createdAt,omitempty" bson:"created_at,omitempty"` - UpdatedAt time.Time `json:"updatedAt,omitempty" bson:"updated_at,omitempty"` - UpdatedBy string `json:"updatedBy,omitempty" bson:"updated_by,omitempty"` - Data map[string]interface{} `json:"data" bson:"data"` - Locale string `json:"locale" bson:"-"` - Translations map[string]map[string]interface{} `json:"translations" bson:"translations,omitempty"` - RevisionID string `json:"revId,omitempty" bson:"revision_id"` - RevisionDescription string `json:"revDescription,omitempty" bson:"revision_description"` - Permissions *Permissions `json:"permissions,omitempty" bson:"-"` - SearchScore float64 `json:"searchScore,omitempty" bson:"search_score,omitempty"` - - // Флаги записи + ID string `json:"id" bson:"_id"` // ID - Рдентификатор записи. Автоматически генерируется системой РїСЂРё сохранении первой ревизии. + SpaceID string `json:"spaceId" bson:"-"` + EnvID string `json:"envId" bson:"-"` + CollectionID string `json:"collectionId" bson:"-"` + State State `json:"state" bson:"state"` + CreatedRevAt time.Time `json:"createdRevAt,omitempty" bson:"created_rev_at,omitempty"` + CreatedBy string `json:"createdBy,omitempty" bson:"created_by,omitempty"` + CreatedAt time.Time `json:"createdAt,omitempty" bson:"created_at,omitempty"` + UpdatedAt time.Time `json:"updatedAt,omitempty" bson:"updated_at,omitempty"` + UpdatedBy string `json:"updatedBy,omitempty" bson:"updated_by,omitempty"` + Data map[string]interface{} `json:"data" bson:"data"` + + // РџСЂРё создании или обновлении идентификатор локали РІ котором создается запись, опционально. + // Если указан, то создается перевод для указанного языка, поле translations игнорируется + LocaleID string `json:"locale_id" bson:"-"` + + // Рспользуется РїСЂРё одновременной установке/получении нескольких переводов + // Ключами является идентификатор локали, значениями - данные переводов + Translations map[string]map[string]interface{} `json:"translations" bson:"translations,omitempty"` + + // РЎРїРёСЃРѕРє идентификаторов локалей, для которых есть переводы. + // Соответствует ключам РІ translations + TranslationsIDs []string `json:"translations_ids" bson:"translations_ids"` + + RevisionID string `json:"revId,omitempty" bson:"revision_id"` + RevisionDescription string `json:"revDescription,omitempty" bson:"revision_description"` + Permissions *Permissions `json:"permissions,omitempty" bson:"-"` + + // Релеватность элемента РїСЂРё полнотекстовом РїРѕРёСЃРєРµ + SearchScore float64 `json:"searchScore,omitempty" bson:"search_score,omitempty"` + Deleted bool `json:"deleted" bson:"deleted,omitempty"` Hidden bool `json:"hidden" bson:"hidden,omitempty"` Template bool `json:"template" bson:"template,omitempty"` @@ -153,8 +167,9 @@ func (i *Item) ToMap() map[string]interface{} { "revision_id": i.RevisionID, "revision_description": i.RevisionDescription, "data": i.Data, + "locale_id": i.LocaleID, "translations": i.Translations, - "locale": i.Locale, + "translations_ids": i.TranslationsIDs, "deleted": i.Deleted, "hidden": i.Hidden, "template": i.Template, @@ -162,23 +177,44 @@ func (i *Item) ToMap() map[string]interface{} { } } -func (i *Item) SetData(locale string, data map[string]interface{}) { - if locale != "" { +// SetData устанавливает перевод РІ РЅСѓР¶РЅРѕРµ поле записи, предварительно рассчитав РёР· него дельту РїРѕ +// отношению Рє основным данным +func (i *Item) SetData(dt map[string]interface{}, localizer *localizer.Localizer) (err error) { + if localizer != nil && localizer.LocaleID() != locales.DefaultID { if i.Translations == nil { i.Translations = make(map[string]map[string]interface{}) } - i.Translations[locale] = data + i.Translations[localizer.LocaleID()] = dt + i.Translations[localizer.LocaleID()], err = localizer.ExtractTranslation(i.Data, i.Translations) + if !data.Contains(localizer.LocaleID(), i.TranslationsIDs) { + i.TranslationsIDs = append(i.TranslationsIDs, localizer.LocaleID()) + } return } - i.Data = data + + i.Data = dt + return } -func (i *Item) GetData(locale string) map[string]interface{} { - if locale != "" && i.Translations != nil { - translation := i.Translations[locale] - return MergeData(i.Data, translation) +// GetData возвращает полные локализованные данные записи +func (i *Item) GetData(localizer *localizer.Localizer) (map[string]interface{}, error) { + if localizer != nil { + return localizer.Localize(i.Data, i.Translations) } - return i.Data + return i.Data, nil +} + +func (i *Item) Localize(localizer *localizer.Localizer) (err error) { + if localizer == nil { + return nil + } + i.Data, err = localizer.Localize(i.Data, i.Translations) + if err != nil { + return err + } + i.LocaleID = localizer.LocaleID() + i.Translations = nil + return nil } func (i Item) Encode(ctx context.Context, s *schema.Schema) (*Item, error) { @@ -216,40 +252,9 @@ func (i Item) Decode(ctx context.Context, s *schema.Schema) (res *Item, err erro return &i, nil } -// MergeData дополняет отсутствующие данные РёР· оригинальных данных -func MergeData(data ...map[string]interface{}) map[string]interface{} { - merge := make(map[string]interface{}) - for _, d := range data { - for k, v := range d { - merge[k] = v - } - } - return merge -} - -// ClearData убирает данные которые РЅРµ изменились РїРѕ сравнению СЃ оригинальными данными -func ClearData(data ...map[string]interface{}) map[string]interface{} { - var clear map[string]interface{} - - for _, d := range data { - if clear == nil { - clear = d - continue - } - - for k, v := range d { - if reflect.DeepEqual(clear[k], v) { - delete(clear, k) - } - } - } - - return clear -} - type ProcessDataFunc func(ctx context.Context, sch *schema.Schema, data map[string]interface{}) (map[string]interface{}, error) -func (i Item) ProcessData(ctx context.Context, sch *schema.Schema, fn ProcessDataFunc, locales ...string) (*Item, error) { +func (i Item) ProcessData(ctx context.Context, sch *schema.Schema, fn ProcessDataFunc, locales ...*locales.Locale) (*Item, error) { if i.Data != nil { dt, err := fn(ctx, sch, i.Data) if err != nil { @@ -260,14 +265,22 @@ func (i Item) ProcessData(ctx context.Context, sch *schema.Schema, fn ProcessDat tr := make(map[string]map[string]interface{}) for _, l := range locales { - - data := i.GetData(l) + data, err := i.GetData(localizer.NewLocalizer(localizer.Config{ + Schema: sch, + Locales: locales, + LocaleID: l.ID, + AllowNoPublished: false, + AllowDisabled: false, + })) + if err != nil { + return nil, errors.WithField(err, fmt.Sprintf("translations.%s", l.ID)) + } dt, err := fn(ctx, sch, data) if err != nil { - return nil, errors.WithField(err, fmt.Sprintf("translations.%s", l)) + return nil, errors.WithField(err, fmt.Sprintf("translations.%s", l.ID)) } - tr[l] = dt + tr[l.ID] = dt } @@ -472,7 +485,8 @@ func ItemToProto(item *Item) *pb.Item { UpdatedBy: item.UpdatedBy, RevisionId: item.RevisionID, RevisionDescription: item.RevisionDescription, - Locale: item.Locale, + LocaleId: item.LocaleID, + TranslationsIds: item.TranslationsIDs, Hidden: item.Hidden, Template: item.Template, Deleted: item.Deleted, @@ -522,7 +536,8 @@ func ItemFromProto(protoItem *pb.Item) *Item { UpdatedBy: protoItem.UpdatedBy, RevisionID: protoItem.RevisionId, RevisionDescription: protoItem.RevisionDescription, - Locale: protoItem.Locale, + LocaleID: protoItem.LocaleId, + TranslationsIDs: protoItem.TranslationsIds, Hidden: protoItem.Hidden, Template: protoItem.Template, Deleted: protoItem.Deleted, diff --git a/pkg/items/middleware/caching_middleware.go b/pkg/items/middleware/caching_middleware.go index 44f32a666d319f73b6a5f107a475f8fbe045d813..60d3bf80250843f2ddc963fe5d242e58f590a3f7 100644 --- a/pkg/items/middleware/caching_middleware.go +++ b/pkg/items/middleware/caching_middleware.go @@ -6,7 +6,9 @@ import ( "git.perx.ru/perxis/perxis-go/pkg/cache" envService "git.perx.ru/perxis/perxis-go/pkg/environments" + "git.perx.ru/perxis/perxis-go/pkg/errors" service "git.perx.ru/perxis/perxis-go/pkg/items" + "git.perx.ru/perxis/perxis-go/pkg/locales" ) func makeKey(ss ...string) string { @@ -32,20 +34,40 @@ type cachingMiddleware struct { } func (m cachingMiddleware) Get(ctx context.Context, spaceId, envId, collectionId, itemId string, options ...*service.GetOptions) (itm *service.Item, err error) { + opts := service.MergeGetOptions(options...) + localeID := opts.LocaleID + if localeID == "" { + localeID = locales.DefaultID + } - value, e := m.cache.Get(makeKey(spaceId, envId, collectionId, itemId)) - if e == nil { - return value.(*service.Item).Clone(), err + // Значение РёР· кэша РјРѕР¶РЅРѕ достать только РІ случае, РєРѕРіРґР° РЅРµ запрашиваются переводы. Для + // СЃРїРёСЃРєР° переводов (`item.Translations`) РєСЌС€ РЅРµ предусмотрен: предполагается, что это + // нечастый запрос Рё содержание кэша СЃ разными переводами себя РЅРµ оправдывает + var value = make(map[string]*service.Item) + if len(opts.TranslationsIDs) == 0 { + val, e := m.cache.Get(makeKey(spaceId, envId, collectionId, itemId)) + if e == nil { + value = val.(map[string]*service.Item) + if i, ok := value[localeID]; ok { + return i.Clone(), nil + } + } } + itm, err = m.Items.Get(ctx, spaceId, envId, collectionId, itemId, options...) if err == nil { env, err := m.envs.Get(ctx, itm.SpaceID, itm.EnvID) if err != nil { - return nil, err + return nil, errors.Wrap(err, "get environment") } - _ = m.cache.Set(makeKey(itm.SpaceID, env.ID, itm.CollectionID, itm.ID), itm) - for _, al := range env.Aliases { - _ = m.cache.Set(makeKey(itm.SpaceID, al, itm.CollectionID, itm.ID), itm) + + // Сохраняем РІ РєСЌС€ запись без Translations, поскольку значение РёР· кэша также + // возвращается только если переводы РЅРµ запрашиваются + itmCached := *itm + itmCached.Translations = nil + value[localeID] = &itmCached + for _, envID := range append(env.Aliases, env.ID) { + _ = m.cache.Set(makeKey(itm.SpaceID, envID, itm.CollectionID, itm.ID), value) } return itm.Clone(), err } @@ -53,106 +75,89 @@ func (m cachingMiddleware) Get(ctx context.Context, spaceId, envId, collectionId return nil, err } -func (m cachingMiddleware) Update(ctx context.Context, item *service.Item, options ...*service.UpdateOptions) (err error) { +func (m cachingMiddleware) invalidateCache(ctx context.Context, item *service.Item) (err error) { + env, err := m.envs.Get(ctx, item.SpaceID, item.EnvID) + if err != nil { + return errors.Wrap(err, "get environment") + } + for _, a := range append(env.Aliases, env.ID) { + key := makeKey(item.SpaceID, a, item.CollectionID, item.ID) + _ = m.cache.Remove(key) + _ = m.cachePublished.Remove(key) + } + return nil +} +// Update вызывает удаление всех сохраненных РІ кэше значений для записи: +// - Каждую РёР· локализаций записи +// - РЎ ключами, составленных РёР· разных алиасов окружения +func (m cachingMiddleware) Update(ctx context.Context, item *service.Item, options ...*service.UpdateOptions) (err error) { err = m.Items.Update(ctx, item, options...) - if err == nil { - env, err := m.envs.Get(ctx, item.SpaceID, item.EnvID) - if err != nil { - return err - } - _ = m.cache.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - for _, al := range env.Aliases { - _ = m.cache.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - } + if err != nil { + return err } - return err + return m.invalidateCache(ctx, item) } func (m cachingMiddleware) Delete(ctx context.Context, del *service.Item, options ...*service.DeleteOptions) (err error) { - err = m.Items.Delete(ctx, del, options...) - if err == nil { - env, err := m.envs.Get(ctx, del.SpaceID, del.EnvID) - if err != nil { - return err - } - _ = m.cache.Remove(makeKey(del.SpaceID, env.ID, del.CollectionID, del.ID)) - _ = m.cachePublished.Remove(makeKey(del.SpaceID, env.ID, del.CollectionID, del.ID)) - for _, al := range env.Aliases { - _ = m.cache.Remove(makeKey(del.SpaceID, al, del.CollectionID, del.ID)) - _ = m.cachePublished.Remove(makeKey(del.SpaceID, al, del.CollectionID, del.ID)) - } - + if err != nil { + return err } - return err + return m.invalidateCache(ctx, del) } func (m cachingMiddleware) Publish(ctx context.Context, item *service.Item, options ...*service.PublishOptions) (err error) { - err = m.Items.Publish(ctx, item, options...) - if err == nil { - env, err := m.envs.Get(ctx, item.SpaceID, item.EnvID) - if err != nil { - return err - } - _ = m.cache.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - for _, al := range env.Aliases { - _ = m.cache.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - } + if err != nil { + return err } - return err + return m.invalidateCache(ctx, item) } func (m cachingMiddleware) Unpublish(ctx context.Context, item *service.Item, options ...*service.UnpublishOptions) (err error) { - err = m.Items.Unpublish(ctx, item, options...) - if err == nil { - env, err := m.envs.Get(ctx, item.SpaceID, item.EnvID) - if err != nil { - return err - } - _ = m.cache.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - for _, al := range env.Aliases { - _ = m.cache.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - } + if err != nil { + return err } - return err + return m.invalidateCache(ctx, item) } func (m cachingMiddleware) GetPublished(ctx context.Context, spaceId, envId, collectionId, itemId string, options ...*service.GetPublishedOptions) (itm *service.Item, err error) { - opts := service.MergeGetPublishedOptions(options...) + localeID := opts.LocaleID + if localeID == "" { + localeID = locales.DefaultID + } - val, e := m.cachePublished.Get(makeKey(spaceId, envId, collectionId, itemId)) - if e == nil { - value := val.(map[string]*service.Item) - if i, ok := value[opts.LocaleID]; ok { - return i.Clone(), nil + // Значение РёР· кэша РјРѕР¶РЅРѕ достать только РІ случае, РєРѕРіРґР° РЅРµ запрашиваются переводы. Для + // СЃРїРёСЃРєР° переводов (`item.Translations`) РєСЌС€ РЅРµ предусмотрен: предполагается, что это + // нечастый запрос Рё содержание кэша СЃ разными переводами себя РЅРµ оправдывает + var value = make(map[string]*service.Item) + if len(opts.TranslationsIDs) == 0 { + val, e := m.cachePublished.Get(makeKey(spaceId, envId, collectionId, itemId)) + if e == nil { + value = val.(map[string]*service.Item) + if i, ok := value[localeID]; ok { + return i.Clone(), nil + } } } itm, err = m.Items.GetPublished(ctx, spaceId, envId, collectionId, itemId, opts) - if err == nil { env, err := m.envs.Get(ctx, itm.SpaceID, itm.EnvID) if err != nil { return nil, err } - var value = make(map[string]*service.Item) - if val != nil { - value = val.(map[string]*service.Item) - } - value[opts.LocaleID] = itm - _ = m.cachePublished.Set(makeKey(itm.SpaceID, env.ID, itm.CollectionID, itm.ID), value) - for _, al := range env.Aliases { - _ = m.cachePublished.Set(makeKey(itm.SpaceID, al, itm.CollectionID, itm.ID), value) + + // Сохраняем РІ РєСЌС€ запись без Translations, поскольку значение РёР· кэша также + // возвращается только если переводы РЅРµ запрашиваются + itmCached := *itm + itmCached.Translations = nil + value[localeID] = &itmCached + for _, envID := range append(env.Aliases, env.ID) { + _ = m.cachePublished.Set(makeKey(itm.SpaceID, envID, itm.CollectionID, itm.ID), value) } return itm.Clone(), err } @@ -161,19 +166,9 @@ func (m cachingMiddleware) GetPublished(ctx context.Context, spaceId, envId, col } func (m cachingMiddleware) Archive(ctx context.Context, item *service.Item, options ...*service.ArchiveOptions) (err error) { - err = m.Items.Archive(ctx, item, options...) - if err == nil { - env, err := m.envs.Get(ctx, item.SpaceID, item.EnvID) - if err != nil { - return err - } - _ = m.cache.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, env.ID, item.CollectionID, item.ID)) - for _, al := range env.Aliases { - _ = m.cache.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - _ = m.cachePublished.Remove(makeKey(item.SpaceID, al, item.CollectionID, item.ID)) - } + if err != nil { + return err } - return err + return m.invalidateCache(ctx, item) } diff --git a/pkg/items/middleware/caching_middleware_test.go b/pkg/items/middleware/caching_middleware_test.go index 20fd583eab437074f477ee2e9c0531904965f4cb..4d777647788f290acf4e55550c435fa7ba27153a 100644 --- a/pkg/items/middleware/caching_middleware_test.go +++ b/pkg/items/middleware/caching_middleware_test.go @@ -71,7 +71,8 @@ func TestItemsCache(t *testing.T) { v2, err := svc.Get(ctx, spaceID, envAlias, colID, itemID) require.NoError(t, err) - assert.Equal(t, v1, v2, "Ожидается получение объекта РёР· кеша, РїСЂРё повторном запросе.") + assert.Equal(t, v1, v2, "Ожидается получение равного объекта РёР· кеша РїСЂРё повторном запросе.") + assert.NotSame(t, v1, v2, "Создается РєРѕРїРёСЏ объекта для хранения РІ кэше") v3, err := svc.Get(ctx, spaceID, envID, colID, itemID) assert.Equal(t, v3, v2, "Ожидается получение объекта РёР· кеша, РїСЂРё запросе того Р¶Рµ объекта РїРѕ ID окружения.") diff --git a/pkg/items/mocks/Storage.go b/pkg/items/mocks/Storage.go index 583310ecf41764565afbde535cef5c779b0ab975..c8add5d9b0011ad5ad46923b1f3fe215ad45baf1 100644 --- a/pkg/items/mocks/Storage.go +++ b/pkg/items/mocks/Storage.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.2. DO NOT EDIT. +// Code generated by mockery v2.40.3. DO NOT EDIT. package mocks @@ -217,7 +217,7 @@ func (_m *Storage) CreateRevision(ctx context.Context, spaceId string, envId str } // Find provides a mock function with given fields: ctx, coll, filter, opts -func (_m *Storage) Find(ctx context.Context, coll *collections.Collection, filter *items.Filter, opts ...*items.FindOptions) ([]*items.Item, int, error) { +func (_m *Storage) Find(ctx context.Context, coll *collections.Collection, filter *items.Filter, opts ...*items.StorageFindOptions) ([]*items.Item, int, error) { _va := make([]interface{}, len(opts)) for _i := range opts { _va[_i] = opts[_i] @@ -234,10 +234,10 @@ func (_m *Storage) Find(ctx context.Context, coll *collections.Collection, filte var r0 []*items.Item var r1 int var r2 error - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindOptions) ([]*items.Item, int, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) ([]*items.Item, int, error)); ok { return rf(ctx, coll, filter, opts...) } - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindOptions) []*items.Item); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) []*items.Item); ok { r0 = rf(ctx, coll, filter, opts...) } else { if ret.Get(0) != nil { @@ -245,13 +245,13 @@ func (_m *Storage) Find(ctx context.Context, coll *collections.Collection, filte } } - if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindOptions) int); ok { + if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) int); ok { r1 = rf(ctx, coll, filter, opts...) } else { r1 = ret.Get(1).(int) } - if rf, ok := ret.Get(2).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindOptions) error); ok { + if rf, ok := ret.Get(2).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) error); ok { r2 = rf(ctx, coll, filter, opts...) } else { r2 = ret.Error(2) @@ -261,7 +261,7 @@ func (_m *Storage) Find(ctx context.Context, coll *collections.Collection, filte } // FindArchived provides a mock function with given fields: ctx, coll, filter, opts -func (_m *Storage) FindArchived(ctx context.Context, coll *collections.Collection, filter *items.Filter, opts ...*items.FindArchivedOptions) ([]*items.Item, int, error) { +func (_m *Storage) FindArchived(ctx context.Context, coll *collections.Collection, filter *items.Filter, opts ...*items.StorageFindOptions) ([]*items.Item, int, error) { _va := make([]interface{}, len(opts)) for _i := range opts { _va[_i] = opts[_i] @@ -278,10 +278,10 @@ func (_m *Storage) FindArchived(ctx context.Context, coll *collections.Collectio var r0 []*items.Item var r1 int var r2 error - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindArchivedOptions) ([]*items.Item, int, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) ([]*items.Item, int, error)); ok { return rf(ctx, coll, filter, opts...) } - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindArchivedOptions) []*items.Item); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) []*items.Item); ok { r0 = rf(ctx, coll, filter, opts...) } else { if ret.Get(0) != nil { @@ -289,13 +289,13 @@ func (_m *Storage) FindArchived(ctx context.Context, coll *collections.Collectio } } - if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindArchivedOptions) int); ok { + if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) int); ok { r1 = rf(ctx, coll, filter, opts...) } else { r1 = ret.Get(1).(int) } - if rf, ok := ret.Get(2).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindArchivedOptions) error); ok { + if rf, ok := ret.Get(2).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) error); ok { r2 = rf(ctx, coll, filter, opts...) } else { r2 = ret.Error(2) @@ -305,7 +305,7 @@ func (_m *Storage) FindArchived(ctx context.Context, coll *collections.Collectio } // FindPublished provides a mock function with given fields: ctx, coll, filter, opts -func (_m *Storage) FindPublished(ctx context.Context, coll *collections.Collection, filter *items.Filter, opts ...*items.FindPublishedOptions) ([]*items.Item, int, error) { +func (_m *Storage) FindPublished(ctx context.Context, coll *collections.Collection, filter *items.Filter, opts ...*items.StorageFindOptions) ([]*items.Item, int, error) { _va := make([]interface{}, len(opts)) for _i := range opts { _va[_i] = opts[_i] @@ -322,10 +322,10 @@ func (_m *Storage) FindPublished(ctx context.Context, coll *collections.Collecti var r0 []*items.Item var r1 int var r2 error - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindPublishedOptions) ([]*items.Item, int, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) ([]*items.Item, int, error)); ok { return rf(ctx, coll, filter, opts...) } - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindPublishedOptions) []*items.Item); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) []*items.Item); ok { r0 = rf(ctx, coll, filter, opts...) } else { if ret.Get(0) != nil { @@ -333,13 +333,13 @@ func (_m *Storage) FindPublished(ctx context.Context, coll *collections.Collecti } } - if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindPublishedOptions) int); ok { + if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) int); ok { r1 = rf(ctx, coll, filter, opts...) } else { r1 = ret.Get(1).(int) } - if rf, ok := ret.Get(2).(func(context.Context, *collections.Collection, *items.Filter, ...*items.FindPublishedOptions) error); ok { + if rf, ok := ret.Get(2).(func(context.Context, *collections.Collection, *items.Filter, ...*items.StorageFindOptions) error); ok { r2 = rf(ctx, coll, filter, opts...) } else { r2 = ret.Error(2) @@ -349,7 +349,7 @@ func (_m *Storage) FindPublished(ctx context.Context, coll *collections.Collecti } // GetRevision provides a mock function with given fields: ctx, coll, itemId, revisionId, options -func (_m *Storage) GetRevision(ctx context.Context, coll *collections.Collection, itemId string, revisionId string, options ...*items.GetRevisionOptions) (*items.Item, error) { +func (_m *Storage) GetRevision(ctx context.Context, coll *collections.Collection, itemId string, revisionId string, options ...*items.StorageFindOptions) (*items.Item, error) { _va := make([]interface{}, len(options)) for _i := range options { _va[_i] = options[_i] @@ -365,10 +365,10 @@ func (_m *Storage) GetRevision(ctx context.Context, coll *collections.Collection var r0 *items.Item var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, string, ...*items.GetRevisionOptions) (*items.Item, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, string, ...*items.StorageFindOptions) (*items.Item, error)); ok { return rf(ctx, coll, itemId, revisionId, options...) } - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, string, ...*items.GetRevisionOptions) *items.Item); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, string, ...*items.StorageFindOptions) *items.Item); ok { r0 = rf(ctx, coll, itemId, revisionId, options...) } else { if ret.Get(0) != nil { @@ -376,7 +376,7 @@ func (_m *Storage) GetRevision(ctx context.Context, coll *collections.Collection } } - if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, string, string, ...*items.GetRevisionOptions) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, string, string, ...*items.StorageFindOptions) error); ok { r1 = rf(ctx, coll, itemId, revisionId, options...) } else { r1 = ret.Error(1) @@ -411,7 +411,7 @@ func (_m *Storage) Init(ctx context.Context, collection *collections.Collection, } // ListRevisions provides a mock function with given fields: ctx, coll, itemId, options -func (_m *Storage) ListRevisions(ctx context.Context, coll *collections.Collection, itemId string, options ...*items.ListRevisionsOptions) ([]*items.Item, error) { +func (_m *Storage) ListRevisions(ctx context.Context, coll *collections.Collection, itemId string, options ...*items.StorageFindOptions) ([]*items.Item, error) { _va := make([]interface{}, len(options)) for _i := range options { _va[_i] = options[_i] @@ -427,10 +427,10 @@ func (_m *Storage) ListRevisions(ctx context.Context, coll *collections.Collecti var r0 []*items.Item var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, ...*items.ListRevisionsOptions) ([]*items.Item, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, ...*items.StorageFindOptions) ([]*items.Item, error)); ok { return rf(ctx, coll, itemId, options...) } - if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, ...*items.ListRevisionsOptions) []*items.Item); ok { + if rf, ok := ret.Get(0).(func(context.Context, *collections.Collection, string, ...*items.StorageFindOptions) []*items.Item); ok { r0 = rf(ctx, coll, itemId, options...) } else { if ret.Get(0) != nil { @@ -438,7 +438,7 @@ func (_m *Storage) ListRevisions(ctx context.Context, coll *collections.Collecti } } - if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, string, ...*items.ListRevisionsOptions) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, *collections.Collection, string, ...*items.StorageFindOptions) error); ok { r1 = rf(ctx, coll, itemId, options...) } else { r1 = ret.Error(1) diff --git a/pkg/items/options.go b/pkg/items/options.go index 0c6bd9094ff763f0e2df03fcb2525cd5555a44eb..a6a81a12c32a4373ee6b4e2159508bdae4000a9d 100644 --- a/pkg/items/options.go +++ b/pkg/items/options.go @@ -1,6 +1,9 @@ package items -import "git.perx.ru/perxis/perxis-go/pkg/options" +import ( + "git.perx.ru/perxis/perxis-go/pkg/options" + pb "git.perx.ru/perxis/perxis-go/proto/items" +) type Options struct { Env map[string]interface{} @@ -48,9 +51,27 @@ func MergeCreateOptions(opts ...*CreateOptions) *CreateOptions { return o } +func CreateOptionsToProto(opts ...*CreateOptions) *pb.CreateOptions { + if opts == nil { + return nil + } + o := MergeCreateOptions(opts...) + return &pb.CreateOptions{ + UpdateAttrs: o.UpdateAttrs, + } +} + +func CreateOptionsFromProto(opts *pb.CreateOptions) *CreateOptions { + if opts == nil { + return nil + } + return &CreateOptions{ + UpdateAttrs: opts.UpdateAttrs, + } +} + type IntrospectOptions struct { Options - Locale string } func MergeIntrospectOptions(opts ...*IntrospectOptions) *IntrospectOptions { @@ -66,6 +87,12 @@ func MergeIntrospectOptions(opts ...*IntrospectOptions) *IntrospectOptions { type GetOptions struct { Options + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string } func MergeGetOptions(opts ...*GetOptions) *GetOptions { @@ -75,17 +102,49 @@ func MergeGetOptions(opts ...*GetOptions) *GetOptions { continue } o.Options = MergeOptions(o.Options, opt.Options) + if opt.LocaleID != "" { + o.LocaleID = opt.LocaleID + } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) } return o } +func GetOptionsToProto(opts ...*GetOptions) *pb.GetOptions { + if opts == nil { + return nil + } + o := MergeGetOptions(opts...) + return &pb.GetOptions{ + LocaleId: o.LocaleID, + TranslationsIds: o.TranslationsIDs, + } +} + +func GetOptionsFromProto(opts *pb.GetOptions) *GetOptions { + if opts == nil { + return nil + } + return &GetOptions{ + LocaleID: opts.LocaleId, + TranslationsIDs: opts.TranslationsIds, + } +} + type FindOptions struct { Options options.FindOptions + Deleted bool Regular bool Hidden bool Templates bool + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string } func NewFindOptions(opts ...interface{}) *FindOptions { @@ -106,6 +165,44 @@ func MergeFindOptions(opts ...*FindOptions) *FindOptions { o.Deleted = o.Deleted || opt.Deleted o.Options = MergeOptions(o.Options, opt.Options) o.FindOptions = *options.MergeFindOptions(&o.FindOptions, &opt.FindOptions) + if opt.LocaleID != "" { + o.LocaleID = opt.LocaleID + } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) + } + return o +} + +func FindOptionsToProto(opts ...*FindOptions) *pb.FindOptions { + if opts == nil { + return nil + } + o := MergeFindOptions(opts...) + return &pb.FindOptions{ + Deleted: o.Deleted, + Regular: o.Regular, + Hidden: o.Hidden, + Templates: o.Templates, + LocaleId: o.LocaleID, + TranslationsIds: o.TranslationsIDs, + Options: options.FindOptionsToPB(&o.FindOptions), + } +} + +func FindOptionsFromProto(opts *pb.FindOptions) *FindOptions { + if opts == nil { + return nil + } + o := &FindOptions{ + Deleted: opts.Deleted, + Regular: opts.Regular, + Hidden: opts.Hidden, + Templates: opts.Templates, + LocaleID: opts.LocaleId, + TranslationsIDs: opts.TranslationsIds, + } + if fo := options.FindOptionsFromPB(opts.Options); fo != nil { + o.FindOptions = *fo } return o } @@ -131,6 +228,25 @@ func MergeUpdateOptions(opts ...*UpdateOptions) *UpdateOptions { return o } +func UpdateOptionsToProto(opts ...*UpdateOptions) *pb.UpdateOptions { + if opts == nil { + return nil + } + o := MergeUpdateOptions(opts...) + return &pb.UpdateOptions{ + UpdateAttrs: o.UpdateAttrs, + } +} + +func UpdateOptionsFromProto(opts *pb.UpdateOptions) *UpdateOptions { + if opts == nil { + return nil + } + return &UpdateOptions{ + UpdateAttrs: opts.UpdateAttrs, + } +} + type DeleteOptions struct { Options @@ -156,6 +272,27 @@ func MergeDeleteOptions(options ...*DeleteOptions) *DeleteOptions { return o } +func DeleteOptionsToProto(opts ...*DeleteOptions) *pb.DeleteOptions { + if opts == nil { + return nil + } + o := MergeDeleteOptions(opts...) + return &pb.DeleteOptions{ + UpdateAttrs: o.UpdateAttrs, + Erase: o.Erase, + } +} + +func DeleteOptionsFromProto(opts *pb.DeleteOptions) *DeleteOptions { + if opts == nil { + return nil + } + return &DeleteOptions{ + UpdateAttrs: opts.UpdateAttrs, + Erase: opts.Erase, + } +} + type SoftDeleteOptions struct { Options } @@ -236,7 +373,12 @@ func MergeUnpublishOptions(opts ...*UnpublishOptions) *UnpublishOptions { type GetPublishedOptions struct { Options + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string } func NewGetPublishedOptions(oo ...interface{}) *GetPublishedOptions { @@ -245,6 +387,8 @@ func NewGetPublishedOptions(oo ...interface{}) *GetPublishedOptions { switch o := o.(type) { case string: fo.LocaleID = o + case []string: + fo.TranslationsIDs = o } } return fo @@ -260,17 +404,46 @@ func MergeGetPublishedOptions(opts ...*GetPublishedOptions) *GetPublishedOptions if opt.LocaleID != "" { o.LocaleID = opt.LocaleID } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) } return o } +func GetPublishedOptionsToProto(opts ...*GetPublishedOptions) *pb.GetPublishedOptions { + if opts == nil { + return nil + } + o := MergeGetPublishedOptions(opts...) + return &pb.GetPublishedOptions{ + LocaleId: o.LocaleID, + TranslationsIds: o.TranslationsIDs, + } +} + +func GetPublishedOptionsFromProto(opts *pb.GetPublishedOptions) *GetPublishedOptions { + if opts == nil { + return nil + } + return &GetPublishedOptions{ + LocaleID: opts.LocaleId, + TranslationsIDs: opts.TranslationsIds, + } +} + type FindPublishedOptions struct { Options options.FindOptions - LocaleID string + + Deleted bool Regular bool Hidden bool Templates bool + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string } func NewFindPublishedOptions(opts ...interface{}) *FindPublishedOptions { @@ -301,12 +474,51 @@ func MergeFindPublishedOptions(opts ...*FindPublishedOptions) *FindPublishedOpti if opt.LocaleID != "" { o.LocaleID = opt.LocaleID } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) + } + return o +} + +func FindPublishedOptionsToProto(opts ...*FindPublishedOptions) *pb.FindPublishedOptions { + if opts == nil { + return nil + } + o := MergeFindPublishedOptions(opts...) + return &pb.FindPublishedOptions{ + Regular: o.Regular, + Hidden: o.Hidden, + Templates: o.Templates, + LocaleId: o.LocaleID, + TranslationsIds: o.TranslationsIDs, + Options: options.FindOptionsToPB(&o.FindOptions), + } +} + +func FindPublishedOptionsFromProto(opts *pb.FindPublishedOptions) *FindPublishedOptions { + if opts == nil { + return nil + } + o := &FindPublishedOptions{ + Regular: opts.Regular, + Hidden: opts.Hidden, + Templates: opts.Templates, + LocaleID: opts.LocaleId, + TranslationsIDs: opts.TranslationsIds, + } + if fo := options.FindOptionsFromPB(opts.Options); fo != nil { + o.FindOptions = *fo } return o } type GetRevisionOptions struct { Options + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string } func MergeGetRevisionOptions(opts ...*GetRevisionOptions) *GetRevisionOptions { @@ -316,6 +528,33 @@ func MergeGetRevisionOptions(opts ...*GetRevisionOptions) *GetRevisionOptions { continue } o.Options = MergeOptions(o.Options, opt.Options) + + if opt.LocaleID != "" { + o.LocaleID = opt.LocaleID + } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) + } + return o +} + +func GetRevisionOptionsToProto(opts ...*GetRevisionOptions) *pb.GetRevisionOptions { + if opts == nil { + return nil + } + o := MergeGetRevisionOptions(opts...) + return &pb.GetRevisionOptions{ + LocaleId: o.LocaleID, + TranslationsIds: o.TranslationsIDs, + } +} + +func GetRevisionOptionsFromProto(opts *pb.GetRevisionOptions) *GetRevisionOptions { + if opts == nil { + return nil + } + o := &GetRevisionOptions{ + LocaleID: opts.LocaleId, + TranslationsIDs: opts.TranslationsIds, } return o } @@ -323,6 +562,12 @@ func MergeGetRevisionOptions(opts ...*GetRevisionOptions) *GetRevisionOptions { type ListRevisionsOptions struct { Options options.FindOptions + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string } func MergeListRevisionsOptions(opts ...*ListRevisionsOptions) *ListRevisionsOptions { @@ -333,6 +578,37 @@ func MergeListRevisionsOptions(opts ...*ListRevisionsOptions) *ListRevisionsOpti } o.Options = MergeOptions(o.Options, opt.Options) o.FindOptions = *options.MergeFindOptions(&o.FindOptions, &opt.FindOptions) + + if opt.LocaleID != "" { + o.LocaleID = opt.LocaleID + } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) + } + return o +} + +func ListRevisionsOptionsToProto(opts ...*ListRevisionsOptions) *pb.ListRevisionsOptions { + if opts == nil { + return nil + } + o := MergeListRevisionsOptions(opts...) + return &pb.ListRevisionsOptions{ + LocaleId: o.LocaleID, + TranslationsIds: o.TranslationsIDs, + Options: options.FindOptionsToPB(&o.FindOptions), + } +} + +func ListRevisionsOptionsFromProto(opts *pb.ListRevisionsOptions) *ListRevisionsOptions { + if opts == nil { + return nil + } + o := &ListRevisionsOptions{ + LocaleID: opts.LocaleId, + TranslationsIDs: opts.TranslationsIds, + } + if fo := options.FindOptionsFromPB(opts.Options); fo != nil { + o.FindOptions = *fo } return o } @@ -355,6 +631,12 @@ func MergeArchiveOptions(opts ...*ArchiveOptions) *ArchiveOptions { type FindArchivedOptions struct { Options options.FindOptions + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string } func NewFindArchivedOptions(oo ...interface{}) *FindArchivedOptions { @@ -371,6 +653,37 @@ func MergeFindArchivedOptions(opts ...*FindArchivedOptions) *FindArchivedOptions } o.Options = MergeOptions(o.Options, opt.Options) o.FindOptions = *options.MergeFindOptions(o.FindOptions, opt.FindOptions) + + if opt.LocaleID != "" { + o.LocaleID = opt.LocaleID + } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) + } + return o +} + +func FindArchivedOptionsToProto(opts ...*FindArchivedOptions) *pb.FindArchivedOptions { + if opts == nil { + return nil + } + o := MergeFindArchivedOptions(opts...) + return &pb.FindArchivedOptions{ + LocaleId: o.LocaleID, + TranslationsIds: o.TranslationsIDs, + Options: options.FindOptionsToPB(&o.FindOptions), + } +} + +func FindArchivedOptionsFromProto(opts *pb.FindArchivedOptions) *FindArchivedOptions { + if opts == nil { + return nil + } + o := &FindArchivedOptions{ + LocaleID: opts.LocaleId, + TranslationsIDs: opts.TranslationsIds, + } + if fo := options.FindOptionsFromPB(opts.Options); fo != nil { + o.FindOptions = *fo } return o } diff --git a/pkg/items/storage.go b/pkg/items/storage.go index 19b98c9c840c2c4a9d2e38a443555eb02116e7fc..2c2d041f8944a69093a5a401f102b294ec9a2071 100644 --- a/pkg/items/storage.go +++ b/pkg/items/storage.go @@ -32,17 +32,17 @@ type Storage interface { // CreateRevision - перенести ревизию РІ коллекцию Revisions CreateRevision(ctx context.Context, spaceId, envId, collectionId, itemId string) error - // Update - Обновление текущей ревизии или создание РЅРѕРІРѕР№, если РІ опциях передан флаг `ReplacePublishedRevision` + // Update - Обновление текущей ревизии Update(ctx context.Context, coll *collections.Collection, item *Item, options ...*UpdateOptions) error // Find - РїРѕРёСЃРє записей РїРѕ рабочим записям, коллекция 'items' - Find(ctx context.Context, coll *collections.Collection, filter *Filter, opts ...*FindOptions) ([]*Item, int, error) + Find(ctx context.Context, coll *collections.Collection, filter *Filter, opts ...*StorageFindOptions) ([]*Item, int, error) // GetRevision - РїРѕРёСЃРє РѕРґРЅРѕР№ ревизии РѕРґРЅРѕР№ записи - GetRevision(ctx context.Context, coll *collections.Collection, itemId, revisionId string, options ...*GetRevisionOptions) (*Item, error) + GetRevision(ctx context.Context, coll *collections.Collection, itemId, revisionId string, options ...*StorageFindOptions) (*Item, error) // ListRevisions - РїРѕРёСЃРє всех ревизий РѕРґРЅРѕР№ записи - ListRevisions(ctx context.Context, coll *collections.Collection, itemId string, options ...*ListRevisionsOptions) ([]*Item, error) + ListRevisions(ctx context.Context, coll *collections.Collection, itemId string, options ...*StorageFindOptions) ([]*Item, error) // ChangeRevisionsItemID - заменить ID элемента Сѓ его ревизий ChangeRevisionsItemID(ctx context.Context, spaceId, envId, collectionId, itemId, newItemId string) error @@ -54,7 +54,7 @@ type Storage interface { Unpublish(ctx context.Context, unpublished *Item, options ...*UnpublishOptions) error // FindPublished - РїРѕРёСЃРє РїРѕ опубликованным записям, коллекция 'items_published' - FindPublished(ctx context.Context, coll *collections.Collection, filter *Filter, opts ...*FindPublishedOptions) ([]*Item, int, error) + FindPublished(ctx context.Context, coll *collections.Collection, filter *Filter, opts ...*StorageFindOptions) ([]*Item, int, error) // Archive - архивация записи Archive(ctx context.Context, archived *Item, options ...*ArchiveOptions) error @@ -63,7 +63,7 @@ type Storage interface { Unarchive(ctx context.Context, unarchived *Item, options ...*UnarchiveOptions) error // FindArchived - РїРѕРёСЃРє РїРѕ архивированным записям, коллекция 'items_archived' - FindArchived(ctx context.Context, coll *collections.Collection, filter *Filter, opts ...*FindArchivedOptions) ([]*Item, int, error) + FindArchived(ctx context.Context, coll *collections.Collection, filter *Filter, opts ...*StorageFindOptions) ([]*Item, int, error) // RemoveItems - удаление записи РёР· коллекций Items RemoveItems(ctx context.Context, spaceId, envId, collectionId, itemId string, options ...*DeleteOptions) error diff --git a/pkg/items/storage_options.go b/pkg/items/storage_options.go new file mode 100644 index 0000000000000000000000000000000000000000..a56232fb22b2cac5a8555952b5898bf229fc875a --- /dev/null +++ b/pkg/items/storage_options.go @@ -0,0 +1,94 @@ +package items + +import ( + "git.perx.ru/perxis/perxis-go/pkg/locales" + "git.perx.ru/perxis/perxis-go/pkg/options" +) + +type StorageFindOptions struct { + Options + options.FindOptions + + Deleted bool + Regular bool + Hidden bool + Templates bool + + // Язык перевода, который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + LocaleID string + + // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат + TranslationsIDs []string + + // РЎРїРёСЃРѕРє локалей пространства + Locales []*locales.Locale +} + +func NewStorageFindOptions(opts ...interface{}) *StorageFindOptions { + fo := &StorageFindOptions{} + for _, o := range opts { + switch o := o.(type) { + case *FindOptions: + fo.Options = o.Options + fo.FindOptions = o.FindOptions + fo.Deleted = o.Deleted + fo.Regular = o.Regular + fo.Hidden = o.Hidden + fo.Templates = o.Templates + fo.LocaleID = o.LocaleID + fo.TranslationsIDs = o.TranslationsIDs + case *FindPublishedOptions: + fo.Options = o.Options + fo.FindOptions = o.FindOptions + fo.Deleted = o.Deleted + fo.Regular = o.Regular + fo.Hidden = o.Hidden + fo.Templates = o.Templates + fo.LocaleID = o.LocaleID + fo.TranslationsIDs = o.TranslationsIDs + case *FindArchivedOptions: + fo.Options = o.Options + fo.FindOptions = o.FindOptions + fo.LocaleID = o.LocaleID + fo.TranslationsIDs = o.TranslationsIDs + case *GetRevisionOptions: + fo.Options = o.Options + fo.LocaleID = o.LocaleID + fo.TranslationsIDs = o.TranslationsIDs + case *ListRevisionsOptions: + fo.Options = o.Options + fo.FindOptions = o.FindOptions + fo.LocaleID = o.LocaleID + fo.TranslationsIDs = o.TranslationsIDs + case *locales.Locale: + fo.Locales = []*locales.Locale{o} + case []*locales.Locale: + fo.Locales = o + } + } + return fo +} + +func MergeStorageFindOptions(opts ...*StorageFindOptions) *StorageFindOptions { + o := NewStorageFindOptions() + for _, opt := range opts { + if opt == nil { + continue + } + + o.Options = MergeOptions(o.Options, opt.Options) + o.FindOptions = *options.MergeFindOptions(&o.FindOptions, &opt.FindOptions) + + o.Deleted = o.Deleted || opt.Deleted + o.Regular = o.Regular || opt.Regular + o.Templates = o.Templates || opt.Templates + o.Hidden = o.Hidden || opt.Hidden + + if opt.LocaleID != "" { + o.LocaleID = opt.LocaleID + } + o.TranslationsIDs = append(o.TranslationsIDs, opt.TranslationsIDs...) + o.Locales = append(o.Locales, opt.Locales...) + } + return o +} diff --git a/pkg/items/transport/grpc/protobuf_endpoint_converters.microgen.go b/pkg/items/transport/grpc/protobuf_endpoint_converters.microgen.go index b111a6160dba31fb7adb2919a66d8e3bf620ef16..47208ce50e9e869b21c5db611ad89fa66eef8289 100644 --- a/pkg/items/transport/grpc/protobuf_endpoint_converters.microgen.go +++ b/pkg/items/transport/grpc/protobuf_endpoint_converters.microgen.go @@ -7,6 +7,7 @@ import ( "context" "errors" + "git.perx.ru/perxis/perxis-go/pkg/items" transport "git.perx.ru/perxis/perxis-go/pkg/items/transport" pb "git.perx.ru/perxis/perxis-go/proto/items" empty "google.golang.org/protobuf/types/known/emptypb" @@ -37,11 +38,16 @@ func _Encode_Get_Request(ctx context.Context, request interface{}) (interface{}, return nil, errors.New("nil GetRequest") } req := request.(*transport.GetRequest) + opts, err := GetOptionsToProto(req.Options) + if err != nil { + return nil, err + } return &pb.GetRequest{ CollectionId: req.CollectionId, EnvId: req.EnvId, ItemId: req.ItemId, SpaceId: req.SpaceId, + Options: opts, }, nil } @@ -54,15 +60,11 @@ func _Encode_Find_Request(ctx context.Context, request interface{}) (interface{} if err != nil { return nil, err } - reqOptions, err := ElPtrFindOptionsToProto(req.Options) - if err != nil { - return nil, err - } return &pb.FindRequest{ CollectionId: req.CollectionId, EnvId: req.EnvId, SpaceId: req.SpaceId, - Options: reqOptions, + Options: items.FindOptionsToProto(req.Options...), Filter: reqFilter, }, nil } @@ -212,12 +214,17 @@ func _Encode_GetRevision_Request(ctx context.Context, request interface{}) (inte return nil, errors.New("nil GetRevisionRequest") } req := request.(*transport.GetRevisionRequest) + opts, err := GetRevisionOptionsToProto(req.Options) + if err != nil { + return nil, err + } return &pb.GetRevisionRequest{ CollectionId: req.CollectionId, EnvId: req.EnvId, ItemId: req.ItemId, RevisionId: req.RevisionId, SpaceId: req.SpaceId, + Options: opts, }, nil } @@ -226,7 +233,7 @@ func _Encode_ListRevisions_Request(ctx context.Context, request interface{}) (in return nil, errors.New("nil ListRevisionsRequest") } req := request.(*transport.ListRevisionsRequest) - reqOptions, err := ElPtrListRevisionsOptionsToProto(req.Options) + reqOptions, err := ListRevisionsOptionsToProto(req.Options) if err != nil { return nil, err } @@ -260,7 +267,7 @@ func _Encode_FindArchived_Request(ctx context.Context, request interface{}) (int if err != nil { return nil, err } - reqOptions, err := ElPtrFindArchivedOptionsToProto(req.Options) + reqOptions, err := FindArchivedOptionsToProto(req.Options) if err != nil { return nil, err } @@ -515,11 +522,16 @@ func _Decode_Get_Request(ctx context.Context, request interface{}) (interface{}, return nil, errors.New("nil GetRequest") } req := request.(*pb.GetRequest) + opts, err := ProtoToGetOptions(req.Options) + if err != nil { + return nil, err + } return &transport.GetRequest{ CollectionId: string(req.CollectionId), EnvId: string(req.EnvId), ItemId: string(req.ItemId), SpaceId: string(req.SpaceId), + Options: opts, }, nil } @@ -734,12 +746,17 @@ func _Decode_GetRevision_Request(ctx context.Context, request interface{}) (inte return nil, errors.New("nil GetRevisionRequest") } req := request.(*pb.GetRevisionRequest) + opts, err := ProtoToGetRevisionOptions(req.Options) + if err != nil { + return nil, err + } return &transport.GetRevisionRequest{ CollectionId: string(req.CollectionId), EnvId: string(req.EnvId), ItemId: string(req.ItemId), RevisionId: string(req.RevisionId), SpaceId: string(req.SpaceId), + Options: opts, }, nil } @@ -748,7 +765,7 @@ func _Decode_ListRevisions_Request(ctx context.Context, request interface{}) (in return nil, errors.New("nil ListRevisionsRequest") } req := request.(*pb.ListRevisionsRequest) - reqOptions, err := ProtoToElPtrListRevisionsOptions(req.Options) + reqOptions, err := ProtoToListRevisionsOptions(req.Options) if err != nil { return nil, err } @@ -782,7 +799,7 @@ func _Decode_FindArchived_Request(ctx context.Context, request interface{}) (int if err != nil { return nil, err } - reqOptions, err := ProtoToElPtrFindArchivedOptions(req.Options) + reqOptions, err := ProtoToFindArchivedOptions(req.Options) if err != nil { return nil, err } diff --git a/pkg/items/transport/grpc/protobuf_type_converters.microgen.go b/pkg/items/transport/grpc/protobuf_type_converters.microgen.go index ade05bfffeb4a1c745f80338e7faac2287b067a2..1aba486580e9f94882b29d254b1fffab39c8270c 100644 --- a/pkg/items/transport/grpc/protobuf_type_converters.microgen.go +++ b/pkg/items/transport/grpc/protobuf_type_converters.microgen.go @@ -176,80 +176,43 @@ func ProtoToListPtrItem(protoItems []*pb.Item) ([]*service.Item, error) { } func ProtoToCreateOptions(protoOptions *pb.CreateOptions) ([]*service.CreateOptions, error) { - if protoOptions == nil { - return nil, nil - } - return []*service.CreateOptions{ - {UpdateAttrs: protoOptions.UpdateAttrs}, - }, nil + return []*service.CreateOptions{service.CreateOptionsFromProto(protoOptions)}, nil } func CreateOptionsToProto(options []*service.CreateOptions) (*pb.CreateOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeCreateOptions(options...) - - return &pb.CreateOptions{ - UpdateAttrs: opts.UpdateAttrs, - }, nil + return service.CreateOptionsToProto(options...), nil } -func ElPtrGetOptionsToProto() { - panic("function not provided") // TODO: provide converter +func GetRevisionOptionsToProto(options []*service.GetRevisionOptions) (*pb.GetRevisionOptions, error) { + return service.GetRevisionOptionsToProto(options...), nil } -func ProtoToElPtrGetOptions() { - panic("function not provided") // TODO: provide converter +func ProtoToGetRevisionOptions(protoOptions *pb.GetRevisionOptions) ([]*service.GetRevisionOptions, error) { + return []*service.GetRevisionOptions{service.GetRevisionOptionsFromProto(protoOptions)}, nil } -func ElPtrFindOptionsToProto(options []*service.FindOptions) (*pb.FindOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeFindOptions(options...) +func ListRevisionsOptionsToProto(options []*service.ListRevisionsOptions) (*pb.ListRevisionsOptions, error) { + return service.ListRevisionsOptionsToProto(options...), nil +} - var err error +func ProtoToListRevisionsOptions(protoOptions *pb.ListRevisionsOptions) ([]*service.ListRevisionsOptions, error) { + return []*service.ListRevisionsOptions{service.ListRevisionsOptionsFromProto(protoOptions)}, nil +} - fo := &pb.FindOptions{ - Deleted: opts.Deleted, - Regular: opts.Regular, - Hidden: opts.Hidden, - Templates: opts.Templates, - } +func GetOptionsToProto(options []*service.GetOptions) (*pb.GetOptions, error) { + return service.GetOptionsToProto(options...), nil +} - fo.Options, err = PtrServicesFindOptionsToProto(&opts.FindOptions) - if err != nil { - return nil, err - } +func ProtoToGetOptions(protoOptions *pb.GetOptions) ([]*service.GetOptions, error) { + return []*service.GetOptions{service.GetOptionsFromProto(protoOptions)}, nil +} - return fo, nil +func ElPtrFindOptionsToProto(options []*service.FindOptions) (*pb.FindOptions, error) { + return service.FindOptionsToProto(options...), nil } func ProtoToElPtrFindOptions(protoOptions *pb.FindOptions) ([]*service.FindOptions, error) { - if protoOptions == nil { - return nil, nil - } - - var err error - fo := &service.FindOptions{ - Deleted: protoOptions.Deleted, - Regular: protoOptions.Regular, - Hidden: protoOptions.Hidden, - Templates: protoOptions.Templates, - } - - o, err := ProtoToPtrServicesFindOptions(protoOptions.Options) - if err != nil { - return nil, err - } - if o != nil { - fo.FindOptions = *o - } - - return []*service.FindOptions{fo}, nil + return []*service.FindOptions{service.FindOptionsFromProto(protoOptions)}, nil } func ProtoToUpdateOptions(protoOptions *pb.UpdateOptions) ([]*service.UpdateOptions, error) { @@ -262,40 +225,18 @@ func ProtoToUpdateOptions(protoOptions *pb.UpdateOptions) ([]*service.UpdateOpti } func UpdateOptionsToProto(options []*service.UpdateOptions) (*pb.UpdateOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeUpdateOptions(options...) - - return &pb.UpdateOptions{ - UpdateAttrs: opts.UpdateAttrs, - }, nil + return service.UpdateOptionsToProto(options...), nil } func ProtoToDeleteOptions(protoOptions *pb.DeleteOptions) ([]*service.DeleteOptions, error) { if protoOptions == nil { return nil, nil } - return []*service.DeleteOptions{ - { - UpdateAttrs: protoOptions.UpdateAttrs, - Erase: protoOptions.Erase, - }, - }, nil + return []*service.DeleteOptions{service.DeleteOptionsFromProto(protoOptions)}, nil } func DeleteOptionsToProto(options []*service.DeleteOptions) (*pb.DeleteOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeDeleteOptions(options...) - - return &pb.DeleteOptions{ - UpdateAttrs: opts.UpdateAttrs, - Erase: opts.Erase, - }, nil + return service.DeleteOptionsToProto(options...), nil } func ProtoToUndeleteOptions(protoOptions *pb.UndeleteOptions) ([]*service.UndeleteOptions, error) { @@ -363,70 +304,19 @@ func UnpublishOptionsToProto(options []*service.UnpublishOptions) (*pb.Unpublish } func ElPtrGetPublishedOptionsToProto(options []*service.GetPublishedOptions) (*pb.GetPublishedOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeGetPublishedOptions(options...) - - return &pb.GetPublishedOptions{LocaleId: opts.LocaleID}, nil + return service.GetPublishedOptionsToProto(options...), nil } func ProtoToElPtrGetPublishedOptions(protoOptions *pb.GetPublishedOptions) ([]*service.GetPublishedOptions, error) { - if protoOptions == nil { - return nil, nil - } - - return []*service.GetPublishedOptions{{LocaleID: protoOptions.LocaleId}}, nil + return []*service.GetPublishedOptions{service.GetPublishedOptionsFromProto(protoOptions)}, nil } func ElPtrFindPublishedOptionsToProto(options []*service.FindPublishedOptions) (*pb.FindPublishedOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeFindPublishedOptions(options...) - - var err error - - fo := &pb.FindPublishedOptions{ - Regular: opts.Regular, - Hidden: opts.Hidden, - Templates: opts.Templates, - } - fo.Options, err = PtrServicesFindOptionsToProto(&opts.FindOptions) - if err != nil { - return nil, err - } - - fo.LocaleId = opts.LocaleID - - return fo, nil + return service.FindPublishedOptionsToProto(options...), nil } func ProtoToElPtrFindPublishedOptions(protoOptions *pb.FindPublishedOptions) ([]*service.FindPublishedOptions, error) { - if protoOptions == nil { - return nil, nil - } - - var err error - fo := &service.FindPublishedOptions{ - Regular: protoOptions.Regular, - Hidden: protoOptions.Hidden, - Templates: protoOptions.Templates, - } - - o, err := ProtoToPtrServicesFindOptions(protoOptions.Options) - if err != nil { - return nil, err - } - if o != nil { - fo.FindOptions = *o - } - - fo.LocaleID = protoOptions.LocaleId - - return []*service.FindPublishedOptions{fo}, nil + return []*service.FindPublishedOptions{service.FindPublishedOptionsFromProto(protoOptions)}, nil } func ElPtrGetRevisionOptionsToProto() { @@ -437,44 +327,6 @@ func ProtoToElPtrGetRevisionOptions() { panic("function not provided") // TODO: provide converter } -func ElPtrListRevisionsOptionsToProto(options []*service.ListRevisionsOptions) (*pb.ListRevisionsOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeListRevisionsOptions(options...) - - var err error - - fo := &pb.ListRevisionsOptions{} - - fo.Options, err = PtrServicesFindOptionsToProto(&opts.FindOptions) - if err != nil { - return nil, err - } - - return fo, nil -} - -func ProtoToElPtrListRevisionsOptions(protoOptions *pb.ListRevisionsOptions) ([]*service.ListRevisionsOptions, error) { - if protoOptions == nil { - return nil, nil - } - - var err error - fo := &service.ListRevisionsOptions{} - - o, err := ProtoToPtrServicesFindOptions(protoOptions.Options) - if err != nil { - return nil, err - } - if o != nil { - fo.FindOptions = *o - } - - return []*service.ListRevisionsOptions{fo}, nil -} - func ElPtrArchiveOptionsToProto() { panic("function not provided") // TODO: provide converter } @@ -483,42 +335,12 @@ func ProtoToElPtrArchiveOptions() { panic("function not provided") // TODO: provide converter } -func ElPtrFindArchivedOptionsToProto(options []*service.FindArchivedOptions) (*pb.FindArchivedOptions, error) { - if options == nil { - return nil, nil - } - - opts := service.MergeFindArchivedOptions(options...) - - var err error - - fo := &pb.FindArchivedOptions{} - - fo.Options, err = PtrServicesFindOptionsToProto(&opts.FindOptions) - if err != nil { - return nil, err - } - - return fo, nil +func FindArchivedOptionsToProto(options []*service.FindArchivedOptions) (*pb.FindArchivedOptions, error) { + return service.FindArchivedOptionsToProto(options...), nil } -func ProtoToElPtrFindArchivedOptions(protoOptions *pb.FindArchivedOptions) ([]*service.FindArchivedOptions, error) { - if protoOptions == nil { - return nil, nil - } - - var err error - fo := &service.FindArchivedOptions{} - - o, err := ProtoToPtrServicesFindOptions(protoOptions.Options) - if err != nil { - return nil, err - } - if o != nil { - fo.FindOptions = *o - } - - return []*service.FindArchivedOptions{fo}, nil +func ProtoToFindArchivedOptions(protoOptions *pb.FindArchivedOptions) ([]*service.FindArchivedOptions, error) { + return []*service.FindArchivedOptions{service.FindArchivedOptionsFromProto(protoOptions)}, nil } func ElPtrUnarchiveOptionsToProto() { diff --git a/proto/items/items.pb.go b/proto/items/items.pb.go index f75ca1e5196411ddb39d466619747947363a1aa4..c71dcb83bf0e0b1db89ab919391f79efa43bc6e4 100644 --- a/proto/items/items.pb.go +++ b/proto/items/items.pb.go @@ -8,8 +8,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.25.1 +// protoc-gen-go v1.34.2 +// protoc v5.27.0 // source: items/items.proto package items @@ -366,26 +366,33 @@ type Item struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - SpaceId string `protobuf:"bytes,2,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"` - EnvId string `protobuf:"bytes,3,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"` - CollectionId string `protobuf:"bytes,4,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` - State Item_State `protobuf:"varint,5,opt,name=state,proto3,enum=content.items.Item_State" json:"state,omitempty"` - CreatedRevAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_rev_at,json=createdRevAt,proto3" json:"created_rev_at,omitempty"` // дата создания текущей ревизии - CreatedBy string `protobuf:"bytes,7,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` // id пользователя создавшего первую ревизию - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // дата создания первой ревизии - UpdatedBy string `protobuf:"bytes,9,opt,name=updated_by,json=updatedBy,proto3" json:"updated_by,omitempty"` // id пользователя обновившего текущую ревизию - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // дата обновления текущей ревизии - Data *structpb.Struct `protobuf:"bytes,11,opt,name=data,proto3" json:"data,omitempty"` - Translations map[string]*structpb.Struct `protobuf:"bytes,12,rep,name=translations,proto3" json:"translations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - RevisionId string `protobuf:"bytes,13,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"` - RevisionDescription string `protobuf:"bytes,14,opt,name=revision_description,json=revisionDescription,proto3" json:"revision_description,omitempty"` - Locale string `protobuf:"bytes,18,opt,name=locale,proto3" json:"locale,omitempty"` - Deleted bool `protobuf:"varint,19,opt,name=deleted,proto3" json:"deleted,omitempty"` - Hidden bool `protobuf:"varint,20,opt,name=hidden,proto3" json:"hidden,omitempty"` - Template bool `protobuf:"varint,21,opt,name=template,proto3" json:"template,omitempty"` - Permissions *Permissions `protobuf:"bytes,22,opt,name=permissions,proto3" json:"permissions,omitempty"` - SearchScore float64 `protobuf:"fixed64,23,opt,name=search_score,json=searchScore,proto3" json:"search_score,omitempty"` // релеватность элемента РїСЂРё полнотекстовом РїРѕРёСЃРєРµ + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + SpaceId string `protobuf:"bytes,2,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"` + EnvId string `protobuf:"bytes,3,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"` + CollectionId string `protobuf:"bytes,4,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` + State Item_State `protobuf:"varint,5,opt,name=state,proto3,enum=content.items.Item_State" json:"state,omitempty"` + CreatedRevAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_rev_at,json=createdRevAt,proto3" json:"created_rev_at,omitempty"` // дата создания текущей ревизии + CreatedBy string `protobuf:"bytes,7,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` // id пользователя создавшего первую ревизию + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // дата создания первой ревизии + UpdatedBy string `protobuf:"bytes,9,opt,name=updated_by,json=updatedBy,proto3" json:"updated_by,omitempty"` // id пользователя обновившего текущую ревизию + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // дата обновления текущей ревизии + Data *structpb.Struct `protobuf:"bytes,11,opt,name=data,proto3" json:"data,omitempty"` + RevisionId string `protobuf:"bytes,13,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"` + RevisionDescription string `protobuf:"bytes,14,opt,name=revision_description,json=revisionDescription,proto3" json:"revision_description,omitempty"` + Deleted bool `protobuf:"varint,19,opt,name=deleted,proto3" json:"deleted,omitempty"` + Hidden bool `protobuf:"varint,20,opt,name=hidden,proto3" json:"hidden,omitempty"` + Template bool `protobuf:"varint,21,opt,name=template,proto3" json:"template,omitempty"` + Permissions *Permissions `protobuf:"bytes,22,opt,name=permissions,proto3" json:"permissions,omitempty"` + SearchScore float64 `protobuf:"fixed64,23,opt,name=search_score,json=searchScore,proto3" json:"search_score,omitempty"` // релеватность элемента РїСЂРё полнотекстовом РїРѕРёСЃРєРµ + // РџСЂРё создании или обновлении идентификатор локали РІ котором создается запись, опционально. + // Если указан, то создается перевод для указанного языка, поле translations игнорируется + LocaleId string `protobuf:"bytes,100,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // идентификатор локали полученной записи + // Позволяет одновременно установить/получить несколько переводов Рё производить манипуляции СЃ переводами + // Ключами является идентификатор локали, значениями - данные переводы + Translations map[string]*structpb.Struct `protobuf:"bytes,12,rep,name=translations,proto3" json:"translations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // СЃРїРёСЃРѕРє идентификаторов локалей для которых есть переводы + // соотвествует ключам РІ translations + TranslationsIds []string `protobuf:"bytes,101,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` } func (x *Item) Reset() { @@ -497,13 +504,6 @@ func (x *Item) GetData() *structpb.Struct { return nil } -func (x *Item) GetTranslations() map[string]*structpb.Struct { - if x != nil { - return x.Translations - } - return nil -} - func (x *Item) GetRevisionId() string { if x != nil { return x.RevisionId @@ -518,13 +518,6 @@ func (x *Item) GetRevisionDescription() string { return "" } -func (x *Item) GetLocale() string { - if x != nil { - return x.Locale - } - return "" -} - func (x *Item) GetDeleted() bool { if x != nil { return x.Deleted @@ -560,6 +553,27 @@ func (x *Item) GetSearchScore() float64 { return 0 } +func (x *Item) GetLocaleId() string { + if x != nil { + return x.LocaleId + } + return "" +} + +func (x *Item) GetTranslations() map[string]*structpb.Struct { + if x != nil { + return x.Translations + } + return nil +} + +func (x *Item) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + type EventCreate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1030,11 +1044,13 @@ type FindOptions struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` - Deleted bool `protobuf:"varint,3,opt,name=deleted,proto3" json:"deleted,omitempty"` - Regular bool `protobuf:"varint,4,opt,name=regular,proto3" json:"regular,omitempty"` - Hidden bool `protobuf:"varint,5,opt,name=hidden,proto3" json:"hidden,omitempty"` - Templates bool `protobuf:"varint,6,opt,name=templates,proto3" json:"templates,omitempty"` + Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Deleted bool `protobuf:"varint,3,opt,name=deleted,proto3" json:"deleted,omitempty"` + Regular bool `protobuf:"varint,4,opt,name=regular,proto3" json:"regular,omitempty"` + Hidden bool `protobuf:"varint,5,opt,name=hidden,proto3" json:"hidden,omitempty"` + Templates bool `protobuf:"varint,6,opt,name=templates,proto3" json:"templates,omitempty"` + LocaleId string `protobuf:"bytes,7,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // Язык перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + TranslationsIds []string `protobuf:"bytes,8,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат } func (x *FindOptions) Reset() { @@ -1104,6 +1120,20 @@ func (x *FindOptions) GetTemplates() bool { return false } +func (x *FindOptions) GetLocaleId() string { + if x != nil { + return x.LocaleId + } + return "" +} + +func (x *FindOptions) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + type UpdateOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1156,7 +1186,8 @@ type GetPublishedOptions struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LocaleId string `protobuf:"bytes,1,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` + LocaleId string `protobuf:"bytes,7,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // Язык перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + TranslationsIds []string `protobuf:"bytes,8,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат } func (x *GetPublishedOptions) Reset() { @@ -1198,6 +1229,13 @@ func (x *GetPublishedOptions) GetLocaleId() string { return "" } +func (x *GetPublishedOptions) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + type DeleteOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1399,11 +1437,13 @@ type FindPublishedOptions struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` - LocaleId string `protobuf:"bytes,3,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` - Regular bool `protobuf:"varint,4,opt,name=regular,proto3" json:"regular,omitempty"` - Hidden bool `protobuf:"varint,5,opt,name=hidden,proto3" json:"hidden,omitempty"` - Templates bool `protobuf:"varint,6,opt,name=templates,proto3" json:"templates,omitempty"` + Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + // string locale_id = 3; // язык для РїРѕРёСЃРєР° переводов. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + Regular bool `protobuf:"varint,4,opt,name=regular,proto3" json:"regular,omitempty"` + Hidden bool `protobuf:"varint,5,opt,name=hidden,proto3" json:"hidden,omitempty"` + Templates bool `protobuf:"varint,6,opt,name=templates,proto3" json:"templates,omitempty"` + LocaleId string `protobuf:"bytes,7,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // Язык перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + TranslationsIds []string `protobuf:"bytes,8,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат } func (x *FindPublishedOptions) Reset() { @@ -1445,13 +1485,6 @@ func (x *FindPublishedOptions) GetOptions() *common.FindOptions { return nil } -func (x *FindPublishedOptions) GetLocaleId() string { - if x != nil { - return x.LocaleId - } - return "" -} - func (x *FindPublishedOptions) GetRegular() bool { if x != nil { return x.Regular @@ -1473,12 +1506,28 @@ func (x *FindPublishedOptions) GetTemplates() bool { return false } +func (x *FindPublishedOptions) GetLocaleId() string { + if x != nil { + return x.LocaleId + } + return "" +} + +func (x *FindPublishedOptions) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + type FindArchivedOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + LocaleId string `protobuf:"bytes,7,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // Язык перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + TranslationsIds []string `protobuf:"bytes,8,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат } func (x *FindArchivedOptions) Reset() { @@ -1520,12 +1569,28 @@ func (x *FindArchivedOptions) GetOptions() *common.FindOptions { return nil } +func (x *FindArchivedOptions) GetLocaleId() string { + if x != nil { + return x.LocaleId + } + return "" +} + +func (x *FindArchivedOptions) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + type ListRevisionsOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Options *common.FindOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + LocaleId string `protobuf:"bytes,7,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // Язык перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + TranslationsIds []string `protobuf:"bytes,8,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат } func (x *ListRevisionsOptions) Reset() { @@ -1567,6 +1632,75 @@ func (x *ListRevisionsOptions) GetOptions() *common.FindOptions { return nil } +func (x *ListRevisionsOptions) GetLocaleId() string { + if x != nil { + return x.LocaleId + } + return "" +} + +func (x *ListRevisionsOptions) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + +type GetRevisionOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LocaleId string `protobuf:"bytes,7,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // Язык перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + TranslationsIds []string `protobuf:"bytes,8,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат +} + +func (x *GetRevisionOptions) Reset() { + *x = GetRevisionOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_items_items_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRevisionOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRevisionOptions) ProtoMessage() {} + +func (x *GetRevisionOptions) ProtoReflect() protoreflect.Message { + mi := &file_items_items_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRevisionOptions.ProtoReflect.Descriptor instead. +func (*GetRevisionOptions) Descriptor() ([]byte, []int) { + return file_items_items_proto_rawDescGZIP(), []int{23} +} + +func (x *GetRevisionOptions) GetLocaleId() string { + if x != nil { + return x.LocaleId + } + return "" +} + +func (x *GetRevisionOptions) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + // Fields - поля которые должны быть возвращены или вычислены РІ результате. // Ключ (string) - РёРјСЏ поля РїРѕРґ которым будет добавляться результат. // Значение (string) - является выражением, вычисление которого сформирует результат @@ -1589,7 +1723,7 @@ type AggregateOptions struct { func (x *AggregateOptions) Reset() { *x = AggregateOptions{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[23] + mi := &file_items_items_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1602,7 +1736,7 @@ func (x *AggregateOptions) String() string { func (*AggregateOptions) ProtoMessage() {} func (x *AggregateOptions) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[23] + mi := &file_items_items_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1615,7 +1749,7 @@ func (x *AggregateOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use AggregateOptions.ProtoReflect.Descriptor instead. func (*AggregateOptions) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{23} + return file_items_items_proto_rawDescGZIP(), []int{24} } func (x *AggregateOptions) GetFields() map[string]string { @@ -1636,7 +1770,7 @@ type AggregatePublishedOptions struct { func (x *AggregatePublishedOptions) Reset() { *x = AggregatePublishedOptions{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[24] + mi := &file_items_items_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1649,7 +1783,7 @@ func (x *AggregatePublishedOptions) String() string { func (*AggregatePublishedOptions) ProtoMessage() {} func (x *AggregatePublishedOptions) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[24] + mi := &file_items_items_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1662,7 +1796,7 @@ func (x *AggregatePublishedOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use AggregatePublishedOptions.ProtoReflect.Descriptor instead. func (*AggregatePublishedOptions) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{24} + return file_items_items_proto_rawDescGZIP(), []int{25} } func (x *AggregatePublishedOptions) GetFields() map[string]string { @@ -1684,7 +1818,7 @@ type CreateRequest struct { func (x *CreateRequest) Reset() { *x = CreateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[25] + mi := &file_items_items_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1697,7 +1831,7 @@ func (x *CreateRequest) String() string { func (*CreateRequest) ProtoMessage() {} func (x *CreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[25] + mi := &file_items_items_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1710,7 +1844,7 @@ func (x *CreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRequest.ProtoReflect.Descriptor instead. func (*CreateRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{25} + return file_items_items_proto_rawDescGZIP(), []int{26} } func (x *CreateRequest) GetItem() *Item { @@ -1738,7 +1872,7 @@ type CreateResponse struct { func (x *CreateResponse) Reset() { *x = CreateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[26] + mi := &file_items_items_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1751,7 +1885,7 @@ func (x *CreateResponse) String() string { func (*CreateResponse) ProtoMessage() {} func (x *CreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[26] + mi := &file_items_items_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1764,7 +1898,7 @@ func (x *CreateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateResponse.ProtoReflect.Descriptor instead. func (*CreateResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{26} + return file_items_items_proto_rawDescGZIP(), []int{27} } func (x *CreateResponse) GetCreated() *Item { @@ -1785,7 +1919,7 @@ type IntrospectRequest struct { func (x *IntrospectRequest) Reset() { *x = IntrospectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[27] + mi := &file_items_items_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1798,7 +1932,7 @@ func (x *IntrospectRequest) String() string { func (*IntrospectRequest) ProtoMessage() {} func (x *IntrospectRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[27] + mi := &file_items_items_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1811,7 +1945,7 @@ func (x *IntrospectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IntrospectRequest.ProtoReflect.Descriptor instead. func (*IntrospectRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{27} + return file_items_items_proto_rawDescGZIP(), []int{28} } func (x *IntrospectRequest) GetItem() *Item { @@ -1834,7 +1968,7 @@ type IntrospectResponse struct { func (x *IntrospectResponse) Reset() { *x = IntrospectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[28] + mi := &file_items_items_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1847,7 +1981,7 @@ func (x *IntrospectResponse) String() string { func (*IntrospectResponse) ProtoMessage() {} func (x *IntrospectResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[28] + mi := &file_items_items_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1860,7 +1994,7 @@ func (x *IntrospectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IntrospectResponse.ProtoReflect.Descriptor instead. func (*IntrospectResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{28} + return file_items_items_proto_rawDescGZIP(), []int{29} } func (x *IntrospectResponse) GetItem() *Item { @@ -1884,21 +2018,77 @@ func (x *IntrospectResponse) GetValidationErrors() []*common.Error_BadRequest_Fi return nil } +type GetOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LocaleId string `protobuf:"bytes,7,opt,name=locale_id,json=localeId,proto3" json:"locale_id,omitempty"` // Язык перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию + TranslationsIds []string `protobuf:"bytes,8,rep,name=translations_ids,json=translationsIds,proto3" json:"translations_ids,omitempty"` // РЎРїРёСЃРѕРє идентификаторов переводов/локалей, которых должны быть включены РІ результат +} + +func (x *GetOptions) Reset() { + *x = GetOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_items_items_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOptions) ProtoMessage() {} + +func (x *GetOptions) ProtoReflect() protoreflect.Message { + mi := &file_items_items_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOptions.ProtoReflect.Descriptor instead. +func (*GetOptions) Descriptor() ([]byte, []int) { + return file_items_items_proto_rawDescGZIP(), []int{30} +} + +func (x *GetOptions) GetLocaleId() string { + if x != nil { + return x.LocaleId + } + return "" +} + +func (x *GetOptions) GetTranslationsIds() []string { + if x != nil { + return x.TranslationsIds + } + return nil +} + type GetRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SpaceId string `protobuf:"bytes,1,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"` - EnvId string `protobuf:"bytes,2,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"` - CollectionId string `protobuf:"bytes,3,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` - ItemId string `protobuf:"bytes,4,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` + SpaceId string `protobuf:"bytes,1,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"` + EnvId string `protobuf:"bytes,2,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"` + CollectionId string `protobuf:"bytes,3,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` + ItemId string `protobuf:"bytes,4,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` + Options *GetOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` } func (x *GetRequest) Reset() { *x = GetRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[29] + mi := &file_items_items_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1911,7 +2101,7 @@ func (x *GetRequest) String() string { func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[29] + mi := &file_items_items_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1924,7 +2114,7 @@ func (x *GetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRequest.ProtoReflect.Descriptor instead. func (*GetRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{29} + return file_items_items_proto_rawDescGZIP(), []int{31} } func (x *GetRequest) GetSpaceId() string { @@ -1955,6 +2145,13 @@ func (x *GetRequest) GetItemId() string { return "" } +func (x *GetRequest) GetOptions() *GetOptions { + if x != nil { + return x.Options + } + return nil +} + type GetResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1966,7 +2163,7 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[30] + mi := &file_items_items_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1979,7 +2176,7 @@ func (x *GetResponse) String() string { func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[30] + mi := &file_items_items_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1992,7 +2189,7 @@ func (x *GetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. func (*GetResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{30} + return file_items_items_proto_rawDescGZIP(), []int{32} } func (x *GetResponse) GetItem() *Item { @@ -2017,7 +2214,7 @@ type FindRequest struct { func (x *FindRequest) Reset() { *x = FindRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[31] + mi := &file_items_items_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2030,7 +2227,7 @@ func (x *FindRequest) String() string { func (*FindRequest) ProtoMessage() {} func (x *FindRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[31] + mi := &file_items_items_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2043,7 +2240,7 @@ func (x *FindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindRequest.ProtoReflect.Descriptor instead. func (*FindRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{31} + return file_items_items_proto_rawDescGZIP(), []int{33} } func (x *FindRequest) GetSpaceId() string { @@ -2093,7 +2290,7 @@ type FindResponse struct { func (x *FindResponse) Reset() { *x = FindResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[32] + mi := &file_items_items_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2106,7 +2303,7 @@ func (x *FindResponse) String() string { func (*FindResponse) ProtoMessage() {} func (x *FindResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[32] + mi := &file_items_items_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2119,7 +2316,7 @@ func (x *FindResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindResponse.ProtoReflect.Descriptor instead. func (*FindResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{32} + return file_items_items_proto_rawDescGZIP(), []int{34} } func (x *FindResponse) GetItems() []*Item { @@ -2148,7 +2345,7 @@ type UpdateRequest struct { func (x *UpdateRequest) Reset() { *x = UpdateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[33] + mi := &file_items_items_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2161,7 +2358,7 @@ func (x *UpdateRequest) String() string { func (*UpdateRequest) ProtoMessage() {} func (x *UpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[33] + mi := &file_items_items_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2174,7 +2371,7 @@ func (x *UpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRequest.ProtoReflect.Descriptor instead. func (*UpdateRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{33} + return file_items_items_proto_rawDescGZIP(), []int{35} } func (x *UpdateRequest) GetItem() *Item { @@ -2203,7 +2400,7 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[34] + mi := &file_items_items_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2216,7 +2413,7 @@ func (x *DeleteRequest) String() string { func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[34] + mi := &file_items_items_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2229,7 +2426,7 @@ func (x *DeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead. func (*DeleteRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{34} + return file_items_items_proto_rawDescGZIP(), []int{36} } func (x *DeleteRequest) GetItem() *Item { @@ -2258,7 +2455,7 @@ type UndeleteRequest struct { func (x *UndeleteRequest) Reset() { *x = UndeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[35] + mi := &file_items_items_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2271,7 +2468,7 @@ func (x *UndeleteRequest) String() string { func (*UndeleteRequest) ProtoMessage() {} func (x *UndeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[35] + mi := &file_items_items_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2284,7 +2481,7 @@ func (x *UndeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UndeleteRequest.ProtoReflect.Descriptor instead. func (*UndeleteRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{35} + return file_items_items_proto_rawDescGZIP(), []int{37} } func (x *UndeleteRequest) GetItem() *Item { @@ -2313,7 +2510,7 @@ type PublishRequest struct { func (x *PublishRequest) Reset() { *x = PublishRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[36] + mi := &file_items_items_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2326,7 +2523,7 @@ func (x *PublishRequest) String() string { func (*PublishRequest) ProtoMessage() {} func (x *PublishRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[36] + mi := &file_items_items_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2339,7 +2536,7 @@ func (x *PublishRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishRequest.ProtoReflect.Descriptor instead. func (*PublishRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{36} + return file_items_items_proto_rawDescGZIP(), []int{38} } func (x *PublishRequest) GetItem() *Item { @@ -2368,7 +2565,7 @@ type UnpublishRequest struct { func (x *UnpublishRequest) Reset() { *x = UnpublishRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[37] + mi := &file_items_items_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2381,7 +2578,7 @@ func (x *UnpublishRequest) String() string { func (*UnpublishRequest) ProtoMessage() {} func (x *UnpublishRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[37] + mi := &file_items_items_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2394,7 +2591,7 @@ func (x *UnpublishRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnpublishRequest.ProtoReflect.Descriptor instead. func (*UnpublishRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{37} + return file_items_items_proto_rawDescGZIP(), []int{39} } func (x *UnpublishRequest) GetItem() *Item { @@ -2426,7 +2623,7 @@ type GetPublishedRequest struct { func (x *GetPublishedRequest) Reset() { *x = GetPublishedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[38] + mi := &file_items_items_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2439,7 +2636,7 @@ func (x *GetPublishedRequest) String() string { func (*GetPublishedRequest) ProtoMessage() {} func (x *GetPublishedRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[38] + mi := &file_items_items_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2452,7 +2649,7 @@ func (x *GetPublishedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPublishedRequest.ProtoReflect.Descriptor instead. func (*GetPublishedRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{38} + return file_items_items_proto_rawDescGZIP(), []int{40} } func (x *GetPublishedRequest) GetSpaceId() string { @@ -2501,7 +2698,7 @@ type GetPublishedResponse struct { func (x *GetPublishedResponse) Reset() { *x = GetPublishedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[39] + mi := &file_items_items_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2514,7 +2711,7 @@ func (x *GetPublishedResponse) String() string { func (*GetPublishedResponse) ProtoMessage() {} func (x *GetPublishedResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[39] + mi := &file_items_items_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2527,7 +2724,7 @@ func (x *GetPublishedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPublishedResponse.ProtoReflect.Descriptor instead. func (*GetPublishedResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{39} + return file_items_items_proto_rawDescGZIP(), []int{41} } func (x *GetPublishedResponse) GetItem() *Item { @@ -2552,7 +2749,7 @@ type FindPublishedRequest struct { func (x *FindPublishedRequest) Reset() { *x = FindPublishedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[40] + mi := &file_items_items_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2565,7 +2762,7 @@ func (x *FindPublishedRequest) String() string { func (*FindPublishedRequest) ProtoMessage() {} func (x *FindPublishedRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[40] + mi := &file_items_items_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2578,7 +2775,7 @@ func (x *FindPublishedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindPublishedRequest.ProtoReflect.Descriptor instead. func (*FindPublishedRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{40} + return file_items_items_proto_rawDescGZIP(), []int{42} } func (x *FindPublishedRequest) GetSpaceId() string { @@ -2628,7 +2825,7 @@ type FindPublishedResponse struct { func (x *FindPublishedResponse) Reset() { *x = FindPublishedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[41] + mi := &file_items_items_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2641,7 +2838,7 @@ func (x *FindPublishedResponse) String() string { func (*FindPublishedResponse) ProtoMessage() {} func (x *FindPublishedResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[41] + mi := &file_items_items_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2654,7 +2851,7 @@ func (x *FindPublishedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindPublishedResponse.ProtoReflect.Descriptor instead. func (*FindPublishedResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{41} + return file_items_items_proto_rawDescGZIP(), []int{43} } func (x *FindPublishedResponse) GetItems() []*Item { @@ -2686,7 +2883,7 @@ type AggregateRequest struct { func (x *AggregateRequest) Reset() { *x = AggregateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[42] + mi := &file_items_items_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2699,7 +2896,7 @@ func (x *AggregateRequest) String() string { func (*AggregateRequest) ProtoMessage() {} func (x *AggregateRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[42] + mi := &file_items_items_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2712,7 +2909,7 @@ func (x *AggregateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AggregateRequest.ProtoReflect.Descriptor instead. func (*AggregateRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{42} + return file_items_items_proto_rawDescGZIP(), []int{44} } func (x *AggregateRequest) GetSpaceId() string { @@ -2763,7 +2960,7 @@ type AggregateResponse struct { func (x *AggregateResponse) Reset() { *x = AggregateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[43] + mi := &file_items_items_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2776,7 +2973,7 @@ func (x *AggregateResponse) String() string { func (*AggregateResponse) ProtoMessage() {} func (x *AggregateResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[43] + mi := &file_items_items_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2789,7 +2986,7 @@ func (x *AggregateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AggregateResponse.ProtoReflect.Descriptor instead. func (*AggregateResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{43} + return file_items_items_proto_rawDescGZIP(), []int{45} } func (x *AggregateResponse) GetResult() *structpb.Struct { @@ -2814,7 +3011,7 @@ type AggregatePublishedRequest struct { func (x *AggregatePublishedRequest) Reset() { *x = AggregatePublishedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[44] + mi := &file_items_items_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2827,7 +3024,7 @@ func (x *AggregatePublishedRequest) String() string { func (*AggregatePublishedRequest) ProtoMessage() {} func (x *AggregatePublishedRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[44] + mi := &file_items_items_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2840,7 +3037,7 @@ func (x *AggregatePublishedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AggregatePublishedRequest.ProtoReflect.Descriptor instead. func (*AggregatePublishedRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{44} + return file_items_items_proto_rawDescGZIP(), []int{46} } func (x *AggregatePublishedRequest) GetSpaceId() string { @@ -2889,7 +3086,7 @@ type AggregatePublishedResponse struct { func (x *AggregatePublishedResponse) Reset() { *x = AggregatePublishedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[45] + mi := &file_items_items_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2902,7 +3099,7 @@ func (x *AggregatePublishedResponse) String() string { func (*AggregatePublishedResponse) ProtoMessage() {} func (x *AggregatePublishedResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[45] + mi := &file_items_items_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2915,7 +3112,7 @@ func (x *AggregatePublishedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AggregatePublishedResponse.ProtoReflect.Descriptor instead. func (*AggregatePublishedResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{45} + return file_items_items_proto_rawDescGZIP(), []int{47} } func (x *AggregatePublishedResponse) GetResult() *structpb.Struct { @@ -2930,17 +3127,18 @@ type GetRevisionRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SpaceId string `protobuf:"bytes,1,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"` - EnvId string `protobuf:"bytes,2,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"` - CollectionId string `protobuf:"bytes,3,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` - ItemId string `protobuf:"bytes,4,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` - RevisionId string `protobuf:"bytes,5,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"` + SpaceId string `protobuf:"bytes,1,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"` + EnvId string `protobuf:"bytes,2,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"` + CollectionId string `protobuf:"bytes,3,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` + ItemId string `protobuf:"bytes,4,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"` + RevisionId string `protobuf:"bytes,5,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"` + Options *GetRevisionOptions `protobuf:"bytes,10,opt,name=options,proto3" json:"options,omitempty"` } func (x *GetRevisionRequest) Reset() { *x = GetRevisionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[46] + mi := &file_items_items_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2953,7 +3151,7 @@ func (x *GetRevisionRequest) String() string { func (*GetRevisionRequest) ProtoMessage() {} func (x *GetRevisionRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[46] + mi := &file_items_items_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2966,7 +3164,7 @@ func (x *GetRevisionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRevisionRequest.ProtoReflect.Descriptor instead. func (*GetRevisionRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{46} + return file_items_items_proto_rawDescGZIP(), []int{48} } func (x *GetRevisionRequest) GetSpaceId() string { @@ -3004,6 +3202,13 @@ func (x *GetRevisionRequest) GetRevisionId() string { return "" } +func (x *GetRevisionRequest) GetOptions() *GetRevisionOptions { + if x != nil { + return x.Options + } + return nil +} + type GetRevisionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3015,7 +3220,7 @@ type GetRevisionResponse struct { func (x *GetRevisionResponse) Reset() { *x = GetRevisionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[47] + mi := &file_items_items_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3028,7 +3233,7 @@ func (x *GetRevisionResponse) String() string { func (*GetRevisionResponse) ProtoMessage() {} func (x *GetRevisionResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[47] + mi := &file_items_items_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3041,7 +3246,7 @@ func (x *GetRevisionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRevisionResponse.ProtoReflect.Descriptor instead. func (*GetRevisionResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{47} + return file_items_items_proto_rawDescGZIP(), []int{49} } func (x *GetRevisionResponse) GetItem() *Item { @@ -3066,7 +3271,7 @@ type ListRevisionsRequest struct { func (x *ListRevisionsRequest) Reset() { *x = ListRevisionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[48] + mi := &file_items_items_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3079,7 +3284,7 @@ func (x *ListRevisionsRequest) String() string { func (*ListRevisionsRequest) ProtoMessage() {} func (x *ListRevisionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[48] + mi := &file_items_items_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3092,7 +3297,7 @@ func (x *ListRevisionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRevisionsRequest.ProtoReflect.Descriptor instead. func (*ListRevisionsRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{48} + return file_items_items_proto_rawDescGZIP(), []int{50} } func (x *ListRevisionsRequest) GetSpaceId() string { @@ -3141,7 +3346,7 @@ type ListRevisionsResponse struct { func (x *ListRevisionsResponse) Reset() { *x = ListRevisionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[49] + mi := &file_items_items_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3154,7 +3359,7 @@ func (x *ListRevisionsResponse) String() string { func (*ListRevisionsResponse) ProtoMessage() {} func (x *ListRevisionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[49] + mi := &file_items_items_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3167,7 +3372,7 @@ func (x *ListRevisionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRevisionsResponse.ProtoReflect.Descriptor instead. func (*ListRevisionsResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{49} + return file_items_items_proto_rawDescGZIP(), []int{51} } func (x *ListRevisionsResponse) GetItems() []*Item { @@ -3190,7 +3395,7 @@ type ArchiveRequest struct { func (x *ArchiveRequest) Reset() { *x = ArchiveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[50] + mi := &file_items_items_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3203,7 +3408,7 @@ func (x *ArchiveRequest) String() string { func (*ArchiveRequest) ProtoMessage() {} func (x *ArchiveRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[50] + mi := &file_items_items_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3216,7 +3421,7 @@ func (x *ArchiveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ArchiveRequest.ProtoReflect.Descriptor instead. func (*ArchiveRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{50} + return file_items_items_proto_rawDescGZIP(), []int{52} } func (x *ArchiveRequest) GetItem() *Item { @@ -3237,7 +3442,7 @@ type UnarchiveRequest struct { func (x *UnarchiveRequest) Reset() { *x = UnarchiveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[51] + mi := &file_items_items_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3250,7 +3455,7 @@ func (x *UnarchiveRequest) String() string { func (*UnarchiveRequest) ProtoMessage() {} func (x *UnarchiveRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[51] + mi := &file_items_items_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3263,7 +3468,7 @@ func (x *UnarchiveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnarchiveRequest.ProtoReflect.Descriptor instead. func (*UnarchiveRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{51} + return file_items_items_proto_rawDescGZIP(), []int{53} } func (x *UnarchiveRequest) GetItem() *Item { @@ -3288,7 +3493,7 @@ type FindArchivedRequest struct { func (x *FindArchivedRequest) Reset() { *x = FindArchivedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[52] + mi := &file_items_items_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3301,7 +3506,7 @@ func (x *FindArchivedRequest) String() string { func (*FindArchivedRequest) ProtoMessage() {} func (x *FindArchivedRequest) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[52] + mi := &file_items_items_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3314,7 +3519,7 @@ func (x *FindArchivedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindArchivedRequest.ProtoReflect.Descriptor instead. func (*FindArchivedRequest) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{52} + return file_items_items_proto_rawDescGZIP(), []int{54} } func (x *FindArchivedRequest) GetSpaceId() string { @@ -3364,7 +3569,7 @@ type FindArchivedResponse struct { func (x *FindArchivedResponse) Reset() { *x = FindArchivedResponse{} if protoimpl.UnsafeEnabled { - mi := &file_items_items_proto_msgTypes[53] + mi := &file_items_items_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3377,7 +3582,7 @@ func (x *FindArchivedResponse) String() string { func (*FindArchivedResponse) ProtoMessage() {} func (x *FindArchivedResponse) ProtoReflect() protoreflect.Message { - mi := &file_items_items_proto_msgTypes[53] + mi := &file_items_items_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3390,7 +3595,7 @@ func (x *FindArchivedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindArchivedResponse.ProtoReflect.Descriptor instead. func (*FindArchivedResponse) Descriptor() ([]byte, []int) { - return file_items_items_proto_rawDescGZIP(), []int{53} + return file_items_items_proto_rawDescGZIP(), []int{55} } func (x *FindArchivedResponse) GetItems() []*Item { @@ -3445,7 +3650,7 @@ var file_items_items_proto_rawDesc = []byte{ 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0xbf, 0x07, 0x0a, 0x04, + 0x0a, 0x68, 0x61, 0x72, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0xef, 0x07, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, @@ -3474,29 +3679,32 @@ var file_items_items_proto_rawDesc = []byte{ 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, + 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x58, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, + 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x65, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x49, 0x64, 0x73, 0x1a, 0x58, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, @@ -3553,7 +3761,7 @@ var file_items_items_proto_rawDesc = []byte{ 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x01, 0x71, 0x22, 0x32, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x73, 0x22, 0xa6, 0x01, + 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x73, 0x22, 0xee, 0x01, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, @@ -3564,248 +3772,267 @@ var file_items_items_proto_rawDesc = []byte{ 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x73, 0x22, 0x32, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x48, - 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x64, 0x73, 0x22, 0x32, + 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x65, 0x72, 0x61, 0x73, 0x65, 0x22, 0x34, 0x0a, 0x0f, 0x55, 0x6e, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x73, 0x22, 0x33, - 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x73, 0x22, 0x35, 0x0a, 0x10, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x14, 0x46, - 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, - 0x64, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, - 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, - 0x44, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x4f, + 0x72, 0x73, 0x22, 0x5d, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x64, + 0x73, 0x22, 0x48, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x61, 0x73, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x72, 0x61, 0x73, 0x65, 0x22, 0x34, 0x0a, 0x0f, 0x55, + 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x73, 0x22, 0x33, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, + 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x73, 0x22, 0x35, 0x0a, 0x10, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x73, 0x22, 0xdd, 0x01, + 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92, 0x01, 0x0a, - 0x10, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, - 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 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, 0x22, 0xa4, 0x01, 0x0a, 0x19, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x4c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, - 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x39, 0x0a, - 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 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, 0x22, 0x70, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, - 0x65, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3f, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x3c, 0x0a, 0x11, 0x49, - 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xab, 0x01, 0x0a, 0x12, 0x49, 0x6e, - 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x12, 0x54, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x42, 0x61, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x7c, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, - 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, + 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x64, 0x73, 0x22, 0x8c, 0x01, + 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, + 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x64, 0x73, 0x22, 0x8d, 0x01, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, + 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x64, 0x73, 0x22, 0x5c, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x64, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x10, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x43, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 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, 0x22, + 0xa4, 0x01, 0x0a, 0x19, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4c, 0x0a, + 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 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, 0x22, 0x70, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x3c, 0x0a, 0x11, 0x49, 0x6e, 0x74, + 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xab, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x72, + 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, + 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, + 0x54, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x54, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, + 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x64, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x36, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, + 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xc9, 0x01, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xc9, 0x01, - 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x70, 0x0a, 0x0d, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, + 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x70, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x36, + 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x74, 0x0a, 0x0f, 0x55, 0x6e, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, - 0x69, 0x74, 0x65, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x0d, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, - 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x74, - 0x0a, 0x0f, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x72, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, + 0x69, 0x74, 0x65, 0x6d, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x72, + 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x76, 0x0a, 0x10, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, - 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x76, 0x0a, 0x10, 0x55, 0x6e, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, - 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x2e, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, + 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, + 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, - 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xdb, 0x01, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, - 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x58, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, - 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, - 0xd3, 0x01, 0x0a, 0x10, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x44, 0x0a, 0x11, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xe5, 0x01, 0x0a, 0x19, - 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x42, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x4d, 0x0a, 0x1a, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xc5, 0x01, 0x0a, 0x14, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x22, 0x3f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, + 0x6d, 0x22, 0xdb, 0x01, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x58, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xd3, 0x01, 0x0a, 0x10, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, + 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x44, 0x0a, 0x11, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xe5, 0x01, 0x0a, 0x19, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4d, 0x0a, + 0x1a, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xe2, 0x01, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, @@ -3813,135 +4040,153 @@ var file_items_items_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, - 0x6d, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x42, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x39, 0x0a, 0x0e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x6d, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x3e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, - 0x6d, 0x22, 0x3b, 0x0a, 0x10, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xd9, - 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x46, 0x69, - 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x6d, 0x22, 0xc5, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x42, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, - 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x32, 0x93, 0x0b, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x47, 0x0a, - 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x03, 0x47, - 0x65, 0x74, 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x04, 0x46, - 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, - 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x39, 0x0a, + 0x0e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x27, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x3b, 0x0a, 0x10, 0x55, 0x6e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, + 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, + 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x57, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x32, 0x93, 0x0b, 0x0a, 0x05, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x47, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, + 0x0a, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x72, + 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x41, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x08, 0x55, 0x6e, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, + 0x42, 0x0a, 0x07, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x2e, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x22, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, + 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x12, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x28, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x59, 0x0a, + 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x22, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x40, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x00, 0x12, 0x44, 0x0a, 0x08, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1e, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, - 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, - 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x64, 0x12, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, - 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, - 0x09, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x6b, 0x0a, 0x12, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, - 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x41, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x1f, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, - 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x30, 0x5a, 0x2e, 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, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3b, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x42, 0x30, 0x5a, 0x2e, 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, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3b, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3957,8 +4202,8 @@ func file_items_items_proto_rawDescGZIP() []byte { } var file_items_items_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_items_items_proto_msgTypes = make([]protoimpl.MessageInfo, 57) -var file_items_items_proto_goTypes = []interface{}{ +var file_items_items_proto_msgTypes = make([]protoimpl.MessageInfo, 59) +var file_items_items_proto_goTypes = []any{ (Item_State)(0), // 0: content.items.Item.State (*Error)(nil), // 1: content.items.Error (*DecodeError)(nil), // 2: content.items.DecodeError @@ -3983,146 +4228,150 @@ var file_items_items_proto_goTypes = []interface{}{ (*FindPublishedOptions)(nil), // 21: content.items.FindPublishedOptions (*FindArchivedOptions)(nil), // 22: content.items.FindArchivedOptions (*ListRevisionsOptions)(nil), // 23: content.items.ListRevisionsOptions - (*AggregateOptions)(nil), // 24: content.items.AggregateOptions - (*AggregatePublishedOptions)(nil), // 25: content.items.AggregatePublishedOptions - (*CreateRequest)(nil), // 26: content.items.CreateRequest - (*CreateResponse)(nil), // 27: content.items.CreateResponse - (*IntrospectRequest)(nil), // 28: content.items.IntrospectRequest - (*IntrospectResponse)(nil), // 29: content.items.IntrospectResponse - (*GetRequest)(nil), // 30: content.items.GetRequest - (*GetResponse)(nil), // 31: content.items.GetResponse - (*FindRequest)(nil), // 32: content.items.FindRequest - (*FindResponse)(nil), // 33: content.items.FindResponse - (*UpdateRequest)(nil), // 34: content.items.UpdateRequest - (*DeleteRequest)(nil), // 35: content.items.DeleteRequest - (*UndeleteRequest)(nil), // 36: content.items.UndeleteRequest - (*PublishRequest)(nil), // 37: content.items.PublishRequest - (*UnpublishRequest)(nil), // 38: content.items.UnpublishRequest - (*GetPublishedRequest)(nil), // 39: content.items.GetPublishedRequest - (*GetPublishedResponse)(nil), // 40: content.items.GetPublishedResponse - (*FindPublishedRequest)(nil), // 41: content.items.FindPublishedRequest - (*FindPublishedResponse)(nil), // 42: content.items.FindPublishedResponse - (*AggregateRequest)(nil), // 43: content.items.AggregateRequest - (*AggregateResponse)(nil), // 44: content.items.AggregateResponse - (*AggregatePublishedRequest)(nil), // 45: content.items.AggregatePublishedRequest - (*AggregatePublishedResponse)(nil), // 46: content.items.AggregatePublishedResponse - (*GetRevisionRequest)(nil), // 47: content.items.GetRevisionRequest - (*GetRevisionResponse)(nil), // 48: content.items.GetRevisionResponse - (*ListRevisionsRequest)(nil), // 49: content.items.ListRevisionsRequest - (*ListRevisionsResponse)(nil), // 50: content.items.ListRevisionsResponse - (*ArchiveRequest)(nil), // 51: content.items.ArchiveRequest - (*UnarchiveRequest)(nil), // 52: content.items.UnarchiveRequest - (*FindArchivedRequest)(nil), // 53: content.items.FindArchivedRequest - (*FindArchivedResponse)(nil), // 54: content.items.FindArchivedResponse - nil, // 55: content.items.Item.TranslationsEntry - nil, // 56: content.items.AggregateOptions.FieldsEntry - nil, // 57: content.items.AggregatePublishedOptions.FieldsEntry - (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 59: google.protobuf.Struct - (*common.Filter)(nil), // 60: common.Filter - (*common.FindOptions)(nil), // 61: common.FindOptions - (*common.Error_BadRequest_FieldViolation)(nil), // 62: common.Error.BadRequest.FieldViolation - (*emptypb.Empty)(nil), // 63: google.protobuf.Empty + (*GetRevisionOptions)(nil), // 24: content.items.GetRevisionOptions + (*AggregateOptions)(nil), // 25: content.items.AggregateOptions + (*AggregatePublishedOptions)(nil), // 26: content.items.AggregatePublishedOptions + (*CreateRequest)(nil), // 27: content.items.CreateRequest + (*CreateResponse)(nil), // 28: content.items.CreateResponse + (*IntrospectRequest)(nil), // 29: content.items.IntrospectRequest + (*IntrospectResponse)(nil), // 30: content.items.IntrospectResponse + (*GetOptions)(nil), // 31: content.items.GetOptions + (*GetRequest)(nil), // 32: content.items.GetRequest + (*GetResponse)(nil), // 33: content.items.GetResponse + (*FindRequest)(nil), // 34: content.items.FindRequest + (*FindResponse)(nil), // 35: content.items.FindResponse + (*UpdateRequest)(nil), // 36: content.items.UpdateRequest + (*DeleteRequest)(nil), // 37: content.items.DeleteRequest + (*UndeleteRequest)(nil), // 38: content.items.UndeleteRequest + (*PublishRequest)(nil), // 39: content.items.PublishRequest + (*UnpublishRequest)(nil), // 40: content.items.UnpublishRequest + (*GetPublishedRequest)(nil), // 41: content.items.GetPublishedRequest + (*GetPublishedResponse)(nil), // 42: content.items.GetPublishedResponse + (*FindPublishedRequest)(nil), // 43: content.items.FindPublishedRequest + (*FindPublishedResponse)(nil), // 44: content.items.FindPublishedResponse + (*AggregateRequest)(nil), // 45: content.items.AggregateRequest + (*AggregateResponse)(nil), // 46: content.items.AggregateResponse + (*AggregatePublishedRequest)(nil), // 47: content.items.AggregatePublishedRequest + (*AggregatePublishedResponse)(nil), // 48: content.items.AggregatePublishedResponse + (*GetRevisionRequest)(nil), // 49: content.items.GetRevisionRequest + (*GetRevisionResponse)(nil), // 50: content.items.GetRevisionResponse + (*ListRevisionsRequest)(nil), // 51: content.items.ListRevisionsRequest + (*ListRevisionsResponse)(nil), // 52: content.items.ListRevisionsResponse + (*ArchiveRequest)(nil), // 53: content.items.ArchiveRequest + (*UnarchiveRequest)(nil), // 54: content.items.UnarchiveRequest + (*FindArchivedRequest)(nil), // 55: content.items.FindArchivedRequest + (*FindArchivedResponse)(nil), // 56: content.items.FindArchivedResponse + nil, // 57: content.items.Item.TranslationsEntry + nil, // 58: content.items.AggregateOptions.FieldsEntry + nil, // 59: content.items.AggregatePublishedOptions.FieldsEntry + (*timestamppb.Timestamp)(nil), // 60: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 61: google.protobuf.Struct + (*common.Filter)(nil), // 62: common.Filter + (*common.FindOptions)(nil), // 63: common.FindOptions + (*common.Error_BadRequest_FieldViolation)(nil), // 64: common.Error.BadRequest.FieldViolation + (*emptypb.Empty)(nil), // 65: google.protobuf.Empty } var file_items_items_proto_depIdxs = []int32{ 1, // 0: content.items.DecodeError.errors:type_name -> content.items.Error 1, // 1: content.items.ValidationError.errors:type_name -> content.items.Error 1, // 2: content.items.ModificationError.errors:type_name -> content.items.Error 0, // 3: content.items.Item.state:type_name -> content.items.Item.State - 58, // 4: content.items.Item.created_rev_at:type_name -> google.protobuf.Timestamp - 58, // 5: content.items.Item.created_at:type_name -> google.protobuf.Timestamp - 58, // 6: content.items.Item.updated_at:type_name -> google.protobuf.Timestamp - 59, // 7: content.items.Item.data:type_name -> google.protobuf.Struct - 55, // 8: content.items.Item.translations:type_name -> content.items.Item.TranslationsEntry - 5, // 9: content.items.Item.permissions:type_name -> content.items.Permissions - 60, // 10: content.items.Filter.data:type_name -> common.Filter - 61, // 11: content.items.FindOptions.options:type_name -> common.FindOptions - 61, // 12: content.items.FindPublishedOptions.options:type_name -> common.FindOptions - 61, // 13: content.items.FindArchivedOptions.options:type_name -> common.FindOptions - 61, // 14: content.items.ListRevisionsOptions.options:type_name -> common.FindOptions - 56, // 15: content.items.AggregateOptions.fields:type_name -> content.items.AggregateOptions.FieldsEntry - 57, // 16: content.items.AggregatePublishedOptions.fields:type_name -> content.items.AggregatePublishedOptions.FieldsEntry + 60, // 4: content.items.Item.created_rev_at:type_name -> google.protobuf.Timestamp + 60, // 5: content.items.Item.created_at:type_name -> google.protobuf.Timestamp + 60, // 6: content.items.Item.updated_at:type_name -> google.protobuf.Timestamp + 61, // 7: content.items.Item.data:type_name -> google.protobuf.Struct + 5, // 8: content.items.Item.permissions:type_name -> content.items.Permissions + 57, // 9: content.items.Item.translations:type_name -> content.items.Item.TranslationsEntry + 62, // 10: content.items.Filter.data:type_name -> common.Filter + 63, // 11: content.items.FindOptions.options:type_name -> common.FindOptions + 63, // 12: content.items.FindPublishedOptions.options:type_name -> common.FindOptions + 63, // 13: content.items.FindArchivedOptions.options:type_name -> common.FindOptions + 63, // 14: content.items.ListRevisionsOptions.options:type_name -> common.FindOptions + 58, // 15: content.items.AggregateOptions.fields:type_name -> content.items.AggregateOptions.FieldsEntry + 59, // 16: content.items.AggregatePublishedOptions.fields:type_name -> content.items.AggregatePublishedOptions.FieldsEntry 6, // 17: content.items.CreateRequest.item:type_name -> content.items.Item 13, // 18: content.items.CreateRequest.options:type_name -> content.items.CreateOptions 6, // 19: content.items.CreateResponse.created:type_name -> content.items.Item 6, // 20: content.items.IntrospectRequest.item:type_name -> content.items.Item 6, // 21: content.items.IntrospectResponse.item:type_name -> content.items.Item - 62, // 22: content.items.IntrospectResponse.validation_errors:type_name -> common.Error.BadRequest.FieldViolation - 6, // 23: content.items.GetResponse.item:type_name -> content.items.Item - 12, // 24: content.items.FindRequest.filter:type_name -> content.items.Filter - 14, // 25: content.items.FindRequest.options:type_name -> content.items.FindOptions - 6, // 26: content.items.FindResponse.items:type_name -> content.items.Item - 6, // 27: content.items.UpdateRequest.item:type_name -> content.items.Item - 15, // 28: content.items.UpdateRequest.options:type_name -> content.items.UpdateOptions - 6, // 29: content.items.DeleteRequest.item:type_name -> content.items.Item - 17, // 30: content.items.DeleteRequest.options:type_name -> content.items.DeleteOptions - 6, // 31: content.items.UndeleteRequest.item:type_name -> content.items.Item - 18, // 32: content.items.UndeleteRequest.options:type_name -> content.items.UndeleteOptions - 6, // 33: content.items.PublishRequest.item:type_name -> content.items.Item - 19, // 34: content.items.PublishRequest.options:type_name -> content.items.PublishOptions - 6, // 35: content.items.UnpublishRequest.item:type_name -> content.items.Item - 20, // 36: content.items.UnpublishRequest.options:type_name -> content.items.UnpublishOptions - 16, // 37: content.items.GetPublishedRequest.options:type_name -> content.items.GetPublishedOptions - 6, // 38: content.items.GetPublishedResponse.item:type_name -> content.items.Item - 12, // 39: content.items.FindPublishedRequest.filter:type_name -> content.items.Filter - 21, // 40: content.items.FindPublishedRequest.options:type_name -> content.items.FindPublishedOptions - 6, // 41: content.items.FindPublishedResponse.items:type_name -> content.items.Item - 12, // 42: content.items.AggregateRequest.filter:type_name -> content.items.Filter - 24, // 43: content.items.AggregateRequest.options:type_name -> content.items.AggregateOptions - 59, // 44: content.items.AggregateResponse.result:type_name -> google.protobuf.Struct - 12, // 45: content.items.AggregatePublishedRequest.filter:type_name -> content.items.Filter - 25, // 46: content.items.AggregatePublishedRequest.options:type_name -> content.items.AggregatePublishedOptions - 59, // 47: content.items.AggregatePublishedResponse.result:type_name -> google.protobuf.Struct - 6, // 48: content.items.GetRevisionResponse.item:type_name -> content.items.Item - 23, // 49: content.items.ListRevisionsRequest.options:type_name -> content.items.ListRevisionsOptions - 6, // 50: content.items.ListRevisionsResponse.items:type_name -> content.items.Item - 6, // 51: content.items.ArchiveRequest.item:type_name -> content.items.Item - 6, // 52: content.items.UnarchiveRequest.item:type_name -> content.items.Item - 12, // 53: content.items.FindArchivedRequest.filter:type_name -> content.items.Filter - 22, // 54: content.items.FindArchivedRequest.options:type_name -> content.items.FindArchivedOptions - 6, // 55: content.items.FindArchivedResponse.items:type_name -> content.items.Item - 59, // 56: content.items.Item.TranslationsEntry.value:type_name -> google.protobuf.Struct - 26, // 57: content.items.Items.Create:input_type -> content.items.CreateRequest - 28, // 58: content.items.Items.Introspect:input_type -> content.items.IntrospectRequest - 30, // 59: content.items.Items.Get:input_type -> content.items.GetRequest - 32, // 60: content.items.Items.Find:input_type -> content.items.FindRequest - 34, // 61: content.items.Items.Update:input_type -> content.items.UpdateRequest - 35, // 62: content.items.Items.Delete:input_type -> content.items.DeleteRequest - 36, // 63: content.items.Items.Undelete:input_type -> content.items.UndeleteRequest - 37, // 64: content.items.Items.Publish:input_type -> content.items.PublishRequest - 38, // 65: content.items.Items.Unpublish:input_type -> content.items.UnpublishRequest - 39, // 66: content.items.Items.GetPublished:input_type -> content.items.GetPublishedRequest - 41, // 67: content.items.Items.FindPublished:input_type -> content.items.FindPublishedRequest - 43, // 68: content.items.Items.Aggregate:input_type -> content.items.AggregateRequest - 45, // 69: content.items.Items.AggregatePublished:input_type -> content.items.AggregatePublishedRequest - 47, // 70: content.items.Items.GetRevision:input_type -> content.items.GetRevisionRequest - 49, // 71: content.items.Items.ListRevisions:input_type -> content.items.ListRevisionsRequest - 51, // 72: content.items.Items.Archive:input_type -> content.items.ArchiveRequest - 53, // 73: content.items.Items.FindArchived:input_type -> content.items.FindArchivedRequest - 52, // 74: content.items.Items.Unarchive:input_type -> content.items.UnarchiveRequest - 27, // 75: content.items.Items.Create:output_type -> content.items.CreateResponse - 29, // 76: content.items.Items.Introspect:output_type -> content.items.IntrospectResponse - 31, // 77: content.items.Items.Get:output_type -> content.items.GetResponse - 33, // 78: content.items.Items.Find:output_type -> content.items.FindResponse - 63, // 79: content.items.Items.Update:output_type -> google.protobuf.Empty - 63, // 80: content.items.Items.Delete:output_type -> google.protobuf.Empty - 63, // 81: content.items.Items.Undelete:output_type -> google.protobuf.Empty - 63, // 82: content.items.Items.Publish:output_type -> google.protobuf.Empty - 63, // 83: content.items.Items.Unpublish:output_type -> google.protobuf.Empty - 40, // 84: content.items.Items.GetPublished:output_type -> content.items.GetPublishedResponse - 42, // 85: content.items.Items.FindPublished:output_type -> content.items.FindPublishedResponse - 44, // 86: content.items.Items.Aggregate:output_type -> content.items.AggregateResponse - 46, // 87: content.items.Items.AggregatePublished:output_type -> content.items.AggregatePublishedResponse - 48, // 88: content.items.Items.GetRevision:output_type -> content.items.GetRevisionResponse - 50, // 89: content.items.Items.ListRevisions:output_type -> content.items.ListRevisionsResponse - 63, // 90: content.items.Items.Archive:output_type -> google.protobuf.Empty - 54, // 91: content.items.Items.FindArchived:output_type -> content.items.FindArchivedResponse - 63, // 92: content.items.Items.Unarchive:output_type -> google.protobuf.Empty - 75, // [75:93] is the sub-list for method output_type - 57, // [57:75] is the sub-list for method input_type - 57, // [57:57] is the sub-list for extension type_name - 57, // [57:57] is the sub-list for extension extendee - 0, // [0:57] is the sub-list for field type_name + 64, // 22: content.items.IntrospectResponse.validation_errors:type_name -> common.Error.BadRequest.FieldViolation + 31, // 23: content.items.GetRequest.options:type_name -> content.items.GetOptions + 6, // 24: content.items.GetResponse.item:type_name -> content.items.Item + 12, // 25: content.items.FindRequest.filter:type_name -> content.items.Filter + 14, // 26: content.items.FindRequest.options:type_name -> content.items.FindOptions + 6, // 27: content.items.FindResponse.items:type_name -> content.items.Item + 6, // 28: content.items.UpdateRequest.item:type_name -> content.items.Item + 15, // 29: content.items.UpdateRequest.options:type_name -> content.items.UpdateOptions + 6, // 30: content.items.DeleteRequest.item:type_name -> content.items.Item + 17, // 31: content.items.DeleteRequest.options:type_name -> content.items.DeleteOptions + 6, // 32: content.items.UndeleteRequest.item:type_name -> content.items.Item + 18, // 33: content.items.UndeleteRequest.options:type_name -> content.items.UndeleteOptions + 6, // 34: content.items.PublishRequest.item:type_name -> content.items.Item + 19, // 35: content.items.PublishRequest.options:type_name -> content.items.PublishOptions + 6, // 36: content.items.UnpublishRequest.item:type_name -> content.items.Item + 20, // 37: content.items.UnpublishRequest.options:type_name -> content.items.UnpublishOptions + 16, // 38: content.items.GetPublishedRequest.options:type_name -> content.items.GetPublishedOptions + 6, // 39: content.items.GetPublishedResponse.item:type_name -> content.items.Item + 12, // 40: content.items.FindPublishedRequest.filter:type_name -> content.items.Filter + 21, // 41: content.items.FindPublishedRequest.options:type_name -> content.items.FindPublishedOptions + 6, // 42: content.items.FindPublishedResponse.items:type_name -> content.items.Item + 12, // 43: content.items.AggregateRequest.filter:type_name -> content.items.Filter + 25, // 44: content.items.AggregateRequest.options:type_name -> content.items.AggregateOptions + 61, // 45: content.items.AggregateResponse.result:type_name -> google.protobuf.Struct + 12, // 46: content.items.AggregatePublishedRequest.filter:type_name -> content.items.Filter + 26, // 47: content.items.AggregatePublishedRequest.options:type_name -> content.items.AggregatePublishedOptions + 61, // 48: content.items.AggregatePublishedResponse.result:type_name -> google.protobuf.Struct + 24, // 49: content.items.GetRevisionRequest.options:type_name -> content.items.GetRevisionOptions + 6, // 50: content.items.GetRevisionResponse.item:type_name -> content.items.Item + 23, // 51: content.items.ListRevisionsRequest.options:type_name -> content.items.ListRevisionsOptions + 6, // 52: content.items.ListRevisionsResponse.items:type_name -> content.items.Item + 6, // 53: content.items.ArchiveRequest.item:type_name -> content.items.Item + 6, // 54: content.items.UnarchiveRequest.item:type_name -> content.items.Item + 12, // 55: content.items.FindArchivedRequest.filter:type_name -> content.items.Filter + 22, // 56: content.items.FindArchivedRequest.options:type_name -> content.items.FindArchivedOptions + 6, // 57: content.items.FindArchivedResponse.items:type_name -> content.items.Item + 61, // 58: content.items.Item.TranslationsEntry.value:type_name -> google.protobuf.Struct + 27, // 59: content.items.Items.Create:input_type -> content.items.CreateRequest + 29, // 60: content.items.Items.Introspect:input_type -> content.items.IntrospectRequest + 32, // 61: content.items.Items.Get:input_type -> content.items.GetRequest + 34, // 62: content.items.Items.Find:input_type -> content.items.FindRequest + 36, // 63: content.items.Items.Update:input_type -> content.items.UpdateRequest + 37, // 64: content.items.Items.Delete:input_type -> content.items.DeleteRequest + 38, // 65: content.items.Items.Undelete:input_type -> content.items.UndeleteRequest + 39, // 66: content.items.Items.Publish:input_type -> content.items.PublishRequest + 40, // 67: content.items.Items.Unpublish:input_type -> content.items.UnpublishRequest + 41, // 68: content.items.Items.GetPublished:input_type -> content.items.GetPublishedRequest + 43, // 69: content.items.Items.FindPublished:input_type -> content.items.FindPublishedRequest + 45, // 70: content.items.Items.Aggregate:input_type -> content.items.AggregateRequest + 47, // 71: content.items.Items.AggregatePublished:input_type -> content.items.AggregatePublishedRequest + 49, // 72: content.items.Items.GetRevision:input_type -> content.items.GetRevisionRequest + 51, // 73: content.items.Items.ListRevisions:input_type -> content.items.ListRevisionsRequest + 53, // 74: content.items.Items.Archive:input_type -> content.items.ArchiveRequest + 55, // 75: content.items.Items.FindArchived:input_type -> content.items.FindArchivedRequest + 54, // 76: content.items.Items.Unarchive:input_type -> content.items.UnarchiveRequest + 28, // 77: content.items.Items.Create:output_type -> content.items.CreateResponse + 30, // 78: content.items.Items.Introspect:output_type -> content.items.IntrospectResponse + 33, // 79: content.items.Items.Get:output_type -> content.items.GetResponse + 35, // 80: content.items.Items.Find:output_type -> content.items.FindResponse + 65, // 81: content.items.Items.Update:output_type -> google.protobuf.Empty + 65, // 82: content.items.Items.Delete:output_type -> google.protobuf.Empty + 65, // 83: content.items.Items.Undelete:output_type -> google.protobuf.Empty + 65, // 84: content.items.Items.Publish:output_type -> google.protobuf.Empty + 65, // 85: content.items.Items.Unpublish:output_type -> google.protobuf.Empty + 42, // 86: content.items.Items.GetPublished:output_type -> content.items.GetPublishedResponse + 44, // 87: content.items.Items.FindPublished:output_type -> content.items.FindPublishedResponse + 46, // 88: content.items.Items.Aggregate:output_type -> content.items.AggregateResponse + 48, // 89: content.items.Items.AggregatePublished:output_type -> content.items.AggregatePublishedResponse + 50, // 90: content.items.Items.GetRevision:output_type -> content.items.GetRevisionResponse + 52, // 91: content.items.Items.ListRevisions:output_type -> content.items.ListRevisionsResponse + 65, // 92: content.items.Items.Archive:output_type -> google.protobuf.Empty + 56, // 93: content.items.Items.FindArchived:output_type -> content.items.FindArchivedResponse + 65, // 94: content.items.Items.Unarchive:output_type -> google.protobuf.Empty + 77, // [77:95] is the sub-list for method output_type + 59, // [59:77] is the sub-list for method input_type + 59, // [59:59] is the sub-list for extension type_name + 59, // [59:59] is the sub-list for extension extendee + 0, // [0:59] is the sub-list for field type_name } func init() { file_items_items_proto_init() } @@ -4131,7 +4380,7 @@ func file_items_items_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_items_items_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Error); i { case 0: return &v.state @@ -4143,7 +4392,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*DecodeError); i { case 0: return &v.state @@ -4155,7 +4404,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ValidationError); i { case 0: return &v.state @@ -4167,7 +4416,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*ModificationError); i { case 0: return &v.state @@ -4179,7 +4428,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*Permissions); i { case 0: return &v.state @@ -4191,7 +4440,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*Item); i { case 0: return &v.state @@ -4203,7 +4452,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*EventCreate); i { case 0: return &v.state @@ -4215,7 +4464,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*EventUpdate); i { case 0: return &v.state @@ -4227,7 +4476,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*EventPublish); i { case 0: return &v.state @@ -4239,7 +4488,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*EventUnpublish); i { case 0: return &v.state @@ -4251,7 +4500,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*EventDelete); i { case 0: return &v.state @@ -4263,7 +4512,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*Filter); i { case 0: return &v.state @@ -4275,7 +4524,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*CreateOptions); i { case 0: return &v.state @@ -4287,7 +4536,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*FindOptions); i { case 0: return &v.state @@ -4299,7 +4548,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*UpdateOptions); i { case 0: return &v.state @@ -4311,7 +4560,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*GetPublishedOptions); i { case 0: return &v.state @@ -4323,7 +4572,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*DeleteOptions); i { case 0: return &v.state @@ -4335,7 +4584,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*UndeleteOptions); i { case 0: return &v.state @@ -4347,7 +4596,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*PublishOptions); i { case 0: return &v.state @@ -4359,7 +4608,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*UnpublishOptions); i { case 0: return &v.state @@ -4371,7 +4620,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*FindPublishedOptions); i { case 0: return &v.state @@ -4383,7 +4632,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*FindArchivedOptions); i { case 0: return &v.state @@ -4395,7 +4644,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*ListRevisionsOptions); i { case 0: return &v.state @@ -4407,7 +4656,19 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*GetRevisionOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_items_items_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*AggregateOptions); i { case 0: return &v.state @@ -4419,7 +4680,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*AggregatePublishedOptions); i { case 0: return &v.state @@ -4431,7 +4692,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*CreateRequest); i { case 0: return &v.state @@ -4443,7 +4704,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*CreateResponse); i { case 0: return &v.state @@ -4455,7 +4716,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*IntrospectRequest); i { case 0: return &v.state @@ -4467,7 +4728,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*IntrospectResponse); i { case 0: return &v.state @@ -4479,7 +4740,19 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*GetOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_items_items_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*GetRequest); i { case 0: return &v.state @@ -4491,7 +4764,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*GetResponse); i { case 0: return &v.state @@ -4503,7 +4776,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*FindRequest); i { case 0: return &v.state @@ -4515,7 +4788,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*FindResponse); i { case 0: return &v.state @@ -4527,7 +4800,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*UpdateRequest); i { case 0: return &v.state @@ -4539,7 +4812,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*DeleteRequest); i { case 0: return &v.state @@ -4551,7 +4824,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*UndeleteRequest); i { case 0: return &v.state @@ -4563,7 +4836,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*PublishRequest); i { case 0: return &v.state @@ -4575,7 +4848,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*UnpublishRequest); i { case 0: return &v.state @@ -4587,7 +4860,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*GetPublishedRequest); i { case 0: return &v.state @@ -4599,7 +4872,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*GetPublishedResponse); i { case 0: return &v.state @@ -4611,7 +4884,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*FindPublishedRequest); i { case 0: return &v.state @@ -4623,7 +4896,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*FindPublishedResponse); i { case 0: return &v.state @@ -4635,7 +4908,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*AggregateRequest); i { case 0: return &v.state @@ -4647,7 +4920,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*AggregateResponse); i { case 0: return &v.state @@ -4659,7 +4932,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*AggregatePublishedRequest); i { case 0: return &v.state @@ -4671,7 +4944,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*AggregatePublishedResponse); i { case 0: return &v.state @@ -4683,7 +4956,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*GetRevisionRequest); i { case 0: return &v.state @@ -4695,7 +4968,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*GetRevisionResponse); i { case 0: return &v.state @@ -4707,7 +4980,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*ListRevisionsRequest); i { case 0: return &v.state @@ -4719,7 +4992,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*ListRevisionsResponse); i { case 0: return &v.state @@ -4731,7 +5004,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*ArchiveRequest); i { case 0: return &v.state @@ -4743,7 +5016,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*UnarchiveRequest); i { case 0: return &v.state @@ -4755,7 +5028,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*FindArchivedRequest); i { case 0: return &v.state @@ -4767,7 +5040,7 @@ func file_items_items_proto_init() { return nil } } - file_items_items_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_items_items_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*FindArchivedResponse); i { case 0: return &v.state @@ -4786,7 +5059,7 @@ func file_items_items_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_items_items_proto_rawDesc, NumEnums: 1, - NumMessages: 57, + NumMessages: 59, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/items/items_grpc.pb.go b/proto/items/items_grpc.pb.go index 90accf67d060297cf9f3378cb8932117b9d9ea25..9d75857939728e3077387a03b6eac0073da804ee 100644 --- a/proto/items/items_grpc.pb.go +++ b/proto/items/items_grpc.pb.go @@ -8,8 +8,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.1 +// - protoc-gen-go-grpc v1.4.0 +// - protoc v5.27.0 // source: items/items.proto package items @@ -24,8 +24,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Items_Create_FullMethodName = "/content.items.Items/Create" @@ -51,6 +51,9 @@ const ( // ItemsClient is the client API for Items service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// * +// Сервис API элементов type ItemsClient interface { // * // Создать запись @@ -93,8 +96,9 @@ func NewItemsClient(cc grpc.ClientConnInterface) ItemsClient { } func (c *itemsClient) Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateResponse) - err := c.cc.Invoke(ctx, Items_Create_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Create_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -102,8 +106,9 @@ func (c *itemsClient) Create(ctx context.Context, in *CreateRequest, opts ...grp } func (c *itemsClient) Introspect(ctx context.Context, in *IntrospectRequest, opts ...grpc.CallOption) (*IntrospectResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(IntrospectResponse) - err := c.cc.Invoke(ctx, Items_Introspect_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Introspect_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -111,8 +116,9 @@ func (c *itemsClient) Introspect(ctx context.Context, in *IntrospectRequest, opt } func (c *itemsClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetResponse) - err := c.cc.Invoke(ctx, Items_Get_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Get_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -120,8 +126,9 @@ func (c *itemsClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.Call } func (c *itemsClient) Find(ctx context.Context, in *FindRequest, opts ...grpc.CallOption) (*FindResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(FindResponse) - err := c.cc.Invoke(ctx, Items_Find_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Find_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -129,8 +136,9 @@ func (c *itemsClient) Find(ctx context.Context, in *FindRequest, opts ...grpc.Ca } func (c *itemsClient) Update(ctx context.Context, in *UpdateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, Items_Update_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Update_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -138,8 +146,9 @@ func (c *itemsClient) Update(ctx context.Context, in *UpdateRequest, opts ...grp } func (c *itemsClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, Items_Delete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Delete_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -147,8 +156,9 @@ func (c *itemsClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grp } func (c *itemsClient) Undelete(ctx context.Context, in *UndeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, Items_Undelete_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Undelete_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -156,8 +166,9 @@ func (c *itemsClient) Undelete(ctx context.Context, in *UndeleteRequest, opts .. } func (c *itemsClient) Publish(ctx context.Context, in *PublishRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, Items_Publish_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Publish_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -165,8 +176,9 @@ func (c *itemsClient) Publish(ctx context.Context, in *PublishRequest, opts ...g } func (c *itemsClient) Unpublish(ctx context.Context, in *UnpublishRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, Items_Unpublish_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Unpublish_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -174,8 +186,9 @@ func (c *itemsClient) Unpublish(ctx context.Context, in *UnpublishRequest, opts } func (c *itemsClient) GetPublished(ctx context.Context, in *GetPublishedRequest, opts ...grpc.CallOption) (*GetPublishedResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPublishedResponse) - err := c.cc.Invoke(ctx, Items_GetPublished_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_GetPublished_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -183,8 +196,9 @@ func (c *itemsClient) GetPublished(ctx context.Context, in *GetPublishedRequest, } func (c *itemsClient) FindPublished(ctx context.Context, in *FindPublishedRequest, opts ...grpc.CallOption) (*FindPublishedResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(FindPublishedResponse) - err := c.cc.Invoke(ctx, Items_FindPublished_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_FindPublished_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -192,8 +206,9 @@ func (c *itemsClient) FindPublished(ctx context.Context, in *FindPublishedReques } func (c *itemsClient) Aggregate(ctx context.Context, in *AggregateRequest, opts ...grpc.CallOption) (*AggregateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AggregateResponse) - err := c.cc.Invoke(ctx, Items_Aggregate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Aggregate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -201,8 +216,9 @@ func (c *itemsClient) Aggregate(ctx context.Context, in *AggregateRequest, opts } func (c *itemsClient) AggregatePublished(ctx context.Context, in *AggregatePublishedRequest, opts ...grpc.CallOption) (*AggregatePublishedResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AggregatePublishedResponse) - err := c.cc.Invoke(ctx, Items_AggregatePublished_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_AggregatePublished_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -210,8 +226,9 @@ func (c *itemsClient) AggregatePublished(ctx context.Context, in *AggregatePubli } func (c *itemsClient) GetRevision(ctx context.Context, in *GetRevisionRequest, opts ...grpc.CallOption) (*GetRevisionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetRevisionResponse) - err := c.cc.Invoke(ctx, Items_GetRevision_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_GetRevision_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -219,8 +236,9 @@ func (c *itemsClient) GetRevision(ctx context.Context, in *GetRevisionRequest, o } func (c *itemsClient) ListRevisions(ctx context.Context, in *ListRevisionsRequest, opts ...grpc.CallOption) (*ListRevisionsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListRevisionsResponse) - err := c.cc.Invoke(ctx, Items_ListRevisions_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_ListRevisions_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -228,8 +246,9 @@ func (c *itemsClient) ListRevisions(ctx context.Context, in *ListRevisionsReques } func (c *itemsClient) Archive(ctx context.Context, in *ArchiveRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, Items_Archive_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Archive_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -237,8 +256,9 @@ func (c *itemsClient) Archive(ctx context.Context, in *ArchiveRequest, opts ...g } func (c *itemsClient) FindArchived(ctx context.Context, in *FindArchivedRequest, opts ...grpc.CallOption) (*FindArchivedResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(FindArchivedResponse) - err := c.cc.Invoke(ctx, Items_FindArchived_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_FindArchived_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -246,8 +266,9 @@ func (c *itemsClient) FindArchived(ctx context.Context, in *FindArchivedRequest, } func (c *itemsClient) Unarchive(ctx context.Context, in *UnarchiveRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, Items_Unarchive_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Items_Unarchive_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -257,6 +278,9 @@ func (c *itemsClient) Unarchive(ctx context.Context, in *UnarchiveRequest, opts // ItemsServer is the server API for Items service. // All implementations must embed UnimplementedItemsServer // for forward compatibility +// +// * +// Сервис API элементов type ItemsServer interface { // * // Создать запись