diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..79c7c1ea054bf3ed90bc0be427d1350ee0519405
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "perxis-proto"]
+	path = perxis-proto
+	url = https://git.perx.ru/perxis/perxis-proto.git
diff --git a/Makefile b/Makefile
index ff3a535f67856a275e67997786b402246ba93b0e..11cf193bf95dd7592e8efded0504dbe551a3e896 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,8 @@
 .PHONY: clean-pyc clean-build generate clean
 SHELL = bash
 
-PROTO_FILES_DIR=./proto
-OUTPUT_FILES_DIR=./
+PROTO_FILES_DIR=./perxis-proto/proto
+OUTPUT_FILES_DIR=./perxis
 
 help:
 	@echo "clean - remove all build, test, coverage and Python artifacts"
diff --git a/perxis-proto b/perxis-proto
new file mode 160000
index 0000000000000000000000000000000000000000..f000812a1eef24093c0d0abf1318e3179b679773
--- /dev/null
+++ b/perxis-proto
@@ -0,0 +1 @@
+Subproject commit f000812a1eef24093c0d0abf1318e3179b679773
diff --git a/perxis/clients/clients_pb2.py b/perxis/clients/clients_pb2.py
deleted file mode 100644
index 620bfe5a1c104d22363bec532e3941de289db9e6..0000000000000000000000000000000000000000
--- a/perxis/clients/clients_pb2.py
+++ /dev/null
@@ -1,869 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/clients/clients.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/clients/clients.proto',
-  package='content.clients',
-  syntax='proto3',
-  serialized_options=b'Z/git.perx.ru/perxis/perxis/proto/clients;clients',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1cperxis/clients/clients.proto\x12\x0f\x63ontent.clients\x1a\x1bgoogle/protobuf/empty.proto\"\x9d\x03\n\x06\x43lient\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x15\n\x08\x64isabled\x18\x07 \x01(\x08H\x00\x88\x01\x01\x12\x0f\n\x07role_id\x18\x08 \x01(\t\x12,\n\x05oauth\x18\n \x01(\x0b\x32\x1d.content.clients.Client.OAuth\x12(\n\x03tls\x18\x0b \x01(\x0b\x32\x1b.content.clients.Client.TLS\x12/\n\x07\x61pi_key\x18\x0c \x01(\x0b\x32\x1e.content.clients.Client.APIKey\x1aU\n\x05OAuth\x12\x11\n\tclient_id\x18\x04 \x01(\t\x12\x0f\n\x07\x61uth_id\x18\x05 \x01(\t\x12\x11\n\ttoken_url\x18\n \x01(\t\x12\x15\n\rclient_secret\x18\x0b \x01(\t\x1a%\n\x06\x41PIKey\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0e\n\x06rotate\x18\x02 \x01(\x08\x1a\x16\n\x03TLS\x12\x0f\n\x07subject\x18\x01 \x01(\tB\x0b\n\t_disabled\"8\n\rCreateRequest\x12\'\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x17.content.clients.Client\":\n\x0e\x43reateResponse\x12(\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x17.content.clients.Client\"*\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\"6\n\x0bGetResponse\x12\'\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x17.content.clients.Client\"_\n\x0cGetByRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x17\n\x0foauth_client_id\x18\x02 \x01(\t\x12\x13\n\x0btls_subject\x18\x03 \x01(\t\x12\x0f\n\x07\x61pi_key\x18\x04 \x01(\t\"8\n\rGetByResponse\x12\'\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x17.content.clients.Client\"8\n\rUpdateRequest\x12\'\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x17.content.clients.Client\"\x1f\n\x0bListRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"8\n\x0cListResponse\x12(\n\x07\x63lients\x18\x01 \x03(\x0b\x32\x17.content.clients.Client\"-\n\rDeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\"=\n\rEnableRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0e\n\x06\x65nable\x18\x03 \x01(\x08\x32\xf7\x03\n\x07\x43lients\x12K\n\x06\x43reate\x12\x1e.content.clients.CreateRequest\x1a\x1f.content.clients.CreateResponse\"\x00\x12\x42\n\x03Get\x12\x1b.content.clients.GetRequest\x1a\x1c.content.clients.GetResponse\"\x00\x12H\n\x05GetBy\x12\x1d.content.clients.GetByRequest\x1a\x1e.content.clients.GetByResponse\"\x00\x12\x42\n\x06Update\x12\x1e.content.clients.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x45\n\x04List\x12\x1c.content.clients.ListRequest\x1a\x1d.content.clients.ListResponse\"\x00\x12\x42\n\x06\x44\x65lete\x12\x1e.content.clients.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x42\n\x06\x45nable\x12\x1e.content.clients.EnableRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x31Z/git.perx.ru/perxis/perxis/proto/clients;clientsb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
-
-
-
-
-_CLIENT_OAUTH = _descriptor.Descriptor(
-  name='OAuth',
-  full_name='content.clients.Client.OAuth',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='client_id', full_name='content.clients.Client.OAuth.client_id', index=0,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='auth_id', full_name='content.clients.Client.OAuth.auth_id', index=1,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='token_url', full_name='content.clients.Client.OAuth.token_url', index=2,
-      number=10, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='client_secret', full_name='content.clients.Client.OAuth.client_secret', index=3,
-      number=11, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=331,
-  serialized_end=416,
-)
-
-_CLIENT_APIKEY = _descriptor.Descriptor(
-  name='APIKey',
-  full_name='content.clients.Client.APIKey',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='key', full_name='content.clients.Client.APIKey.key', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='rotate', full_name='content.clients.Client.APIKey.rotate', index=1,
-      number=2, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=418,
-  serialized_end=455,
-)
-
-_CLIENT_TLS = _descriptor.Descriptor(
-  name='TLS',
-  full_name='content.clients.Client.TLS',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='subject', full_name='content.clients.Client.TLS.subject', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=457,
-  serialized_end=479,
-)
-
-_CLIENT = _descriptor.Descriptor(
-  name='Client',
-  full_name='content.clients.Client',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.clients.Client.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.Client.space_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='content.clients.Client.name', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='content.clients.Client.description', index=3,
-      number=6, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='disabled', full_name='content.clients.Client.disabled', index=4,
-      number=7, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role_id', full_name='content.clients.Client.role_id', index=5,
-      number=8, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='oauth', full_name='content.clients.Client.oauth', index=6,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='tls', full_name='content.clients.Client.tls', index=7,
-      number=11, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='api_key', full_name='content.clients.Client.api_key', index=8,
-      number=12, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_CLIENT_OAUTH, _CLIENT_APIKEY, _CLIENT_TLS, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='_disabled', full_name='content.clients.Client._disabled',
-      index=0, containing_type=None,
-      create_key=_descriptor._internal_create_key,
-    fields=[]),
-  ],
-  serialized_start=79,
-  serialized_end=492,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.clients.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='client', full_name='content.clients.CreateRequest.client', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=494,
-  serialized_end=550,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.clients.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='created', full_name='content.clients.CreateResponse.created', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=552,
-  serialized_end=610,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.clients.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.clients.GetRequest.id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=612,
-  serialized_end=654,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.clients.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='client', full_name='content.clients.GetResponse.client', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=656,
-  serialized_end=710,
-)
-
-
-_GETBYREQUEST = _descriptor.Descriptor(
-  name='GetByRequest',
-  full_name='content.clients.GetByRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.GetByRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='oauth_client_id', full_name='content.clients.GetByRequest.oauth_client_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='tls_subject', full_name='content.clients.GetByRequest.tls_subject', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='api_key', full_name='content.clients.GetByRequest.api_key', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=712,
-  serialized_end=807,
-)
-
-
-_GETBYRESPONSE = _descriptor.Descriptor(
-  name='GetByResponse',
-  full_name='content.clients.GetByResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='client', full_name='content.clients.GetByResponse.client', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=809,
-  serialized_end=865,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='content.clients.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='client', full_name='content.clients.UpdateRequest.client', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=867,
-  serialized_end=923,
-)
-
-
-_LISTREQUEST = _descriptor.Descriptor(
-  name='ListRequest',
-  full_name='content.clients.ListRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.ListRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=925,
-  serialized_end=956,
-)
-
-
-_LISTRESPONSE = _descriptor.Descriptor(
-  name='ListResponse',
-  full_name='content.clients.ListResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='clients', full_name='content.clients.ListResponse.clients', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=958,
-  serialized_end=1014,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.clients.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.DeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.clients.DeleteRequest.id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1016,
-  serialized_end=1061,
-)
-
-
-_ENABLEREQUEST = _descriptor.Descriptor(
-  name='EnableRequest',
-  full_name='content.clients.EnableRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.EnableRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.clients.EnableRequest.id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='enable', full_name='content.clients.EnableRequest.enable', index=2,
-      number=3, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1063,
-  serialized_end=1124,
-)
-
-_CLIENT_OAUTH.containing_type = _CLIENT
-_CLIENT_APIKEY.containing_type = _CLIENT
-_CLIENT_TLS.containing_type = _CLIENT
-_CLIENT.fields_by_name['oauth'].message_type = _CLIENT_OAUTH
-_CLIENT.fields_by_name['tls'].message_type = _CLIENT_TLS
-_CLIENT.fields_by_name['api_key'].message_type = _CLIENT_APIKEY
-_CLIENT.oneofs_by_name['_disabled'].fields.append(
-  _CLIENT.fields_by_name['disabled'])
-_CLIENT.fields_by_name['disabled'].containing_oneof = _CLIENT.oneofs_by_name['_disabled']
-_CREATEREQUEST.fields_by_name['client'].message_type = _CLIENT
-_CREATERESPONSE.fields_by_name['created'].message_type = _CLIENT
-_GETRESPONSE.fields_by_name['client'].message_type = _CLIENT
-_GETBYRESPONSE.fields_by_name['client'].message_type = _CLIENT
-_UPDATEREQUEST.fields_by_name['client'].message_type = _CLIENT
-_LISTRESPONSE.fields_by_name['clients'].message_type = _CLIENT
-DESCRIPTOR.message_types_by_name['Client'] = _CLIENT
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['GetByRequest'] = _GETBYREQUEST
-DESCRIPTOR.message_types_by_name['GetByResponse'] = _GETBYRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['ListRequest'] = _LISTREQUEST
-DESCRIPTOR.message_types_by_name['ListResponse'] = _LISTRESPONSE
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-DESCRIPTOR.message_types_by_name['EnableRequest'] = _ENABLEREQUEST
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Client = _reflection.GeneratedProtocolMessageType('Client', (_message.Message,), {
-
-  'OAuth' : _reflection.GeneratedProtocolMessageType('OAuth', (_message.Message,), {
-    'DESCRIPTOR' : _CLIENT_OAUTH,
-    '__module__' : 'perxis.clients.clients_pb2'
-    # @@protoc_insertion_point(class_scope:content.clients.Client.OAuth)
-    })
-  ,
-
-  'APIKey' : _reflection.GeneratedProtocolMessageType('APIKey', (_message.Message,), {
-    'DESCRIPTOR' : _CLIENT_APIKEY,
-    '__module__' : 'perxis.clients.clients_pb2'
-    # @@protoc_insertion_point(class_scope:content.clients.Client.APIKey)
-    })
-  ,
-
-  'TLS' : _reflection.GeneratedProtocolMessageType('TLS', (_message.Message,), {
-    'DESCRIPTOR' : _CLIENT_TLS,
-    '__module__' : 'perxis.clients.clients_pb2'
-    # @@protoc_insertion_point(class_scope:content.clients.Client.TLS)
-    })
-  ,
-  'DESCRIPTOR' : _CLIENT,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.Client)
-  })
-_sym_db.RegisterMessage(Client)
-_sym_db.RegisterMessage(Client.OAuth)
-_sym_db.RegisterMessage(Client.APIKey)
-_sym_db.RegisterMessage(Client.TLS)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-GetByRequest = _reflection.GeneratedProtocolMessageType('GetByRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETBYREQUEST,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.GetByRequest)
-  })
-_sym_db.RegisterMessage(GetByRequest)
-
-GetByResponse = _reflection.GeneratedProtocolMessageType('GetByResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETBYRESPONSE,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.GetByResponse)
-  })
-_sym_db.RegisterMessage(GetByResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-ListRequest = _reflection.GeneratedProtocolMessageType('ListRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREQUEST,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.ListRequest)
-  })
-_sym_db.RegisterMessage(ListRequest)
-
-ListResponse = _reflection.GeneratedProtocolMessageType('ListResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTRESPONSE,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.ListResponse)
-  })
-_sym_db.RegisterMessage(ListResponse)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-EnableRequest = _reflection.GeneratedProtocolMessageType('EnableRequest', (_message.Message,), {
-  'DESCRIPTOR' : _ENABLEREQUEST,
-  '__module__' : 'perxis.clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.EnableRequest)
-  })
-_sym_db.RegisterMessage(EnableRequest)
-
-
-DESCRIPTOR._options = None
-
-_CLIENTS = _descriptor.ServiceDescriptor(
-  name='Clients',
-  full_name='content.clients.Clients',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1127,
-  serialized_end=1630,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.clients.Clients.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.clients.Clients.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetBy',
-    full_name='content.clients.Clients.GetBy',
-    index=2,
-    containing_service=None,
-    input_type=_GETBYREQUEST,
-    output_type=_GETBYRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='content.clients.Clients.Update',
-    index=3,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='List',
-    full_name='content.clients.Clients.List',
-    index=4,
-    containing_service=None,
-    input_type=_LISTREQUEST,
-    output_type=_LISTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.clients.Clients.Delete',
-    index=5,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Enable',
-    full_name='content.clients.Clients.Enable',
-    index=6,
-    containing_service=None,
-    input_type=_ENABLEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_CLIENTS)
-
-DESCRIPTOR.services_by_name['Clients'] = _CLIENTS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/clients/clients_pb2_grpc.py b/perxis/clients/clients_pb2_grpc.py
deleted file mode 100644
index 58db00c51946a117757009ec3780652c9e1bcc37..0000000000000000000000000000000000000000
--- a/perxis/clients/clients_pb2_grpc.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.clients import clients_pb2 as perxis_dot_clients_dot_clients__pb2
-
-
-class ClientsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.clients.Clients/Create',
-                request_serializer=perxis_dot_clients_dot_clients__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_clients_dot_clients__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.clients.Clients/Get',
-                request_serializer=perxis_dot_clients_dot_clients__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_clients_dot_clients__pb2.GetResponse.FromString,
-                )
-        self.GetBy = channel.unary_unary(
-                '/content.clients.Clients/GetBy',
-                request_serializer=perxis_dot_clients_dot_clients__pb2.GetByRequest.SerializeToString,
-                response_deserializer=perxis_dot_clients_dot_clients__pb2.GetByResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/content.clients.Clients/Update',
-                request_serializer=perxis_dot_clients_dot_clients__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.List = channel.unary_unary(
-                '/content.clients.Clients/List',
-                request_serializer=perxis_dot_clients_dot_clients__pb2.ListRequest.SerializeToString,
-                response_deserializer=perxis_dot_clients_dot_clients__pb2.ListResponse.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.clients.Clients/Delete',
-                request_serializer=perxis_dot_clients_dot_clients__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Enable = channel.unary_unary(
-                '/content.clients.Clients/Enable',
-                request_serializer=perxis_dot_clients_dot_clients__pb2.EnableRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class ClientsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Create - создает клиента (приложение) для работы с API
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Get - возвращает клиента по id
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetBy(self, request, context):
-        """GetByClientID - возвращает клиента по clientId системы авторизации
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Update - обновляет параметры клиента
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def List(self, request, context):
-        """List - возвращает список клиентов созданных в пространстве
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Delete - удаляет указанного клиента из пространстве
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Enable(self, request, context):
-        """Enable - активирует/деактивирует клиента. Клиент не сможет обращаться к API платформы
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_ClientsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_clients_dot_clients__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_clients_dot_clients__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_clients_dot_clients__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_clients_dot_clients__pb2.GetResponse.SerializeToString,
-            ),
-            'GetBy': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetBy,
-                    request_deserializer=perxis_dot_clients_dot_clients__pb2.GetByRequest.FromString,
-                    response_serializer=perxis_dot_clients_dot_clients__pb2.GetByResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_clients_dot_clients__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'List': grpc.unary_unary_rpc_method_handler(
-                    servicer.List,
-                    request_deserializer=perxis_dot_clients_dot_clients__pb2.ListRequest.FromString,
-                    response_serializer=perxis_dot_clients_dot_clients__pb2.ListResponse.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_clients_dot_clients__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Enable': grpc.unary_unary_rpc_method_handler(
-                    servicer.Enable,
-                    request_deserializer=perxis_dot_clients_dot_clients__pb2.EnableRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.clients.Clients', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Clients(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Create',
-            perxis_dot_clients_dot_clients__pb2.CreateRequest.SerializeToString,
-            perxis_dot_clients_dot_clients__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Get',
-            perxis_dot_clients_dot_clients__pb2.GetRequest.SerializeToString,
-            perxis_dot_clients_dot_clients__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetBy(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/GetBy',
-            perxis_dot_clients_dot_clients__pb2.GetByRequest.SerializeToString,
-            perxis_dot_clients_dot_clients__pb2.GetByResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Update',
-            perxis_dot_clients_dot_clients__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def List(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/List',
-            perxis_dot_clients_dot_clients__pb2.ListRequest.SerializeToString,
-            perxis_dot_clients_dot_clients__pb2.ListResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Delete',
-            perxis_dot_clients_dot_clients__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Enable(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Enable',
-            perxis_dot_clients_dot_clients__pb2.EnableRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/collaborators/collaborators_pb2.py b/perxis/collaborators/collaborators_pb2.py
deleted file mode 100644
index d59d84135d9ed9fcf0f295aeb28bf352dc8bdab2..0000000000000000000000000000000000000000
--- a/perxis/collaborators/collaborators_pb2.py
+++ /dev/null
@@ -1,450 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/collaborators/collaborators.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/collaborators/collaborators.proto',
-  package='content.collaborators',
-  syntax='proto3',
-  serialized_options=b'Z;git.perx.ru/perxis/perxis/proto/collaborators;collaborators',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n(perxis/collaborators/collaborators.proto\x12\x15\x63ontent.collaborators\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"=\n\nSetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07subject\x18\x02 \x01(\t\x12\x0c\n\x04role\x18\x03 \x01(\t\"/\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07subject\x18\x02 \x01(\t\"\x1b\n\x0bGetResponse\x12\x0c\n\x04role\x18\x03 \x01(\t\"2\n\rRemoveRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07subject\x18\x02 \x01(\t\",\n\x18ListCollaboratorsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"H\n\x19ListCollaboratorsResponse\x12+\n\rcollaborators\x18\x01 \x03(\x0b\x32\x14.common.Collaborator\"$\n\x11ListSpacesRequest\x12\x0f\n\x07subject\x18\x01 \x01(\t\":\n\x12ListSpacesResponse\x12$\n\x06spaces\x18\x01 \x03(\x0b\x32\x14.common.Collaborator2\xcc\x03\n\rCollaborators\x12\x42\n\x03Set\x12!.content.collaborators.SetRequest\x1a\x16.google.protobuf.Empty\"\x00\x12N\n\x03Get\x12!.content.collaborators.GetRequest\x1a\".content.collaborators.GetResponse\"\x00\x12H\n\x06Remove\x12$.content.collaborators.RemoveRequest\x1a\x16.google.protobuf.Empty\"\x00\x12x\n\x11ListCollaborators\x12/.content.collaborators.ListCollaboratorsRequest\x1a\x30.content.collaborators.ListCollaboratorsResponse\"\x00\x12\x63\n\nListSpaces\x12(.content.collaborators.ListSpacesRequest\x1a).content.collaborators.ListSpacesResponse\"\x00\x42=Z;git.perx.ru/perxis/perxis/proto/collaborators;collaboratorsb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
-
-
-
-
-_SETREQUEST = _descriptor.Descriptor(
-  name='SetRequest',
-  full_name='content.collaborators.SetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collaborators.SetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='subject', full_name='content.collaborators.SetRequest.subject', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role', full_name='content.collaborators.SetRequest.role', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=124,
-  serialized_end=185,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.collaborators.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collaborators.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='subject', full_name='content.collaborators.GetRequest.subject', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=187,
-  serialized_end=234,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.collaborators.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='role', full_name='content.collaborators.GetResponse.role', index=0,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=236,
-  serialized_end=263,
-)
-
-
-_REMOVEREQUEST = _descriptor.Descriptor(
-  name='RemoveRequest',
-  full_name='content.collaborators.RemoveRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collaborators.RemoveRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='subject', full_name='content.collaborators.RemoveRequest.subject', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=265,
-  serialized_end=315,
-)
-
-
-_LISTCOLLABORATORSREQUEST = _descriptor.Descriptor(
-  name='ListCollaboratorsRequest',
-  full_name='content.collaborators.ListCollaboratorsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collaborators.ListCollaboratorsRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=317,
-  serialized_end=361,
-)
-
-
-_LISTCOLLABORATORSRESPONSE = _descriptor.Descriptor(
-  name='ListCollaboratorsResponse',
-  full_name='content.collaborators.ListCollaboratorsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collaborators', full_name='content.collaborators.ListCollaboratorsResponse.collaborators', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=363,
-  serialized_end=435,
-)
-
-
-_LISTSPACESREQUEST = _descriptor.Descriptor(
-  name='ListSpacesRequest',
-  full_name='content.collaborators.ListSpacesRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='subject', full_name='content.collaborators.ListSpacesRequest.subject', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=437,
-  serialized_end=473,
-)
-
-
-_LISTSPACESRESPONSE = _descriptor.Descriptor(
-  name='ListSpacesResponse',
-  full_name='content.collaborators.ListSpacesResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='spaces', full_name='content.collaborators.ListSpacesResponse.spaces', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=475,
-  serialized_end=533,
-)
-
-_LISTCOLLABORATORSRESPONSE.fields_by_name['collaborators'].message_type = perxis_dot_common_dot_common__pb2._COLLABORATOR
-_LISTSPACESRESPONSE.fields_by_name['spaces'].message_type = perxis_dot_common_dot_common__pb2._COLLABORATOR
-DESCRIPTOR.message_types_by_name['SetRequest'] = _SETREQUEST
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['RemoveRequest'] = _REMOVEREQUEST
-DESCRIPTOR.message_types_by_name['ListCollaboratorsRequest'] = _LISTCOLLABORATORSREQUEST
-DESCRIPTOR.message_types_by_name['ListCollaboratorsResponse'] = _LISTCOLLABORATORSRESPONSE
-DESCRIPTOR.message_types_by_name['ListSpacesRequest'] = _LISTSPACESREQUEST
-DESCRIPTOR.message_types_by_name['ListSpacesResponse'] = _LISTSPACESRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-SetRequest = _reflection.GeneratedProtocolMessageType('SetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _SETREQUEST,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.SetRequest)
-  })
-_sym_db.RegisterMessage(SetRequest)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-RemoveRequest = _reflection.GeneratedProtocolMessageType('RemoveRequest', (_message.Message,), {
-  'DESCRIPTOR' : _REMOVEREQUEST,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.RemoveRequest)
-  })
-_sym_db.RegisterMessage(RemoveRequest)
-
-ListCollaboratorsRequest = _reflection.GeneratedProtocolMessageType('ListCollaboratorsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTCOLLABORATORSREQUEST,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.ListCollaboratorsRequest)
-  })
-_sym_db.RegisterMessage(ListCollaboratorsRequest)
-
-ListCollaboratorsResponse = _reflection.GeneratedProtocolMessageType('ListCollaboratorsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTCOLLABORATORSRESPONSE,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.ListCollaboratorsResponse)
-  })
-_sym_db.RegisterMessage(ListCollaboratorsResponse)
-
-ListSpacesRequest = _reflection.GeneratedProtocolMessageType('ListSpacesRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTSPACESREQUEST,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.ListSpacesRequest)
-  })
-_sym_db.RegisterMessage(ListSpacesRequest)
-
-ListSpacesResponse = _reflection.GeneratedProtocolMessageType('ListSpacesResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTSPACESRESPONSE,
-  '__module__' : 'perxis.collaborators.collaborators_pb2'
-  # @@protoc_insertion_point(class_scope:content.collaborators.ListSpacesResponse)
-  })
-_sym_db.RegisterMessage(ListSpacesResponse)
-
-
-DESCRIPTOR._options = None
-
-_COLLABORATORS = _descriptor.ServiceDescriptor(
-  name='Collaborators',
-  full_name='content.collaborators.Collaborators',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=536,
-  serialized_end=996,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Set',
-    full_name='content.collaborators.Collaborators.Set',
-    index=0,
-    containing_service=None,
-    input_type=_SETREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.collaborators.Collaborators.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Remove',
-    full_name='content.collaborators.Collaborators.Remove',
-    index=2,
-    containing_service=None,
-    input_type=_REMOVEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListCollaborators',
-    full_name='content.collaborators.Collaborators.ListCollaborators',
-    index=3,
-    containing_service=None,
-    input_type=_LISTCOLLABORATORSREQUEST,
-    output_type=_LISTCOLLABORATORSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListSpaces',
-    full_name='content.collaborators.Collaborators.ListSpaces',
-    index=4,
-    containing_service=None,
-    input_type=_LISTSPACESREQUEST,
-    output_type=_LISTSPACESRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_COLLABORATORS)
-
-DESCRIPTOR.services_by_name['Collaborators'] = _COLLABORATORS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/collaborators/collaborators_pb2_grpc.py b/perxis/collaborators/collaborators_pb2_grpc.py
deleted file mode 100644
index c307e39fbaeda082d90605f36ebd56570a6fa764..0000000000000000000000000000000000000000
--- a/perxis/collaborators/collaborators_pb2_grpc.py
+++ /dev/null
@@ -1,199 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.collaborators import collaborators_pb2 as perxis_dot_collaborators_dot_collaborators__pb2
-
-
-class CollaboratorsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Set = channel.unary_unary(
-                '/content.collaborators.Collaborators/Set',
-                request_serializer=perxis_dot_collaborators_dot_collaborators__pb2.SetRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.collaborators.Collaborators/Get',
-                request_serializer=perxis_dot_collaborators_dot_collaborators__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.GetResponse.FromString,
-                )
-        self.Remove = channel.unary_unary(
-                '/content.collaborators.Collaborators/Remove',
-                request_serializer=perxis_dot_collaborators_dot_collaborators__pb2.RemoveRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.ListCollaborators = channel.unary_unary(
-                '/content.collaborators.Collaborators/ListCollaborators',
-                request_serializer=perxis_dot_collaborators_dot_collaborators__pb2.ListCollaboratorsRequest.SerializeToString,
-                response_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.ListCollaboratorsResponse.FromString,
-                )
-        self.ListSpaces = channel.unary_unary(
-                '/content.collaborators.Collaborators/ListSpaces',
-                request_serializer=perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesRequest.SerializeToString,
-                response_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesResponse.FromString,
-                )
-
-
-class CollaboratorsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Set(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Remove(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListCollaborators(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListSpaces(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_CollaboratorsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Set': grpc.unary_unary_rpc_method_handler(
-                    servicer.Set,
-                    request_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.SetRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_collaborators_dot_collaborators__pb2.GetResponse.SerializeToString,
-            ),
-            'Remove': grpc.unary_unary_rpc_method_handler(
-                    servicer.Remove,
-                    request_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.RemoveRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'ListCollaborators': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListCollaborators,
-                    request_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.ListCollaboratorsRequest.FromString,
-                    response_serializer=perxis_dot_collaborators_dot_collaborators__pb2.ListCollaboratorsResponse.SerializeToString,
-            ),
-            'ListSpaces': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListSpaces,
-                    request_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesRequest.FromString,
-                    response_serializer=perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.collaborators.Collaborators', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Collaborators(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Set(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/Set',
-            perxis_dot_collaborators_dot_collaborators__pb2.SetRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/Get',
-            perxis_dot_collaborators_dot_collaborators__pb2.GetRequest.SerializeToString,
-            perxis_dot_collaborators_dot_collaborators__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Remove(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/Remove',
-            perxis_dot_collaborators_dot_collaborators__pb2.RemoveRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListCollaborators(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/ListCollaborators',
-            perxis_dot_collaborators_dot_collaborators__pb2.ListCollaboratorsRequest.SerializeToString,
-            perxis_dot_collaborators_dot_collaborators__pb2.ListCollaboratorsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListSpaces(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/ListSpaces',
-            perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesRequest.SerializeToString,
-            perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/collections/collections_pb2.py b/perxis/collections/collections_pb2.py
deleted file mode 100644
index e208603186095f1af2b031f73cf26efc5a603bfe..0000000000000000000000000000000000000000
--- a/perxis/collections/collections_pb2.py
+++ /dev/null
@@ -1,1021 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/collections/collections.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/collections/collections.proto',
-  package='content.collections',
-  syntax='proto3',
-  serialized_options=b'Z7git.perx.ru/perxis/perxis/proto/collections;collections',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n$perxis/collections/collections.proto\x12\x13\x63ontent.collections\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"s\n\x06\x41\x63\x63\x65ss\x12\x1f\n\x07\x61\x63tions\x18\x01 \x03(\x0e\x32\x0e.common.Action\x12\x15\n\rhidden_fields\x18\x05 \x03(\t\x12\x17\n\x0freadonly_fields\x18\x06 \x03(\t\x12\x18\n\x10writeonly_fields\x18\x07 \x03(\t\"\x80\x05\n\nCollection\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x13\n\x06single\x18\x05 \x01(\x08H\x00\x88\x01\x01\x12\x13\n\x06system\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x14\n\x07no_data\x18\x0c \x01(\x08H\x02\x88\x01\x01\x12\x0e\n\x06schema\x18\x07 \x01(\t\x12\x0e\n\x06hidden\x18\r \x01(\x08\x12\x32\n\x04view\x18\t \x01(\x0b\x32$.content.collections.Collection.View\x12=\n\nstate_info\x18\n \x01(\x0b\x32).content.collections.Collection.StateInfo\x12+\n\x06\x61\x63\x63\x65ss\x18\x14 \x01(\x0b\x32\x1b.content.collections.Access\x1aO\n\x04View\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\x1a\x7f\n\tStateInfo\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32%.content.collections.Collection.State\x12\x0c\n\x04info\x18\x02 \x01(\t\x12.\n\nstarted_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"B\n\x05State\x12\x07\n\x03NEW\x10\x00\x12\r\n\tPREPARING\x10\x01\x12\t\n\x05READY\x10\x02\x12\t\n\x05\x45RROR\x10\x03\x12\x0b\n\x07\x43HANGED\x10\x04\x42\t\n\x07_singleB\t\n\x07_systemB\n\n\x08_no_data\"D\n\rCreateRequest\x12\x33\n\ncollection\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\"B\n\x0e\x43reateResponse\x12\x30\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\"-\n\nGetOptions\x12\x1f\n\x17\x64isable_schema_includes\x18\x01 \x01(\x08\"w\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x30\n\x07options\x18\x04 \x01(\x0b\x32\x1f.content.collections.GetOptions\"B\n\x0bGetResponse\x12\x33\n\ncollection\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\"\xd5\x01\n\x0bListRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x37\n\x06\x66ilter\x18\x05 \x01(\x0b\x32\'.content.collections.ListRequest.Filter\x1ak\n\x06\x46ilter\x12\x16\n\x0e\x65xclude_system\x18\x01 \x01(\x08\x12\x17\n\x0finclude_no_data\x18\x05 \x01(\x08\x12\x16\n\x0einclude_hidden\x18\x06 \x01(\x08\x12\x0c\n\x04name\x18\x03 \x03(\t\x12\n\n\x02id\x18\x04 \x03(\t\"D\n\x0cListResponse\x12\x34\n\x0b\x63ollections\x18\x01 \x03(\x0b\x32\x1f.content.collections.Collection\"D\n\rUpdateRequest\x12\x33\n\ncollection\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\"[\n\x10SetSchemaRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0e\n\x06schema\x18\x04 \x01(\t\"H\n\rDeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t2\xdb\x03\n\x0b\x43ollections\x12S\n\x06\x43reate\x12\".content.collections.CreateRequest\x1a#.content.collections.CreateResponse\"\x00\x12J\n\x03Get\x12\x1f.content.collections.GetRequest\x1a .content.collections.GetResponse\"\x00\x12M\n\x04List\x12 .content.collections.ListRequest\x1a!.content.collections.ListResponse\"\x00\x12\x46\n\x06Update\x12\".content.collections.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12L\n\tSetSchema\x12%.content.collections.SetSchemaRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x06\x44\x65lete\x12\".content.collections.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x39Z7git.perx.ru/perxis/perxis/proto/collections;collectionsb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,])
-
-
-
-_COLLECTION_STATE = _descriptor.EnumDescriptor(
-  name='State',
-  full_name='content.collections.Collection.State',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='NEW', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='PREPARING', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='READY', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ERROR', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='CHANGED', index=4, number=4,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=809,
-  serialized_end=875,
-)
-_sym_db.RegisterEnumDescriptor(_COLLECTION_STATE)
-
-
-_ACCESS = _descriptor.Descriptor(
-  name='Access',
-  full_name='content.collections.Access',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='content.collections.Access.actions', index=0,
-      number=1, type=14, cpp_type=8, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='hidden_fields', full_name='content.collections.Access.hidden_fields', index=1,
-      number=5, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='readonly_fields', full_name='content.collections.Access.readonly_fields', index=2,
-      number=6, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='writeonly_fields', full_name='content.collections.Access.writeonly_fields', index=3,
-      number=7, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=151,
-  serialized_end=266,
-)
-
-
-_COLLECTION_VIEW = _descriptor.Descriptor(
-  name='View',
-  full_name='content.collections.Collection.View',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collections.Collection.View.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.collections.Collection.View.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.collections.Collection.View.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='content.collections.Collection.View.filter', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=599,
-  serialized_end=678,
-)
-
-_COLLECTION_STATEINFO = _descriptor.Descriptor(
-  name='StateInfo',
-  full_name='content.collections.Collection.StateInfo',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='state', full_name='content.collections.Collection.StateInfo.state', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='info', full_name='content.collections.Collection.StateInfo.info', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='started_at', full_name='content.collections.Collection.StateInfo.started_at', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=680,
-  serialized_end=807,
-)
-
-_COLLECTION = _descriptor.Descriptor(
-  name='Collection',
-  full_name='content.collections.Collection',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.collections.Collection.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collections.Collection.space_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.collections.Collection.env_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='content.collections.Collection.name', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='single', full_name='content.collections.Collection.single', index=4,
-      number=5, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='system', full_name='content.collections.Collection.system', index=5,
-      number=6, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='no_data', full_name='content.collections.Collection.no_data', index=6,
-      number=12, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='schema', full_name='content.collections.Collection.schema', index=7,
-      number=7, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='hidden', full_name='content.collections.Collection.hidden', index=8,
-      number=13, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='view', full_name='content.collections.Collection.view', index=9,
-      number=9, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='state_info', full_name='content.collections.Collection.state_info', index=10,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='access', full_name='content.collections.Collection.access', index=11,
-      number=20, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_COLLECTION_VIEW, _COLLECTION_STATEINFO, ],
-  enum_types=[
-    _COLLECTION_STATE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='_single', full_name='content.collections.Collection._single',
-      index=0, containing_type=None,
-      create_key=_descriptor._internal_create_key,
-    fields=[]),
-    _descriptor.OneofDescriptor(
-      name='_system', full_name='content.collections.Collection._system',
-      index=1, containing_type=None,
-      create_key=_descriptor._internal_create_key,
-    fields=[]),
-    _descriptor.OneofDescriptor(
-      name='_no_data', full_name='content.collections.Collection._no_data',
-      index=2, containing_type=None,
-      create_key=_descriptor._internal_create_key,
-    fields=[]),
-  ],
-  serialized_start=269,
-  serialized_end=909,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.collections.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collection', full_name='content.collections.CreateRequest.collection', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=911,
-  serialized_end=979,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.collections.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='created', full_name='content.collections.CreateResponse.created', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=981,
-  serialized_end=1047,
-)
-
-
-_GETOPTIONS = _descriptor.Descriptor(
-  name='GetOptions',
-  full_name='content.collections.GetOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='disable_schema_includes', full_name='content.collections.GetOptions.disable_schema_includes', index=0,
-      number=1, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1049,
-  serialized_end=1094,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.collections.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collections.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.collections.GetRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.collections.GetRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.collections.GetRequest.options', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1096,
-  serialized_end=1215,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.collections.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collection', full_name='content.collections.GetResponse.collection', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1217,
-  serialized_end=1283,
-)
-
-
-_LISTREQUEST_FILTER = _descriptor.Descriptor(
-  name='Filter',
-  full_name='content.collections.ListRequest.Filter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='exclude_system', full_name='content.collections.ListRequest.Filter.exclude_system', index=0,
-      number=1, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='include_no_data', full_name='content.collections.ListRequest.Filter.include_no_data', index=1,
-      number=5, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='include_hidden', full_name='content.collections.ListRequest.Filter.include_hidden', index=2,
-      number=6, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='content.collections.ListRequest.Filter.name', index=3,
-      number=3, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.collections.ListRequest.Filter.id', index=4,
-      number=4, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1392,
-  serialized_end=1499,
-)
-
-_LISTREQUEST = _descriptor.Descriptor(
-  name='ListRequest',
-  full_name='content.collections.ListRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collections.ListRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.collections.ListRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='content.collections.ListRequest.filter', index=2,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_LISTREQUEST_FILTER, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1286,
-  serialized_end=1499,
-)
-
-
-_LISTRESPONSE = _descriptor.Descriptor(
-  name='ListResponse',
-  full_name='content.collections.ListResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collections', full_name='content.collections.ListResponse.collections', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1501,
-  serialized_end=1569,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='content.collections.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collection', full_name='content.collections.UpdateRequest.collection', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1571,
-  serialized_end=1639,
-)
-
-
-_SETSCHEMAREQUEST = _descriptor.Descriptor(
-  name='SetSchemaRequest',
-  full_name='content.collections.SetSchemaRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collections.SetSchemaRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.collections.SetSchemaRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.collections.SetSchemaRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='schema', full_name='content.collections.SetSchemaRequest.schema', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1641,
-  serialized_end=1732,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.collections.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.collections.DeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.collections.DeleteRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.collections.DeleteRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1734,
-  serialized_end=1806,
-)
-
-_ACCESS.fields_by_name['actions'].enum_type = perxis_dot_common_dot_common__pb2._ACTION
-_COLLECTION_VIEW.containing_type = _COLLECTION
-_COLLECTION_STATEINFO.fields_by_name['state'].enum_type = _COLLECTION_STATE
-_COLLECTION_STATEINFO.fields_by_name['started_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_COLLECTION_STATEINFO.containing_type = _COLLECTION
-_COLLECTION.fields_by_name['view'].message_type = _COLLECTION_VIEW
-_COLLECTION.fields_by_name['state_info'].message_type = _COLLECTION_STATEINFO
-_COLLECTION.fields_by_name['access'].message_type = _ACCESS
-_COLLECTION_STATE.containing_type = _COLLECTION
-_COLLECTION.oneofs_by_name['_single'].fields.append(
-  _COLLECTION.fields_by_name['single'])
-_COLLECTION.fields_by_name['single'].containing_oneof = _COLLECTION.oneofs_by_name['_single']
-_COLLECTION.oneofs_by_name['_system'].fields.append(
-  _COLLECTION.fields_by_name['system'])
-_COLLECTION.fields_by_name['system'].containing_oneof = _COLLECTION.oneofs_by_name['_system']
-_COLLECTION.oneofs_by_name['_no_data'].fields.append(
-  _COLLECTION.fields_by_name['no_data'])
-_COLLECTION.fields_by_name['no_data'].containing_oneof = _COLLECTION.oneofs_by_name['_no_data']
-_CREATEREQUEST.fields_by_name['collection'].message_type = _COLLECTION
-_CREATERESPONSE.fields_by_name['created'].message_type = _COLLECTION
-_GETREQUEST.fields_by_name['options'].message_type = _GETOPTIONS
-_GETRESPONSE.fields_by_name['collection'].message_type = _COLLECTION
-_LISTREQUEST_FILTER.containing_type = _LISTREQUEST
-_LISTREQUEST.fields_by_name['filter'].message_type = _LISTREQUEST_FILTER
-_LISTRESPONSE.fields_by_name['collections'].message_type = _COLLECTION
-_UPDATEREQUEST.fields_by_name['collection'].message_type = _COLLECTION
-DESCRIPTOR.message_types_by_name['Access'] = _ACCESS
-DESCRIPTOR.message_types_by_name['Collection'] = _COLLECTION
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['GetOptions'] = _GETOPTIONS
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['ListRequest'] = _LISTREQUEST
-DESCRIPTOR.message_types_by_name['ListResponse'] = _LISTRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['SetSchemaRequest'] = _SETSCHEMAREQUEST
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Access = _reflection.GeneratedProtocolMessageType('Access', (_message.Message,), {
-  'DESCRIPTOR' : _ACCESS,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.Access)
-  })
-_sym_db.RegisterMessage(Access)
-
-Collection = _reflection.GeneratedProtocolMessageType('Collection', (_message.Message,), {
-
-  'View' : _reflection.GeneratedProtocolMessageType('View', (_message.Message,), {
-    'DESCRIPTOR' : _COLLECTION_VIEW,
-    '__module__' : 'perxis.collections.collections_pb2'
-    # @@protoc_insertion_point(class_scope:content.collections.Collection.View)
-    })
-  ,
-
-  'StateInfo' : _reflection.GeneratedProtocolMessageType('StateInfo', (_message.Message,), {
-    'DESCRIPTOR' : _COLLECTION_STATEINFO,
-    '__module__' : 'perxis.collections.collections_pb2'
-    # @@protoc_insertion_point(class_scope:content.collections.Collection.StateInfo)
-    })
-  ,
-  'DESCRIPTOR' : _COLLECTION,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.Collection)
-  })
-_sym_db.RegisterMessage(Collection)
-_sym_db.RegisterMessage(Collection.View)
-_sym_db.RegisterMessage(Collection.StateInfo)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-GetOptions = _reflection.GeneratedProtocolMessageType('GetOptions', (_message.Message,), {
-  'DESCRIPTOR' : _GETOPTIONS,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.GetOptions)
-  })
-_sym_db.RegisterMessage(GetOptions)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-ListRequest = _reflection.GeneratedProtocolMessageType('ListRequest', (_message.Message,), {
-
-  'Filter' : _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
-    'DESCRIPTOR' : _LISTREQUEST_FILTER,
-    '__module__' : 'perxis.collections.collections_pb2'
-    # @@protoc_insertion_point(class_scope:content.collections.ListRequest.Filter)
-    })
-  ,
-  'DESCRIPTOR' : _LISTREQUEST,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.ListRequest)
-  })
-_sym_db.RegisterMessage(ListRequest)
-_sym_db.RegisterMessage(ListRequest.Filter)
-
-ListResponse = _reflection.GeneratedProtocolMessageType('ListResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTRESPONSE,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.ListResponse)
-  })
-_sym_db.RegisterMessage(ListResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-SetSchemaRequest = _reflection.GeneratedProtocolMessageType('SetSchemaRequest', (_message.Message,), {
-  'DESCRIPTOR' : _SETSCHEMAREQUEST,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.SetSchemaRequest)
-  })
-_sym_db.RegisterMessage(SetSchemaRequest)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.collections.collections_pb2'
-  # @@protoc_insertion_point(class_scope:content.collections.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-
-DESCRIPTOR._options = None
-
-_COLLECTIONS = _descriptor.ServiceDescriptor(
-  name='Collections',
-  full_name='content.collections.Collections',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1809,
-  serialized_end=2284,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.collections.Collections.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.collections.Collections.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='List',
-    full_name='content.collections.Collections.List',
-    index=2,
-    containing_service=None,
-    input_type=_LISTREQUEST,
-    output_type=_LISTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='content.collections.Collections.Update',
-    index=3,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='SetSchema',
-    full_name='content.collections.Collections.SetSchema',
-    index=4,
-    containing_service=None,
-    input_type=_SETSCHEMAREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.collections.Collections.Delete',
-    index=5,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_COLLECTIONS)
-
-DESCRIPTOR.services_by_name['Collections'] = _COLLECTIONS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/collections/collections_pb2_grpc.py b/perxis/collections/collections_pb2_grpc.py
deleted file mode 100644
index e208135eb57979bfd5c590a179ba7ee60e3c2638..0000000000000000000000000000000000000000
--- a/perxis/collections/collections_pb2_grpc.py
+++ /dev/null
@@ -1,232 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.collections import collections_pb2 as perxis_dot_collections_dot_collections__pb2
-
-
-class CollectionsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.collections.Collections/Create',
-                request_serializer=perxis_dot_collections_dot_collections__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_collections_dot_collections__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.collections.Collections/Get',
-                request_serializer=perxis_dot_collections_dot_collections__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_collections_dot_collections__pb2.GetResponse.FromString,
-                )
-        self.List = channel.unary_unary(
-                '/content.collections.Collections/List',
-                request_serializer=perxis_dot_collections_dot_collections__pb2.ListRequest.SerializeToString,
-                response_deserializer=perxis_dot_collections_dot_collections__pb2.ListResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/content.collections.Collections/Update',
-                request_serializer=perxis_dot_collections_dot_collections__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.SetSchema = channel.unary_unary(
-                '/content.collections.Collections/SetSchema',
-                request_serializer=perxis_dot_collections_dot_collections__pb2.SetSchemaRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.collections.Collections/Delete',
-                request_serializer=perxis_dot_collections_dot_collections__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class CollectionsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def List(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def SetSchema(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_CollectionsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_collections_dot_collections__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_collections_dot_collections__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_collections_dot_collections__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_collections_dot_collections__pb2.GetResponse.SerializeToString,
-            ),
-            'List': grpc.unary_unary_rpc_method_handler(
-                    servicer.List,
-                    request_deserializer=perxis_dot_collections_dot_collections__pb2.ListRequest.FromString,
-                    response_serializer=perxis_dot_collections_dot_collections__pb2.ListResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_collections_dot_collections__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'SetSchema': grpc.unary_unary_rpc_method_handler(
-                    servicer.SetSchema,
-                    request_deserializer=perxis_dot_collections_dot_collections__pb2.SetSchemaRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_collections_dot_collections__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.collections.Collections', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Collections(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Create',
-            perxis_dot_collections_dot_collections__pb2.CreateRequest.SerializeToString,
-            perxis_dot_collections_dot_collections__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Get',
-            perxis_dot_collections_dot_collections__pb2.GetRequest.SerializeToString,
-            perxis_dot_collections_dot_collections__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def List(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/List',
-            perxis_dot_collections_dot_collections__pb2.ListRequest.SerializeToString,
-            perxis_dot_collections_dot_collections__pb2.ListResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Update',
-            perxis_dot_collections_dot_collections__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def SetSchema(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/SetSchema',
-            perxis_dot_collections_dot_collections__pb2.SetSchemaRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Delete',
-            perxis_dot_collections_dot_collections__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/common/common_pb2.py b/perxis/common/common_pb2.py
deleted file mode 100644
index 6d2c588ebb95ad0e5179fd2d72650c2e971b9141..0000000000000000000000000000000000000000
--- a/perxis/common/common_pb2.py
+++ /dev/null
@@ -1,871 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/common/common.proto
-"""Generated protocol buffer code."""
-from google.protobuf.internal import enum_type_wrapper
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/common/common.proto',
-  package='common',
-  syntax='proto3',
-  serialized_options=b'Z-git.perx.ru/perxis/perxis/proto/common;common',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1aperxis/common/common.proto\x12\x06\x63ommon\x1a\x1cgoogle/protobuf/struct.proto\"\xa6\x05\n\x05\x45rror\x12\x12\n\nerror_code\x18\x01 \x01(\x04\x12\x10\n\x08\x65rror_id\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12\x0e\n\x06\x64omain\x18\x04 \x01(\t\x12-\n\x08metadata\x18\t \x03(\x0b\x32\x1b.common.Error.MetadataEntry\x12-\n\x0b\x62\x61\x64_request\x18\n \x01(\x0b\x32\x18.common.Error.BadRequest\x12+\n\ndebug_info\x18\x0b \x01(\x0b\x32\x17.common.Error.DebugInfo\x12 \n\x04help\x18\x64 \x01(\x0b\x32\x12.common.Error.Help\x12;\n\x12localized_messages\x18\xc8\x01 \x03(\x0b\x32\x1e.common.Error.LocalizedMessage\x1a{\n\nBadRequest\x12\x37\n\x06\x65rrors\x18\x01 \x03(\x0b\x32\'.common.Error.BadRequest.FieldViolation\x1a\x34\n\x0e\x46ieldViolation\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x1aX\n\x04Help\x12&\n\x05links\x18\x01 \x03(\x0b\x32\x17.common.Error.Help.Link\x1a(\n\x04Link\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x1a\x30\n\tDebugInfo\x12\x13\n\x0bstack_trace\x18\x01 \x03(\t\x12\x0e\n\x06\x64\x65tail\x18\x02 \x01(\t\x1a\x33\n\x10LocalizedMessage\x12\x0e\n\x06locale\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"J\n\x06\x46ilter\x12\n\n\x02op\x18\x01 \x01(\t\x12\r\n\x05\x66ield\x18\x02 \x01(\t\x12%\n\x05value\x18\x03 \x01(\x0b\x32\x16.google.protobuf.Value\"h\n\x0b\x46indOptions\x12\x0c\n\x04sort\x18\x01 \x03(\t\x12\x10\n\x08page_num\x18\x02 \x01(\x05\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x0e\n\x06\x66ields\x18\x04 \x03(\t\x12\x16\n\x0e\x65xclude_fields\x18\x05 \x01(\x08\"\xd3\x01\n\x04Rule\x12\x15\n\rcollection_id\x18\x01 \x01(\t\x12\x1f\n\x07\x61\x63tions\x18\x02 \x03(\x0e\x32\x0e.common.Action\x12\x1e\n\x06\x61\x63\x63\x65ss\x18\x03 \x01(\x0e\x32\x0e.common.Access\x12\x15\n\rhidden_fields\x18\x05 \x03(\t\x12\x17\n\x0freadonly_fields\x18\x06 \x03(\t\x12\x18\n\x10writeonly_fields\x18\x07 \x03(\t\x12\x13\n\x0bread_filter\x18\x08 \x01(\t\x12\x14\n\x0cwrite_filter\x18\t \x01(\t\"?\n\x0c\x43ollaborator\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07subject\x18\x02 \x01(\t\x12\x0c\n\x04role\x18\x03 \x01(\t\"p\n\x07Version\x12\x16\n\x0eserver_version\x18\x01 \x01(\t\x12\x13\n\x0b\x61pi_version\x18\x02 \x01(\t\x12\x12\n\nbuild_time\x18\x03 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x04 \x01(\t\x12\x14\n\x0c\x62uild_number\x18\x05 \x01(\x05*%\n\x06\x41\x63\x63\x65ss\x12\x07\n\x03\x41NY\x10\x00\x12\x08\n\x04MINE\x10\x01\x12\x08\n\x04ROLE\x10\x02*C\n\x06\x41\x63tion\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x43REATE\x10\x01\x12\x08\n\x04READ\x10\x02\x12\n\n\x06UPDATE\x10\x03\x12\n\n\x06\x44\x45LETE\x10\x04\x42/Z-git.perx.ru/perxis/perxis/proto/common;commonb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,])
-
-_ACCESS = _descriptor.EnumDescriptor(
-  name='Access',
-  full_name='common.Access',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='ANY', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='MINE', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ROLE', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=1324,
-  serialized_end=1361,
-)
-_sym_db.RegisterEnumDescriptor(_ACCESS)
-
-Access = enum_type_wrapper.EnumTypeWrapper(_ACCESS)
-_ACTION = _descriptor.EnumDescriptor(
-  name='Action',
-  full_name='common.Action',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='UNKNOWN', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='CREATE', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='READ', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='UPDATE', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='DELETE', index=4, number=4,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=1363,
-  serialized_end=1430,
-)
-_sym_db.RegisterEnumDescriptor(_ACTION)
-
-Action = enum_type_wrapper.EnumTypeWrapper(_ACTION)
-ANY = 0
-MINE = 1
-ROLE = 2
-UNKNOWN = 0
-CREATE = 1
-READ = 2
-UPDATE = 3
-DELETE = 4
-
-
-
-_ERROR_BADREQUEST_FIELDVIOLATION = _descriptor.Descriptor(
-  name='FieldViolation',
-  full_name='common.Error.BadRequest.FieldViolation',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='field', full_name='common.Error.BadRequest.FieldViolation.field', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='common.Error.BadRequest.FieldViolation.description', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=453,
-  serialized_end=505,
-)
-
-_ERROR_BADREQUEST = _descriptor.Descriptor(
-  name='BadRequest',
-  full_name='common.Error.BadRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='errors', full_name='common.Error.BadRequest.errors', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_ERROR_BADREQUEST_FIELDVIOLATION, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=382,
-  serialized_end=505,
-)
-
-_ERROR_HELP_LINK = _descriptor.Descriptor(
-  name='Link',
-  full_name='common.Error.Help.Link',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='description', full_name='common.Error.Help.Link.description', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='url', full_name='common.Error.Help.Link.url', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=555,
-  serialized_end=595,
-)
-
-_ERROR_HELP = _descriptor.Descriptor(
-  name='Help',
-  full_name='common.Error.Help',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='links', full_name='common.Error.Help.links', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_ERROR_HELP_LINK, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=507,
-  serialized_end=595,
-)
-
-_ERROR_DEBUGINFO = _descriptor.Descriptor(
-  name='DebugInfo',
-  full_name='common.Error.DebugInfo',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='stack_trace', full_name='common.Error.DebugInfo.stack_trace', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='detail', full_name='common.Error.DebugInfo.detail', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=597,
-  serialized_end=645,
-)
-
-_ERROR_LOCALIZEDMESSAGE = _descriptor.Descriptor(
-  name='LocalizedMessage',
-  full_name='common.Error.LocalizedMessage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='locale', full_name='common.Error.LocalizedMessage.locale', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='message', full_name='common.Error.LocalizedMessage.message', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=647,
-  serialized_end=698,
-)
-
-_ERROR_METADATAENTRY = _descriptor.Descriptor(
-  name='MetadataEntry',
-  full_name='common.Error.MetadataEntry',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='key', full_name='common.Error.MetadataEntry.key', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='value', full_name='common.Error.MetadataEntry.value', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=b'8\001',
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=700,
-  serialized_end=747,
-)
-
-_ERROR = _descriptor.Descriptor(
-  name='Error',
-  full_name='common.Error',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='error_code', full_name='common.Error.error_code', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='error_id', full_name='common.Error.error_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='reason', full_name='common.Error.reason', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='domain', full_name='common.Error.domain', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='metadata', full_name='common.Error.metadata', index=4,
-      number=9, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='bad_request', full_name='common.Error.bad_request', index=5,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='debug_info', full_name='common.Error.debug_info', index=6,
-      number=11, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='help', full_name='common.Error.help', index=7,
-      number=100, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='localized_messages', full_name='common.Error.localized_messages', index=8,
-      number=200, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_ERROR_BADREQUEST, _ERROR_HELP, _ERROR_DEBUGINFO, _ERROR_LOCALIZEDMESSAGE, _ERROR_METADATAENTRY, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=69,
-  serialized_end=747,
-)
-
-
-_FILTER = _descriptor.Descriptor(
-  name='Filter',
-  full_name='common.Filter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='op', full_name='common.Filter.op', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='field', full_name='common.Filter.field', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='value', full_name='common.Filter.value', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=749,
-  serialized_end=823,
-)
-
-
-_FINDOPTIONS = _descriptor.Descriptor(
-  name='FindOptions',
-  full_name='common.FindOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='sort', full_name='common.FindOptions.sort', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='page_num', full_name='common.FindOptions.page_num', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='page_size', full_name='common.FindOptions.page_size', index=2,
-      number=3, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='fields', full_name='common.FindOptions.fields', index=3,
-      number=4, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='exclude_fields', full_name='common.FindOptions.exclude_fields', index=4,
-      number=5, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=825,
-  serialized_end=929,
-)
-
-
-_RULE = _descriptor.Descriptor(
-  name='Rule',
-  full_name='common.Rule',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='common.Rule.collection_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='common.Rule.actions', index=1,
-      number=2, type=14, cpp_type=8, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='access', full_name='common.Rule.access', index=2,
-      number=3, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='hidden_fields', full_name='common.Rule.hidden_fields', index=3,
-      number=5, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='readonly_fields', full_name='common.Rule.readonly_fields', index=4,
-      number=6, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='writeonly_fields', full_name='common.Rule.writeonly_fields', index=5,
-      number=7, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='read_filter', full_name='common.Rule.read_filter', index=6,
-      number=8, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='write_filter', full_name='common.Rule.write_filter', index=7,
-      number=9, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=932,
-  serialized_end=1143,
-)
-
-
-_COLLABORATOR = _descriptor.Descriptor(
-  name='Collaborator',
-  full_name='common.Collaborator',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='common.Collaborator.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='subject', full_name='common.Collaborator.subject', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role', full_name='common.Collaborator.role', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1145,
-  serialized_end=1208,
-)
-
-
-_VERSION = _descriptor.Descriptor(
-  name='Version',
-  full_name='common.Version',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='server_version', full_name='common.Version.server_version', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='api_version', full_name='common.Version.api_version', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='build_time', full_name='common.Version.build_time', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='commit', full_name='common.Version.commit', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='build_number', full_name='common.Version.build_number', index=4,
-      number=5, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1210,
-  serialized_end=1322,
-)
-
-_ERROR_BADREQUEST_FIELDVIOLATION.containing_type = _ERROR_BADREQUEST
-_ERROR_BADREQUEST.fields_by_name['errors'].message_type = _ERROR_BADREQUEST_FIELDVIOLATION
-_ERROR_BADREQUEST.containing_type = _ERROR
-_ERROR_HELP_LINK.containing_type = _ERROR_HELP
-_ERROR_HELP.fields_by_name['links'].message_type = _ERROR_HELP_LINK
-_ERROR_HELP.containing_type = _ERROR
-_ERROR_DEBUGINFO.containing_type = _ERROR
-_ERROR_LOCALIZEDMESSAGE.containing_type = _ERROR
-_ERROR_METADATAENTRY.containing_type = _ERROR
-_ERROR.fields_by_name['metadata'].message_type = _ERROR_METADATAENTRY
-_ERROR.fields_by_name['bad_request'].message_type = _ERROR_BADREQUEST
-_ERROR.fields_by_name['debug_info'].message_type = _ERROR_DEBUGINFO
-_ERROR.fields_by_name['help'].message_type = _ERROR_HELP
-_ERROR.fields_by_name['localized_messages'].message_type = _ERROR_LOCALIZEDMESSAGE
-_FILTER.fields_by_name['value'].message_type = google_dot_protobuf_dot_struct__pb2._VALUE
-_RULE.fields_by_name['actions'].enum_type = _ACTION
-_RULE.fields_by_name['access'].enum_type = _ACCESS
-DESCRIPTOR.message_types_by_name['Error'] = _ERROR
-DESCRIPTOR.message_types_by_name['Filter'] = _FILTER
-DESCRIPTOR.message_types_by_name['FindOptions'] = _FINDOPTIONS
-DESCRIPTOR.message_types_by_name['Rule'] = _RULE
-DESCRIPTOR.message_types_by_name['Collaborator'] = _COLLABORATOR
-DESCRIPTOR.message_types_by_name['Version'] = _VERSION
-DESCRIPTOR.enum_types_by_name['Access'] = _ACCESS
-DESCRIPTOR.enum_types_by_name['Action'] = _ACTION
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Error = _reflection.GeneratedProtocolMessageType('Error', (_message.Message,), {
-
-  'BadRequest' : _reflection.GeneratedProtocolMessageType('BadRequest', (_message.Message,), {
-
-    'FieldViolation' : _reflection.GeneratedProtocolMessageType('FieldViolation', (_message.Message,), {
-      'DESCRIPTOR' : _ERROR_BADREQUEST_FIELDVIOLATION,
-      '__module__' : 'perxis.common.common_pb2'
-      # @@protoc_insertion_point(class_scope:common.Error.BadRequest.FieldViolation)
-      })
-    ,
-    'DESCRIPTOR' : _ERROR_BADREQUEST,
-    '__module__' : 'perxis.common.common_pb2'
-    # @@protoc_insertion_point(class_scope:common.Error.BadRequest)
-    })
-  ,
-
-  'Help' : _reflection.GeneratedProtocolMessageType('Help', (_message.Message,), {
-
-    'Link' : _reflection.GeneratedProtocolMessageType('Link', (_message.Message,), {
-      'DESCRIPTOR' : _ERROR_HELP_LINK,
-      '__module__' : 'perxis.common.common_pb2'
-      # @@protoc_insertion_point(class_scope:common.Error.Help.Link)
-      })
-    ,
-    'DESCRIPTOR' : _ERROR_HELP,
-    '__module__' : 'perxis.common.common_pb2'
-    # @@protoc_insertion_point(class_scope:common.Error.Help)
-    })
-  ,
-
-  'DebugInfo' : _reflection.GeneratedProtocolMessageType('DebugInfo', (_message.Message,), {
-    'DESCRIPTOR' : _ERROR_DEBUGINFO,
-    '__module__' : 'perxis.common.common_pb2'
-    # @@protoc_insertion_point(class_scope:common.Error.DebugInfo)
-    })
-  ,
-
-  'LocalizedMessage' : _reflection.GeneratedProtocolMessageType('LocalizedMessage', (_message.Message,), {
-    'DESCRIPTOR' : _ERROR_LOCALIZEDMESSAGE,
-    '__module__' : 'perxis.common.common_pb2'
-    # @@protoc_insertion_point(class_scope:common.Error.LocalizedMessage)
-    })
-  ,
-
-  'MetadataEntry' : _reflection.GeneratedProtocolMessageType('MetadataEntry', (_message.Message,), {
-    'DESCRIPTOR' : _ERROR_METADATAENTRY,
-    '__module__' : 'perxis.common.common_pb2'
-    # @@protoc_insertion_point(class_scope:common.Error.MetadataEntry)
-    })
-  ,
-  'DESCRIPTOR' : _ERROR,
-  '__module__' : 'perxis.common.common_pb2'
-  # @@protoc_insertion_point(class_scope:common.Error)
-  })
-_sym_db.RegisterMessage(Error)
-_sym_db.RegisterMessage(Error.BadRequest)
-_sym_db.RegisterMessage(Error.BadRequest.FieldViolation)
-_sym_db.RegisterMessage(Error.Help)
-_sym_db.RegisterMessage(Error.Help.Link)
-_sym_db.RegisterMessage(Error.DebugInfo)
-_sym_db.RegisterMessage(Error.LocalizedMessage)
-_sym_db.RegisterMessage(Error.MetadataEntry)
-
-Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
-  'DESCRIPTOR' : _FILTER,
-  '__module__' : 'perxis.common.common_pb2'
-  # @@protoc_insertion_point(class_scope:common.Filter)
-  })
-_sym_db.RegisterMessage(Filter)
-
-FindOptions = _reflection.GeneratedProtocolMessageType('FindOptions', (_message.Message,), {
-  'DESCRIPTOR' : _FINDOPTIONS,
-  '__module__' : 'perxis.common.common_pb2'
-  # @@protoc_insertion_point(class_scope:common.FindOptions)
-  })
-_sym_db.RegisterMessage(FindOptions)
-
-Rule = _reflection.GeneratedProtocolMessageType('Rule', (_message.Message,), {
-  'DESCRIPTOR' : _RULE,
-  '__module__' : 'perxis.common.common_pb2'
-  # @@protoc_insertion_point(class_scope:common.Rule)
-  })
-_sym_db.RegisterMessage(Rule)
-
-Collaborator = _reflection.GeneratedProtocolMessageType('Collaborator', (_message.Message,), {
-  'DESCRIPTOR' : _COLLABORATOR,
-  '__module__' : 'perxis.common.common_pb2'
-  # @@protoc_insertion_point(class_scope:common.Collaborator)
-  })
-_sym_db.RegisterMessage(Collaborator)
-
-Version = _reflection.GeneratedProtocolMessageType('Version', (_message.Message,), {
-  'DESCRIPTOR' : _VERSION,
-  '__module__' : 'perxis.common.common_pb2'
-  # @@protoc_insertion_point(class_scope:common.Version)
-  })
-_sym_db.RegisterMessage(Version)
-
-
-DESCRIPTOR._options = None
-_ERROR_METADATAENTRY._options = None
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/common/common_pb2_grpc.py b/perxis/common/common_pb2_grpc.py
deleted file mode 100644
index 2daafffebfc817aefe8fcb96eaec25e65b3903e8..0000000000000000000000000000000000000000
--- a/perxis/common/common_pb2_grpc.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
diff --git a/perxis/delivery/delivery_pb2.py b/perxis/delivery/delivery_pb2.py
deleted file mode 100644
index 9d5a5fd79886e57d283016fcd8ac48cbc0dad6bd..0000000000000000000000000000000000000000
--- a/perxis/delivery/delivery_pb2.py
+++ /dev/null
@@ -1,783 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/delivery/delivery.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from perxis.locales import locales_pb2 as perxis_dot_locales_dot_locales__pb2
-from perxis.environments import environments_pb2 as perxis_dot_environments_dot_environments__pb2
-from perxis.collections import collections_pb2 as perxis_dot_collections_dot_collections__pb2
-from perxis.items import items_pb2 as perxis_dot_items_dot_items__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/delivery/delivery.proto',
-  package='delivery',
-  syntax='proto3',
-  serialized_options=b'Z1git.perx.ru/perxis/perxis/proto/delivery;delivery',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1eperxis/delivery/delivery.proto\x12\x08\x64\x65livery\x1a\x1cperxis/locales/locales.proto\x1a&perxis/environments/environments.proto\x1a$perxis/collections/collections.proto\x1a\x18perxis/items/items.proto\"&\n\x12ListLocalesRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"?\n\x13ListLocalesResponse\x12(\n\x07locales\x18\x01 \x03(\x0b\x32\x17.content.locales.Locale\"9\n\x15GetEnvironmentRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\"H\n\x16GetEnvironmentResponse\x12.\n\x03\x65nv\x18\x01 \x01(\x0b\x32!.content.environments.Environment\"+\n\x17ListEnvironmentsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"K\n\x18ListEnvironmentsResponse\x12/\n\x04\x65nvs\x18\x01 \x03(\x0b\x32!.content.environments.Environment\"O\n\x14GetCollectionRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\"L\n\x15GetCollectionResponse\x12\x33\n\ncollection\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\":\n\x16ListCollectionsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\"O\n\x17ListCollectionsResponse\x12\x34\n\x0b\x63ollections\x18\x01 \x03(\x0b\x32\x1f.content.collections.Collection\"\x8f\x01\n\x0eGetItemRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0f\n\x07item_id\x18\x05 \x01(\t\x12\x33\n\x07options\x18\x06 \x01(\x0b\x32\".content.items.GetPublishedOptions\"4\n\x0fGetItemResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\xa8\x01\n\x10\x46indItemsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12%\n\x06\x66ilter\x18\x05 \x01(\x0b\x32\x15.content.items.Filter\x12\x34\n\x07options\x18\x06 \x01(\x0b\x32#.content.items.FindPublishedOptions\"F\n\x11\x46indItemsResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.content.items.Item\x12\r\n\x05total\x18\x02 \x01(\x05\x32\xc4\x04\n\x08\x44\x65livery\x12L\n\x0bListLocales\x12\x1c.delivery.ListLocalesRequest\x1a\x1d.delivery.ListLocalesResponse\"\x00\x12U\n\x0eGetEnvironment\x12\x1f.delivery.GetEnvironmentRequest\x1a .delivery.GetEnvironmentResponse\"\x00\x12[\n\x10ListEnvironments\x12!.delivery.ListEnvironmentsRequest\x1a\".delivery.ListEnvironmentsResponse\"\x00\x12R\n\rGetCollection\x12\x1e.delivery.GetCollectionRequest\x1a\x1f.delivery.GetCollectionResponse\"\x00\x12X\n\x0fListCollections\x12 .delivery.ListCollectionsRequest\x1a!.delivery.ListCollectionsResponse\"\x00\x12@\n\x07GetItem\x12\x18.delivery.GetItemRequest\x1a\x19.delivery.GetItemResponse\"\x00\x12\x46\n\tFindItems\x12\x1a.delivery.FindItemsRequest\x1a\x1b.delivery.FindItemsResponse\"\x00\x42\x33Z1git.perx.ru/perxis/perxis/proto/delivery;deliveryb\x06proto3'
-  ,
-  dependencies=[perxis_dot_locales_dot_locales__pb2.DESCRIPTOR,perxis_dot_environments_dot_environments__pb2.DESCRIPTOR,perxis_dot_collections_dot_collections__pb2.DESCRIPTOR,perxis_dot_items_dot_items__pb2.DESCRIPTOR,])
-
-
-
-
-_LISTLOCALESREQUEST = _descriptor.Descriptor(
-  name='ListLocalesRequest',
-  full_name='delivery.ListLocalesRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='delivery.ListLocalesRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=178,
-  serialized_end=216,
-)
-
-
-_LISTLOCALESRESPONSE = _descriptor.Descriptor(
-  name='ListLocalesResponse',
-  full_name='delivery.ListLocalesResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='locales', full_name='delivery.ListLocalesResponse.locales', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=218,
-  serialized_end=281,
-)
-
-
-_GETENVIRONMENTREQUEST = _descriptor.Descriptor(
-  name='GetEnvironmentRequest',
-  full_name='delivery.GetEnvironmentRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='delivery.GetEnvironmentRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='delivery.GetEnvironmentRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=283,
-  serialized_end=340,
-)
-
-
-_GETENVIRONMENTRESPONSE = _descriptor.Descriptor(
-  name='GetEnvironmentResponse',
-  full_name='delivery.GetEnvironmentResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='env', full_name='delivery.GetEnvironmentResponse.env', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=342,
-  serialized_end=414,
-)
-
-
-_LISTENVIRONMENTSREQUEST = _descriptor.Descriptor(
-  name='ListEnvironmentsRequest',
-  full_name='delivery.ListEnvironmentsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='delivery.ListEnvironmentsRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=416,
-  serialized_end=459,
-)
-
-
-_LISTENVIRONMENTSRESPONSE = _descriptor.Descriptor(
-  name='ListEnvironmentsResponse',
-  full_name='delivery.ListEnvironmentsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='envs', full_name='delivery.ListEnvironmentsResponse.envs', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=461,
-  serialized_end=536,
-)
-
-
-_GETCOLLECTIONREQUEST = _descriptor.Descriptor(
-  name='GetCollectionRequest',
-  full_name='delivery.GetCollectionRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='delivery.GetCollectionRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='delivery.GetCollectionRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='delivery.GetCollectionRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=538,
-  serialized_end=617,
-)
-
-
-_GETCOLLECTIONRESPONSE = _descriptor.Descriptor(
-  name='GetCollectionResponse',
-  full_name='delivery.GetCollectionResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collection', full_name='delivery.GetCollectionResponse.collection', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=619,
-  serialized_end=695,
-)
-
-
-_LISTCOLLECTIONSREQUEST = _descriptor.Descriptor(
-  name='ListCollectionsRequest',
-  full_name='delivery.ListCollectionsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='delivery.ListCollectionsRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='delivery.ListCollectionsRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=697,
-  serialized_end=755,
-)
-
-
-_LISTCOLLECTIONSRESPONSE = _descriptor.Descriptor(
-  name='ListCollectionsResponse',
-  full_name='delivery.ListCollectionsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collections', full_name='delivery.ListCollectionsResponse.collections', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=757,
-  serialized_end=836,
-)
-
-
-_GETITEMREQUEST = _descriptor.Descriptor(
-  name='GetItemRequest',
-  full_name='delivery.GetItemRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='delivery.GetItemRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='delivery.GetItemRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='delivery.GetItemRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='delivery.GetItemRequest.item_id', index=3,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='delivery.GetItemRequest.options', index=4,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=839,
-  serialized_end=982,
-)
-
-
-_GETITEMRESPONSE = _descriptor.Descriptor(
-  name='GetItemResponse',
-  full_name='delivery.GetItemResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='delivery.GetItemResponse.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=984,
-  serialized_end=1036,
-)
-
-
-_FINDITEMSREQUEST = _descriptor.Descriptor(
-  name='FindItemsRequest',
-  full_name='delivery.FindItemsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='delivery.FindItemsRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='delivery.FindItemsRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='delivery.FindItemsRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='delivery.FindItemsRequest.filter', index=3,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='delivery.FindItemsRequest.options', index=4,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1039,
-  serialized_end=1207,
-)
-
-
-_FINDITEMSRESPONSE = _descriptor.Descriptor(
-  name='FindItemsResponse',
-  full_name='delivery.FindItemsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='delivery.FindItemsResponse.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='delivery.FindItemsResponse.total', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1209,
-  serialized_end=1279,
-)
-
-_LISTLOCALESRESPONSE.fields_by_name['locales'].message_type = perxis_dot_locales_dot_locales__pb2._LOCALE
-_GETENVIRONMENTRESPONSE.fields_by_name['env'].message_type = perxis_dot_environments_dot_environments__pb2._ENVIRONMENT
-_LISTENVIRONMENTSRESPONSE.fields_by_name['envs'].message_type = perxis_dot_environments_dot_environments__pb2._ENVIRONMENT
-_GETCOLLECTIONRESPONSE.fields_by_name['collection'].message_type = perxis_dot_collections_dot_collections__pb2._COLLECTION
-_LISTCOLLECTIONSRESPONSE.fields_by_name['collections'].message_type = perxis_dot_collections_dot_collections__pb2._COLLECTION
-_GETITEMREQUEST.fields_by_name['options'].message_type = perxis_dot_items_dot_items__pb2._GETPUBLISHEDOPTIONS
-_GETITEMRESPONSE.fields_by_name['item'].message_type = perxis_dot_items_dot_items__pb2._ITEM
-_FINDITEMSREQUEST.fields_by_name['filter'].message_type = perxis_dot_items_dot_items__pb2._FILTER
-_FINDITEMSREQUEST.fields_by_name['options'].message_type = perxis_dot_items_dot_items__pb2._FINDPUBLISHEDOPTIONS
-_FINDITEMSRESPONSE.fields_by_name['items'].message_type = perxis_dot_items_dot_items__pb2._ITEM
-DESCRIPTOR.message_types_by_name['ListLocalesRequest'] = _LISTLOCALESREQUEST
-DESCRIPTOR.message_types_by_name['ListLocalesResponse'] = _LISTLOCALESRESPONSE
-DESCRIPTOR.message_types_by_name['GetEnvironmentRequest'] = _GETENVIRONMENTREQUEST
-DESCRIPTOR.message_types_by_name['GetEnvironmentResponse'] = _GETENVIRONMENTRESPONSE
-DESCRIPTOR.message_types_by_name['ListEnvironmentsRequest'] = _LISTENVIRONMENTSREQUEST
-DESCRIPTOR.message_types_by_name['ListEnvironmentsResponse'] = _LISTENVIRONMENTSRESPONSE
-DESCRIPTOR.message_types_by_name['GetCollectionRequest'] = _GETCOLLECTIONREQUEST
-DESCRIPTOR.message_types_by_name['GetCollectionResponse'] = _GETCOLLECTIONRESPONSE
-DESCRIPTOR.message_types_by_name['ListCollectionsRequest'] = _LISTCOLLECTIONSREQUEST
-DESCRIPTOR.message_types_by_name['ListCollectionsResponse'] = _LISTCOLLECTIONSRESPONSE
-DESCRIPTOR.message_types_by_name['GetItemRequest'] = _GETITEMREQUEST
-DESCRIPTOR.message_types_by_name['GetItemResponse'] = _GETITEMRESPONSE
-DESCRIPTOR.message_types_by_name['FindItemsRequest'] = _FINDITEMSREQUEST
-DESCRIPTOR.message_types_by_name['FindItemsResponse'] = _FINDITEMSRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-ListLocalesRequest = _reflection.GeneratedProtocolMessageType('ListLocalesRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTLOCALESREQUEST,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.ListLocalesRequest)
-  })
-_sym_db.RegisterMessage(ListLocalesRequest)
-
-ListLocalesResponse = _reflection.GeneratedProtocolMessageType('ListLocalesResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTLOCALESRESPONSE,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.ListLocalesResponse)
-  })
-_sym_db.RegisterMessage(ListLocalesResponse)
-
-GetEnvironmentRequest = _reflection.GeneratedProtocolMessageType('GetEnvironmentRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETENVIRONMENTREQUEST,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.GetEnvironmentRequest)
-  })
-_sym_db.RegisterMessage(GetEnvironmentRequest)
-
-GetEnvironmentResponse = _reflection.GeneratedProtocolMessageType('GetEnvironmentResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETENVIRONMENTRESPONSE,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.GetEnvironmentResponse)
-  })
-_sym_db.RegisterMessage(GetEnvironmentResponse)
-
-ListEnvironmentsRequest = _reflection.GeneratedProtocolMessageType('ListEnvironmentsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTENVIRONMENTSREQUEST,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.ListEnvironmentsRequest)
-  })
-_sym_db.RegisterMessage(ListEnvironmentsRequest)
-
-ListEnvironmentsResponse = _reflection.GeneratedProtocolMessageType('ListEnvironmentsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTENVIRONMENTSRESPONSE,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.ListEnvironmentsResponse)
-  })
-_sym_db.RegisterMessage(ListEnvironmentsResponse)
-
-GetCollectionRequest = _reflection.GeneratedProtocolMessageType('GetCollectionRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETCOLLECTIONREQUEST,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.GetCollectionRequest)
-  })
-_sym_db.RegisterMessage(GetCollectionRequest)
-
-GetCollectionResponse = _reflection.GeneratedProtocolMessageType('GetCollectionResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETCOLLECTIONRESPONSE,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.GetCollectionResponse)
-  })
-_sym_db.RegisterMessage(GetCollectionResponse)
-
-ListCollectionsRequest = _reflection.GeneratedProtocolMessageType('ListCollectionsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTCOLLECTIONSREQUEST,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.ListCollectionsRequest)
-  })
-_sym_db.RegisterMessage(ListCollectionsRequest)
-
-ListCollectionsResponse = _reflection.GeneratedProtocolMessageType('ListCollectionsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTCOLLECTIONSRESPONSE,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.ListCollectionsResponse)
-  })
-_sym_db.RegisterMessage(ListCollectionsResponse)
-
-GetItemRequest = _reflection.GeneratedProtocolMessageType('GetItemRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETITEMREQUEST,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.GetItemRequest)
-  })
-_sym_db.RegisterMessage(GetItemRequest)
-
-GetItemResponse = _reflection.GeneratedProtocolMessageType('GetItemResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETITEMRESPONSE,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.GetItemResponse)
-  })
-_sym_db.RegisterMessage(GetItemResponse)
-
-FindItemsRequest = _reflection.GeneratedProtocolMessageType('FindItemsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _FINDITEMSREQUEST,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.FindItemsRequest)
-  })
-_sym_db.RegisterMessage(FindItemsRequest)
-
-FindItemsResponse = _reflection.GeneratedProtocolMessageType('FindItemsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _FINDITEMSRESPONSE,
-  '__module__' : 'perxis.delivery.delivery_pb2'
-  # @@protoc_insertion_point(class_scope:delivery.FindItemsResponse)
-  })
-_sym_db.RegisterMessage(FindItemsResponse)
-
-
-DESCRIPTOR._options = None
-
-_DELIVERY = _descriptor.ServiceDescriptor(
-  name='Delivery',
-  full_name='delivery.Delivery',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1282,
-  serialized_end=1862,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='ListLocales',
-    full_name='delivery.Delivery.ListLocales',
-    index=0,
-    containing_service=None,
-    input_type=_LISTLOCALESREQUEST,
-    output_type=_LISTLOCALESRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetEnvironment',
-    full_name='delivery.Delivery.GetEnvironment',
-    index=1,
-    containing_service=None,
-    input_type=_GETENVIRONMENTREQUEST,
-    output_type=_GETENVIRONMENTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListEnvironments',
-    full_name='delivery.Delivery.ListEnvironments',
-    index=2,
-    containing_service=None,
-    input_type=_LISTENVIRONMENTSREQUEST,
-    output_type=_LISTENVIRONMENTSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetCollection',
-    full_name='delivery.Delivery.GetCollection',
-    index=3,
-    containing_service=None,
-    input_type=_GETCOLLECTIONREQUEST,
-    output_type=_GETCOLLECTIONRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListCollections',
-    full_name='delivery.Delivery.ListCollections',
-    index=4,
-    containing_service=None,
-    input_type=_LISTCOLLECTIONSREQUEST,
-    output_type=_LISTCOLLECTIONSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetItem',
-    full_name='delivery.Delivery.GetItem',
-    index=5,
-    containing_service=None,
-    input_type=_GETITEMREQUEST,
-    output_type=_GETITEMRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='FindItems',
-    full_name='delivery.Delivery.FindItems',
-    index=6,
-    containing_service=None,
-    input_type=_FINDITEMSREQUEST,
-    output_type=_FINDITEMSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_DELIVERY)
-
-DESCRIPTOR.services_by_name['Delivery'] = _DELIVERY
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/delivery/delivery_pb2_grpc.py b/perxis/delivery/delivery_pb2_grpc.py
deleted file mode 100644
index 02b1bd5dbf20e3ab2f8faa69e1e7301dbb720332..0000000000000000000000000000000000000000
--- a/perxis/delivery/delivery_pb2_grpc.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from perxis.delivery import delivery_pb2 as perxis_dot_delivery_dot_delivery__pb2
-
-
-class DeliveryStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.ListLocales = channel.unary_unary(
-                '/delivery.Delivery/ListLocales',
-                request_serializer=perxis_dot_delivery_dot_delivery__pb2.ListLocalesRequest.SerializeToString,
-                response_deserializer=perxis_dot_delivery_dot_delivery__pb2.ListLocalesResponse.FromString,
-                )
-        self.GetEnvironment = channel.unary_unary(
-                '/delivery.Delivery/GetEnvironment',
-                request_serializer=perxis_dot_delivery_dot_delivery__pb2.GetEnvironmentRequest.SerializeToString,
-                response_deserializer=perxis_dot_delivery_dot_delivery__pb2.GetEnvironmentResponse.FromString,
-                )
-        self.ListEnvironments = channel.unary_unary(
-                '/delivery.Delivery/ListEnvironments',
-                request_serializer=perxis_dot_delivery_dot_delivery__pb2.ListEnvironmentsRequest.SerializeToString,
-                response_deserializer=perxis_dot_delivery_dot_delivery__pb2.ListEnvironmentsResponse.FromString,
-                )
-        self.GetCollection = channel.unary_unary(
-                '/delivery.Delivery/GetCollection',
-                request_serializer=perxis_dot_delivery_dot_delivery__pb2.GetCollectionRequest.SerializeToString,
-                response_deserializer=perxis_dot_delivery_dot_delivery__pb2.GetCollectionResponse.FromString,
-                )
-        self.ListCollections = channel.unary_unary(
-                '/delivery.Delivery/ListCollections',
-                request_serializer=perxis_dot_delivery_dot_delivery__pb2.ListCollectionsRequest.SerializeToString,
-                response_deserializer=perxis_dot_delivery_dot_delivery__pb2.ListCollectionsResponse.FromString,
-                )
-        self.GetItem = channel.unary_unary(
-                '/delivery.Delivery/GetItem',
-                request_serializer=perxis_dot_delivery_dot_delivery__pb2.GetItemRequest.SerializeToString,
-                response_deserializer=perxis_dot_delivery_dot_delivery__pb2.GetItemResponse.FromString,
-                )
-        self.FindItems = channel.unary_unary(
-                '/delivery.Delivery/FindItems',
-                request_serializer=perxis_dot_delivery_dot_delivery__pb2.FindItemsRequest.SerializeToString,
-                response_deserializer=perxis_dot_delivery_dot_delivery__pb2.FindItemsResponse.FromString,
-                )
-
-
-class DeliveryServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def ListLocales(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetEnvironment(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListEnvironments(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetCollection(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListCollections(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetItem(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def FindItems(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_DeliveryServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'ListLocales': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListLocales,
-                    request_deserializer=perxis_dot_delivery_dot_delivery__pb2.ListLocalesRequest.FromString,
-                    response_serializer=perxis_dot_delivery_dot_delivery__pb2.ListLocalesResponse.SerializeToString,
-            ),
-            'GetEnvironment': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetEnvironment,
-                    request_deserializer=perxis_dot_delivery_dot_delivery__pb2.GetEnvironmentRequest.FromString,
-                    response_serializer=perxis_dot_delivery_dot_delivery__pb2.GetEnvironmentResponse.SerializeToString,
-            ),
-            'ListEnvironments': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListEnvironments,
-                    request_deserializer=perxis_dot_delivery_dot_delivery__pb2.ListEnvironmentsRequest.FromString,
-                    response_serializer=perxis_dot_delivery_dot_delivery__pb2.ListEnvironmentsResponse.SerializeToString,
-            ),
-            'GetCollection': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetCollection,
-                    request_deserializer=perxis_dot_delivery_dot_delivery__pb2.GetCollectionRequest.FromString,
-                    response_serializer=perxis_dot_delivery_dot_delivery__pb2.GetCollectionResponse.SerializeToString,
-            ),
-            'ListCollections': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListCollections,
-                    request_deserializer=perxis_dot_delivery_dot_delivery__pb2.ListCollectionsRequest.FromString,
-                    response_serializer=perxis_dot_delivery_dot_delivery__pb2.ListCollectionsResponse.SerializeToString,
-            ),
-            'GetItem': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetItem,
-                    request_deserializer=perxis_dot_delivery_dot_delivery__pb2.GetItemRequest.FromString,
-                    response_serializer=perxis_dot_delivery_dot_delivery__pb2.GetItemResponse.SerializeToString,
-            ),
-            'FindItems': grpc.unary_unary_rpc_method_handler(
-                    servicer.FindItems,
-                    request_deserializer=perxis_dot_delivery_dot_delivery__pb2.FindItemsRequest.FromString,
-                    response_serializer=perxis_dot_delivery_dot_delivery__pb2.FindItemsResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'delivery.Delivery', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Delivery(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def ListLocales(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/delivery.Delivery/ListLocales',
-            perxis_dot_delivery_dot_delivery__pb2.ListLocalesRequest.SerializeToString,
-            perxis_dot_delivery_dot_delivery__pb2.ListLocalesResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetEnvironment(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/delivery.Delivery/GetEnvironment',
-            perxis_dot_delivery_dot_delivery__pb2.GetEnvironmentRequest.SerializeToString,
-            perxis_dot_delivery_dot_delivery__pb2.GetEnvironmentResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListEnvironments(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/delivery.Delivery/ListEnvironments',
-            perxis_dot_delivery_dot_delivery__pb2.ListEnvironmentsRequest.SerializeToString,
-            perxis_dot_delivery_dot_delivery__pb2.ListEnvironmentsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetCollection(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/delivery.Delivery/GetCollection',
-            perxis_dot_delivery_dot_delivery__pb2.GetCollectionRequest.SerializeToString,
-            perxis_dot_delivery_dot_delivery__pb2.GetCollectionResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListCollections(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/delivery.Delivery/ListCollections',
-            perxis_dot_delivery_dot_delivery__pb2.ListCollectionsRequest.SerializeToString,
-            perxis_dot_delivery_dot_delivery__pb2.ListCollectionsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetItem(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/delivery.Delivery/GetItem',
-            perxis_dot_delivery_dot_delivery__pb2.GetItemRequest.SerializeToString,
-            perxis_dot_delivery_dot_delivery__pb2.GetItemResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def FindItems(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/delivery.Delivery/FindItems',
-            perxis_dot_delivery_dot_delivery__pb2.FindItemsRequest.SerializeToString,
-            perxis_dot_delivery_dot_delivery__pb2.FindItemsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/environments/environments_pb2.py b/perxis/environments/environments_pb2.py
deleted file mode 100644
index 414b9174842da15d6a92eec6aab3d8fa6ce35ec7..0000000000000000000000000000000000000000
--- a/perxis/environments/environments_pb2.py
+++ /dev/null
@@ -1,739 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/environments/environments.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/environments/environments.proto',
-  package='content.environments',
-  syntax='proto3',
-  serialized_options=b'Z9git.perx.ru/perxis/perxis/proto/environments;environments',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n&perxis/environments/environments.proto\x12\x14\x63ontent.environments\x1a\x1bgoogle/protobuf/empty.proto\"\x8f\x02\n\x0b\x45nvironment\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x36\n\x05state\x18\x04 \x01(\x0e\x32\'.content.environments.Environment.State\x12\x12\n\nstate_info\x18\x05 \x01(\t\x12\x0f\n\x07\x61liases\x18\x06 \x03(\t\x12,\n\x06\x63onfig\x18\n \x01(\x0b\x32\x1c.content.environments.Config\"B\n\x05State\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03NEW\x10\x01\x12\r\n\tPREPARING\x10\x02\x12\t\n\x05READY\x10\x03\x12\t\n\x05\x45RROR\x10\x04\"-\n\x06\x43onfig\x12\x11\n\tsource_id\x18\x01 \x01(\t\x12\x10\n\x08\x66\x65\x61tures\x18\x02 \x03(\t\"?\n\rCreateRequest\x12.\n\x03\x65nv\x18\x01 \x01(\x0b\x32!.content.environments.Environment\"D\n\x0e\x43reateResponse\x12\x32\n\x07\x63reated\x18\x01 \x01(\x0b\x32!.content.environments.Environment\"\x1f\n\x0bListRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"?\n\x0cListResponse\x12/\n\x04\x65nvs\x18\x01 \x03(\x0b\x32!.content.environments.Environment\".\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\"=\n\x0bGetResponse\x12.\n\x03\x65nv\x18\x01 \x01(\x0b\x32!.content.environments.Environment\"?\n\rUpdateRequest\x12.\n\x03\x65nv\x18\x01 \x01(\x0b\x32!.content.environments.Environment\"B\n\x0fSetAliasRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"E\n\x12RemoveAliasRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"1\n\rDeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t2\xb6\x04\n\x0c\x45nvironments\x12U\n\x06\x43reate\x12#.content.environments.CreateRequest\x1a$.content.environments.CreateResponse\"\x00\x12L\n\x03Get\x12 .content.environments.GetRequest\x1a!.content.environments.GetResponse\"\x00\x12O\n\x04List\x12!.content.environments.ListRequest\x1a\".content.environments.ListResponse\"\x00\x12G\n\x06Update\x12#.content.environments.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12K\n\x08SetAlias\x12%.content.environments.SetAliasRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Q\n\x0bRemoveAlias\x12(.content.environments.RemoveAliasRequest\x1a\x16.google.protobuf.Empty\"\x00\x12G\n\x06\x44\x65lete\x12#.content.environments.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42;Z9git.perx.ru/perxis/perxis/proto/environments;environmentsb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
-
-
-
-_ENVIRONMENT_STATE = _descriptor.EnumDescriptor(
-  name='State',
-  full_name='content.environments.Environment.State',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='UNKNOWN', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='NEW', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='PREPARING', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='READY', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ERROR', index=4, number=4,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=299,
-  serialized_end=365,
-)
-_sym_db.RegisterEnumDescriptor(_ENVIRONMENT_STATE)
-
-
-_ENVIRONMENT = _descriptor.Descriptor(
-  name='Environment',
-  full_name='content.environments.Environment',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.environments.Environment.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.environments.Environment.space_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='content.environments.Environment.description', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='state', full_name='content.environments.Environment.state', index=3,
-      number=4, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='state_info', full_name='content.environments.Environment.state_info', index=4,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='aliases', full_name='content.environments.Environment.aliases', index=5,
-      number=6, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='config', full_name='content.environments.Environment.config', index=6,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _ENVIRONMENT_STATE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=94,
-  serialized_end=365,
-)
-
-
-_CONFIG = _descriptor.Descriptor(
-  name='Config',
-  full_name='content.environments.Config',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='source_id', full_name='content.environments.Config.source_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='features', full_name='content.environments.Config.features', index=1,
-      number=2, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=367,
-  serialized_end=412,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.environments.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='env', full_name='content.environments.CreateRequest.env', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=414,
-  serialized_end=477,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.environments.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='created', full_name='content.environments.CreateResponse.created', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=479,
-  serialized_end=547,
-)
-
-
-_LISTREQUEST = _descriptor.Descriptor(
-  name='ListRequest',
-  full_name='content.environments.ListRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.environments.ListRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=549,
-  serialized_end=580,
-)
-
-
-_LISTRESPONSE = _descriptor.Descriptor(
-  name='ListResponse',
-  full_name='content.environments.ListResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='envs', full_name='content.environments.ListResponse.envs', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=582,
-  serialized_end=645,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.environments.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.environments.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.environments.GetRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=647,
-  serialized_end=693,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.environments.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='env', full_name='content.environments.GetResponse.env', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=695,
-  serialized_end=756,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='content.environments.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='env', full_name='content.environments.UpdateRequest.env', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=758,
-  serialized_end=821,
-)
-
-
-_SETALIASREQUEST = _descriptor.Descriptor(
-  name='SetAliasRequest',
-  full_name='content.environments.SetAliasRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.environments.SetAliasRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.environments.SetAliasRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='alias', full_name='content.environments.SetAliasRequest.alias', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=823,
-  serialized_end=889,
-)
-
-
-_REMOVEALIASREQUEST = _descriptor.Descriptor(
-  name='RemoveAliasRequest',
-  full_name='content.environments.RemoveAliasRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.environments.RemoveAliasRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.environments.RemoveAliasRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='alias', full_name='content.environments.RemoveAliasRequest.alias', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=891,
-  serialized_end=960,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.environments.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.environments.DeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.environments.DeleteRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=962,
-  serialized_end=1011,
-)
-
-_ENVIRONMENT.fields_by_name['state'].enum_type = _ENVIRONMENT_STATE
-_ENVIRONMENT.fields_by_name['config'].message_type = _CONFIG
-_ENVIRONMENT_STATE.containing_type = _ENVIRONMENT
-_CREATEREQUEST.fields_by_name['env'].message_type = _ENVIRONMENT
-_CREATERESPONSE.fields_by_name['created'].message_type = _ENVIRONMENT
-_LISTRESPONSE.fields_by_name['envs'].message_type = _ENVIRONMENT
-_GETRESPONSE.fields_by_name['env'].message_type = _ENVIRONMENT
-_UPDATEREQUEST.fields_by_name['env'].message_type = _ENVIRONMENT
-DESCRIPTOR.message_types_by_name['Environment'] = _ENVIRONMENT
-DESCRIPTOR.message_types_by_name['Config'] = _CONFIG
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['ListRequest'] = _LISTREQUEST
-DESCRIPTOR.message_types_by_name['ListResponse'] = _LISTRESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['SetAliasRequest'] = _SETALIASREQUEST
-DESCRIPTOR.message_types_by_name['RemoveAliasRequest'] = _REMOVEALIASREQUEST
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Environment = _reflection.GeneratedProtocolMessageType('Environment', (_message.Message,), {
-  'DESCRIPTOR' : _ENVIRONMENT,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.Environment)
-  })
-_sym_db.RegisterMessage(Environment)
-
-Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), {
-  'DESCRIPTOR' : _CONFIG,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.Config)
-  })
-_sym_db.RegisterMessage(Config)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-ListRequest = _reflection.GeneratedProtocolMessageType('ListRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREQUEST,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.ListRequest)
-  })
-_sym_db.RegisterMessage(ListRequest)
-
-ListResponse = _reflection.GeneratedProtocolMessageType('ListResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTRESPONSE,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.ListResponse)
-  })
-_sym_db.RegisterMessage(ListResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-SetAliasRequest = _reflection.GeneratedProtocolMessageType('SetAliasRequest', (_message.Message,), {
-  'DESCRIPTOR' : _SETALIASREQUEST,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.SetAliasRequest)
-  })
-_sym_db.RegisterMessage(SetAliasRequest)
-
-RemoveAliasRequest = _reflection.GeneratedProtocolMessageType('RemoveAliasRequest', (_message.Message,), {
-  'DESCRIPTOR' : _REMOVEALIASREQUEST,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.RemoveAliasRequest)
-  })
-_sym_db.RegisterMessage(RemoveAliasRequest)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.environments.environments_pb2'
-  # @@protoc_insertion_point(class_scope:content.environments.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-
-DESCRIPTOR._options = None
-
-_ENVIRONMENTS = _descriptor.ServiceDescriptor(
-  name='Environments',
-  full_name='content.environments.Environments',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1014,
-  serialized_end=1580,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.environments.Environments.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.environments.Environments.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='List',
-    full_name='content.environments.Environments.List',
-    index=2,
-    containing_service=None,
-    input_type=_LISTREQUEST,
-    output_type=_LISTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='content.environments.Environments.Update',
-    index=3,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='SetAlias',
-    full_name='content.environments.Environments.SetAlias',
-    index=4,
-    containing_service=None,
-    input_type=_SETALIASREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='RemoveAlias',
-    full_name='content.environments.Environments.RemoveAlias',
-    index=5,
-    containing_service=None,
-    input_type=_REMOVEALIASREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.environments.Environments.Delete',
-    index=6,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_ENVIRONMENTS)
-
-DESCRIPTOR.services_by_name['Environments'] = _ENVIRONMENTS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/environments/environments_pb2_grpc.py b/perxis/environments/environments_pb2_grpc.py
deleted file mode 100644
index 2a955c7e956c70c2c3783b1a61765be92d538804..0000000000000000000000000000000000000000
--- a/perxis/environments/environments_pb2_grpc.py
+++ /dev/null
@@ -1,265 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.environments import environments_pb2 as perxis_dot_environments_dot_environments__pb2
-
-
-class EnvironmentsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.environments.Environments/Create',
-                request_serializer=perxis_dot_environments_dot_environments__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_environments_dot_environments__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.environments.Environments/Get',
-                request_serializer=perxis_dot_environments_dot_environments__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_environments_dot_environments__pb2.GetResponse.FromString,
-                )
-        self.List = channel.unary_unary(
-                '/content.environments.Environments/List',
-                request_serializer=perxis_dot_environments_dot_environments__pb2.ListRequest.SerializeToString,
-                response_deserializer=perxis_dot_environments_dot_environments__pb2.ListResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/content.environments.Environments/Update',
-                request_serializer=perxis_dot_environments_dot_environments__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.SetAlias = channel.unary_unary(
-                '/content.environments.Environments/SetAlias',
-                request_serializer=perxis_dot_environments_dot_environments__pb2.SetAliasRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.RemoveAlias = channel.unary_unary(
-                '/content.environments.Environments/RemoveAlias',
-                request_serializer=perxis_dot_environments_dot_environments__pb2.RemoveAliasRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.environments.Environments/Delete',
-                request_serializer=perxis_dot_environments_dot_environments__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class EnvironmentsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def List(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def SetAlias(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def RemoveAlias(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_EnvironmentsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_environments_dot_environments__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_environments_dot_environments__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_environments_dot_environments__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_environments_dot_environments__pb2.GetResponse.SerializeToString,
-            ),
-            'List': grpc.unary_unary_rpc_method_handler(
-                    servicer.List,
-                    request_deserializer=perxis_dot_environments_dot_environments__pb2.ListRequest.FromString,
-                    response_serializer=perxis_dot_environments_dot_environments__pb2.ListResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_environments_dot_environments__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'SetAlias': grpc.unary_unary_rpc_method_handler(
-                    servicer.SetAlias,
-                    request_deserializer=perxis_dot_environments_dot_environments__pb2.SetAliasRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'RemoveAlias': grpc.unary_unary_rpc_method_handler(
-                    servicer.RemoveAlias,
-                    request_deserializer=perxis_dot_environments_dot_environments__pb2.RemoveAliasRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_environments_dot_environments__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.environments.Environments', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Environments(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Create',
-            perxis_dot_environments_dot_environments__pb2.CreateRequest.SerializeToString,
-            perxis_dot_environments_dot_environments__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Get',
-            perxis_dot_environments_dot_environments__pb2.GetRequest.SerializeToString,
-            perxis_dot_environments_dot_environments__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def List(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/List',
-            perxis_dot_environments_dot_environments__pb2.ListRequest.SerializeToString,
-            perxis_dot_environments_dot_environments__pb2.ListResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Update',
-            perxis_dot_environments_dot_environments__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def SetAlias(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/SetAlias',
-            perxis_dot_environments_dot_environments__pb2.SetAliasRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def RemoveAlias(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/RemoveAlias',
-            perxis_dot_environments_dot_environments__pb2.RemoveAliasRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Delete',
-            perxis_dot_environments_dot_environments__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/extensions/extension_pb2.py b/perxis/extensions/extension_pb2.py
deleted file mode 100644
index efde8f4f45dcb13a834fc921cbd8761020127c4d..0000000000000000000000000000000000000000
--- a/perxis/extensions/extension_pb2.py
+++ /dev/null
@@ -1,1130 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/extensions/extension.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from perxis.references import references_pb2 as perxis_dot_references_dot_references__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/extensions/extension.proto',
-  package='extensions',
-  syntax='proto3',
-  serialized_options=b'Z5git.perx.ru/perxis/perxis/proto/extensions;extensions',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n!perxis/extensions/extension.proto\x12\nextensions\x1a\"perxis/references/references.proto\"Y\n\x0eInstallRequest\x12\x13\n\nextensions\x18\x90N \x03(\t\x12\x11\n\x08space_id\x18\x9aN \x01(\t\x12\x0f\n\x06\x65nv_id\x18\xa4N \x01(\t\x12\x0e\n\x05\x66orce\x18\xf4N \x01(\x08\"\xd9\x01\n\x16\x45xtensionRequestResult\x12\x38\n\x05state\x18\x90N \x01(\x0e\x32(.extensions.ExtensionRequestResult.State\x12\x12\n\textension\x18\xf4N \x01(\t\x12\x0c\n\x03msg\x18\xd8O \x01(\t\x12\x0e\n\x05\x65rror\x18\xbcP \x01(\t\x12\x19\n\x10update_available\x18\xa0Q \x01(\x08\"8\n\x05State\x12\x06\n\x02OK\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0b\n\x07PENDING\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03\"G\n\x0fInstallResponse\x12\x34\n\x07results\x18\x90N \x03(\x0b\x32\".extensions.ExtensionRequestResult\"l\n\x10UninstallRequest\x12\x13\n\nextensions\x18\x90N \x03(\t\x12\x11\n\x08space_id\x18\x9aN \x01(\t\x12\x0f\n\x06\x65nv_id\x18\xa4N \x01(\t\x12\x0f\n\x06remove\x18\xf4N \x01(\x08\x12\x0e\n\x05\x66orce\x18\xd8O \x01(\x08\"I\n\x11UninstallResponse\x12\x34\n\x07results\x18\x90N \x03(\x0b\x32\".extensions.ExtensionRequestResult\"X\n\rUpdateRequest\x12\x13\n\nextensions\x18\x90N \x03(\t\x12\x11\n\x08space_id\x18\x9aN \x01(\t\x12\x0f\n\x06\x65nv_id\x18\xa4N \x01(\t\x12\x0e\n\x05\x66orce\x18\xf4N \x01(\x08\"F\n\x0eUpdateResponse\x12\x34\n\x07results\x18\x90N \x03(\x0b\x32\".extensions.ExtensionRequestResult\"G\n\x0c\x43heckRequest\x12\x13\n\nextensions\x18\x90N \x03(\t\x12\x11\n\x08space_id\x18\x9aN \x01(\t\x12\x0f\n\x06\x65nv_id\x18\xa4N \x01(\t\"E\n\rCheckResponse\x12\x34\n\x07results\x18\x90N \x03(\x0b\x32\".extensions.ExtensionRequestResult\"\xf1\x02\n\rActionRequest\x12\x12\n\textension\x18\xe8\x07 \x01(\t\x12\x0f\n\x06\x61\x63tion\x18\xf4N \x01(\t\x12\x11\n\x08space_id\x18\x84R \x01(\t\x12\x0f\n\x06\x65nv_id\x18\x8eR \x01(\t\x12\x16\n\rcollection_id\x18\x98R \x01(\t\x12\x10\n\x07item_id\x18\xa2R \x01(\t\x12\x11\n\x08item_ids\x18\xacR \x03(\t\x12\x0f\n\x06\x66ields\x18\xb6R \x03(\t\x12:\n\x08metadata\x18\xf8U \x03(\x0b\x32\'.extensions.ActionRequest.MetadataEntry\x12,\n\x04refs\x18\x82V \x03(\x0b\x32\x1d.content.references.Reference\x12.\n\x06params\x18\x8cV \x01(\x0b\x32\x1d.content.references.Reference\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xdb\x02\n\x0e\x41\x63tionResponse\x12\x30\n\x05state\x18\x90N \x01(\x0e\x32 .extensions.ActionResponse.State\x12\x0c\n\x03msg\x18\xf4N \x01(\t\x12\x0e\n\x05\x65rror\x18\xd8O \x01(\t\x12!\n\x04next\x18\xbcP \x03(\x0b\x32\x12.extensions.Action\x12;\n\x08metadata\x18\xa0Q \x03(\x0b\x32(.extensions.ActionResponse.MetadataEntry\x12,\n\x04refs\x18\xd0P \x03(\x0b\x32\x1d.content.references.Reference\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\":\n\x05State\x12\x08\n\x04\x44ONE\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0b\n\x07PENDING\x10\x02\x12\x0f\n\x0bIN_PROGRESS\x10\x03\"\xf9\x03\n\x06\x41\x63tion\x12\x12\n\textension\x18\x90N \x01(\t\x12\x0f\n\x06\x61\x63tion\x18\xf4N \x01(\t\x12\r\n\x04name\x18\xd8O \x01(\t\x12\x14\n\x0b\x64\x65scription\x18\xe2O \x01(\t\x12\r\n\x04icon\x18\xecO \x01(\t\x12-\n\x05image\x18\xf6O \x01(\x0b\x32\x1d.content.references.Reference\x12\x0f\n\x06groups\x18\x80P \x03(\t\x12&\n\x04kind\x18\xbcP \x01(\x0e\x32\x17.extensions.Action.Kind\x12\x10\n\x07\x63lasses\x18\xc6P \x03(\t\x12,\n\x04refs\x18\xd0P \x03(\x0b\x32\x1d.content.references.Reference\x12\x1a\n\x11params_collection\x18\xdaP \x01(\t\x12+\n\x07request\x18\xa0Q \x01(\x0b\x32\x19.extensions.ActionRequest\x12\x1a\n\x11navigation_action\x18\x84R \x01(\x08\x12\x19\n\x10navigation_route\x18\x8eR \x01(\t\"n\n\x04Kind\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\t\n\x05SPACE\x10\x01\x12\x0f\n\x0b\x45NVIRONMENT\x10\x02\x12\x0e\n\nCOLLECTION\x10\x03\x12\x08\n\x04ITEM\x10\x04\x12\t\n\x05ITEMS\x10\x05\x12\x0c\n\x08REVISION\x10\x06\x12\n\n\x06\x43REATE\x10\x07\x32\xe3\x02\n\tExtension\x12\x44\n\x07Install\x12\x1a.extensions.InstallRequest\x1a\x1b.extensions.InstallResponse\"\x00\x12>\n\x05\x43heck\x12\x18.extensions.CheckRequest\x1a\x19.extensions.CheckResponse\"\x00\x12\x41\n\x06Update\x12\x19.extensions.UpdateRequest\x1a\x1a.extensions.UpdateResponse\"\x00\x12J\n\tUninstall\x12\x1c.extensions.UninstallRequest\x1a\x1d.extensions.UninstallResponse\"\x00\x12\x41\n\x06\x41\x63tion\x12\x19.extensions.ActionRequest\x1a\x1a.extensions.ActionResponse\"\x00\x42\x37Z5git.perx.ru/perxis/perxis/proto/extensions;extensionsb\x06proto3'
-  ,
-  dependencies=[perxis_dot_references_dot_references__pb2.DESCRIPTOR,])
-
-
-
-_EXTENSIONREQUESTRESULT_STATE = _descriptor.EnumDescriptor(
-  name='State',
-  full_name='extensions.ExtensionRequestResult.State',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OK', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ERROR', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='PENDING', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='IN_PROGRESS', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=338,
-  serialized_end=394,
-)
-_sym_db.RegisterEnumDescriptor(_EXTENSIONREQUESTRESULT_STATE)
-
-_ACTIONRESPONSE_STATE = _descriptor.EnumDescriptor(
-  name='State',
-  full_name='extensions.ActionResponse.State',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='DONE', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ERROR', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='PENDING', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='IN_PROGRESS', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=1622,
-  serialized_end=1680,
-)
-_sym_db.RegisterEnumDescriptor(_ACTIONRESPONSE_STATE)
-
-_ACTION_KIND = _descriptor.EnumDescriptor(
-  name='Kind',
-  full_name='extensions.Action.Kind',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='DEFAULT', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='SPACE', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ENVIRONMENT', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='COLLECTION', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ITEM', index=4, number=4,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ITEMS', index=5, number=5,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='REVISION', index=6, number=6,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='CREATE', index=7, number=7,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=2078,
-  serialized_end=2188,
-)
-_sym_db.RegisterEnumDescriptor(_ACTION_KIND)
-
-
-_INSTALLREQUEST = _descriptor.Descriptor(
-  name='InstallRequest',
-  full_name='extensions.InstallRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extensions', full_name='extensions.InstallRequest.extensions', index=0,
-      number=10000, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='extensions.InstallRequest.space_id', index=1,
-      number=10010, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='extensions.InstallRequest.env_id', index=2,
-      number=10020, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='force', full_name='extensions.InstallRequest.force', index=3,
-      number=10100, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=85,
-  serialized_end=174,
-)
-
-
-_EXTENSIONREQUESTRESULT = _descriptor.Descriptor(
-  name='ExtensionRequestResult',
-  full_name='extensions.ExtensionRequestResult',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='state', full_name='extensions.ExtensionRequestResult.state', index=0,
-      number=10000, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='extension', full_name='extensions.ExtensionRequestResult.extension', index=1,
-      number=10100, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='msg', full_name='extensions.ExtensionRequestResult.msg', index=2,
-      number=10200, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='error', full_name='extensions.ExtensionRequestResult.error', index=3,
-      number=10300, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='update_available', full_name='extensions.ExtensionRequestResult.update_available', index=4,
-      number=10400, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _EXTENSIONREQUESTRESULT_STATE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=177,
-  serialized_end=394,
-)
-
-
-_INSTALLRESPONSE = _descriptor.Descriptor(
-  name='InstallResponse',
-  full_name='extensions.InstallResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='results', full_name='extensions.InstallResponse.results', index=0,
-      number=10000, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=396,
-  serialized_end=467,
-)
-
-
-_UNINSTALLREQUEST = _descriptor.Descriptor(
-  name='UninstallRequest',
-  full_name='extensions.UninstallRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extensions', full_name='extensions.UninstallRequest.extensions', index=0,
-      number=10000, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='extensions.UninstallRequest.space_id', index=1,
-      number=10010, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='extensions.UninstallRequest.env_id', index=2,
-      number=10020, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='remove', full_name='extensions.UninstallRequest.remove', index=3,
-      number=10100, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='force', full_name='extensions.UninstallRequest.force', index=4,
-      number=10200, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=469,
-  serialized_end=577,
-)
-
-
-_UNINSTALLRESPONSE = _descriptor.Descriptor(
-  name='UninstallResponse',
-  full_name='extensions.UninstallResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='results', full_name='extensions.UninstallResponse.results', index=0,
-      number=10000, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=579,
-  serialized_end=652,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='extensions.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extensions', full_name='extensions.UpdateRequest.extensions', index=0,
-      number=10000, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='extensions.UpdateRequest.space_id', index=1,
-      number=10010, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='extensions.UpdateRequest.env_id', index=2,
-      number=10020, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='force', full_name='extensions.UpdateRequest.force', index=3,
-      number=10100, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=654,
-  serialized_end=742,
-)
-
-
-_UPDATERESPONSE = _descriptor.Descriptor(
-  name='UpdateResponse',
-  full_name='extensions.UpdateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='results', full_name='extensions.UpdateResponse.results', index=0,
-      number=10000, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=744,
-  serialized_end=814,
-)
-
-
-_CHECKREQUEST = _descriptor.Descriptor(
-  name='CheckRequest',
-  full_name='extensions.CheckRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extensions', full_name='extensions.CheckRequest.extensions', index=0,
-      number=10000, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='extensions.CheckRequest.space_id', index=1,
-      number=10010, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='extensions.CheckRequest.env_id', index=2,
-      number=10020, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=816,
-  serialized_end=887,
-)
-
-
-_CHECKRESPONSE = _descriptor.Descriptor(
-  name='CheckResponse',
-  full_name='extensions.CheckResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='results', full_name='extensions.CheckResponse.results', index=0,
-      number=10000, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=889,
-  serialized_end=958,
-)
-
-
-_ACTIONREQUEST_METADATAENTRY = _descriptor.Descriptor(
-  name='MetadataEntry',
-  full_name='extensions.ActionRequest.MetadataEntry',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='key', full_name='extensions.ActionRequest.MetadataEntry.key', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='value', full_name='extensions.ActionRequest.MetadataEntry.value', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=b'8\001',
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1283,
-  serialized_end=1330,
-)
-
-_ACTIONREQUEST = _descriptor.Descriptor(
-  name='ActionRequest',
-  full_name='extensions.ActionRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extension', full_name='extensions.ActionRequest.extension', index=0,
-      number=1000, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='action', full_name='extensions.ActionRequest.action', index=1,
-      number=10100, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='extensions.ActionRequest.space_id', index=2,
-      number=10500, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='extensions.ActionRequest.env_id', index=3,
-      number=10510, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='extensions.ActionRequest.collection_id', index=4,
-      number=10520, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='extensions.ActionRequest.item_id', index=5,
-      number=10530, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_ids', full_name='extensions.ActionRequest.item_ids', index=6,
-      number=10540, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='fields', full_name='extensions.ActionRequest.fields', index=7,
-      number=10550, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='metadata', full_name='extensions.ActionRequest.metadata', index=8,
-      number=11000, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='refs', full_name='extensions.ActionRequest.refs', index=9,
-      number=11010, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='params', full_name='extensions.ActionRequest.params', index=10,
-      number=11020, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_ACTIONREQUEST_METADATAENTRY, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=961,
-  serialized_end=1330,
-)
-
-
-_ACTIONRESPONSE_METADATAENTRY = _descriptor.Descriptor(
-  name='MetadataEntry',
-  full_name='extensions.ActionResponse.MetadataEntry',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='key', full_name='extensions.ActionResponse.MetadataEntry.key', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='value', full_name='extensions.ActionResponse.MetadataEntry.value', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=b'8\001',
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1283,
-  serialized_end=1330,
-)
-
-_ACTIONRESPONSE = _descriptor.Descriptor(
-  name='ActionResponse',
-  full_name='extensions.ActionResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='state', full_name='extensions.ActionResponse.state', index=0,
-      number=10000, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='msg', full_name='extensions.ActionResponse.msg', index=1,
-      number=10100, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='error', full_name='extensions.ActionResponse.error', index=2,
-      number=10200, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='next', full_name='extensions.ActionResponse.next', index=3,
-      number=10300, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='metadata', full_name='extensions.ActionResponse.metadata', index=4,
-      number=10400, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='refs', full_name='extensions.ActionResponse.refs', index=5,
-      number=10320, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_ACTIONRESPONSE_METADATAENTRY, ],
-  enum_types=[
-    _ACTIONRESPONSE_STATE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1333,
-  serialized_end=1680,
-)
-
-
-_ACTION = _descriptor.Descriptor(
-  name='Action',
-  full_name='extensions.Action',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extension', full_name='extensions.Action.extension', index=0,
-      number=10000, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='action', full_name='extensions.Action.action', index=1,
-      number=10100, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='extensions.Action.name', index=2,
-      number=10200, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='extensions.Action.description', index=3,
-      number=10210, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='icon', full_name='extensions.Action.icon', index=4,
-      number=10220, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='image', full_name='extensions.Action.image', index=5,
-      number=10230, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='groups', full_name='extensions.Action.groups', index=6,
-      number=10240, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='kind', full_name='extensions.Action.kind', index=7,
-      number=10300, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='classes', full_name='extensions.Action.classes', index=8,
-      number=10310, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='refs', full_name='extensions.Action.refs', index=9,
-      number=10320, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='params_collection', full_name='extensions.Action.params_collection', index=10,
-      number=10330, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='request', full_name='extensions.Action.request', index=11,
-      number=10400, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='navigation_action', full_name='extensions.Action.navigation_action', index=12,
-      number=10500, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='navigation_route', full_name='extensions.Action.navigation_route', index=13,
-      number=10510, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _ACTION_KIND,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1683,
-  serialized_end=2188,
-)
-
-_EXTENSIONREQUESTRESULT.fields_by_name['state'].enum_type = _EXTENSIONREQUESTRESULT_STATE
-_EXTENSIONREQUESTRESULT_STATE.containing_type = _EXTENSIONREQUESTRESULT
-_INSTALLRESPONSE.fields_by_name['results'].message_type = _EXTENSIONREQUESTRESULT
-_UNINSTALLRESPONSE.fields_by_name['results'].message_type = _EXTENSIONREQUESTRESULT
-_UPDATERESPONSE.fields_by_name['results'].message_type = _EXTENSIONREQUESTRESULT
-_CHECKRESPONSE.fields_by_name['results'].message_type = _EXTENSIONREQUESTRESULT
-_ACTIONREQUEST_METADATAENTRY.containing_type = _ACTIONREQUEST
-_ACTIONREQUEST.fields_by_name['metadata'].message_type = _ACTIONREQUEST_METADATAENTRY
-_ACTIONREQUEST.fields_by_name['refs'].message_type = perxis_dot_references_dot_references__pb2._REFERENCE
-_ACTIONREQUEST.fields_by_name['params'].message_type = perxis_dot_references_dot_references__pb2._REFERENCE
-_ACTIONRESPONSE_METADATAENTRY.containing_type = _ACTIONRESPONSE
-_ACTIONRESPONSE.fields_by_name['state'].enum_type = _ACTIONRESPONSE_STATE
-_ACTIONRESPONSE.fields_by_name['next'].message_type = _ACTION
-_ACTIONRESPONSE.fields_by_name['metadata'].message_type = _ACTIONRESPONSE_METADATAENTRY
-_ACTIONRESPONSE.fields_by_name['refs'].message_type = perxis_dot_references_dot_references__pb2._REFERENCE
-_ACTIONRESPONSE_STATE.containing_type = _ACTIONRESPONSE
-_ACTION.fields_by_name['image'].message_type = perxis_dot_references_dot_references__pb2._REFERENCE
-_ACTION.fields_by_name['kind'].enum_type = _ACTION_KIND
-_ACTION.fields_by_name['refs'].message_type = perxis_dot_references_dot_references__pb2._REFERENCE
-_ACTION.fields_by_name['request'].message_type = _ACTIONREQUEST
-_ACTION_KIND.containing_type = _ACTION
-DESCRIPTOR.message_types_by_name['InstallRequest'] = _INSTALLREQUEST
-DESCRIPTOR.message_types_by_name['ExtensionRequestResult'] = _EXTENSIONREQUESTRESULT
-DESCRIPTOR.message_types_by_name['InstallResponse'] = _INSTALLRESPONSE
-DESCRIPTOR.message_types_by_name['UninstallRequest'] = _UNINSTALLREQUEST
-DESCRIPTOR.message_types_by_name['UninstallResponse'] = _UNINSTALLRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['UpdateResponse'] = _UPDATERESPONSE
-DESCRIPTOR.message_types_by_name['CheckRequest'] = _CHECKREQUEST
-DESCRIPTOR.message_types_by_name['CheckResponse'] = _CHECKRESPONSE
-DESCRIPTOR.message_types_by_name['ActionRequest'] = _ACTIONREQUEST
-DESCRIPTOR.message_types_by_name['ActionResponse'] = _ACTIONRESPONSE
-DESCRIPTOR.message_types_by_name['Action'] = _ACTION
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-InstallRequest = _reflection.GeneratedProtocolMessageType('InstallRequest', (_message.Message,), {
-  'DESCRIPTOR' : _INSTALLREQUEST,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.InstallRequest)
-  })
-_sym_db.RegisterMessage(InstallRequest)
-
-ExtensionRequestResult = _reflection.GeneratedProtocolMessageType('ExtensionRequestResult', (_message.Message,), {
-  'DESCRIPTOR' : _EXTENSIONREQUESTRESULT,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.ExtensionRequestResult)
-  })
-_sym_db.RegisterMessage(ExtensionRequestResult)
-
-InstallResponse = _reflection.GeneratedProtocolMessageType('InstallResponse', (_message.Message,), {
-  'DESCRIPTOR' : _INSTALLRESPONSE,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.InstallResponse)
-  })
-_sym_db.RegisterMessage(InstallResponse)
-
-UninstallRequest = _reflection.GeneratedProtocolMessageType('UninstallRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UNINSTALLREQUEST,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.UninstallRequest)
-  })
-_sym_db.RegisterMessage(UninstallRequest)
-
-UninstallResponse = _reflection.GeneratedProtocolMessageType('UninstallResponse', (_message.Message,), {
-  'DESCRIPTOR' : _UNINSTALLRESPONSE,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.UninstallResponse)
-  })
-_sym_db.RegisterMessage(UninstallResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-UpdateResponse = _reflection.GeneratedProtocolMessageType('UpdateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATERESPONSE,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.UpdateResponse)
-  })
-_sym_db.RegisterMessage(UpdateResponse)
-
-CheckRequest = _reflection.GeneratedProtocolMessageType('CheckRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CHECKREQUEST,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.CheckRequest)
-  })
-_sym_db.RegisterMessage(CheckRequest)
-
-CheckResponse = _reflection.GeneratedProtocolMessageType('CheckResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CHECKRESPONSE,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.CheckResponse)
-  })
-_sym_db.RegisterMessage(CheckResponse)
-
-ActionRequest = _reflection.GeneratedProtocolMessageType('ActionRequest', (_message.Message,), {
-
-  'MetadataEntry' : _reflection.GeneratedProtocolMessageType('MetadataEntry', (_message.Message,), {
-    'DESCRIPTOR' : _ACTIONREQUEST_METADATAENTRY,
-    '__module__' : 'perxis.extensions.extension_pb2'
-    # @@protoc_insertion_point(class_scope:extensions.ActionRequest.MetadataEntry)
-    })
-  ,
-  'DESCRIPTOR' : _ACTIONREQUEST,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.ActionRequest)
-  })
-_sym_db.RegisterMessage(ActionRequest)
-_sym_db.RegisterMessage(ActionRequest.MetadataEntry)
-
-ActionResponse = _reflection.GeneratedProtocolMessageType('ActionResponse', (_message.Message,), {
-
-  'MetadataEntry' : _reflection.GeneratedProtocolMessageType('MetadataEntry', (_message.Message,), {
-    'DESCRIPTOR' : _ACTIONRESPONSE_METADATAENTRY,
-    '__module__' : 'perxis.extensions.extension_pb2'
-    # @@protoc_insertion_point(class_scope:extensions.ActionResponse.MetadataEntry)
-    })
-  ,
-  'DESCRIPTOR' : _ACTIONRESPONSE,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.ActionResponse)
-  })
-_sym_db.RegisterMessage(ActionResponse)
-_sym_db.RegisterMessage(ActionResponse.MetadataEntry)
-
-Action = _reflection.GeneratedProtocolMessageType('Action', (_message.Message,), {
-  'DESCRIPTOR' : _ACTION,
-  '__module__' : 'perxis.extensions.extension_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.Action)
-  })
-_sym_db.RegisterMessage(Action)
-
-
-DESCRIPTOR._options = None
-_ACTIONREQUEST_METADATAENTRY._options = None
-_ACTIONRESPONSE_METADATAENTRY._options = None
-
-_EXTENSION = _descriptor.ServiceDescriptor(
-  name='Extension',
-  full_name='extensions.Extension',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=2191,
-  serialized_end=2546,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Install',
-    full_name='extensions.Extension.Install',
-    index=0,
-    containing_service=None,
-    input_type=_INSTALLREQUEST,
-    output_type=_INSTALLRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Check',
-    full_name='extensions.Extension.Check',
-    index=1,
-    containing_service=None,
-    input_type=_CHECKREQUEST,
-    output_type=_CHECKRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='extensions.Extension.Update',
-    index=2,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=_UPDATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Uninstall',
-    full_name='extensions.Extension.Uninstall',
-    index=3,
-    containing_service=None,
-    input_type=_UNINSTALLREQUEST,
-    output_type=_UNINSTALLRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Action',
-    full_name='extensions.Extension.Action',
-    index=4,
-    containing_service=None,
-    input_type=_ACTIONREQUEST,
-    output_type=_ACTIONRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_EXTENSION)
-
-DESCRIPTOR.services_by_name['Extension'] = _EXTENSION
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/extensions/extension_pb2_grpc.py b/perxis/extensions/extension_pb2_grpc.py
deleted file mode 100644
index e85bcb6cae928ddc729e04752c016b2431169dc4..0000000000000000000000000000000000000000
--- a/perxis/extensions/extension_pb2_grpc.py
+++ /dev/null
@@ -1,227 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from perxis.extensions import extension_pb2 as perxis_dot_extensions_dot_extension__pb2
-
-
-class ExtensionStub(object):
-    """Extension - API расширения
-    """
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Install = channel.unary_unary(
-                '/extensions.Extension/Install',
-                request_serializer=perxis_dot_extensions_dot_extension__pb2.InstallRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_extension__pb2.InstallResponse.FromString,
-                )
-        self.Check = channel.unary_unary(
-                '/extensions.Extension/Check',
-                request_serializer=perxis_dot_extensions_dot_extension__pb2.CheckRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_extension__pb2.CheckResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/extensions.Extension/Update',
-                request_serializer=perxis_dot_extensions_dot_extension__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_extension__pb2.UpdateResponse.FromString,
-                )
-        self.Uninstall = channel.unary_unary(
-                '/extensions.Extension/Uninstall',
-                request_serializer=perxis_dot_extensions_dot_extension__pb2.UninstallRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_extension__pb2.UninstallResponse.FromString,
-                )
-        self.Action = channel.unary_unary(
-                '/extensions.Extension/Action',
-                request_serializer=perxis_dot_extensions_dot_extension__pb2.ActionRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_extension__pb2.ActionResponse.FromString,
-                )
-
-
-class ExtensionServicer(object):
-    """Extension - API расширения
-    """
-
-    def Install(self, request, context):
-        """Для установки расширения выполняется запрос к сервису с указанием расширений которые должны быть установлены. Если
-        расширение уже установлено процесс возвращает ошибку.
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Check(self, request, context):
-        """Можно запросить проверку статуса установки для расширения. При этом расширение проверяет наличие необходимых данных в
-        пространстве или наличие новой версии расширения и сообщает об этом. Никаких действий с данными пространства не
-        производится.
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Сервис выполняет необходимые действия с данными и миграции для соответствия нужной версии расширения.
-        Если расширение не установлено процесс обновления возвращает ошибку.
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Uninstall(self, request, context):
-        """Удаление расширения из пространства.
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Action(self, request, context):
-        """Пользовательские Действия (Actions)
-
-        Пользовательские действия позволяют расширить функционал пользовательского интерфейса путем
-        добавления в интерфейс элементов взаимодействуя с которыми пользователь может вызывать реакцию на
-        сервере или переход в интерфейсе.
-
-        Пользовательские действия добавляются при установке расширений в системную коллекции `System/Actions`.
-        Коллекция создается автоматически менеджером расширений. При установке так же отображается меню `Действия`
-        доступное для всех пользователей.
-
-        Примеры пользовательских действий:
-        - "Собрать сайт" - добавляется Perxis.Web для сборки сайта, доступна пользователю через меню,
-        параметры space_id, env_id. При вызове выполняется запрос на сервер ProcessAction.
-        - "Посмотреть задачи" - добавляется Tasks для перехода на коллекцию задач. Отображается в меню,
-        параметры space_id, env_id.
-
-        Приложения так же могут использовать действия для вызова обработки в других приложениях при
-        необходимости.
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_ExtensionServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Install': grpc.unary_unary_rpc_method_handler(
-                    servicer.Install,
-                    request_deserializer=perxis_dot_extensions_dot_extension__pb2.InstallRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_extension__pb2.InstallResponse.SerializeToString,
-            ),
-            'Check': grpc.unary_unary_rpc_method_handler(
-                    servicer.Check,
-                    request_deserializer=perxis_dot_extensions_dot_extension__pb2.CheckRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_extension__pb2.CheckResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_extensions_dot_extension__pb2.UpdateRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_extension__pb2.UpdateResponse.SerializeToString,
-            ),
-            'Uninstall': grpc.unary_unary_rpc_method_handler(
-                    servicer.Uninstall,
-                    request_deserializer=perxis_dot_extensions_dot_extension__pb2.UninstallRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_extension__pb2.UninstallResponse.SerializeToString,
-            ),
-            'Action': grpc.unary_unary_rpc_method_handler(
-                    servicer.Action,
-                    request_deserializer=perxis_dot_extensions_dot_extension__pb2.ActionRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_extension__pb2.ActionResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'extensions.Extension', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Extension(object):
-    """Extension - API расширения
-    """
-
-    @staticmethod
-    def Install(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.Extension/Install',
-            perxis_dot_extensions_dot_extension__pb2.InstallRequest.SerializeToString,
-            perxis_dot_extensions_dot_extension__pb2.InstallResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Check(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.Extension/Check',
-            perxis_dot_extensions_dot_extension__pb2.CheckRequest.SerializeToString,
-            perxis_dot_extensions_dot_extension__pb2.CheckResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.Extension/Update',
-            perxis_dot_extensions_dot_extension__pb2.UpdateRequest.SerializeToString,
-            perxis_dot_extensions_dot_extension__pb2.UpdateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Uninstall(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.Extension/Uninstall',
-            perxis_dot_extensions_dot_extension__pb2.UninstallRequest.SerializeToString,
-            perxis_dot_extensions_dot_extension__pb2.UninstallResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Action(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.Extension/Action',
-            perxis_dot_extensions_dot_extension__pb2.ActionRequest.SerializeToString,
-            perxis_dot_extensions_dot_extension__pb2.ActionResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/extensions/manager_pb2.py b/perxis/extensions/manager_pb2.py
deleted file mode 100644
index 25610b3f4c6f140cc335b00c1ecff1652aded684..0000000000000000000000000000000000000000
--- a/perxis/extensions/manager_pb2.py
+++ /dev/null
@@ -1,605 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/extensions/manager.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/extensions/manager.proto',
-  package='extensions',
-  syntax='proto3',
-  serialized_options=b'Z5git.perx.ru/perxis/perxis/proto/extensions;extensions',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1fperxis/extensions/manager.proto\x12\nextensions\"\x8d\x02\n\x13\x45xtensionDescriptor\x12\x12\n\textension\x18\x90N \x01(\t\x12\x0e\n\x05title\x18\x9aN \x01(\t\x12\x14\n\x0b\x64\x65scription\x18\xa4N \x01(\t\x12\x10\n\x07version\x18\xf4N \x01(\t\x12\x1c\n\x13version_description\x18\xfeN \x01(\t\x12\r\n\x04\x64\x65ps\x18\xd8O \x03(\t\x12\x0b\n\x03url\x18\x05 \x01(\t\x12?\n\x08metadata\x18\x06 \x03(\x0b\x32-.extensions.ExtensionDescriptor.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"P\n\x19RegisterExtensionsRequest\x12\x33\n\nextensions\x18\x01 \x03(\x0b\x32\x1f.extensions.ExtensionDescriptor\"\x1c\n\x1aRegisterExtensionsResponse\"R\n\x1bUnregisterExtensionsRequest\x12\x33\n\nextensions\x18\x01 \x03(\x0b\x32\x1f.extensions.ExtensionDescriptor\"\x1e\n\x1cUnregisterExtensionsResponse\")\n\x14ListExtensionsFilter\x12\x11\n\textension\x18\x01 \x03(\t\"I\n\x15ListExtensionsRequest\x12\x30\n\x06\x66ilter\x18\x01 \x01(\x0b\x32 .extensions.ListExtensionsFilter\"M\n\x16ListExtensionsResponse\x12\x33\n\nextensions\x18\x01 \x03(\x0b\x32\x1f.extensions.ExtensionDescriptor\"\xf5\x01\n\x0fSpaceExtensions\x12\x12\n\textension\x18\x90N \x01(\t\x12\x0e\n\x05title\x18\x9aN \x01(\t\x12\x10\n\x07version\x18\xf4N \x01(\t\x12\r\n\x04\x64\x65ps\x18\xd8O \x03(\t\x12\x31\n\x05state\x18\xbcP \x01(\x0e\x32!.extensions.SpaceExtensions.State\x12\x15\n\x0cstatus_error\x18\xa0Q \x01(\t\x12\x13\n\nstatus_msg\x18\x84R \x01(\t\">\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\r\n\tINSTALLED\x10\x01\x12\x0f\n\x0bIN_PROGRESS\x10\x02\x12\x08\n\x04\x46\x41IL\x10\x03\x32\xc1\x02\n\x10\x45xtensionManager\x12\x65\n\x12RegisterExtensions\x12%.extensions.RegisterExtensionsRequest\x1a&.extensions.RegisterExtensionsResponse\"\x00\x12k\n\x14UnregisterExtensions\x12\'.extensions.UnregisterExtensionsRequest\x1a(.extensions.UnregisterExtensionsResponse\"\x00\x12Y\n\x0eListExtensions\x12!.extensions.ListExtensionsRequest\x1a\".extensions.ListExtensionsResponse\"\x00\x42\x37Z5git.perx.ru/perxis/perxis/proto/extensions;extensionsb\x06proto3'
-)
-
-
-
-_SPACEEXTENSIONS_STATE = _descriptor.EnumDescriptor(
-  name='State',
-  full_name='extensions.SpaceExtensions.State',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='PENDING', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='INSTALLED', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='IN_PROGRESS', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='FAIL', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=928,
-  serialized_end=990,
-)
-_sym_db.RegisterEnumDescriptor(_SPACEEXTENSIONS_STATE)
-
-
-_EXTENSIONDESCRIPTOR_METADATAENTRY = _descriptor.Descriptor(
-  name='MetadataEntry',
-  full_name='extensions.ExtensionDescriptor.MetadataEntry',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='key', full_name='extensions.ExtensionDescriptor.MetadataEntry.key', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='value', full_name='extensions.ExtensionDescriptor.MetadataEntry.value', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=b'8\001',
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=270,
-  serialized_end=317,
-)
-
-_EXTENSIONDESCRIPTOR = _descriptor.Descriptor(
-  name='ExtensionDescriptor',
-  full_name='extensions.ExtensionDescriptor',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extension', full_name='extensions.ExtensionDescriptor.extension', index=0,
-      number=10000, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='title', full_name='extensions.ExtensionDescriptor.title', index=1,
-      number=10010, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='extensions.ExtensionDescriptor.description', index=2,
-      number=10020, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='version', full_name='extensions.ExtensionDescriptor.version', index=3,
-      number=10100, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='version_description', full_name='extensions.ExtensionDescriptor.version_description', index=4,
-      number=10110, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='deps', full_name='extensions.ExtensionDescriptor.deps', index=5,
-      number=10200, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='url', full_name='extensions.ExtensionDescriptor.url', index=6,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='metadata', full_name='extensions.ExtensionDescriptor.metadata', index=7,
-      number=6, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_EXTENSIONDESCRIPTOR_METADATAENTRY, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=48,
-  serialized_end=317,
-)
-
-
-_REGISTEREXTENSIONSREQUEST = _descriptor.Descriptor(
-  name='RegisterExtensionsRequest',
-  full_name='extensions.RegisterExtensionsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extensions', full_name='extensions.RegisterExtensionsRequest.extensions', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=319,
-  serialized_end=399,
-)
-
-
-_REGISTEREXTENSIONSRESPONSE = _descriptor.Descriptor(
-  name='RegisterExtensionsResponse',
-  full_name='extensions.RegisterExtensionsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=401,
-  serialized_end=429,
-)
-
-
-_UNREGISTEREXTENSIONSREQUEST = _descriptor.Descriptor(
-  name='UnregisterExtensionsRequest',
-  full_name='extensions.UnregisterExtensionsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extensions', full_name='extensions.UnregisterExtensionsRequest.extensions', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=431,
-  serialized_end=513,
-)
-
-
-_UNREGISTEREXTENSIONSRESPONSE = _descriptor.Descriptor(
-  name='UnregisterExtensionsResponse',
-  full_name='extensions.UnregisterExtensionsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=515,
-  serialized_end=545,
-)
-
-
-_LISTEXTENSIONSFILTER = _descriptor.Descriptor(
-  name='ListExtensionsFilter',
-  full_name='extensions.ListExtensionsFilter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extension', full_name='extensions.ListExtensionsFilter.extension', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=547,
-  serialized_end=588,
-)
-
-
-_LISTEXTENSIONSREQUEST = _descriptor.Descriptor(
-  name='ListExtensionsRequest',
-  full_name='extensions.ListExtensionsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='extensions.ListExtensionsRequest.filter', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=590,
-  serialized_end=663,
-)
-
-
-_LISTEXTENSIONSRESPONSE = _descriptor.Descriptor(
-  name='ListExtensionsResponse',
-  full_name='extensions.ListExtensionsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extensions', full_name='extensions.ListExtensionsResponse.extensions', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=665,
-  serialized_end=742,
-)
-
-
-_SPACEEXTENSIONS = _descriptor.Descriptor(
-  name='SpaceExtensions',
-  full_name='extensions.SpaceExtensions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='extension', full_name='extensions.SpaceExtensions.extension', index=0,
-      number=10000, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='title', full_name='extensions.SpaceExtensions.title', index=1,
-      number=10010, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='version', full_name='extensions.SpaceExtensions.version', index=2,
-      number=10100, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='deps', full_name='extensions.SpaceExtensions.deps', index=3,
-      number=10200, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='state', full_name='extensions.SpaceExtensions.state', index=4,
-      number=10300, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='status_error', full_name='extensions.SpaceExtensions.status_error', index=5,
-      number=10400, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='status_msg', full_name='extensions.SpaceExtensions.status_msg', index=6,
-      number=10500, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _SPACEEXTENSIONS_STATE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=745,
-  serialized_end=990,
-)
-
-_EXTENSIONDESCRIPTOR_METADATAENTRY.containing_type = _EXTENSIONDESCRIPTOR
-_EXTENSIONDESCRIPTOR.fields_by_name['metadata'].message_type = _EXTENSIONDESCRIPTOR_METADATAENTRY
-_REGISTEREXTENSIONSREQUEST.fields_by_name['extensions'].message_type = _EXTENSIONDESCRIPTOR
-_UNREGISTEREXTENSIONSREQUEST.fields_by_name['extensions'].message_type = _EXTENSIONDESCRIPTOR
-_LISTEXTENSIONSREQUEST.fields_by_name['filter'].message_type = _LISTEXTENSIONSFILTER
-_LISTEXTENSIONSRESPONSE.fields_by_name['extensions'].message_type = _EXTENSIONDESCRIPTOR
-_SPACEEXTENSIONS.fields_by_name['state'].enum_type = _SPACEEXTENSIONS_STATE
-_SPACEEXTENSIONS_STATE.containing_type = _SPACEEXTENSIONS
-DESCRIPTOR.message_types_by_name['ExtensionDescriptor'] = _EXTENSIONDESCRIPTOR
-DESCRIPTOR.message_types_by_name['RegisterExtensionsRequest'] = _REGISTEREXTENSIONSREQUEST
-DESCRIPTOR.message_types_by_name['RegisterExtensionsResponse'] = _REGISTEREXTENSIONSRESPONSE
-DESCRIPTOR.message_types_by_name['UnregisterExtensionsRequest'] = _UNREGISTEREXTENSIONSREQUEST
-DESCRIPTOR.message_types_by_name['UnregisterExtensionsResponse'] = _UNREGISTEREXTENSIONSRESPONSE
-DESCRIPTOR.message_types_by_name['ListExtensionsFilter'] = _LISTEXTENSIONSFILTER
-DESCRIPTOR.message_types_by_name['ListExtensionsRequest'] = _LISTEXTENSIONSREQUEST
-DESCRIPTOR.message_types_by_name['ListExtensionsResponse'] = _LISTEXTENSIONSRESPONSE
-DESCRIPTOR.message_types_by_name['SpaceExtensions'] = _SPACEEXTENSIONS
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-ExtensionDescriptor = _reflection.GeneratedProtocolMessageType('ExtensionDescriptor', (_message.Message,), {
-
-  'MetadataEntry' : _reflection.GeneratedProtocolMessageType('MetadataEntry', (_message.Message,), {
-    'DESCRIPTOR' : _EXTENSIONDESCRIPTOR_METADATAENTRY,
-    '__module__' : 'perxis.extensions.manager_pb2'
-    # @@protoc_insertion_point(class_scope:extensions.ExtensionDescriptor.MetadataEntry)
-    })
-  ,
-  'DESCRIPTOR' : _EXTENSIONDESCRIPTOR,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.ExtensionDescriptor)
-  })
-_sym_db.RegisterMessage(ExtensionDescriptor)
-_sym_db.RegisterMessage(ExtensionDescriptor.MetadataEntry)
-
-RegisterExtensionsRequest = _reflection.GeneratedProtocolMessageType('RegisterExtensionsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _REGISTEREXTENSIONSREQUEST,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.RegisterExtensionsRequest)
-  })
-_sym_db.RegisterMessage(RegisterExtensionsRequest)
-
-RegisterExtensionsResponse = _reflection.GeneratedProtocolMessageType('RegisterExtensionsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _REGISTEREXTENSIONSRESPONSE,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.RegisterExtensionsResponse)
-  })
-_sym_db.RegisterMessage(RegisterExtensionsResponse)
-
-UnregisterExtensionsRequest = _reflection.GeneratedProtocolMessageType('UnregisterExtensionsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UNREGISTEREXTENSIONSREQUEST,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.UnregisterExtensionsRequest)
-  })
-_sym_db.RegisterMessage(UnregisterExtensionsRequest)
-
-UnregisterExtensionsResponse = _reflection.GeneratedProtocolMessageType('UnregisterExtensionsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _UNREGISTEREXTENSIONSRESPONSE,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.UnregisterExtensionsResponse)
-  })
-_sym_db.RegisterMessage(UnregisterExtensionsResponse)
-
-ListExtensionsFilter = _reflection.GeneratedProtocolMessageType('ListExtensionsFilter', (_message.Message,), {
-  'DESCRIPTOR' : _LISTEXTENSIONSFILTER,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.ListExtensionsFilter)
-  })
-_sym_db.RegisterMessage(ListExtensionsFilter)
-
-ListExtensionsRequest = _reflection.GeneratedProtocolMessageType('ListExtensionsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTEXTENSIONSREQUEST,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.ListExtensionsRequest)
-  })
-_sym_db.RegisterMessage(ListExtensionsRequest)
-
-ListExtensionsResponse = _reflection.GeneratedProtocolMessageType('ListExtensionsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTEXTENSIONSRESPONSE,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.ListExtensionsResponse)
-  })
-_sym_db.RegisterMessage(ListExtensionsResponse)
-
-SpaceExtensions = _reflection.GeneratedProtocolMessageType('SpaceExtensions', (_message.Message,), {
-  'DESCRIPTOR' : _SPACEEXTENSIONS,
-  '__module__' : 'perxis.extensions.manager_pb2'
-  # @@protoc_insertion_point(class_scope:extensions.SpaceExtensions)
-  })
-_sym_db.RegisterMessage(SpaceExtensions)
-
-
-DESCRIPTOR._options = None
-_EXTENSIONDESCRIPTOR_METADATAENTRY._options = None
-
-_EXTENSIONMANAGER = _descriptor.ServiceDescriptor(
-  name='ExtensionManager',
-  full_name='extensions.ExtensionManager',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=993,
-  serialized_end=1314,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='RegisterExtensions',
-    full_name='extensions.ExtensionManager.RegisterExtensions',
-    index=0,
-    containing_service=None,
-    input_type=_REGISTEREXTENSIONSREQUEST,
-    output_type=_REGISTEREXTENSIONSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='UnregisterExtensions',
-    full_name='extensions.ExtensionManager.UnregisterExtensions',
-    index=1,
-    containing_service=None,
-    input_type=_UNREGISTEREXTENSIONSREQUEST,
-    output_type=_UNREGISTEREXTENSIONSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListExtensions',
-    full_name='extensions.ExtensionManager.ListExtensions',
-    index=2,
-    containing_service=None,
-    input_type=_LISTEXTENSIONSREQUEST,
-    output_type=_LISTEXTENSIONSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_EXTENSIONMANAGER)
-
-DESCRIPTOR.services_by_name['ExtensionManager'] = _EXTENSIONMANAGER
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/extensions/manager_pb2_grpc.py b/perxis/extensions/manager_pb2_grpc.py
deleted file mode 100644
index c32e1e2a6a73a6bc570d5fc58adfa57fab04ac72..0000000000000000000000000000000000000000
--- a/perxis/extensions/manager_pb2_grpc.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from perxis.extensions import manager_pb2 as perxis_dot_extensions_dot_manager__pb2
-
-
-class ExtensionManagerStub(object):
-    """ExtensionManager - менеджер расширений. Должен реализовывать так же сервис Extension
-    """
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.RegisterExtensions = channel.unary_unary(
-                '/extensions.ExtensionManager/RegisterExtensions',
-                request_serializer=perxis_dot_extensions_dot_manager__pb2.RegisterExtensionsRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_manager__pb2.RegisterExtensionsResponse.FromString,
-                )
-        self.UnregisterExtensions = channel.unary_unary(
-                '/extensions.ExtensionManager/UnregisterExtensions',
-                request_serializer=perxis_dot_extensions_dot_manager__pb2.UnregisterExtensionsRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_manager__pb2.UnregisterExtensionsResponse.FromString,
-                )
-        self.ListExtensions = channel.unary_unary(
-                '/extensions.ExtensionManager/ListExtensions',
-                request_serializer=perxis_dot_extensions_dot_manager__pb2.ListExtensionsRequest.SerializeToString,
-                response_deserializer=perxis_dot_extensions_dot_manager__pb2.ListExtensionsResponse.FromString,
-                )
-
-
-class ExtensionManagerServicer(object):
-    """ExtensionManager - менеджер расширений. Должен реализовывать так же сервис Extension
-    """
-
-    def RegisterExtensions(self, request, context):
-        """##  Регистрация расширений
-
-        Регистрация\Дерегистрация происходить через сервис менеджера расширений (Extension Manager). В процессе регистрации сервис сообщает
-        о поддерживаемых сервисом действиях (Actions) и версии сервиса и зависимостях:
-        1. Действия (Actions) - перечень действия которые обрабатываются сервисом. Включает в себя как системные действия,
-        так и пользовательские, которые могут быть использованы в интерфейсе;
-        2. Имя сервиса/расширения - название сервиса внутри системы;
-        3. Версия сервиса - сервис сообщает текущую версию сервиса. Контроллер сообщает пользователю о возможности обновления
-        расширения при смене версии;
-        4. Описание версии - содержит информацию об изменениях в последних версиях расширения;
-        5. Зависимости - перечень расширений которые необходимы сервису для функционирования. При установке сервиса
-        все расширения от которых он зависит, будут так же установлены.
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def UnregisterExtensions(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListExtensions(self, request, context):
-        """Получить список зарегистрированных сервисов
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_ExtensionManagerServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'RegisterExtensions': grpc.unary_unary_rpc_method_handler(
-                    servicer.RegisterExtensions,
-                    request_deserializer=perxis_dot_extensions_dot_manager__pb2.RegisterExtensionsRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_manager__pb2.RegisterExtensionsResponse.SerializeToString,
-            ),
-            'UnregisterExtensions': grpc.unary_unary_rpc_method_handler(
-                    servicer.UnregisterExtensions,
-                    request_deserializer=perxis_dot_extensions_dot_manager__pb2.UnregisterExtensionsRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_manager__pb2.UnregisterExtensionsResponse.SerializeToString,
-            ),
-            'ListExtensions': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListExtensions,
-                    request_deserializer=perxis_dot_extensions_dot_manager__pb2.ListExtensionsRequest.FromString,
-                    response_serializer=perxis_dot_extensions_dot_manager__pb2.ListExtensionsResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'extensions.ExtensionManager', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class ExtensionManager(object):
-    """ExtensionManager - менеджер расширений. Должен реализовывать так же сервис Extension
-    """
-
-    @staticmethod
-    def RegisterExtensions(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.ExtensionManager/RegisterExtensions',
-            perxis_dot_extensions_dot_manager__pb2.RegisterExtensionsRequest.SerializeToString,
-            perxis_dot_extensions_dot_manager__pb2.RegisterExtensionsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def UnregisterExtensions(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.ExtensionManager/UnregisterExtensions',
-            perxis_dot_extensions_dot_manager__pb2.UnregisterExtensionsRequest.SerializeToString,
-            perxis_dot_extensions_dot_manager__pb2.UnregisterExtensionsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListExtensions(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/extensions.ExtensionManager/ListExtensions',
-            perxis_dot_extensions_dot_manager__pb2.ListExtensionsRequest.SerializeToString,
-            perxis_dot_extensions_dot_manager__pb2.ListExtensionsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/files/files_pb2.py b/perxis/files/files_pb2.py
deleted file mode 100644
index 12e0534e67a20915c90c067270450f640d610fe7..0000000000000000000000000000000000000000
--- a/perxis/files/files_pb2.py
+++ /dev/null
@@ -1,909 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/files/files.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/files/files.proto',
-  package='files',
-  syntax='proto3',
-  serialized_options=b'Z+git.perx.ru/perxis/perxis/proto/files;files',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x18perxis/files/files.proto\x12\x05\x66iles\x1a\x1bgoogle/protobuf/empty.proto\"N\n\x04\x46ile\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x05\x12\x11\n\tmime_type\x18\x04 \x01(\t\x12\x0b\n\x03url\x18\x05 \x01(\t\"\x8a\x01\n\x0fMultipartUpload\x12\x19\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0b.files.File\x12\x11\n\tupload_id\x18\x02 \x01(\t\x12\x11\n\tpart_size\x18\x03 \x01(\x05\x12\x11\n\tpart_urls\x18\x04 \x03(\t\x12#\n\x05parts\x18\x05 \x03(\x0b\x32\x14.files.CompletedPart\"7\n\x06Upload\x12\x19\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0b.files.File\x12\x12\n\nupload_url\x18\x02 \x01(\t\"+\n\rCompletedPart\x12\x0e\n\x06number\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\t\"<\n\x12StartUploadRequest\x12&\n\x06upload\x18\x01 \x01(\x0b\x32\x16.files.MultipartUpload\"=\n\x13StartUploadResponse\x12&\n\x06upload\x18\x01 \x01(\x0b\x32\x16.files.MultipartUpload\"?\n\x15\x43ompleteUploadRequest\x12&\n\x06upload\x18\x01 \x01(\x0b\x32\x16.files.MultipartUpload\"@\n\x16\x43ompleteUploadResponse\x12&\n\x06upload\x18\x01 \x01(\x0b\x32\x16.files.MultipartUpload\"<\n\x12\x41\x62ortUploadRequest\x12&\n\x06upload\x18\x01 \x01(\x0b\x32\x16.files.MultipartUpload\"\x15\n\x13\x41\x62ortUploadResponse\";\n\x11MoveUploadRequest\x12&\n\x06upload\x18\x01 \x01(\x0b\x32\x16.files.MultipartUpload\"/\n\x12MoveUploadResponse\x12\x19\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0b.files.File\"*\n\rUploadRequest\x12\x19\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0b.files.File\"/\n\x0eUploadResponse\x12\x1d\n\x06upload\x18\x01 \x01(\x0b\x32\r.files.Upload\"\x1c\n\x0eGetFileRequest\x12\n\n\x02id\x18\x01 \x01(\t\",\n\x0fGetFileResponse\x12\x19\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0b.files.File\".\n\x11\x44\x65leteFileRequest\x12\x19\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0b.files.File\"\x14\n\x12\x44\x65leteFileResponse2\xe0\x03\n\x05\x46iles\x12\x46\n\x0bStartUpload\x12\x19.files.StartUploadRequest\x1a\x1a.files.StartUploadResponse\"\x00\x12O\n\x0e\x43ompleteUpload\x12\x1c.files.CompleteUploadRequest\x1a\x1d.files.CompleteUploadResponse\"\x00\x12\x42\n\x0b\x41\x62ortUpload\x12\x19.files.AbortUploadRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x43\n\nMoveUpload\x12\x18.files.MoveUploadRequest\x1a\x19.files.MoveUploadResponse\"\x00\x12\x37\n\x06Upload\x12\x14.files.UploadRequest\x1a\x15.files.UploadResponse\"\x00\x12:\n\x07GetFile\x12\x15.files.GetFileRequest\x1a\x16.files.GetFileResponse\"\x00\x12@\n\nDeleteFile\x12\x18.files.DeleteFileRequest\x1a\x16.google.protobuf.Empty\"\x00\x42-Z+git.perx.ru/perxis/perxis/proto/files;filesb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
-
-
-
-
-_FILE = _descriptor.Descriptor(
-  name='File',
-  full_name='files.File',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='files.File.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='files.File.name', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='size', full_name='files.File.size', index=2,
-      number=3, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='mime_type', full_name='files.File.mime_type', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='url', full_name='files.File.url', index=4,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=64,
-  serialized_end=142,
-)
-
-
-_MULTIPARTUPLOAD = _descriptor.Descriptor(
-  name='MultipartUpload',
-  full_name='files.MultipartUpload',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='file', full_name='files.MultipartUpload.file', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='upload_id', full_name='files.MultipartUpload.upload_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='part_size', full_name='files.MultipartUpload.part_size', index=2,
-      number=3, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='part_urls', full_name='files.MultipartUpload.part_urls', index=3,
-      number=4, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='parts', full_name='files.MultipartUpload.parts', index=4,
-      number=5, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=145,
-  serialized_end=283,
-)
-
-
-_UPLOAD = _descriptor.Descriptor(
-  name='Upload',
-  full_name='files.Upload',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='file', full_name='files.Upload.file', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='upload_url', full_name='files.Upload.upload_url', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=285,
-  serialized_end=340,
-)
-
-
-_COMPLETEDPART = _descriptor.Descriptor(
-  name='CompletedPart',
-  full_name='files.CompletedPart',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='number', full_name='files.CompletedPart.number', index=0,
-      number=1, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='id', full_name='files.CompletedPart.id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=342,
-  serialized_end=385,
-)
-
-
-_STARTUPLOADREQUEST = _descriptor.Descriptor(
-  name='StartUploadRequest',
-  full_name='files.StartUploadRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='upload', full_name='files.StartUploadRequest.upload', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=387,
-  serialized_end=447,
-)
-
-
-_STARTUPLOADRESPONSE = _descriptor.Descriptor(
-  name='StartUploadResponse',
-  full_name='files.StartUploadResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='upload', full_name='files.StartUploadResponse.upload', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=449,
-  serialized_end=510,
-)
-
-
-_COMPLETEUPLOADREQUEST = _descriptor.Descriptor(
-  name='CompleteUploadRequest',
-  full_name='files.CompleteUploadRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='upload', full_name='files.CompleteUploadRequest.upload', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=512,
-  serialized_end=575,
-)
-
-
-_COMPLETEUPLOADRESPONSE = _descriptor.Descriptor(
-  name='CompleteUploadResponse',
-  full_name='files.CompleteUploadResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='upload', full_name='files.CompleteUploadResponse.upload', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=577,
-  serialized_end=641,
-)
-
-
-_ABORTUPLOADREQUEST = _descriptor.Descriptor(
-  name='AbortUploadRequest',
-  full_name='files.AbortUploadRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='upload', full_name='files.AbortUploadRequest.upload', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=643,
-  serialized_end=703,
-)
-
-
-_ABORTUPLOADRESPONSE = _descriptor.Descriptor(
-  name='AbortUploadResponse',
-  full_name='files.AbortUploadResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=705,
-  serialized_end=726,
-)
-
-
-_MOVEUPLOADREQUEST = _descriptor.Descriptor(
-  name='MoveUploadRequest',
-  full_name='files.MoveUploadRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='upload', full_name='files.MoveUploadRequest.upload', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=728,
-  serialized_end=787,
-)
-
-
-_MOVEUPLOADRESPONSE = _descriptor.Descriptor(
-  name='MoveUploadResponse',
-  full_name='files.MoveUploadResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='file', full_name='files.MoveUploadResponse.file', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=789,
-  serialized_end=836,
-)
-
-
-_UPLOADREQUEST = _descriptor.Descriptor(
-  name='UploadRequest',
-  full_name='files.UploadRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='file', full_name='files.UploadRequest.file', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=838,
-  serialized_end=880,
-)
-
-
-_UPLOADRESPONSE = _descriptor.Descriptor(
-  name='UploadResponse',
-  full_name='files.UploadResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='upload', full_name='files.UploadResponse.upload', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=882,
-  serialized_end=929,
-)
-
-
-_GETFILEREQUEST = _descriptor.Descriptor(
-  name='GetFileRequest',
-  full_name='files.GetFileRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='files.GetFileRequest.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=931,
-  serialized_end=959,
-)
-
-
-_GETFILERESPONSE = _descriptor.Descriptor(
-  name='GetFileResponse',
-  full_name='files.GetFileResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='file', full_name='files.GetFileResponse.file', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=961,
-  serialized_end=1005,
-)
-
-
-_DELETEFILEREQUEST = _descriptor.Descriptor(
-  name='DeleteFileRequest',
-  full_name='files.DeleteFileRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='file', full_name='files.DeleteFileRequest.file', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1007,
-  serialized_end=1053,
-)
-
-
-_DELETEFILERESPONSE = _descriptor.Descriptor(
-  name='DeleteFileResponse',
-  full_name='files.DeleteFileResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1055,
-  serialized_end=1075,
-)
-
-_MULTIPARTUPLOAD.fields_by_name['file'].message_type = _FILE
-_MULTIPARTUPLOAD.fields_by_name['parts'].message_type = _COMPLETEDPART
-_UPLOAD.fields_by_name['file'].message_type = _FILE
-_STARTUPLOADREQUEST.fields_by_name['upload'].message_type = _MULTIPARTUPLOAD
-_STARTUPLOADRESPONSE.fields_by_name['upload'].message_type = _MULTIPARTUPLOAD
-_COMPLETEUPLOADREQUEST.fields_by_name['upload'].message_type = _MULTIPARTUPLOAD
-_COMPLETEUPLOADRESPONSE.fields_by_name['upload'].message_type = _MULTIPARTUPLOAD
-_ABORTUPLOADREQUEST.fields_by_name['upload'].message_type = _MULTIPARTUPLOAD
-_MOVEUPLOADREQUEST.fields_by_name['upload'].message_type = _MULTIPARTUPLOAD
-_MOVEUPLOADRESPONSE.fields_by_name['file'].message_type = _FILE
-_UPLOADREQUEST.fields_by_name['file'].message_type = _FILE
-_UPLOADRESPONSE.fields_by_name['upload'].message_type = _UPLOAD
-_GETFILERESPONSE.fields_by_name['file'].message_type = _FILE
-_DELETEFILEREQUEST.fields_by_name['file'].message_type = _FILE
-DESCRIPTOR.message_types_by_name['File'] = _FILE
-DESCRIPTOR.message_types_by_name['MultipartUpload'] = _MULTIPARTUPLOAD
-DESCRIPTOR.message_types_by_name['Upload'] = _UPLOAD
-DESCRIPTOR.message_types_by_name['CompletedPart'] = _COMPLETEDPART
-DESCRIPTOR.message_types_by_name['StartUploadRequest'] = _STARTUPLOADREQUEST
-DESCRIPTOR.message_types_by_name['StartUploadResponse'] = _STARTUPLOADRESPONSE
-DESCRIPTOR.message_types_by_name['CompleteUploadRequest'] = _COMPLETEUPLOADREQUEST
-DESCRIPTOR.message_types_by_name['CompleteUploadResponse'] = _COMPLETEUPLOADRESPONSE
-DESCRIPTOR.message_types_by_name['AbortUploadRequest'] = _ABORTUPLOADREQUEST
-DESCRIPTOR.message_types_by_name['AbortUploadResponse'] = _ABORTUPLOADRESPONSE
-DESCRIPTOR.message_types_by_name['MoveUploadRequest'] = _MOVEUPLOADREQUEST
-DESCRIPTOR.message_types_by_name['MoveUploadResponse'] = _MOVEUPLOADRESPONSE
-DESCRIPTOR.message_types_by_name['UploadRequest'] = _UPLOADREQUEST
-DESCRIPTOR.message_types_by_name['UploadResponse'] = _UPLOADRESPONSE
-DESCRIPTOR.message_types_by_name['GetFileRequest'] = _GETFILEREQUEST
-DESCRIPTOR.message_types_by_name['GetFileResponse'] = _GETFILERESPONSE
-DESCRIPTOR.message_types_by_name['DeleteFileRequest'] = _DELETEFILEREQUEST
-DESCRIPTOR.message_types_by_name['DeleteFileResponse'] = _DELETEFILERESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-File = _reflection.GeneratedProtocolMessageType('File', (_message.Message,), {
-  'DESCRIPTOR' : _FILE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.File)
-  })
-_sym_db.RegisterMessage(File)
-
-MultipartUpload = _reflection.GeneratedProtocolMessageType('MultipartUpload', (_message.Message,), {
-  'DESCRIPTOR' : _MULTIPARTUPLOAD,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.MultipartUpload)
-  })
-_sym_db.RegisterMessage(MultipartUpload)
-
-Upload = _reflection.GeneratedProtocolMessageType('Upload', (_message.Message,), {
-  'DESCRIPTOR' : _UPLOAD,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.Upload)
-  })
-_sym_db.RegisterMessage(Upload)
-
-CompletedPart = _reflection.GeneratedProtocolMessageType('CompletedPart', (_message.Message,), {
-  'DESCRIPTOR' : _COMPLETEDPART,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.CompletedPart)
-  })
-_sym_db.RegisterMessage(CompletedPart)
-
-StartUploadRequest = _reflection.GeneratedProtocolMessageType('StartUploadRequest', (_message.Message,), {
-  'DESCRIPTOR' : _STARTUPLOADREQUEST,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.StartUploadRequest)
-  })
-_sym_db.RegisterMessage(StartUploadRequest)
-
-StartUploadResponse = _reflection.GeneratedProtocolMessageType('StartUploadResponse', (_message.Message,), {
-  'DESCRIPTOR' : _STARTUPLOADRESPONSE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.StartUploadResponse)
-  })
-_sym_db.RegisterMessage(StartUploadResponse)
-
-CompleteUploadRequest = _reflection.GeneratedProtocolMessageType('CompleteUploadRequest', (_message.Message,), {
-  'DESCRIPTOR' : _COMPLETEUPLOADREQUEST,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.CompleteUploadRequest)
-  })
-_sym_db.RegisterMessage(CompleteUploadRequest)
-
-CompleteUploadResponse = _reflection.GeneratedProtocolMessageType('CompleteUploadResponse', (_message.Message,), {
-  'DESCRIPTOR' : _COMPLETEUPLOADRESPONSE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.CompleteUploadResponse)
-  })
-_sym_db.RegisterMessage(CompleteUploadResponse)
-
-AbortUploadRequest = _reflection.GeneratedProtocolMessageType('AbortUploadRequest', (_message.Message,), {
-  'DESCRIPTOR' : _ABORTUPLOADREQUEST,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.AbortUploadRequest)
-  })
-_sym_db.RegisterMessage(AbortUploadRequest)
-
-AbortUploadResponse = _reflection.GeneratedProtocolMessageType('AbortUploadResponse', (_message.Message,), {
-  'DESCRIPTOR' : _ABORTUPLOADRESPONSE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.AbortUploadResponse)
-  })
-_sym_db.RegisterMessage(AbortUploadResponse)
-
-MoveUploadRequest = _reflection.GeneratedProtocolMessageType('MoveUploadRequest', (_message.Message,), {
-  'DESCRIPTOR' : _MOVEUPLOADREQUEST,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.MoveUploadRequest)
-  })
-_sym_db.RegisterMessage(MoveUploadRequest)
-
-MoveUploadResponse = _reflection.GeneratedProtocolMessageType('MoveUploadResponse', (_message.Message,), {
-  'DESCRIPTOR' : _MOVEUPLOADRESPONSE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.MoveUploadResponse)
-  })
-_sym_db.RegisterMessage(MoveUploadResponse)
-
-UploadRequest = _reflection.GeneratedProtocolMessageType('UploadRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPLOADREQUEST,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.UploadRequest)
-  })
-_sym_db.RegisterMessage(UploadRequest)
-
-UploadResponse = _reflection.GeneratedProtocolMessageType('UploadResponse', (_message.Message,), {
-  'DESCRIPTOR' : _UPLOADRESPONSE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.UploadResponse)
-  })
-_sym_db.RegisterMessage(UploadResponse)
-
-GetFileRequest = _reflection.GeneratedProtocolMessageType('GetFileRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETFILEREQUEST,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.GetFileRequest)
-  })
-_sym_db.RegisterMessage(GetFileRequest)
-
-GetFileResponse = _reflection.GeneratedProtocolMessageType('GetFileResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETFILERESPONSE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.GetFileResponse)
-  })
-_sym_db.RegisterMessage(GetFileResponse)
-
-DeleteFileRequest = _reflection.GeneratedProtocolMessageType('DeleteFileRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEFILEREQUEST,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.DeleteFileRequest)
-  })
-_sym_db.RegisterMessage(DeleteFileRequest)
-
-DeleteFileResponse = _reflection.GeneratedProtocolMessageType('DeleteFileResponse', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEFILERESPONSE,
-  '__module__' : 'perxis.files.files_pb2'
-  # @@protoc_insertion_point(class_scope:files.DeleteFileResponse)
-  })
-_sym_db.RegisterMessage(DeleteFileResponse)
-
-
-DESCRIPTOR._options = None
-
-_FILES = _descriptor.ServiceDescriptor(
-  name='Files',
-  full_name='files.Files',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1078,
-  serialized_end=1558,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='StartUpload',
-    full_name='files.Files.StartUpload',
-    index=0,
-    containing_service=None,
-    input_type=_STARTUPLOADREQUEST,
-    output_type=_STARTUPLOADRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='CompleteUpload',
-    full_name='files.Files.CompleteUpload',
-    index=1,
-    containing_service=None,
-    input_type=_COMPLETEUPLOADREQUEST,
-    output_type=_COMPLETEUPLOADRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='AbortUpload',
-    full_name='files.Files.AbortUpload',
-    index=2,
-    containing_service=None,
-    input_type=_ABORTUPLOADREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='MoveUpload',
-    full_name='files.Files.MoveUpload',
-    index=3,
-    containing_service=None,
-    input_type=_MOVEUPLOADREQUEST,
-    output_type=_MOVEUPLOADRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Upload',
-    full_name='files.Files.Upload',
-    index=4,
-    containing_service=None,
-    input_type=_UPLOADREQUEST,
-    output_type=_UPLOADRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetFile',
-    full_name='files.Files.GetFile',
-    index=5,
-    containing_service=None,
-    input_type=_GETFILEREQUEST,
-    output_type=_GETFILERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='DeleteFile',
-    full_name='files.Files.DeleteFile',
-    index=6,
-    containing_service=None,
-    input_type=_DELETEFILEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_FILES)
-
-DESCRIPTOR.services_by_name['Files'] = _FILES
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/files/files_pb2_grpc.py b/perxis/files/files_pb2_grpc.py
deleted file mode 100644
index 5cd54578939420d5166c3db359b19c26beb2449f..0000000000000000000000000000000000000000
--- a/perxis/files/files_pb2_grpc.py
+++ /dev/null
@@ -1,285 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.files import files_pb2 as perxis_dot_files_dot_files__pb2
-
-
-class FilesStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.StartUpload = channel.unary_unary(
-                '/files.Files/StartUpload',
-                request_serializer=perxis_dot_files_dot_files__pb2.StartUploadRequest.SerializeToString,
-                response_deserializer=perxis_dot_files_dot_files__pb2.StartUploadResponse.FromString,
-                )
-        self.CompleteUpload = channel.unary_unary(
-                '/files.Files/CompleteUpload',
-                request_serializer=perxis_dot_files_dot_files__pb2.CompleteUploadRequest.SerializeToString,
-                response_deserializer=perxis_dot_files_dot_files__pb2.CompleteUploadResponse.FromString,
-                )
-        self.AbortUpload = channel.unary_unary(
-                '/files.Files/AbortUpload',
-                request_serializer=perxis_dot_files_dot_files__pb2.AbortUploadRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.MoveUpload = channel.unary_unary(
-                '/files.Files/MoveUpload',
-                request_serializer=perxis_dot_files_dot_files__pb2.MoveUploadRequest.SerializeToString,
-                response_deserializer=perxis_dot_files_dot_files__pb2.MoveUploadResponse.FromString,
-                )
-        self.Upload = channel.unary_unary(
-                '/files.Files/Upload',
-                request_serializer=perxis_dot_files_dot_files__pb2.UploadRequest.SerializeToString,
-                response_deserializer=perxis_dot_files_dot_files__pb2.UploadResponse.FromString,
-                )
-        self.GetFile = channel.unary_unary(
-                '/files.Files/GetFile',
-                request_serializer=perxis_dot_files_dot_files__pb2.GetFileRequest.SerializeToString,
-                response_deserializer=perxis_dot_files_dot_files__pb2.GetFileResponse.FromString,
-                )
-        self.DeleteFile = channel.unary_unary(
-                '/files.Files/DeleteFile',
-                request_serializer=perxis_dot_files_dot_files__pb2.DeleteFileRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class FilesServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def StartUpload(self, request, context):
-        """StartUpload - инициирует процедуру загрузки файла в файловое хранилище.
-        Используется клиентским приложением для начала загрузки файла
-        Требуемые параметры: объект `MultipartUpload` с вложенным объектом `File`, в котором
-        обязательные поля  Name и Size.
-        Возвращает объект с заполненными полями ID, PartSize, PartURLs, MimeType, Size, UploadID.
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def CompleteUpload(self, request, context):
-        """CompleteUpload - завершает процедуру загрузку файла
-        Предполагается, что в объекте, полученном из `StartUpload`, клиент должен заполнить поле
-        Parts (идентификаторами загруженных блоков (S3 ETAGs)) и передать его в `CompleteUpload`
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def AbortUpload(self, request, context):
-        """AbortUpload - прерывает процедуру загрузки файла, все загруженные части файла удаляются их хранилища
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def MoveUpload(self, request, context):
-        """MoveUpload - перемещает загруженный файл из временного расположения в постоянное месторасположения.
-        После перемещение загрузки хранилище выдает новый идентификатор постоянного файла
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Upload(self, request, context):
-        """Upload - инициация загрузки файла в хранилище. Возвращает объект, содержащий подписанный URL.
-        Завершение загрузки файла осуществляется выполнением POST-запроса
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetFile(self, request, context):
-        """GetFile - получить информацию о файле (ссылку) по ID
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def DeleteFile(self, request, context):
-        """DeleteFile - удаляет файл. Если происходит удаление оригинала,
-        удаляются и все связанные структуры
-        Возможны следующие ситуации:
-        - Удаление оригинального файла. Удаляется файл и все связанные с ним файлы.
-        - Удаление связанного файла. Для удаления конкретного файла передается 'ID', 'Type' и 'Name'
-        - Удаления связанных файлов конкретного типа (например, все 'thumbnails'). Передается 'ID' и 'Type'
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_FilesServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'StartUpload': grpc.unary_unary_rpc_method_handler(
-                    servicer.StartUpload,
-                    request_deserializer=perxis_dot_files_dot_files__pb2.StartUploadRequest.FromString,
-                    response_serializer=perxis_dot_files_dot_files__pb2.StartUploadResponse.SerializeToString,
-            ),
-            'CompleteUpload': grpc.unary_unary_rpc_method_handler(
-                    servicer.CompleteUpload,
-                    request_deserializer=perxis_dot_files_dot_files__pb2.CompleteUploadRequest.FromString,
-                    response_serializer=perxis_dot_files_dot_files__pb2.CompleteUploadResponse.SerializeToString,
-            ),
-            'AbortUpload': grpc.unary_unary_rpc_method_handler(
-                    servicer.AbortUpload,
-                    request_deserializer=perxis_dot_files_dot_files__pb2.AbortUploadRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'MoveUpload': grpc.unary_unary_rpc_method_handler(
-                    servicer.MoveUpload,
-                    request_deserializer=perxis_dot_files_dot_files__pb2.MoveUploadRequest.FromString,
-                    response_serializer=perxis_dot_files_dot_files__pb2.MoveUploadResponse.SerializeToString,
-            ),
-            'Upload': grpc.unary_unary_rpc_method_handler(
-                    servicer.Upload,
-                    request_deserializer=perxis_dot_files_dot_files__pb2.UploadRequest.FromString,
-                    response_serializer=perxis_dot_files_dot_files__pb2.UploadResponse.SerializeToString,
-            ),
-            'GetFile': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetFile,
-                    request_deserializer=perxis_dot_files_dot_files__pb2.GetFileRequest.FromString,
-                    response_serializer=perxis_dot_files_dot_files__pb2.GetFileResponse.SerializeToString,
-            ),
-            'DeleteFile': grpc.unary_unary_rpc_method_handler(
-                    servicer.DeleteFile,
-                    request_deserializer=perxis_dot_files_dot_files__pb2.DeleteFileRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'files.Files', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Files(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def StartUpload(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/files.Files/StartUpload',
-            perxis_dot_files_dot_files__pb2.StartUploadRequest.SerializeToString,
-            perxis_dot_files_dot_files__pb2.StartUploadResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def CompleteUpload(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/files.Files/CompleteUpload',
-            perxis_dot_files_dot_files__pb2.CompleteUploadRequest.SerializeToString,
-            perxis_dot_files_dot_files__pb2.CompleteUploadResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def AbortUpload(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/files.Files/AbortUpload',
-            perxis_dot_files_dot_files__pb2.AbortUploadRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def MoveUpload(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/files.Files/MoveUpload',
-            perxis_dot_files_dot_files__pb2.MoveUploadRequest.SerializeToString,
-            perxis_dot_files_dot_files__pb2.MoveUploadResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Upload(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/files.Files/Upload',
-            perxis_dot_files_dot_files__pb2.UploadRequest.SerializeToString,
-            perxis_dot_files_dot_files__pb2.UploadResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetFile(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/files.Files/GetFile',
-            perxis_dot_files_dot_files__pb2.GetFileRequest.SerializeToString,
-            perxis_dot_files_dot_files__pb2.GetFileResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def DeleteFile(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/files.Files/DeleteFile',
-            perxis_dot_files_dot_files__pb2.DeleteFileRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/images/images_pb2.py b/perxis/images/images_pb2.py
deleted file mode 100644
index 818e36580f7af9a2a0db784b10fcac36025f0b0f..0000000000000000000000000000000000000000
--- a/perxis/images/images_pb2.py
+++ /dev/null
@@ -1,237 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/images/images.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from perxis.files import files_pb2 as perxis_dot_files_dot_files__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/images/images.proto',
-  package='images',
-  syntax='proto3',
-  serialized_options=b'Z-git.perx.ru/perxis/perxis/proto/images;images',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1aperxis/images/images.proto\x12\x06images\x1a\x18perxis/files/files.proto\"\"\n\x05Param\x12\n\n\x02op\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x03(\t\"\x83\x01\n\nGetRequest\x12\x1b\n\x06source\x18\x01 \x01(\x0b\x32\x0b.files.File\x12+\n\x04opts\x18\x02 \x01(\x0b\x32\x1d.images.GetRequest.GetOptions\x1a+\n\nGetOptions\x12\x1d\n\x06params\x18\x01 \x03(\x0b\x32\r.images.Param\"*\n\x0bGetResponse\x12\x1b\n\x06result\x18\x01 \x01(\x0b\x32\x0b.files.File2:\n\x06Images\x12\x30\n\x03Get\x12\x12.images.GetRequest\x1a\x13.images.GetResponse\"\x00\x42/Z-git.perx.ru/perxis/perxis/proto/images;imagesb\x06proto3'
-  ,
-  dependencies=[perxis_dot_files_dot_files__pb2.DESCRIPTOR,])
-
-
-
-
-_PARAM = _descriptor.Descriptor(
-  name='Param',
-  full_name='images.Param',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='op', full_name='images.Param.op', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='value', full_name='images.Param.value', index=1,
-      number=2, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=64,
-  serialized_end=98,
-)
-
-
-_GETREQUEST_GETOPTIONS = _descriptor.Descriptor(
-  name='GetOptions',
-  full_name='images.GetRequest.GetOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='params', full_name='images.GetRequest.GetOptions.params', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=189,
-  serialized_end=232,
-)
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='images.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='source', full_name='images.GetRequest.source', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='opts', full_name='images.GetRequest.opts', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_GETREQUEST_GETOPTIONS, ],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=101,
-  serialized_end=232,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='images.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='result', full_name='images.GetResponse.result', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=234,
-  serialized_end=276,
-)
-
-_GETREQUEST_GETOPTIONS.fields_by_name['params'].message_type = _PARAM
-_GETREQUEST_GETOPTIONS.containing_type = _GETREQUEST
-_GETREQUEST.fields_by_name['source'].message_type = perxis_dot_files_dot_files__pb2._FILE
-_GETREQUEST.fields_by_name['opts'].message_type = _GETREQUEST_GETOPTIONS
-_GETRESPONSE.fields_by_name['result'].message_type = perxis_dot_files_dot_files__pb2._FILE
-DESCRIPTOR.message_types_by_name['Param'] = _PARAM
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Param = _reflection.GeneratedProtocolMessageType('Param', (_message.Message,), {
-  'DESCRIPTOR' : _PARAM,
-  '__module__' : 'perxis.images.images_pb2'
-  # @@protoc_insertion_point(class_scope:images.Param)
-  })
-_sym_db.RegisterMessage(Param)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-
-  'GetOptions' : _reflection.GeneratedProtocolMessageType('GetOptions', (_message.Message,), {
-    'DESCRIPTOR' : _GETREQUEST_GETOPTIONS,
-    '__module__' : 'perxis.images.images_pb2'
-    # @@protoc_insertion_point(class_scope:images.GetRequest.GetOptions)
-    })
-  ,
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.images.images_pb2'
-  # @@protoc_insertion_point(class_scope:images.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-_sym_db.RegisterMessage(GetRequest.GetOptions)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.images.images_pb2'
-  # @@protoc_insertion_point(class_scope:images.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-
-DESCRIPTOR._options = None
-
-_IMAGES = _descriptor.ServiceDescriptor(
-  name='Images',
-  full_name='images.Images',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=278,
-  serialized_end=336,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='images.Images.Get',
-    index=0,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_IMAGES)
-
-DESCRIPTOR.services_by_name['Images'] = _IMAGES
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/images/images_pb2_grpc.py b/perxis/images/images_pb2_grpc.py
deleted file mode 100644
index 5b19b312e53cc4e320b5c0413e94a4f7193fa21c..0000000000000000000000000000000000000000
--- a/perxis/images/images_pb2_grpc.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from perxis.images import images_pb2 as perxis_dot_images_dot_images__pb2
-
-
-class ImagesStub(object):
-    """ImageService - сервис для обработки изображений
-    """
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Get = channel.unary_unary(
-                '/images.Images/Get',
-                request_serializer=perxis_dot_images_dot_images__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_images_dot_images__pb2.GetResponse.FromString,
-                )
-
-
-class ImagesServicer(object):
-    """ImageService - сервис для обработки изображений
-    """
-
-    def Get(self, request, context):
-        """Get - к файлу, идентификатор которого передан в запросе, применяются параметры.
-        Может быть передано несколько параметров, порядок учитывается при обработке
-        Допустимые операции:
-        - crop (ширина, высота)
-        - fit (ширина, высота)
-        - resize (ширина, высота)
-        - format (один из форматов [ png, jpeg, jpg, gif ]
-        Возвращает объект File с заполненным полем File.URL
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_ImagesServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_images_dot_images__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_images_dot_images__pb2.GetResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'images.Images', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Images(object):
-    """ImageService - сервис для обработки изображений
-    """
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/images.Images/Get',
-            perxis_dot_images_dot_images__pb2.GetRequest.SerializeToString,
-            perxis_dot_images_dot_images__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/invitations/invitations_pb2.py b/perxis/invitations/invitations_pb2.py
deleted file mode 100644
index edde048bb102b18d453df3d59d1bf3fef2547c1e..0000000000000000000000000000000000000000
--- a/perxis/invitations/invitations_pb2.py
+++ /dev/null
@@ -1,839 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/invitations/invitations.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/invitations/invitations.proto',
-  package='content.invitations',
-  syntax='proto3',
-  serialized_options=b'Z7git.perx.ru/perxis/perxis/proto/invitations;invitations',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n$perxis/invitations/invitations.proto\x12\x13\x63ontent.invitations\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xca\x01\n\nInvitation\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x0e\n\x06org_id\x18\x03 \x01(\t\x12\x10\n\x08space_id\x18\x04 \x01(\t\x12\x10\n\x08owner_id\x18\x05 \x01(\t\x12\x0c\n\x04role\x18\x06 \x01(\t\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bvalid_until\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"e\n\x06\x46ilter\x12\n\n\x02id\x18\x01 \x03(\t\x12\r\n\x05\x65mail\x18\x02 \x03(\t\x12\x0e\n\x06org_id\x18\x03 \x03(\t\x12\x10\n\x08space_id\x18\x04 \x03(\t\x12\x10\n\x08owner_id\x18\x05 \x03(\t\x12\x0c\n\x04role\x18\x06 \x03(\t\"@\n\x0b\x46indOptions\x12\x0c\n\x04sort\x18\x01 \x03(\t\x12\x10\n\x08page_num\x18\x02 \x01(\x05\x12\x11\n\tpage_size\x18\x03 \x01(\x05\"D\n\rCreateRequest\x12\x33\n\ninvitation\x18\x01 \x01(\x0b\x32\x1f.content.invitations.Invitation\"E\n\x0e\x43reateResponse\x12\x33\n\ninvitation\x18\x01 \x01(\x0b\x32\x1f.content.invitations.Invitation\"#\n\nGetRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"B\n\x0bGetResponse\x12\x33\n\ninvitation\x18\x01 \x01(\x0b\x32\x1f.content.invitations.Invitation\"\xdb\x01\n\rUpdateRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\x12(\n\x04sent\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12+\n\x07pending\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12+\n\x07sent_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bvalid_until\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x18UpdateInvitationResponse\"7\n\rAcceptRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"\x1a\n\x18\x41\x63\x63\x65ptInvitationResponse\"j\n\x0b\x46indRequest\x12+\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1b.content.invitations.Filter\x12.\n\x04opts\x18\x02 \x01(\x0b\x32 .content.invitations.FindOptions\"S\n\x0c\x46indResponse\x12\x34\n\x0binvitations\x18\x01 \x03(\x0b\x32\x1f.content.invitations.Invitation\x12\r\n\x05total\x18\x02 \x01(\x03\"&\n\rDeleteRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"\x1f\n\x1d\x44\x65leteSpaceInvitationResponse2\x8d\x03\n\x0bInvitations\x12S\n\x06\x43reate\x12\".content.invitations.CreateRequest\x1a#.content.invitations.CreateResponse\"\x00\x12J\n\x03Get\x12\x1f.content.invitations.GetRequest\x1a .content.invitations.GetResponse\"\x00\x12\x46\n\x06\x41\x63\x63\x65pt\x12\".content.invitations.AcceptRequest\x1a\x16.google.protobuf.Empty\"\x00\x12M\n\x04\x46ind\x12 .content.invitations.FindRequest\x1a!.content.invitations.FindResponse\"\x00\x12\x46\n\x06\x44\x65lete\x12\".content.invitations.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x39Z7git.perx.ru/perxis/perxis/proto/invitations;invitationsb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,])
-
-
-
-
-_INVITATION = _descriptor.Descriptor(
-  name='Invitation',
-  full_name='content.invitations.Invitation',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.invitations.Invitation.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='email', full_name='content.invitations.Invitation.email', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='content.invitations.Invitation.org_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.invitations.Invitation.space_id', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='owner_id', full_name='content.invitations.Invitation.owner_id', index=4,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role', full_name='content.invitations.Invitation.role', index=5,
-      number=6, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='created_at', full_name='content.invitations.Invitation.created_at', index=6,
-      number=7, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='valid_until', full_name='content.invitations.Invitation.valid_until', index=7,
-      number=8, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=156,
-  serialized_end=358,
-)
-
-
-_FILTER = _descriptor.Descriptor(
-  name='Filter',
-  full_name='content.invitations.Filter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.invitations.Filter.id', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='email', full_name='content.invitations.Filter.email', index=1,
-      number=2, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='content.invitations.Filter.org_id', index=2,
-      number=3, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.invitations.Filter.space_id', index=3,
-      number=4, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='owner_id', full_name='content.invitations.Filter.owner_id', index=4,
-      number=5, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role', full_name='content.invitations.Filter.role', index=5,
-      number=6, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=360,
-  serialized_end=461,
-)
-
-
-_FINDOPTIONS = _descriptor.Descriptor(
-  name='FindOptions',
-  full_name='content.invitations.FindOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='sort', full_name='content.invitations.FindOptions.sort', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='page_num', full_name='content.invitations.FindOptions.page_num', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='page_size', full_name='content.invitations.FindOptions.page_size', index=2,
-      number=3, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=463,
-  serialized_end=527,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.invitations.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitation', full_name='content.invitations.CreateRequest.invitation', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=529,
-  serialized_end=597,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.invitations.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitation', full_name='content.invitations.CreateResponse.invitation', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=599,
-  serialized_end=668,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.invitations.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitation_id', full_name='content.invitations.GetRequest.invitation_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=670,
-  serialized_end=705,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.invitations.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitation', full_name='content.invitations.GetResponse.invitation', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=707,
-  serialized_end=773,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='content.invitations.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitation_id', full_name='content.invitations.UpdateRequest.invitation_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='sent', full_name='content.invitations.UpdateRequest.sent', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='pending', full_name='content.invitations.UpdateRequest.pending', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='sent_at', full_name='content.invitations.UpdateRequest.sent_at', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='valid_until', full_name='content.invitations.UpdateRequest.valid_until', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=776,
-  serialized_end=995,
-)
-
-
-_UPDATEINVITATIONRESPONSE = _descriptor.Descriptor(
-  name='UpdateInvitationResponse',
-  full_name='content.invitations.UpdateInvitationResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=997,
-  serialized_end=1023,
-)
-
-
-_ACCEPTREQUEST = _descriptor.Descriptor(
-  name='AcceptRequest',
-  full_name='content.invitations.AcceptRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitation_id', full_name='content.invitations.AcceptRequest.invitation_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='content.invitations.AcceptRequest.user_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1025,
-  serialized_end=1080,
-)
-
-
-_ACCEPTINVITATIONRESPONSE = _descriptor.Descriptor(
-  name='AcceptInvitationResponse',
-  full_name='content.invitations.AcceptInvitationResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1082,
-  serialized_end=1108,
-)
-
-
-_FINDREQUEST = _descriptor.Descriptor(
-  name='FindRequest',
-  full_name='content.invitations.FindRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='content.invitations.FindRequest.filter', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='opts', full_name='content.invitations.FindRequest.opts', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1110,
-  serialized_end=1216,
-)
-
-
-_FINDRESPONSE = _descriptor.Descriptor(
-  name='FindResponse',
-  full_name='content.invitations.FindResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitations', full_name='content.invitations.FindResponse.invitations', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='content.invitations.FindResponse.total', index=1,
-      number=2, type=3, cpp_type=2, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1218,
-  serialized_end=1301,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.invitations.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='invitation_id', full_name='content.invitations.DeleteRequest.invitation_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1303,
-  serialized_end=1341,
-)
-
-
-_DELETESPACEINVITATIONRESPONSE = _descriptor.Descriptor(
-  name='DeleteSpaceInvitationResponse',
-  full_name='content.invitations.DeleteSpaceInvitationResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1343,
-  serialized_end=1374,
-)
-
-_INVITATION.fields_by_name['created_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_INVITATION.fields_by_name['valid_until'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_CREATEREQUEST.fields_by_name['invitation'].message_type = _INVITATION
-_CREATERESPONSE.fields_by_name['invitation'].message_type = _INVITATION
-_GETRESPONSE.fields_by_name['invitation'].message_type = _INVITATION
-_UPDATEREQUEST.fields_by_name['sent'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_UPDATEREQUEST.fields_by_name['pending'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_UPDATEREQUEST.fields_by_name['sent_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_UPDATEREQUEST.fields_by_name['valid_until'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_FINDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDREQUEST.fields_by_name['opts'].message_type = _FINDOPTIONS
-_FINDRESPONSE.fields_by_name['invitations'].message_type = _INVITATION
-DESCRIPTOR.message_types_by_name['Invitation'] = _INVITATION
-DESCRIPTOR.message_types_by_name['Filter'] = _FILTER
-DESCRIPTOR.message_types_by_name['FindOptions'] = _FINDOPTIONS
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['UpdateInvitationResponse'] = _UPDATEINVITATIONRESPONSE
-DESCRIPTOR.message_types_by_name['AcceptRequest'] = _ACCEPTREQUEST
-DESCRIPTOR.message_types_by_name['AcceptInvitationResponse'] = _ACCEPTINVITATIONRESPONSE
-DESCRIPTOR.message_types_by_name['FindRequest'] = _FINDREQUEST
-DESCRIPTOR.message_types_by_name['FindResponse'] = _FINDRESPONSE
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-DESCRIPTOR.message_types_by_name['DeleteSpaceInvitationResponse'] = _DELETESPACEINVITATIONRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Invitation = _reflection.GeneratedProtocolMessageType('Invitation', (_message.Message,), {
-  'DESCRIPTOR' : _INVITATION,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.Invitation)
-  })
-_sym_db.RegisterMessage(Invitation)
-
-Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
-  'DESCRIPTOR' : _FILTER,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.Filter)
-  })
-_sym_db.RegisterMessage(Filter)
-
-FindOptions = _reflection.GeneratedProtocolMessageType('FindOptions', (_message.Message,), {
-  'DESCRIPTOR' : _FINDOPTIONS,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.FindOptions)
-  })
-_sym_db.RegisterMessage(FindOptions)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-UpdateInvitationResponse = _reflection.GeneratedProtocolMessageType('UpdateInvitationResponse', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEINVITATIONRESPONSE,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.UpdateInvitationResponse)
-  })
-_sym_db.RegisterMessage(UpdateInvitationResponse)
-
-AcceptRequest = _reflection.GeneratedProtocolMessageType('AcceptRequest', (_message.Message,), {
-  'DESCRIPTOR' : _ACCEPTREQUEST,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.AcceptRequest)
-  })
-_sym_db.RegisterMessage(AcceptRequest)
-
-AcceptInvitationResponse = _reflection.GeneratedProtocolMessageType('AcceptInvitationResponse', (_message.Message,), {
-  'DESCRIPTOR' : _ACCEPTINVITATIONRESPONSE,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.AcceptInvitationResponse)
-  })
-_sym_db.RegisterMessage(AcceptInvitationResponse)
-
-FindRequest = _reflection.GeneratedProtocolMessageType('FindRequest', (_message.Message,), {
-  'DESCRIPTOR' : _FINDREQUEST,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.FindRequest)
-  })
-_sym_db.RegisterMessage(FindRequest)
-
-FindResponse = _reflection.GeneratedProtocolMessageType('FindResponse', (_message.Message,), {
-  'DESCRIPTOR' : _FINDRESPONSE,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.FindResponse)
-  })
-_sym_db.RegisterMessage(FindResponse)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-DeleteSpaceInvitationResponse = _reflection.GeneratedProtocolMessageType('DeleteSpaceInvitationResponse', (_message.Message,), {
-  'DESCRIPTOR' : _DELETESPACEINVITATIONRESPONSE,
-  '__module__' : 'perxis.invitations.invitations_pb2'
-  # @@protoc_insertion_point(class_scope:content.invitations.DeleteSpaceInvitationResponse)
-  })
-_sym_db.RegisterMessage(DeleteSpaceInvitationResponse)
-
-
-DESCRIPTOR._options = None
-
-_INVITATIONS = _descriptor.ServiceDescriptor(
-  name='Invitations',
-  full_name='content.invitations.Invitations',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1377,
-  serialized_end=1774,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.invitations.Invitations.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.invitations.Invitations.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Accept',
-    full_name='content.invitations.Invitations.Accept',
-    index=2,
-    containing_service=None,
-    input_type=_ACCEPTREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Find',
-    full_name='content.invitations.Invitations.Find',
-    index=3,
-    containing_service=None,
-    input_type=_FINDREQUEST,
-    output_type=_FINDRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.invitations.Invitations.Delete',
-    index=4,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_INVITATIONS)
-
-DESCRIPTOR.services_by_name['Invitations'] = _INVITATIONS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/invitations/invitations_pb2_grpc.py b/perxis/invitations/invitations_pb2_grpc.py
deleted file mode 100644
index 8a13a951c78d73be1d85c02e1bc5b3ea8d27b23f..0000000000000000000000000000000000000000
--- a/perxis/invitations/invitations_pb2_grpc.py
+++ /dev/null
@@ -1,206 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.invitations import invitations_pb2 as perxis_dot_invitations_dot_invitations__pb2
-
-
-class InvitationsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.invitations.Invitations/Create',
-                request_serializer=perxis_dot_invitations_dot_invitations__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_invitations_dot_invitations__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.invitations.Invitations/Get',
-                request_serializer=perxis_dot_invitations_dot_invitations__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_invitations_dot_invitations__pb2.GetResponse.FromString,
-                )
-        self.Accept = channel.unary_unary(
-                '/content.invitations.Invitations/Accept',
-                request_serializer=perxis_dot_invitations_dot_invitations__pb2.AcceptRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Find = channel.unary_unary(
-                '/content.invitations.Invitations/Find',
-                request_serializer=perxis_dot_invitations_dot_invitations__pb2.FindRequest.SerializeToString,
-                response_deserializer=perxis_dot_invitations_dot_invitations__pb2.FindResponse.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.invitations.Invitations/Delete',
-                request_serializer=perxis_dot_invitations_dot_invitations__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class InvitationsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Получить данные о приглашении
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Accept(self, request, context):
-        """Обновить данные о приглашении
-        rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-
-        Принять приглашение
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Find(self, request, context):
-        """Получить список приглашений для пространства
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Удалить приглашение
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_InvitationsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_invitations_dot_invitations__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_invitations_dot_invitations__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_invitations_dot_invitations__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_invitations_dot_invitations__pb2.GetResponse.SerializeToString,
-            ),
-            'Accept': grpc.unary_unary_rpc_method_handler(
-                    servicer.Accept,
-                    request_deserializer=perxis_dot_invitations_dot_invitations__pb2.AcceptRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Find': grpc.unary_unary_rpc_method_handler(
-                    servicer.Find,
-                    request_deserializer=perxis_dot_invitations_dot_invitations__pb2.FindRequest.FromString,
-                    response_serializer=perxis_dot_invitations_dot_invitations__pb2.FindResponse.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_invitations_dot_invitations__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.invitations.Invitations', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Invitations(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Create',
-            perxis_dot_invitations_dot_invitations__pb2.CreateRequest.SerializeToString,
-            perxis_dot_invitations_dot_invitations__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Get',
-            perxis_dot_invitations_dot_invitations__pb2.GetRequest.SerializeToString,
-            perxis_dot_invitations_dot_invitations__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Accept(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Accept',
-            perxis_dot_invitations_dot_invitations__pb2.AcceptRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Find(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Find',
-            perxis_dot_invitations_dot_invitations__pb2.FindRequest.SerializeToString,
-            perxis_dot_invitations_dot_invitations__pb2.FindResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Delete',
-            perxis_dot_invitations_dot_invitations__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/items/items_pb2.py b/perxis/items/items_pb2.py
deleted file mode 100644
index 6c44b774aa6f5ebec03d0fe4470bb0555e7408fc..0000000000000000000000000000000000000000
--- a/perxis/items/items_pb2.py
+++ /dev/null
@@ -1,2530 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/items/items.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
-from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/items/items.proto',
-  package='content.items',
-  syntax='proto3',
-  serialized_options=b'Z+git.perx.ru/perxis/perxis/proto/items;items',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x18perxis/items/items.proto\x12\rcontent.items\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\'\n\x05\x45rror\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\r\n\x05\x66ield\x18\x02 \x01(\t\"3\n\x0b\x44\x65\x63odeError\x12$\n\x06\x65rrors\x18\x02 \x03(\x0b\x32\x14.content.items.Error\"7\n\x0fValidationError\x12$\n\x06\x65rrors\x18\x02 \x03(\x0b\x32\x14.content.items.Error\"9\n\x11ModificationError\x12$\n\x06\x65rrors\x18\x02 \x03(\x0b\x32\x14.content.items.Error\"g\n\x0bPermissions\x12\x0c\n\x04\x65\x64it\x18\x01 \x01(\x08\x12\x0f\n\x07\x61rchive\x18\x02 \x01(\x08\x12\x0f\n\x07publish\x18\x03 \x01(\x08\x12\x13\n\x0bsoft_delete\x18\x04 \x01(\x08\x12\x13\n\x0bhard_delete\x18\x05 \x01(\x08\"\xb8\x06\n\x04Item\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\x12(\n\x05state\x18\x05 \x01(\x0e\x32\x19.content.items.Item.State\x12\x32\n\x0e\x63reated_rev_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12.\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\nupdated_by\x18\t \x01(\t\x12.\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x04\x64\x61ta\x18\x0b \x01(\x0b\x32\x17.google.protobuf.Struct\x12;\n\x0ctranslations\x18\x0c \x03(\x0b\x32%.content.items.Item.TranslationsEntry\x12\x13\n\x0brevision_id\x18\r \x01(\t\x12\x30\n\x0cpublished_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0cpublished_by\x18\x0f \x01(\t\x12/\n\x0b\x61rchived_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x61rchived_by\x18\x11 \x01(\t\x12\x0e\n\x06locale\x18\x12 \x01(\t\x12\x0f\n\x07\x64\x65leted\x18\x13 \x01(\x08\x12\x0e\n\x06hidden\x18\x14 \x01(\x08\x12\x10\n\x08template\x18\x15 \x01(\x08\x12/\n\x0bpermissions\x18\x16 \x01(\x0b\x32\x1a.content.items.Permissions\x1aL\n\x11TranslationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\"<\n\x05State\x12\t\n\x05\x44RAFT\x10\x00\x12\r\n\tPUBLISHED\x10\x01\x12\x0b\n\x07\x43HANGED\x10\x02\x12\x0c\n\x08\x41RCHIVED\x10\x03\"=\n\x06\x46ilter\x12\n\n\x02id\x18\x01 \x03(\t\x12\x1c\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x0e.common.Filter\x12\t\n\x01q\x18\x03 \x03(\t\"%\n\rCreateOptions\x12\x14\n\x0cupdate_attrs\x18\x01 \x01(\x08\"x\n\x0b\x46indOptions\x12$\n\x07options\x18\x02 \x01(\x0b\x32\x13.common.FindOptions\x12\x0f\n\x07\x64\x65leted\x18\x03 \x01(\x08\x12\x0f\n\x07regular\x18\x04 \x01(\x08\x12\x0e\n\x06hidden\x18\x05 \x01(\x08\x12\x11\n\ttemplates\x18\x06 \x01(\x08\"%\n\rUpdateOptions\x12\x14\n\x0cupdate_attrs\x18\x01 \x01(\x08\"(\n\x13GetPublishedOptions\x12\x11\n\tlocale_id\x18\x01 \x01(\t\"\x1e\n\rDeleteOptions\x12\r\n\x05\x65rase\x18\x01 \x01(\x08\"&\n\x0ePublishOptions\x12\x14\n\x0cupdate_attrs\x18\x01 \x01(\x08\"\x83\x01\n\x14\x46indPublishedOptions\x12$\n\x07options\x18\x02 \x01(\x0b\x32\x13.common.FindOptions\x12\x11\n\tlocale_id\x18\x03 \x01(\t\x12\x0f\n\x07regular\x18\x04 \x01(\x08\x12\x0e\n\x06hidden\x18\x05 \x01(\x08\x12\x11\n\ttemplates\x18\x06 \x01(\x08\";\n\x13\x46indArchivedOptions\x12$\n\x07options\x18\x02 \x01(\x0b\x32\x13.common.FindOptions\"<\n\x14ListRevisionsOptions\x12$\n\x07options\x18\x02 \x01(\x0b\x32\x13.common.FindOptions\"a\n\rCreateRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\x12-\n\x07options\x18\x02 \x01(\x0b\x32\x1c.content.items.CreateOptions\"6\n\x0e\x43reateResponse\x12$\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"6\n\x11IntrospectRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\x8b\x01\n\x12IntrospectResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x42\n\x11validation_errors\x18\x03 \x03(\x0b\x32\'.common.Error.BadRequest.FieldViolation\"V\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0f\n\x07item_id\x18\x04 \x01(\t\"0\n\x0bGetResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\x9a\x01\n\x0b\x46indRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12%\n\x06\x66ilter\x18\x04 \x01(\x0b\x32\x15.content.items.Filter\x12+\n\x07options\x18\x05 \x01(\x0b\x32\x1a.content.items.FindOptions\"A\n\x0c\x46indResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.content.items.Item\x12\r\n\x05total\x18\x02 \x01(\x05\"a\n\rUpdateRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\x12-\n\x07options\x18\x02 \x01(\x0b\x32\x1c.content.items.UpdateOptions\"\x88\x01\n\rDeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0f\n\x07item_id\x18\x04 \x01(\t\x12-\n\x07options\x18\x05 \x01(\x0b\x32\x1c.content.items.DeleteOptions\"[\n\x0fUndeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0f\n\x07item_id\x18\x04 \x01(\t\"c\n\x0ePublishRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\x12.\n\x07options\x18\x02 \x01(\x0b\x32\x1d.content.items.PublishOptions\"5\n\x10UnpublishRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\x94\x01\n\x13GetPublishedRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0f\n\x07item_id\x18\x05 \x01(\t\x12\x33\n\x07options\x18\n \x01(\x0b\x32\".content.items.GetPublishedOptions\"9\n\x14GetPublishedResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\xac\x01\n\x14\x46indPublishedRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12%\n\x06\x66ilter\x18\x04 \x01(\x0b\x32\x15.content.items.Filter\x12\x34\n\x07options\x18\n \x01(\x0b\x32#.content.items.FindPublishedOptions\"J\n\x15\x46indPublishedResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.content.items.Item\x12\r\n\x05total\x18\x02 \x01(\x05\"s\n\x12GetRevisionRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0f\n\x07item_id\x18\x04 \x01(\t\x12\x13\n\x0brevision_id\x18\x05 \x01(\t\"8\n\x13GetRevisionResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\x96\x01\n\x14ListRevisionsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x0f\n\x07item_id\x18\x04 \x01(\t\x12\x34\n\x07options\x18\n \x01(\x0b\x32#.content.items.ListRevisionsOptions\";\n\x15ListRevisionsResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.content.items.Item\"3\n\x0e\x41rchiveRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"5\n\x10UnarchiveRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\xaa\x01\n\x13\x46indArchivedRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12%\n\x06\x66ilter\x18\x04 \x01(\x0b\x32\x15.content.items.Filter\x12\x33\n\x07options\x18\x06 \x01(\x0b\x32\".content.items.FindArchivedOptions\"I\n\x14\x46indArchivedResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.content.items.Item\x12\r\n\x05total\x18\x02 \x01(\x05\x32\xd4\t\n\x05Items\x12G\n\x06\x43reate\x12\x1c.content.items.CreateRequest\x1a\x1d.content.items.CreateResponse\"\x00\x12S\n\nIntrospect\x12 .content.items.IntrospectRequest\x1a!.content.items.IntrospectResponse\"\x00\x12>\n\x03Get\x12\x19.content.items.GetRequest\x1a\x1a.content.items.GetResponse\"\x00\x12\x41\n\x04\x46ind\x12\x1a.content.items.FindRequest\x1a\x1b.content.items.FindResponse\"\x00\x12@\n\x06Update\x12\x1c.content.items.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12@\n\x06\x44\x65lete\x12\x1c.content.items.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x44\n\x08Undelete\x12\x1e.content.items.UndeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x42\n\x07Publish\x12\x1d.content.items.PublishRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\tUnpublish\x12\x1f.content.items.UnpublishRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Y\n\x0cGetPublished\x12\".content.items.GetPublishedRequest\x1a#.content.items.GetPublishedResponse\"\x00\x12\\\n\rFindPublished\x12#.content.items.FindPublishedRequest\x1a$.content.items.FindPublishedResponse\"\x00\x12V\n\x0bGetRevision\x12!.content.items.GetRevisionRequest\x1a\".content.items.GetRevisionResponse\"\x00\x12\\\n\rListRevisions\x12#.content.items.ListRevisionsRequest\x1a$.content.items.ListRevisionsResponse\"\x00\x12\x42\n\x07\x41rchive\x12\x1d.content.items.ArchiveRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Y\n\x0c\x46indArchived\x12\".content.items.FindArchivedRequest\x1a#.content.items.FindArchivedResponse\"\x00\x12\x46\n\tUnarchive\x12\x1f.content.items.UnarchiveRequest\x1a\x16.google.protobuf.Empty\"\x00\x42-Z+git.perx.ru/perxis/perxis/proto/items;itemsb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,])
-
-
-
-_ITEM_STATE = _descriptor.EnumDescriptor(
-  name='State',
-  full_name='content.items.Item.State',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='DRAFT', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='PUBLISHED', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='CHANGED', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ARCHIVED', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=1243,
-  serialized_end=1303,
-)
-_sym_db.RegisterEnumDescriptor(_ITEM_STATE)
-
-
-_ERROR = _descriptor.Descriptor(
-  name='Error',
-  full_name='content.items.Error',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='message', full_name='content.items.Error.message', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='field', full_name='content.items.Error.field', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=163,
-  serialized_end=202,
-)
-
-
-_DECODEERROR = _descriptor.Descriptor(
-  name='DecodeError',
-  full_name='content.items.DecodeError',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='errors', full_name='content.items.DecodeError.errors', index=0,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=204,
-  serialized_end=255,
-)
-
-
-_VALIDATIONERROR = _descriptor.Descriptor(
-  name='ValidationError',
-  full_name='content.items.ValidationError',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='errors', full_name='content.items.ValidationError.errors', index=0,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=257,
-  serialized_end=312,
-)
-
-
-_MODIFICATIONERROR = _descriptor.Descriptor(
-  name='ModificationError',
-  full_name='content.items.ModificationError',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='errors', full_name='content.items.ModificationError.errors', index=0,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=314,
-  serialized_end=371,
-)
-
-
-_PERMISSIONS = _descriptor.Descriptor(
-  name='Permissions',
-  full_name='content.items.Permissions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='edit', full_name='content.items.Permissions.edit', index=0,
-      number=1, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='archive', full_name='content.items.Permissions.archive', index=1,
-      number=2, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='publish', full_name='content.items.Permissions.publish', index=2,
-      number=3, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='soft_delete', full_name='content.items.Permissions.soft_delete', index=3,
-      number=4, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='hard_delete', full_name='content.items.Permissions.hard_delete', index=4,
-      number=5, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=373,
-  serialized_end=476,
-)
-
-
-_ITEM_TRANSLATIONSENTRY = _descriptor.Descriptor(
-  name='TranslationsEntry',
-  full_name='content.items.Item.TranslationsEntry',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='key', full_name='content.items.Item.TranslationsEntry.key', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='value', full_name='content.items.Item.TranslationsEntry.value', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=b'8\001',
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1165,
-  serialized_end=1241,
-)
-
-_ITEM = _descriptor.Descriptor(
-  name='Item',
-  full_name='content.items.Item',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.items.Item.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.Item.space_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.Item.env_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.Item.collection_id', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='state', full_name='content.items.Item.state', index=4,
-      number=5, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='created_rev_at', full_name='content.items.Item.created_rev_at', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='created_by', full_name='content.items.Item.created_by', index=6,
-      number=7, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='created_at', full_name='content.items.Item.created_at', index=7,
-      number=8, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='updated_by', full_name='content.items.Item.updated_by', index=8,
-      number=9, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='updated_at', full_name='content.items.Item.updated_at', index=9,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='content.items.Item.data', index=10,
-      number=11, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='translations', full_name='content.items.Item.translations', index=11,
-      number=12, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='revision_id', full_name='content.items.Item.revision_id', index=12,
-      number=13, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='published_at', full_name='content.items.Item.published_at', index=13,
-      number=14, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='published_by', full_name='content.items.Item.published_by', index=14,
-      number=15, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='archived_at', full_name='content.items.Item.archived_at', index=15,
-      number=16, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='archived_by', full_name='content.items.Item.archived_by', index=16,
-      number=17, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='locale', full_name='content.items.Item.locale', index=17,
-      number=18, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='deleted', full_name='content.items.Item.deleted', index=18,
-      number=19, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='hidden', full_name='content.items.Item.hidden', index=19,
-      number=20, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='template', full_name='content.items.Item.template', index=20,
-      number=21, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='permissions', full_name='content.items.Item.permissions', index=21,
-      number=22, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[_ITEM_TRANSLATIONSENTRY, ],
-  enum_types=[
-    _ITEM_STATE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=479,
-  serialized_end=1303,
-)
-
-
-_FILTER = _descriptor.Descriptor(
-  name='Filter',
-  full_name='content.items.Filter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.items.Filter.id', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='content.items.Filter.data', index=1,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='q', full_name='content.items.Filter.q', index=2,
-      number=3, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1305,
-  serialized_end=1366,
-)
-
-
-_CREATEOPTIONS = _descriptor.Descriptor(
-  name='CreateOptions',
-  full_name='content.items.CreateOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='update_attrs', full_name='content.items.CreateOptions.update_attrs', index=0,
-      number=1, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1368,
-  serialized_end=1405,
-)
-
-
-_FINDOPTIONS = _descriptor.Descriptor(
-  name='FindOptions',
-  full_name='content.items.FindOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.FindOptions.options', index=0,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='deleted', full_name='content.items.FindOptions.deleted', index=1,
-      number=3, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='regular', full_name='content.items.FindOptions.regular', index=2,
-      number=4, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='hidden', full_name='content.items.FindOptions.hidden', index=3,
-      number=5, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='templates', full_name='content.items.FindOptions.templates', index=4,
-      number=6, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1407,
-  serialized_end=1527,
-)
-
-
-_UPDATEOPTIONS = _descriptor.Descriptor(
-  name='UpdateOptions',
-  full_name='content.items.UpdateOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='update_attrs', full_name='content.items.UpdateOptions.update_attrs', index=0,
-      number=1, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1529,
-  serialized_end=1566,
-)
-
-
-_GETPUBLISHEDOPTIONS = _descriptor.Descriptor(
-  name='GetPublishedOptions',
-  full_name='content.items.GetPublishedOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='locale_id', full_name='content.items.GetPublishedOptions.locale_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1568,
-  serialized_end=1608,
-)
-
-
-_DELETEOPTIONS = _descriptor.Descriptor(
-  name='DeleteOptions',
-  full_name='content.items.DeleteOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='erase', full_name='content.items.DeleteOptions.erase', index=0,
-      number=1, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1610,
-  serialized_end=1640,
-)
-
-
-_PUBLISHOPTIONS = _descriptor.Descriptor(
-  name='PublishOptions',
-  full_name='content.items.PublishOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='update_attrs', full_name='content.items.PublishOptions.update_attrs', index=0,
-      number=1, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1642,
-  serialized_end=1680,
-)
-
-
-_FINDPUBLISHEDOPTIONS = _descriptor.Descriptor(
-  name='FindPublishedOptions',
-  full_name='content.items.FindPublishedOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.FindPublishedOptions.options', index=0,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='locale_id', full_name='content.items.FindPublishedOptions.locale_id', index=1,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='regular', full_name='content.items.FindPublishedOptions.regular', index=2,
-      number=4, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='hidden', full_name='content.items.FindPublishedOptions.hidden', index=3,
-      number=5, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='templates', full_name='content.items.FindPublishedOptions.templates', index=4,
-      number=6, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1683,
-  serialized_end=1814,
-)
-
-
-_FINDARCHIVEDOPTIONS = _descriptor.Descriptor(
-  name='FindArchivedOptions',
-  full_name='content.items.FindArchivedOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.FindArchivedOptions.options', index=0,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1816,
-  serialized_end=1875,
-)
-
-
-_LISTREVISIONSOPTIONS = _descriptor.Descriptor(
-  name='ListRevisionsOptions',
-  full_name='content.items.ListRevisionsOptions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.ListRevisionsOptions.options', index=0,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1877,
-  serialized_end=1937,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.items.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.CreateRequest.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.CreateRequest.options', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1939,
-  serialized_end=2036,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.items.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='created', full_name='content.items.CreateResponse.created', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2038,
-  serialized_end=2092,
-)
-
-
-_INTROSPECTREQUEST = _descriptor.Descriptor(
-  name='IntrospectRequest',
-  full_name='content.items.IntrospectRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.IntrospectRequest.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2094,
-  serialized_end=2148,
-)
-
-
-_INTROSPECTRESPONSE = _descriptor.Descriptor(
-  name='IntrospectResponse',
-  full_name='content.items.IntrospectResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.IntrospectResponse.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='schema', full_name='content.items.IntrospectResponse.schema', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='validation_errors', full_name='content.items.IntrospectResponse.validation_errors', index=2,
-      number=3, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2151,
-  serialized_end=2290,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.items.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.GetRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.GetRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='content.items.GetRequest.item_id', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2292,
-  serialized_end=2378,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.items.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.GetResponse.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2380,
-  serialized_end=2428,
-)
-
-
-_FINDREQUEST = _descriptor.Descriptor(
-  name='FindRequest',
-  full_name='content.items.FindRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.FindRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.FindRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.FindRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='content.items.FindRequest.filter', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.FindRequest.options', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2431,
-  serialized_end=2585,
-)
-
-
-_FINDRESPONSE = _descriptor.Descriptor(
-  name='FindResponse',
-  full_name='content.items.FindResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='content.items.FindResponse.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='content.items.FindResponse.total', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2587,
-  serialized_end=2652,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='content.items.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.UpdateRequest.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.UpdateRequest.options', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2654,
-  serialized_end=2751,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.items.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.DeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.DeleteRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.DeleteRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='content.items.DeleteRequest.item_id', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.DeleteRequest.options', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2754,
-  serialized_end=2890,
-)
-
-
-_UNDELETEREQUEST = _descriptor.Descriptor(
-  name='UndeleteRequest',
-  full_name='content.items.UndeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.UndeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.UndeleteRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.UndeleteRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='content.items.UndeleteRequest.item_id', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2892,
-  serialized_end=2983,
-)
-
-
-_PUBLISHREQUEST = _descriptor.Descriptor(
-  name='PublishRequest',
-  full_name='content.items.PublishRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.PublishRequest.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.PublishRequest.options', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2985,
-  serialized_end=3084,
-)
-
-
-_UNPUBLISHREQUEST = _descriptor.Descriptor(
-  name='UnpublishRequest',
-  full_name='content.items.UnpublishRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.UnpublishRequest.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3086,
-  serialized_end=3139,
-)
-
-
-_GETPUBLISHEDREQUEST = _descriptor.Descriptor(
-  name='GetPublishedRequest',
-  full_name='content.items.GetPublishedRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.GetPublishedRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.GetPublishedRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.GetPublishedRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='content.items.GetPublishedRequest.item_id', index=3,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.GetPublishedRequest.options', index=4,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3142,
-  serialized_end=3290,
-)
-
-
-_GETPUBLISHEDRESPONSE = _descriptor.Descriptor(
-  name='GetPublishedResponse',
-  full_name='content.items.GetPublishedResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.GetPublishedResponse.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3292,
-  serialized_end=3349,
-)
-
-
-_FINDPUBLISHEDREQUEST = _descriptor.Descriptor(
-  name='FindPublishedRequest',
-  full_name='content.items.FindPublishedRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.FindPublishedRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.FindPublishedRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.FindPublishedRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='content.items.FindPublishedRequest.filter', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.FindPublishedRequest.options', index=4,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3352,
-  serialized_end=3524,
-)
-
-
-_FINDPUBLISHEDRESPONSE = _descriptor.Descriptor(
-  name='FindPublishedResponse',
-  full_name='content.items.FindPublishedResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='content.items.FindPublishedResponse.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='content.items.FindPublishedResponse.total', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3526,
-  serialized_end=3600,
-)
-
-
-_GETREVISIONREQUEST = _descriptor.Descriptor(
-  name='GetRevisionRequest',
-  full_name='content.items.GetRevisionRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.GetRevisionRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.GetRevisionRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.GetRevisionRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='content.items.GetRevisionRequest.item_id', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='revision_id', full_name='content.items.GetRevisionRequest.revision_id', index=4,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3602,
-  serialized_end=3717,
-)
-
-
-_GETREVISIONRESPONSE = _descriptor.Descriptor(
-  name='GetRevisionResponse',
-  full_name='content.items.GetRevisionResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.GetRevisionResponse.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3719,
-  serialized_end=3775,
-)
-
-
-_LISTREVISIONSREQUEST = _descriptor.Descriptor(
-  name='ListRevisionsRequest',
-  full_name='content.items.ListRevisionsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.ListRevisionsRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.ListRevisionsRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.ListRevisionsRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='item_id', full_name='content.items.ListRevisionsRequest.item_id', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.ListRevisionsRequest.options', index=4,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3778,
-  serialized_end=3928,
-)
-
-
-_LISTREVISIONSRESPONSE = _descriptor.Descriptor(
-  name='ListRevisionsResponse',
-  full_name='content.items.ListRevisionsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='content.items.ListRevisionsResponse.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3930,
-  serialized_end=3989,
-)
-
-
-_ARCHIVEREQUEST = _descriptor.Descriptor(
-  name='ArchiveRequest',
-  full_name='content.items.ArchiveRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.ArchiveRequest.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3991,
-  serialized_end=4042,
-)
-
-
-_UNARCHIVEREQUEST = _descriptor.Descriptor(
-  name='UnarchiveRequest',
-  full_name='content.items.UnarchiveRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='item', full_name='content.items.UnarchiveRequest.item', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4044,
-  serialized_end=4097,
-)
-
-
-_FINDARCHIVEDREQUEST = _descriptor.Descriptor(
-  name='FindArchivedRequest',
-  full_name='content.items.FindArchivedRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.items.FindArchivedRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.items.FindArchivedRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.items.FindArchivedRequest.collection_id', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='content.items.FindArchivedRequest.filter', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='content.items.FindArchivedRequest.options', index=4,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4100,
-  serialized_end=4270,
-)
-
-
-_FINDARCHIVEDRESPONSE = _descriptor.Descriptor(
-  name='FindArchivedResponse',
-  full_name='content.items.FindArchivedResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='content.items.FindArchivedResponse.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='content.items.FindArchivedResponse.total', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4272,
-  serialized_end=4345,
-)
-
-_DECODEERROR.fields_by_name['errors'].message_type = _ERROR
-_VALIDATIONERROR.fields_by_name['errors'].message_type = _ERROR
-_MODIFICATIONERROR.fields_by_name['errors'].message_type = _ERROR
-_ITEM_TRANSLATIONSENTRY.fields_by_name['value'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
-_ITEM_TRANSLATIONSENTRY.containing_type = _ITEM
-_ITEM.fields_by_name['state'].enum_type = _ITEM_STATE
-_ITEM.fields_by_name['created_rev_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_ITEM.fields_by_name['created_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_ITEM.fields_by_name['updated_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_ITEM.fields_by_name['data'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT
-_ITEM.fields_by_name['translations'].message_type = _ITEM_TRANSLATIONSENTRY
-_ITEM.fields_by_name['published_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_ITEM.fields_by_name['archived_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
-_ITEM.fields_by_name['permissions'].message_type = _PERMISSIONS
-_ITEM_STATE.containing_type = _ITEM
-_FILTER.fields_by_name['data'].message_type = perxis_dot_common_dot_common__pb2._FILTER
-_FINDOPTIONS.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
-_FINDPUBLISHEDOPTIONS.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
-_FINDARCHIVEDOPTIONS.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
-_LISTREVISIONSOPTIONS.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
-_CREATEREQUEST.fields_by_name['item'].message_type = _ITEM
-_CREATEREQUEST.fields_by_name['options'].message_type = _CREATEOPTIONS
-_CREATERESPONSE.fields_by_name['created'].message_type = _ITEM
-_INTROSPECTREQUEST.fields_by_name['item'].message_type = _ITEM
-_INTROSPECTRESPONSE.fields_by_name['item'].message_type = _ITEM
-_INTROSPECTRESPONSE.fields_by_name['validation_errors'].message_type = perxis_dot_common_dot_common__pb2._ERROR_BADREQUEST_FIELDVIOLATION
-_GETRESPONSE.fields_by_name['item'].message_type = _ITEM
-_FINDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDREQUEST.fields_by_name['options'].message_type = _FINDOPTIONS
-_FINDRESPONSE.fields_by_name['items'].message_type = _ITEM
-_UPDATEREQUEST.fields_by_name['item'].message_type = _ITEM
-_UPDATEREQUEST.fields_by_name['options'].message_type = _UPDATEOPTIONS
-_DELETEREQUEST.fields_by_name['options'].message_type = _DELETEOPTIONS
-_PUBLISHREQUEST.fields_by_name['item'].message_type = _ITEM
-_PUBLISHREQUEST.fields_by_name['options'].message_type = _PUBLISHOPTIONS
-_UNPUBLISHREQUEST.fields_by_name['item'].message_type = _ITEM
-_GETPUBLISHEDREQUEST.fields_by_name['options'].message_type = _GETPUBLISHEDOPTIONS
-_GETPUBLISHEDRESPONSE.fields_by_name['item'].message_type = _ITEM
-_FINDPUBLISHEDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDPUBLISHEDREQUEST.fields_by_name['options'].message_type = _FINDPUBLISHEDOPTIONS
-_FINDPUBLISHEDRESPONSE.fields_by_name['items'].message_type = _ITEM
-_GETREVISIONRESPONSE.fields_by_name['item'].message_type = _ITEM
-_LISTREVISIONSREQUEST.fields_by_name['options'].message_type = _LISTREVISIONSOPTIONS
-_LISTREVISIONSRESPONSE.fields_by_name['items'].message_type = _ITEM
-_ARCHIVEREQUEST.fields_by_name['item'].message_type = _ITEM
-_UNARCHIVEREQUEST.fields_by_name['item'].message_type = _ITEM
-_FINDARCHIVEDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDARCHIVEDREQUEST.fields_by_name['options'].message_type = _FINDARCHIVEDOPTIONS
-_FINDARCHIVEDRESPONSE.fields_by_name['items'].message_type = _ITEM
-DESCRIPTOR.message_types_by_name['Error'] = _ERROR
-DESCRIPTOR.message_types_by_name['DecodeError'] = _DECODEERROR
-DESCRIPTOR.message_types_by_name['ValidationError'] = _VALIDATIONERROR
-DESCRIPTOR.message_types_by_name['ModificationError'] = _MODIFICATIONERROR
-DESCRIPTOR.message_types_by_name['Permissions'] = _PERMISSIONS
-DESCRIPTOR.message_types_by_name['Item'] = _ITEM
-DESCRIPTOR.message_types_by_name['Filter'] = _FILTER
-DESCRIPTOR.message_types_by_name['CreateOptions'] = _CREATEOPTIONS
-DESCRIPTOR.message_types_by_name['FindOptions'] = _FINDOPTIONS
-DESCRIPTOR.message_types_by_name['UpdateOptions'] = _UPDATEOPTIONS
-DESCRIPTOR.message_types_by_name['GetPublishedOptions'] = _GETPUBLISHEDOPTIONS
-DESCRIPTOR.message_types_by_name['DeleteOptions'] = _DELETEOPTIONS
-DESCRIPTOR.message_types_by_name['PublishOptions'] = _PUBLISHOPTIONS
-DESCRIPTOR.message_types_by_name['FindPublishedOptions'] = _FINDPUBLISHEDOPTIONS
-DESCRIPTOR.message_types_by_name['FindArchivedOptions'] = _FINDARCHIVEDOPTIONS
-DESCRIPTOR.message_types_by_name['ListRevisionsOptions'] = _LISTREVISIONSOPTIONS
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['IntrospectRequest'] = _INTROSPECTREQUEST
-DESCRIPTOR.message_types_by_name['IntrospectResponse'] = _INTROSPECTRESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['FindRequest'] = _FINDREQUEST
-DESCRIPTOR.message_types_by_name['FindResponse'] = _FINDRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-DESCRIPTOR.message_types_by_name['UndeleteRequest'] = _UNDELETEREQUEST
-DESCRIPTOR.message_types_by_name['PublishRequest'] = _PUBLISHREQUEST
-DESCRIPTOR.message_types_by_name['UnpublishRequest'] = _UNPUBLISHREQUEST
-DESCRIPTOR.message_types_by_name['GetPublishedRequest'] = _GETPUBLISHEDREQUEST
-DESCRIPTOR.message_types_by_name['GetPublishedResponse'] = _GETPUBLISHEDRESPONSE
-DESCRIPTOR.message_types_by_name['FindPublishedRequest'] = _FINDPUBLISHEDREQUEST
-DESCRIPTOR.message_types_by_name['FindPublishedResponse'] = _FINDPUBLISHEDRESPONSE
-DESCRIPTOR.message_types_by_name['GetRevisionRequest'] = _GETREVISIONREQUEST
-DESCRIPTOR.message_types_by_name['GetRevisionResponse'] = _GETREVISIONRESPONSE
-DESCRIPTOR.message_types_by_name['ListRevisionsRequest'] = _LISTREVISIONSREQUEST
-DESCRIPTOR.message_types_by_name['ListRevisionsResponse'] = _LISTREVISIONSRESPONSE
-DESCRIPTOR.message_types_by_name['ArchiveRequest'] = _ARCHIVEREQUEST
-DESCRIPTOR.message_types_by_name['UnarchiveRequest'] = _UNARCHIVEREQUEST
-DESCRIPTOR.message_types_by_name['FindArchivedRequest'] = _FINDARCHIVEDREQUEST
-DESCRIPTOR.message_types_by_name['FindArchivedResponse'] = _FINDARCHIVEDRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Error = _reflection.GeneratedProtocolMessageType('Error', (_message.Message,), {
-  'DESCRIPTOR' : _ERROR,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.Error)
-  })
-_sym_db.RegisterMessage(Error)
-
-DecodeError = _reflection.GeneratedProtocolMessageType('DecodeError', (_message.Message,), {
-  'DESCRIPTOR' : _DECODEERROR,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.DecodeError)
-  })
-_sym_db.RegisterMessage(DecodeError)
-
-ValidationError = _reflection.GeneratedProtocolMessageType('ValidationError', (_message.Message,), {
-  'DESCRIPTOR' : _VALIDATIONERROR,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.ValidationError)
-  })
-_sym_db.RegisterMessage(ValidationError)
-
-ModificationError = _reflection.GeneratedProtocolMessageType('ModificationError', (_message.Message,), {
-  'DESCRIPTOR' : _MODIFICATIONERROR,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.ModificationError)
-  })
-_sym_db.RegisterMessage(ModificationError)
-
-Permissions = _reflection.GeneratedProtocolMessageType('Permissions', (_message.Message,), {
-  'DESCRIPTOR' : _PERMISSIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.Permissions)
-  })
-_sym_db.RegisterMessage(Permissions)
-
-Item = _reflection.GeneratedProtocolMessageType('Item', (_message.Message,), {
-
-  'TranslationsEntry' : _reflection.GeneratedProtocolMessageType('TranslationsEntry', (_message.Message,), {
-    'DESCRIPTOR' : _ITEM_TRANSLATIONSENTRY,
-    '__module__' : 'perxis.items.items_pb2'
-    # @@protoc_insertion_point(class_scope:content.items.Item.TranslationsEntry)
-    })
-  ,
-  'DESCRIPTOR' : _ITEM,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.Item)
-  })
-_sym_db.RegisterMessage(Item)
-_sym_db.RegisterMessage(Item.TranslationsEntry)
-
-Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
-  'DESCRIPTOR' : _FILTER,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.Filter)
-  })
-_sym_db.RegisterMessage(Filter)
-
-CreateOptions = _reflection.GeneratedProtocolMessageType('CreateOptions', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.CreateOptions)
-  })
-_sym_db.RegisterMessage(CreateOptions)
-
-FindOptions = _reflection.GeneratedProtocolMessageType('FindOptions', (_message.Message,), {
-  'DESCRIPTOR' : _FINDOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindOptions)
-  })
-_sym_db.RegisterMessage(FindOptions)
-
-UpdateOptions = _reflection.GeneratedProtocolMessageType('UpdateOptions', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.UpdateOptions)
-  })
-_sym_db.RegisterMessage(UpdateOptions)
-
-GetPublishedOptions = _reflection.GeneratedProtocolMessageType('GetPublishedOptions', (_message.Message,), {
-  'DESCRIPTOR' : _GETPUBLISHEDOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.GetPublishedOptions)
-  })
-_sym_db.RegisterMessage(GetPublishedOptions)
-
-DeleteOptions = _reflection.GeneratedProtocolMessageType('DeleteOptions', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.DeleteOptions)
-  })
-_sym_db.RegisterMessage(DeleteOptions)
-
-PublishOptions = _reflection.GeneratedProtocolMessageType('PublishOptions', (_message.Message,), {
-  'DESCRIPTOR' : _PUBLISHOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.PublishOptions)
-  })
-_sym_db.RegisterMessage(PublishOptions)
-
-FindPublishedOptions = _reflection.GeneratedProtocolMessageType('FindPublishedOptions', (_message.Message,), {
-  'DESCRIPTOR' : _FINDPUBLISHEDOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindPublishedOptions)
-  })
-_sym_db.RegisterMessage(FindPublishedOptions)
-
-FindArchivedOptions = _reflection.GeneratedProtocolMessageType('FindArchivedOptions', (_message.Message,), {
-  'DESCRIPTOR' : _FINDARCHIVEDOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindArchivedOptions)
-  })
-_sym_db.RegisterMessage(FindArchivedOptions)
-
-ListRevisionsOptions = _reflection.GeneratedProtocolMessageType('ListRevisionsOptions', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREVISIONSOPTIONS,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.ListRevisionsOptions)
-  })
-_sym_db.RegisterMessage(ListRevisionsOptions)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-IntrospectRequest = _reflection.GeneratedProtocolMessageType('IntrospectRequest', (_message.Message,), {
-  'DESCRIPTOR' : _INTROSPECTREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.IntrospectRequest)
-  })
-_sym_db.RegisterMessage(IntrospectRequest)
-
-IntrospectResponse = _reflection.GeneratedProtocolMessageType('IntrospectResponse', (_message.Message,), {
-  'DESCRIPTOR' : _INTROSPECTRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.IntrospectResponse)
-  })
-_sym_db.RegisterMessage(IntrospectResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-FindRequest = _reflection.GeneratedProtocolMessageType('FindRequest', (_message.Message,), {
-  'DESCRIPTOR' : _FINDREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindRequest)
-  })
-_sym_db.RegisterMessage(FindRequest)
-
-FindResponse = _reflection.GeneratedProtocolMessageType('FindResponse', (_message.Message,), {
-  'DESCRIPTOR' : _FINDRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindResponse)
-  })
-_sym_db.RegisterMessage(FindResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-UndeleteRequest = _reflection.GeneratedProtocolMessageType('UndeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UNDELETEREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.UndeleteRequest)
-  })
-_sym_db.RegisterMessage(UndeleteRequest)
-
-PublishRequest = _reflection.GeneratedProtocolMessageType('PublishRequest', (_message.Message,), {
-  'DESCRIPTOR' : _PUBLISHREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.PublishRequest)
-  })
-_sym_db.RegisterMessage(PublishRequest)
-
-UnpublishRequest = _reflection.GeneratedProtocolMessageType('UnpublishRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UNPUBLISHREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.UnpublishRequest)
-  })
-_sym_db.RegisterMessage(UnpublishRequest)
-
-GetPublishedRequest = _reflection.GeneratedProtocolMessageType('GetPublishedRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETPUBLISHEDREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.GetPublishedRequest)
-  })
-_sym_db.RegisterMessage(GetPublishedRequest)
-
-GetPublishedResponse = _reflection.GeneratedProtocolMessageType('GetPublishedResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETPUBLISHEDRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.GetPublishedResponse)
-  })
-_sym_db.RegisterMessage(GetPublishedResponse)
-
-FindPublishedRequest = _reflection.GeneratedProtocolMessageType('FindPublishedRequest', (_message.Message,), {
-  'DESCRIPTOR' : _FINDPUBLISHEDREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindPublishedRequest)
-  })
-_sym_db.RegisterMessage(FindPublishedRequest)
-
-FindPublishedResponse = _reflection.GeneratedProtocolMessageType('FindPublishedResponse', (_message.Message,), {
-  'DESCRIPTOR' : _FINDPUBLISHEDRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindPublishedResponse)
-  })
-_sym_db.RegisterMessage(FindPublishedResponse)
-
-GetRevisionRequest = _reflection.GeneratedProtocolMessageType('GetRevisionRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREVISIONREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.GetRevisionRequest)
-  })
-_sym_db.RegisterMessage(GetRevisionRequest)
-
-GetRevisionResponse = _reflection.GeneratedProtocolMessageType('GetRevisionResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETREVISIONRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.GetRevisionResponse)
-  })
-_sym_db.RegisterMessage(GetRevisionResponse)
-
-ListRevisionsRequest = _reflection.GeneratedProtocolMessageType('ListRevisionsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREVISIONSREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.ListRevisionsRequest)
-  })
-_sym_db.RegisterMessage(ListRevisionsRequest)
-
-ListRevisionsResponse = _reflection.GeneratedProtocolMessageType('ListRevisionsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREVISIONSRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.ListRevisionsResponse)
-  })
-_sym_db.RegisterMessage(ListRevisionsResponse)
-
-ArchiveRequest = _reflection.GeneratedProtocolMessageType('ArchiveRequest', (_message.Message,), {
-  'DESCRIPTOR' : _ARCHIVEREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.ArchiveRequest)
-  })
-_sym_db.RegisterMessage(ArchiveRequest)
-
-UnarchiveRequest = _reflection.GeneratedProtocolMessageType('UnarchiveRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UNARCHIVEREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.UnarchiveRequest)
-  })
-_sym_db.RegisterMessage(UnarchiveRequest)
-
-FindArchivedRequest = _reflection.GeneratedProtocolMessageType('FindArchivedRequest', (_message.Message,), {
-  'DESCRIPTOR' : _FINDARCHIVEDREQUEST,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindArchivedRequest)
-  })
-_sym_db.RegisterMessage(FindArchivedRequest)
-
-FindArchivedResponse = _reflection.GeneratedProtocolMessageType('FindArchivedResponse', (_message.Message,), {
-  'DESCRIPTOR' : _FINDARCHIVEDRESPONSE,
-  '__module__' : 'perxis.items.items_pb2'
-  # @@protoc_insertion_point(class_scope:content.items.FindArchivedResponse)
-  })
-_sym_db.RegisterMessage(FindArchivedResponse)
-
-
-DESCRIPTOR._options = None
-_ITEM_TRANSLATIONSENTRY._options = None
-
-_ITEMS = _descriptor.ServiceDescriptor(
-  name='Items',
-  full_name='content.items.Items',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=4348,
-  serialized_end=5584,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.items.Items.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Introspect',
-    full_name='content.items.Items.Introspect',
-    index=1,
-    containing_service=None,
-    input_type=_INTROSPECTREQUEST,
-    output_type=_INTROSPECTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.items.Items.Get',
-    index=2,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Find',
-    full_name='content.items.Items.Find',
-    index=3,
-    containing_service=None,
-    input_type=_FINDREQUEST,
-    output_type=_FINDRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='content.items.Items.Update',
-    index=4,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.items.Items.Delete',
-    index=5,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Undelete',
-    full_name='content.items.Items.Undelete',
-    index=6,
-    containing_service=None,
-    input_type=_UNDELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Publish',
-    full_name='content.items.Items.Publish',
-    index=7,
-    containing_service=None,
-    input_type=_PUBLISHREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Unpublish',
-    full_name='content.items.Items.Unpublish',
-    index=8,
-    containing_service=None,
-    input_type=_UNPUBLISHREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetPublished',
-    full_name='content.items.Items.GetPublished',
-    index=9,
-    containing_service=None,
-    input_type=_GETPUBLISHEDREQUEST,
-    output_type=_GETPUBLISHEDRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='FindPublished',
-    full_name='content.items.Items.FindPublished',
-    index=10,
-    containing_service=None,
-    input_type=_FINDPUBLISHEDREQUEST,
-    output_type=_FINDPUBLISHEDRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetRevision',
-    full_name='content.items.Items.GetRevision',
-    index=11,
-    containing_service=None,
-    input_type=_GETREVISIONREQUEST,
-    output_type=_GETREVISIONRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListRevisions',
-    full_name='content.items.Items.ListRevisions',
-    index=12,
-    containing_service=None,
-    input_type=_LISTREVISIONSREQUEST,
-    output_type=_LISTREVISIONSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Archive',
-    full_name='content.items.Items.Archive',
-    index=13,
-    containing_service=None,
-    input_type=_ARCHIVEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='FindArchived',
-    full_name='content.items.Items.FindArchived',
-    index=14,
-    containing_service=None,
-    input_type=_FINDARCHIVEDREQUEST,
-    output_type=_FINDARCHIVEDRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Unarchive',
-    full_name='content.items.Items.Unarchive',
-    index=15,
-    containing_service=None,
-    input_type=_UNARCHIVEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_ITEMS)
-
-DESCRIPTOR.services_by_name['Items'] = _ITEMS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/items/items_pb2_grpc.py b/perxis/items/items_pb2_grpc.py
deleted file mode 100644
index d3a11217e23eab0edd88bebaa871948681f76b3b..0000000000000000000000000000000000000000
--- a/perxis/items/items_pb2_grpc.py
+++ /dev/null
@@ -1,576 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.items import items_pb2 as perxis_dot_items_dot_items__pb2
-
-
-class ItemsStub(object):
-    """*
-    Сервис API элементов
-    """
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.items.Items/Create',
-                request_serializer=perxis_dot_items_dot_items__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.CreateResponse.FromString,
-                )
-        self.Introspect = channel.unary_unary(
-                '/content.items.Items/Introspect',
-                request_serializer=perxis_dot_items_dot_items__pb2.IntrospectRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.IntrospectResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.items.Items/Get',
-                request_serializer=perxis_dot_items_dot_items__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.GetResponse.FromString,
-                )
-        self.Find = channel.unary_unary(
-                '/content.items.Items/Find',
-                request_serializer=perxis_dot_items_dot_items__pb2.FindRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.FindResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/content.items.Items/Update',
-                request_serializer=perxis_dot_items_dot_items__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.items.Items/Delete',
-                request_serializer=perxis_dot_items_dot_items__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Undelete = channel.unary_unary(
-                '/content.items.Items/Undelete',
-                request_serializer=perxis_dot_items_dot_items__pb2.UndeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Publish = channel.unary_unary(
-                '/content.items.Items/Publish',
-                request_serializer=perxis_dot_items_dot_items__pb2.PublishRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Unpublish = channel.unary_unary(
-                '/content.items.Items/Unpublish',
-                request_serializer=perxis_dot_items_dot_items__pb2.UnpublishRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.GetPublished = channel.unary_unary(
-                '/content.items.Items/GetPublished',
-                request_serializer=perxis_dot_items_dot_items__pb2.GetPublishedRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.GetPublishedResponse.FromString,
-                )
-        self.FindPublished = channel.unary_unary(
-                '/content.items.Items/FindPublished',
-                request_serializer=perxis_dot_items_dot_items__pb2.FindPublishedRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.FindPublishedResponse.FromString,
-                )
-        self.GetRevision = channel.unary_unary(
-                '/content.items.Items/GetRevision',
-                request_serializer=perxis_dot_items_dot_items__pb2.GetRevisionRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.GetRevisionResponse.FromString,
-                )
-        self.ListRevisions = channel.unary_unary(
-                '/content.items.Items/ListRevisions',
-                request_serializer=perxis_dot_items_dot_items__pb2.ListRevisionsRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.ListRevisionsResponse.FromString,
-                )
-        self.Archive = channel.unary_unary(
-                '/content.items.Items/Archive',
-                request_serializer=perxis_dot_items_dot_items__pb2.ArchiveRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.FindArchived = channel.unary_unary(
-                '/content.items.Items/FindArchived',
-                request_serializer=perxis_dot_items_dot_items__pb2.FindArchivedRequest.SerializeToString,
-                response_deserializer=perxis_dot_items_dot_items__pb2.FindArchivedResponse.FromString,
-                )
-        self.Unarchive = channel.unary_unary(
-                '/content.items.Items/Unarchive',
-                request_serializer=perxis_dot_items_dot_items__pb2.UnarchiveRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class ItemsServicer(object):
-    """*
-    Сервис API элементов
-    """
-
-    def Create(self, request, context):
-        """*
-        Создать запись
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Introspect(self, request, context):
-        """*
-        Валидация данных записи
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """*
-        Получение записи по идентификатору
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Find(self, request, context):
-        """*
-        Поиск по текущим записям
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Undelete(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Publish(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Unpublish(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetPublished(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def FindPublished(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetRevision(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListRevisions(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Archive(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def FindArchived(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Unarchive(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_ItemsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.CreateResponse.SerializeToString,
-            ),
-            'Introspect': grpc.unary_unary_rpc_method_handler(
-                    servicer.Introspect,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.IntrospectRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.IntrospectResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.GetResponse.SerializeToString,
-            ),
-            'Find': grpc.unary_unary_rpc_method_handler(
-                    servicer.Find,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.FindRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.FindResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Undelete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Undelete,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.UndeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Publish': grpc.unary_unary_rpc_method_handler(
-                    servicer.Publish,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.PublishRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Unpublish': grpc.unary_unary_rpc_method_handler(
-                    servicer.Unpublish,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.UnpublishRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'GetPublished': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetPublished,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.GetPublishedRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.GetPublishedResponse.SerializeToString,
-            ),
-            'FindPublished': grpc.unary_unary_rpc_method_handler(
-                    servicer.FindPublished,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.FindPublishedRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.FindPublishedResponse.SerializeToString,
-            ),
-            'GetRevision': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetRevision,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.GetRevisionRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.GetRevisionResponse.SerializeToString,
-            ),
-            'ListRevisions': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListRevisions,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.ListRevisionsRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.ListRevisionsResponse.SerializeToString,
-            ),
-            'Archive': grpc.unary_unary_rpc_method_handler(
-                    servicer.Archive,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.ArchiveRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'FindArchived': grpc.unary_unary_rpc_method_handler(
-                    servicer.FindArchived,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.FindArchivedRequest.FromString,
-                    response_serializer=perxis_dot_items_dot_items__pb2.FindArchivedResponse.SerializeToString,
-            ),
-            'Unarchive': grpc.unary_unary_rpc_method_handler(
-                    servicer.Unarchive,
-                    request_deserializer=perxis_dot_items_dot_items__pb2.UnarchiveRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.items.Items', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Items(object):
-    """*
-    Сервис API элементов
-    """
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Create',
-            perxis_dot_items_dot_items__pb2.CreateRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Introspect(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Introspect',
-            perxis_dot_items_dot_items__pb2.IntrospectRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.IntrospectResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Get',
-            perxis_dot_items_dot_items__pb2.GetRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Find(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Find',
-            perxis_dot_items_dot_items__pb2.FindRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.FindResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Update',
-            perxis_dot_items_dot_items__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Delete',
-            perxis_dot_items_dot_items__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Undelete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Undelete',
-            perxis_dot_items_dot_items__pb2.UndeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Publish(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Publish',
-            perxis_dot_items_dot_items__pb2.PublishRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Unpublish(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Unpublish',
-            perxis_dot_items_dot_items__pb2.UnpublishRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetPublished(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/GetPublished',
-            perxis_dot_items_dot_items__pb2.GetPublishedRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.GetPublishedResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def FindPublished(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/FindPublished',
-            perxis_dot_items_dot_items__pb2.FindPublishedRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.FindPublishedResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetRevision(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/GetRevision',
-            perxis_dot_items_dot_items__pb2.GetRevisionRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.GetRevisionResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListRevisions(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/ListRevisions',
-            perxis_dot_items_dot_items__pb2.ListRevisionsRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.ListRevisionsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Archive(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Archive',
-            perxis_dot_items_dot_items__pb2.ArchiveRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def FindArchived(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/FindArchived',
-            perxis_dot_items_dot_items__pb2.FindArchivedRequest.SerializeToString,
-            perxis_dot_items_dot_items__pb2.FindArchivedResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Unarchive(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.items.Items/Unarchive',
-            perxis_dot_items_dot_items__pb2.UnarchiveRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/locales/locales_pb2.py b/perxis/locales/locales_pb2.py
deleted file mode 100644
index 6d2795e17b856982e917d83ec192d7e9a59bb8c1..0000000000000000000000000000000000000000
--- a/perxis/locales/locales_pb2.py
+++ /dev/null
@@ -1,343 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/locales/locales.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/locales/locales.proto',
-  package='content.locales',
-  syntax='proto3',
-  serialized_options=b'Z/git.perx.ru/perxis/perxis/proto/locales;locales',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1cperxis/locales/locales.proto\x12\x0f\x63ontent.locales\x1a\x1bgoogle/protobuf/empty.proto\"4\n\x06Locale\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\"8\n\rCreateRequest\x12\'\n\x06locale\x18\x01 \x01(\x0b\x32\x17.content.locales.Locale\"9\n\x0e\x43reateResponse\x12\'\n\x06locale\x18\x01 \x01(\x0b\x32\x17.content.locales.Locale\"\x1f\n\x0bListRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"8\n\x0cListResponse\x12(\n\x07locales\x18\x01 \x03(\x0b\x32\x17.content.locales.Locale\"4\n\rDeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x11\n\tlocale_id\x18\x02 \x01(\t2\xe1\x01\n\x07Locales\x12K\n\x06\x43reate\x12\x1e.content.locales.CreateRequest\x1a\x1f.content.locales.CreateResponse\"\x00\x12\x45\n\x04List\x12\x1c.content.locales.ListRequest\x1a\x1d.content.locales.ListResponse\"\x00\x12\x42\n\x06\x44\x65lete\x12\x1e.content.locales.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x31Z/git.perx.ru/perxis/perxis/proto/locales;localesb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
-
-
-
-
-_LOCALE = _descriptor.Descriptor(
-  name='Locale',
-  full_name='content.locales.Locale',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.locales.Locale.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.locales.Locale.space_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='content.locales.Locale.name', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=78,
-  serialized_end=130,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.locales.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='locale', full_name='content.locales.CreateRequest.locale', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=132,
-  serialized_end=188,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.locales.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='locale', full_name='content.locales.CreateResponse.locale', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=190,
-  serialized_end=247,
-)
-
-
-_LISTREQUEST = _descriptor.Descriptor(
-  name='ListRequest',
-  full_name='content.locales.ListRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.locales.ListRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=249,
-  serialized_end=280,
-)
-
-
-_LISTRESPONSE = _descriptor.Descriptor(
-  name='ListResponse',
-  full_name='content.locales.ListResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='locales', full_name='content.locales.ListResponse.locales', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=282,
-  serialized_end=338,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.locales.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.locales.DeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='locale_id', full_name='content.locales.DeleteRequest.locale_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=340,
-  serialized_end=392,
-)
-
-_CREATEREQUEST.fields_by_name['locale'].message_type = _LOCALE
-_CREATERESPONSE.fields_by_name['locale'].message_type = _LOCALE
-_LISTRESPONSE.fields_by_name['locales'].message_type = _LOCALE
-DESCRIPTOR.message_types_by_name['Locale'] = _LOCALE
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['ListRequest'] = _LISTREQUEST
-DESCRIPTOR.message_types_by_name['ListResponse'] = _LISTRESPONSE
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Locale = _reflection.GeneratedProtocolMessageType('Locale', (_message.Message,), {
-  'DESCRIPTOR' : _LOCALE,
-  '__module__' : 'perxis.locales.locales_pb2'
-  # @@protoc_insertion_point(class_scope:content.locales.Locale)
-  })
-_sym_db.RegisterMessage(Locale)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.locales.locales_pb2'
-  # @@protoc_insertion_point(class_scope:content.locales.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.locales.locales_pb2'
-  # @@protoc_insertion_point(class_scope:content.locales.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-ListRequest = _reflection.GeneratedProtocolMessageType('ListRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREQUEST,
-  '__module__' : 'perxis.locales.locales_pb2'
-  # @@protoc_insertion_point(class_scope:content.locales.ListRequest)
-  })
-_sym_db.RegisterMessage(ListRequest)
-
-ListResponse = _reflection.GeneratedProtocolMessageType('ListResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTRESPONSE,
-  '__module__' : 'perxis.locales.locales_pb2'
-  # @@protoc_insertion_point(class_scope:content.locales.ListResponse)
-  })
-_sym_db.RegisterMessage(ListResponse)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.locales.locales_pb2'
-  # @@protoc_insertion_point(class_scope:content.locales.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-
-DESCRIPTOR._options = None
-
-_LOCALES = _descriptor.ServiceDescriptor(
-  name='Locales',
-  full_name='content.locales.Locales',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=395,
-  serialized_end=620,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.locales.Locales.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='List',
-    full_name='content.locales.Locales.List',
-    index=1,
-    containing_service=None,
-    input_type=_LISTREQUEST,
-    output_type=_LISTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.locales.Locales.Delete',
-    index=2,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_LOCALES)
-
-DESCRIPTOR.services_by_name['Locales'] = _LOCALES
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/locales/locales_pb2_grpc.py b/perxis/locales/locales_pb2_grpc.py
deleted file mode 100644
index b9cc4f3fc5f216d01aced893d25ee15b65fa7e0e..0000000000000000000000000000000000000000
--- a/perxis/locales/locales_pb2_grpc.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.locales import locales_pb2 as perxis_dot_locales_dot_locales__pb2
-
-
-class LocalesStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.locales.Locales/Create',
-                request_serializer=perxis_dot_locales_dot_locales__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_locales_dot_locales__pb2.CreateResponse.FromString,
-                )
-        self.List = channel.unary_unary(
-                '/content.locales.Locales/List',
-                request_serializer=perxis_dot_locales_dot_locales__pb2.ListRequest.SerializeToString,
-                response_deserializer=perxis_dot_locales_dot_locales__pb2.ListResponse.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.locales.Locales/Delete',
-                request_serializer=perxis_dot_locales_dot_locales__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class LocalesServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def List(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_LocalesServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_locales_dot_locales__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_locales_dot_locales__pb2.CreateResponse.SerializeToString,
-            ),
-            'List': grpc.unary_unary_rpc_method_handler(
-                    servicer.List,
-                    request_deserializer=perxis_dot_locales_dot_locales__pb2.ListRequest.FromString,
-                    response_serializer=perxis_dot_locales_dot_locales__pb2.ListResponse.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_locales_dot_locales__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.locales.Locales', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Locales(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.locales.Locales/Create',
-            perxis_dot_locales_dot_locales__pb2.CreateRequest.SerializeToString,
-            perxis_dot_locales_dot_locales__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def List(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.locales.Locales/List',
-            perxis_dot_locales_dot_locales__pb2.ListRequest.SerializeToString,
-            perxis_dot_locales_dot_locales__pb2.ListResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.locales.Locales/Delete',
-            perxis_dot_locales_dot_locales__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/members/members_pb2.py b/perxis/members/members_pb2.py
deleted file mode 100644
index 4c4ce1b7b68772f278a59e46ce2eec511afcd995..0000000000000000000000000000000000000000
--- a/perxis/members/members_pb2.py
+++ /dev/null
@@ -1,656 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/members/members.proto
-"""Generated protocol buffer code."""
-from google.protobuf.internal import enum_type_wrapper
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/members/members.proto',
-  package='account.members',
-  syntax='proto3',
-  serialized_options=b'Z/git.perx.ru/perxis/perxis/proto/members;members',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1cperxis/members/members.proto\x12\x0f\x61\x63\x63ount.members\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"N\n\x06Member\x12\x0e\n\x06org_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12#\n\x04role\x18\x03 \x01(\x0e\x32\x15.account.members.Role\"R\n\nSetRequest\x12\x0e\n\x06org_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12#\n\x04role\x18\x03 \x01(\x0e\x32\x15.account.members.Role\"-\n\nGetRequest\x12\x0e\n\x06org_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"2\n\x0bGetResponse\x12#\n\x04role\x18\x03 \x01(\x0e\x32\x15.account.members.Role\"0\n\rRemoveRequest\x12\x0e\n\x06org_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"$\n\x12ListMembersRequest\x12\x0e\n\x06org_id\x18\x01 \x01(\t\"?\n\x13ListMembersResponse\x12(\n\x07members\x18\x01 \x03(\x0b\x32\x17.account.members.Member\"+\n\x18ListOrganizationsRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\"K\n\x19ListOrganizationsResponse\x12.\n\rorganizations\x18\x01 \x03(\x0b\x32\x17.account.members.Member\"F\n\x18OnCollaboratorSetRequest\x12*\n\x0c\x63ollaborator\x18\x01 \x01(\x0b\x32\x14.common.Collaborator\"4\n\x19OnCollaboratorSetResponse\x12\x17\n\x0f\x64\x65layed_task_id\x18\x01 \x01(\t*8\n\x04Role\x12\x0e\n\nNOT_MEMBER\x10\x00\x12\n\n\x06MEMBER\x10\x01\x12\t\n\x05OWNER\x10\x02\x12\t\n\x05\x41\x44MIN\x10\x03\x32\x99\x03\n\x07Members\x12<\n\x03Set\x12\x1b.account.members.SetRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x42\n\x03Get\x12\x1b.account.members.GetRequest\x1a\x1c.account.members.GetResponse\"\x00\x12\x42\n\x06Remove\x12\x1e.account.members.RemoveRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x0bListMembers\x12#.account.members.ListMembersRequest\x1a$.account.members.ListMembersResponse\"\x00\x12l\n\x11ListOrganizations\x12).account.members.ListOrganizationsRequest\x1a*.account.members.ListOrganizationsResponse\"\x00\x32x\n\x08Observer\x12l\n\x11OnCollaboratorSet\x12).account.members.OnCollaboratorSetRequest\x1a*.account.members.OnCollaboratorSetResponse\"\x00\x42\x31Z/git.perx.ru/perxis/perxis/proto/members;membersb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
-
-_ROLE = _descriptor.EnumDescriptor(
-  name='Role',
-  full_name='account.members.Role',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='NOT_MEMBER', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='MEMBER', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='OWNER', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ADMIN', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=770,
-  serialized_end=826,
-)
-_sym_db.RegisterEnumDescriptor(_ROLE)
-
-Role = enum_type_wrapper.EnumTypeWrapper(_ROLE)
-NOT_MEMBER = 0
-MEMBER = 1
-OWNER = 2
-ADMIN = 3
-
-
-
-_MEMBER = _descriptor.Descriptor(
-  name='Member',
-  full_name='account.members.Member',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='account.members.Member.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.members.Member.user_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role', full_name='account.members.Member.role', index=2,
-      number=3, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=106,
-  serialized_end=184,
-)
-
-
-_SETREQUEST = _descriptor.Descriptor(
-  name='SetRequest',
-  full_name='account.members.SetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='account.members.SetRequest.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.members.SetRequest.user_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role', full_name='account.members.SetRequest.role', index=2,
-      number=3, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=186,
-  serialized_end=268,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='account.members.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='account.members.GetRequest.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.members.GetRequest.user_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=270,
-  serialized_end=315,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='account.members.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='role', full_name='account.members.GetResponse.role', index=0,
-      number=3, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=317,
-  serialized_end=367,
-)
-
-
-_REMOVEREQUEST = _descriptor.Descriptor(
-  name='RemoveRequest',
-  full_name='account.members.RemoveRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='account.members.RemoveRequest.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.members.RemoveRequest.user_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=369,
-  serialized_end=417,
-)
-
-
-_LISTMEMBERSREQUEST = _descriptor.Descriptor(
-  name='ListMembersRequest',
-  full_name='account.members.ListMembersRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='account.members.ListMembersRequest.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=419,
-  serialized_end=455,
-)
-
-
-_LISTMEMBERSRESPONSE = _descriptor.Descriptor(
-  name='ListMembersResponse',
-  full_name='account.members.ListMembersResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='members', full_name='account.members.ListMembersResponse.members', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=457,
-  serialized_end=520,
-)
-
-
-_LISTORGANIZATIONSREQUEST = _descriptor.Descriptor(
-  name='ListOrganizationsRequest',
-  full_name='account.members.ListOrganizationsRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.members.ListOrganizationsRequest.user_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=522,
-  serialized_end=565,
-)
-
-
-_LISTORGANIZATIONSRESPONSE = _descriptor.Descriptor(
-  name='ListOrganizationsResponse',
-  full_name='account.members.ListOrganizationsResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='organizations', full_name='account.members.ListOrganizationsResponse.organizations', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=567,
-  serialized_end=642,
-)
-
-
-_ONCOLLABORATORSETREQUEST = _descriptor.Descriptor(
-  name='OnCollaboratorSetRequest',
-  full_name='account.members.OnCollaboratorSetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='collaborator', full_name='account.members.OnCollaboratorSetRequest.collaborator', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=644,
-  serialized_end=714,
-)
-
-
-_ONCOLLABORATORSETRESPONSE = _descriptor.Descriptor(
-  name='OnCollaboratorSetResponse',
-  full_name='account.members.OnCollaboratorSetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='delayed_task_id', full_name='account.members.OnCollaboratorSetResponse.delayed_task_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=716,
-  serialized_end=768,
-)
-
-_MEMBER.fields_by_name['role'].enum_type = _ROLE
-_SETREQUEST.fields_by_name['role'].enum_type = _ROLE
-_GETRESPONSE.fields_by_name['role'].enum_type = _ROLE
-_LISTMEMBERSRESPONSE.fields_by_name['members'].message_type = _MEMBER
-_LISTORGANIZATIONSRESPONSE.fields_by_name['organizations'].message_type = _MEMBER
-_ONCOLLABORATORSETREQUEST.fields_by_name['collaborator'].message_type = perxis_dot_common_dot_common__pb2._COLLABORATOR
-DESCRIPTOR.message_types_by_name['Member'] = _MEMBER
-DESCRIPTOR.message_types_by_name['SetRequest'] = _SETREQUEST
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['RemoveRequest'] = _REMOVEREQUEST
-DESCRIPTOR.message_types_by_name['ListMembersRequest'] = _LISTMEMBERSREQUEST
-DESCRIPTOR.message_types_by_name['ListMembersResponse'] = _LISTMEMBERSRESPONSE
-DESCRIPTOR.message_types_by_name['ListOrganizationsRequest'] = _LISTORGANIZATIONSREQUEST
-DESCRIPTOR.message_types_by_name['ListOrganizationsResponse'] = _LISTORGANIZATIONSRESPONSE
-DESCRIPTOR.message_types_by_name['OnCollaboratorSetRequest'] = _ONCOLLABORATORSETREQUEST
-DESCRIPTOR.message_types_by_name['OnCollaboratorSetResponse'] = _ONCOLLABORATORSETRESPONSE
-DESCRIPTOR.enum_types_by_name['Role'] = _ROLE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Member = _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), {
-  'DESCRIPTOR' : _MEMBER,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.Member)
-  })
-_sym_db.RegisterMessage(Member)
-
-SetRequest = _reflection.GeneratedProtocolMessageType('SetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _SETREQUEST,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.SetRequest)
-  })
-_sym_db.RegisterMessage(SetRequest)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-RemoveRequest = _reflection.GeneratedProtocolMessageType('RemoveRequest', (_message.Message,), {
-  'DESCRIPTOR' : _REMOVEREQUEST,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.RemoveRequest)
-  })
-_sym_db.RegisterMessage(RemoveRequest)
-
-ListMembersRequest = _reflection.GeneratedProtocolMessageType('ListMembersRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTMEMBERSREQUEST,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.ListMembersRequest)
-  })
-_sym_db.RegisterMessage(ListMembersRequest)
-
-ListMembersResponse = _reflection.GeneratedProtocolMessageType('ListMembersResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTMEMBERSRESPONSE,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.ListMembersResponse)
-  })
-_sym_db.RegisterMessage(ListMembersResponse)
-
-ListOrganizationsRequest = _reflection.GeneratedProtocolMessageType('ListOrganizationsRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTORGANIZATIONSREQUEST,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.ListOrganizationsRequest)
-  })
-_sym_db.RegisterMessage(ListOrganizationsRequest)
-
-ListOrganizationsResponse = _reflection.GeneratedProtocolMessageType('ListOrganizationsResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTORGANIZATIONSRESPONSE,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.ListOrganizationsResponse)
-  })
-_sym_db.RegisterMessage(ListOrganizationsResponse)
-
-OnCollaboratorSetRequest = _reflection.GeneratedProtocolMessageType('OnCollaboratorSetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _ONCOLLABORATORSETREQUEST,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.OnCollaboratorSetRequest)
-  })
-_sym_db.RegisterMessage(OnCollaboratorSetRequest)
-
-OnCollaboratorSetResponse = _reflection.GeneratedProtocolMessageType('OnCollaboratorSetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _ONCOLLABORATORSETRESPONSE,
-  '__module__' : 'perxis.members.members_pb2'
-  # @@protoc_insertion_point(class_scope:account.members.OnCollaboratorSetResponse)
-  })
-_sym_db.RegisterMessage(OnCollaboratorSetResponse)
-
-
-DESCRIPTOR._options = None
-
-_MEMBERS = _descriptor.ServiceDescriptor(
-  name='Members',
-  full_name='account.members.Members',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=829,
-  serialized_end=1238,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Set',
-    full_name='account.members.Members.Set',
-    index=0,
-    containing_service=None,
-    input_type=_SETREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='account.members.Members.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Remove',
-    full_name='account.members.Members.Remove',
-    index=2,
-    containing_service=None,
-    input_type=_REMOVEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListMembers',
-    full_name='account.members.Members.ListMembers',
-    index=3,
-    containing_service=None,
-    input_type=_LISTMEMBERSREQUEST,
-    output_type=_LISTMEMBERSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='ListOrganizations',
-    full_name='account.members.Members.ListOrganizations',
-    index=4,
-    containing_service=None,
-    input_type=_LISTORGANIZATIONSREQUEST,
-    output_type=_LISTORGANIZATIONSRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_MEMBERS)
-
-DESCRIPTOR.services_by_name['Members'] = _MEMBERS
-
-
-_OBSERVER = _descriptor.ServiceDescriptor(
-  name='Observer',
-  full_name='account.members.Observer',
-  file=DESCRIPTOR,
-  index=1,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1240,
-  serialized_end=1360,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='OnCollaboratorSet',
-    full_name='account.members.Observer.OnCollaboratorSet',
-    index=0,
-    containing_service=None,
-    input_type=_ONCOLLABORATORSETREQUEST,
-    output_type=_ONCOLLABORATORSETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_OBSERVER)
-
-DESCRIPTOR.services_by_name['Observer'] = _OBSERVER
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/members/members_pb2_grpc.py b/perxis/members/members_pb2_grpc.py
deleted file mode 100644
index 5731286aded8468e853e768ae2c4a74ea9c77c44..0000000000000000000000000000000000000000
--- a/perxis/members/members_pb2_grpc.py
+++ /dev/null
@@ -1,260 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.members import members_pb2 as perxis_dot_members_dot_members__pb2
-
-
-class MembersStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Set = channel.unary_unary(
-                '/account.members.Members/Set',
-                request_serializer=perxis_dot_members_dot_members__pb2.SetRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/account.members.Members/Get',
-                request_serializer=perxis_dot_members_dot_members__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_members_dot_members__pb2.GetResponse.FromString,
-                )
-        self.Remove = channel.unary_unary(
-                '/account.members.Members/Remove',
-                request_serializer=perxis_dot_members_dot_members__pb2.RemoveRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.ListMembers = channel.unary_unary(
-                '/account.members.Members/ListMembers',
-                request_serializer=perxis_dot_members_dot_members__pb2.ListMembersRequest.SerializeToString,
-                response_deserializer=perxis_dot_members_dot_members__pb2.ListMembersResponse.FromString,
-                )
-        self.ListOrganizations = channel.unary_unary(
-                '/account.members.Members/ListOrganizations',
-                request_serializer=perxis_dot_members_dot_members__pb2.ListOrganizationsRequest.SerializeToString,
-                response_deserializer=perxis_dot_members_dot_members__pb2.ListOrganizationsResponse.FromString,
-                )
-
-
-class MembersServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Set(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Remove(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListMembers(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def ListOrganizations(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_MembersServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Set': grpc.unary_unary_rpc_method_handler(
-                    servicer.Set,
-                    request_deserializer=perxis_dot_members_dot_members__pb2.SetRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_members_dot_members__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_members_dot_members__pb2.GetResponse.SerializeToString,
-            ),
-            'Remove': grpc.unary_unary_rpc_method_handler(
-                    servicer.Remove,
-                    request_deserializer=perxis_dot_members_dot_members__pb2.RemoveRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'ListMembers': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListMembers,
-                    request_deserializer=perxis_dot_members_dot_members__pb2.ListMembersRequest.FromString,
-                    response_serializer=perxis_dot_members_dot_members__pb2.ListMembersResponse.SerializeToString,
-            ),
-            'ListOrganizations': grpc.unary_unary_rpc_method_handler(
-                    servicer.ListOrganizations,
-                    request_deserializer=perxis_dot_members_dot_members__pb2.ListOrganizationsRequest.FromString,
-                    response_serializer=perxis_dot_members_dot_members__pb2.ListOrganizationsResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'account.members.Members', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Members(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Set(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.members.Members/Set',
-            perxis_dot_members_dot_members__pb2.SetRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.members.Members/Get',
-            perxis_dot_members_dot_members__pb2.GetRequest.SerializeToString,
-            perxis_dot_members_dot_members__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Remove(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.members.Members/Remove',
-            perxis_dot_members_dot_members__pb2.RemoveRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListMembers(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.members.Members/ListMembers',
-            perxis_dot_members_dot_members__pb2.ListMembersRequest.SerializeToString,
-            perxis_dot_members_dot_members__pb2.ListMembersResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def ListOrganizations(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.members.Members/ListOrganizations',
-            perxis_dot_members_dot_members__pb2.ListOrganizationsRequest.SerializeToString,
-            perxis_dot_members_dot_members__pb2.ListOrganizationsResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-
-class ObserverStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.OnCollaboratorSet = channel.unary_unary(
-                '/account.members.Observer/OnCollaboratorSet',
-                request_serializer=perxis_dot_members_dot_members__pb2.OnCollaboratorSetRequest.SerializeToString,
-                response_deserializer=perxis_dot_members_dot_members__pb2.OnCollaboratorSetResponse.FromString,
-                )
-
-
-class ObserverServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def OnCollaboratorSet(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_ObserverServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'OnCollaboratorSet': grpc.unary_unary_rpc_method_handler(
-                    servicer.OnCollaboratorSet,
-                    request_deserializer=perxis_dot_members_dot_members__pb2.OnCollaboratorSetRequest.FromString,
-                    response_serializer=perxis_dot_members_dot_members__pb2.OnCollaboratorSetResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'account.members.Observer', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Observer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def OnCollaboratorSet(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.members.Observer/OnCollaboratorSet',
-            perxis_dot_members_dot_members__pb2.OnCollaboratorSetRequest.SerializeToString,
-            perxis_dot_members_dot_members__pb2.OnCollaboratorSetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/organizations/organizations_pb2.py b/perxis/organizations/organizations_pb2.py
deleted file mode 100644
index be7ae90cb350cb3fe64afc520ef73d43549d41af..0000000000000000000000000000000000000000
--- a/perxis/organizations/organizations_pb2.py
+++ /dev/null
@@ -1,564 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/organizations/organizations.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/organizations/organizations.proto',
-  package='account.organizations',
-  syntax='proto3',
-  serialized_options=b'Z;git.perx.ru/perxis/perxis/proto/organizations;organizations',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n(perxis/organizations/organizations.proto\x12\x15\x61\x63\x63ount.organizations\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"s\n\x0cOrganization\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x10\n\x08logo_url\x18\x05 \x01(\t\x12\x15\n\x08owner_id\x18\x06 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_owner_id\"A\n\rCreateRequest\x12\x30\n\x03org\x18\x01 \x01(\x0b\x32#.account.organizations.Organization\"F\n\x0e\x43reateResponse\x12\x34\n\x07\x63reated\x18\x01 \x01(\x0b\x32#.account.organizations.Organization\"\x1c\n\nGetRequest\x12\x0e\n\x06org_id\x18\x01 \x01(\t\"?\n\x0bGetResponse\x12\x30\n\x03org\x18\x01 \x01(\x0b\x32#.account.organizations.Organization\"A\n\rUpdateRequest\x12\x30\n\x03org\x18\x01 \x01(\x0b\x32#.account.organizations.Organization\"\x1f\n\rDeleteRequest\x12\x0e\n\x06org_id\x18\x01 \x01(\t\"$\n\x06\x46ilter\x12\x0b\n\x03ids\x18\x03 \x03(\t\x12\r\n\x05names\x18\x04 \x03(\t\"_\n\x0b\x46indRequest\x12-\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1d.account.organizations.Filter\x12!\n\x04opts\x18\x02 \x01(\x0b\x32\x13.common.FindOptions\"P\n\x0c\x46indResponse\x12\x31\n\x04orgs\x18\x01 \x03(\x0b\x32#.account.organizations.Organization\x12\r\n\x05total\x18\x02 \x01(\x03\x32\x9f\x03\n\rOrganizations\x12W\n\x06\x43reate\x12$.account.organizations.CreateRequest\x1a%.account.organizations.CreateResponse\"\x00\x12N\n\x03Get\x12!.account.organizations.GetRequest\x1a\".account.organizations.GetResponse\"\x00\x12H\n\x06\x44\x65lete\x12$.account.organizations.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Q\n\x04\x46ind\x12\".account.organizations.FindRequest\x1a#.account.organizations.FindResponse\"\x00\x12H\n\x06Update\x12$.account.organizations.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x42=Z;git.perx.ru/perxis/perxis/proto/organizations;organizationsb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
-
-
-
-
-_ORGANIZATION = _descriptor.Descriptor(
-  name='Organization',
-  full_name='account.organizations.Organization',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='account.organizations.Organization.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='account.organizations.Organization.name', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='account.organizations.Organization.description', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='logo_url', full_name='account.organizations.Organization.logo_url', index=3,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='owner_id', full_name='account.organizations.Organization.owner_id', index=4,
-      number=6, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='_owner_id', full_name='account.organizations.Organization._owner_id',
-      index=0, containing_type=None,
-      create_key=_descriptor._internal_create_key,
-    fields=[]),
-  ],
-  serialized_start=124,
-  serialized_end=239,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='account.organizations.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org', full_name='account.organizations.CreateRequest.org', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=241,
-  serialized_end=306,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='account.organizations.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='created', full_name='account.organizations.CreateResponse.created', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=308,
-  serialized_end=378,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='account.organizations.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='account.organizations.GetRequest.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=380,
-  serialized_end=408,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='account.organizations.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org', full_name='account.organizations.GetResponse.org', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=410,
-  serialized_end=473,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='account.organizations.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org', full_name='account.organizations.UpdateRequest.org', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=475,
-  serialized_end=540,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='account.organizations.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='account.organizations.DeleteRequest.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=542,
-  serialized_end=573,
-)
-
-
-_FILTER = _descriptor.Descriptor(
-  name='Filter',
-  full_name='account.organizations.Filter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='ids', full_name='account.organizations.Filter.ids', index=0,
-      number=3, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='names', full_name='account.organizations.Filter.names', index=1,
-      number=4, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=575,
-  serialized_end=611,
-)
-
-
-_FINDREQUEST = _descriptor.Descriptor(
-  name='FindRequest',
-  full_name='account.organizations.FindRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='account.organizations.FindRequest.filter', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='opts', full_name='account.organizations.FindRequest.opts', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=613,
-  serialized_end=708,
-)
-
-
-_FINDRESPONSE = _descriptor.Descriptor(
-  name='FindResponse',
-  full_name='account.organizations.FindResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='orgs', full_name='account.organizations.FindResponse.orgs', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='account.organizations.FindResponse.total', index=1,
-      number=2, type=3, cpp_type=2, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=710,
-  serialized_end=790,
-)
-
-_ORGANIZATION.oneofs_by_name['_owner_id'].fields.append(
-  _ORGANIZATION.fields_by_name['owner_id'])
-_ORGANIZATION.fields_by_name['owner_id'].containing_oneof = _ORGANIZATION.oneofs_by_name['_owner_id']
-_CREATEREQUEST.fields_by_name['org'].message_type = _ORGANIZATION
-_CREATERESPONSE.fields_by_name['created'].message_type = _ORGANIZATION
-_GETRESPONSE.fields_by_name['org'].message_type = _ORGANIZATION
-_UPDATEREQUEST.fields_by_name['org'].message_type = _ORGANIZATION
-_FINDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDREQUEST.fields_by_name['opts'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
-_FINDRESPONSE.fields_by_name['orgs'].message_type = _ORGANIZATION
-DESCRIPTOR.message_types_by_name['Organization'] = _ORGANIZATION
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-DESCRIPTOR.message_types_by_name['Filter'] = _FILTER
-DESCRIPTOR.message_types_by_name['FindRequest'] = _FINDREQUEST
-DESCRIPTOR.message_types_by_name['FindResponse'] = _FINDRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Organization = _reflection.GeneratedProtocolMessageType('Organization', (_message.Message,), {
-  'DESCRIPTOR' : _ORGANIZATION,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.Organization)
-  })
-_sym_db.RegisterMessage(Organization)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
-  'DESCRIPTOR' : _FILTER,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.Filter)
-  })
-_sym_db.RegisterMessage(Filter)
-
-FindRequest = _reflection.GeneratedProtocolMessageType('FindRequest', (_message.Message,), {
-  'DESCRIPTOR' : _FINDREQUEST,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.FindRequest)
-  })
-_sym_db.RegisterMessage(FindRequest)
-
-FindResponse = _reflection.GeneratedProtocolMessageType('FindResponse', (_message.Message,), {
-  'DESCRIPTOR' : _FINDRESPONSE,
-  '__module__' : 'perxis.organizations.organizations_pb2'
-  # @@protoc_insertion_point(class_scope:account.organizations.FindResponse)
-  })
-_sym_db.RegisterMessage(FindResponse)
-
-
-DESCRIPTOR._options = None
-
-_ORGANIZATIONS = _descriptor.ServiceDescriptor(
-  name='Organizations',
-  full_name='account.organizations.Organizations',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=793,
-  serialized_end=1208,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='account.organizations.Organizations.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='account.organizations.Organizations.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='account.organizations.Organizations.Delete',
-    index=2,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Find',
-    full_name='account.organizations.Organizations.Find',
-    index=3,
-    containing_service=None,
-    input_type=_FINDREQUEST,
-    output_type=_FINDRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='account.organizations.Organizations.Update',
-    index=4,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_ORGANIZATIONS)
-
-DESCRIPTOR.services_by_name['Organizations'] = _ORGANIZATIONS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/organizations/organizations_pb2_grpc.py b/perxis/organizations/organizations_pb2_grpc.py
deleted file mode 100644
index f205eaae80d6b4d83a2b487b9dfba58abfd064a6..0000000000000000000000000000000000000000
--- a/perxis/organizations/organizations_pb2_grpc.py
+++ /dev/null
@@ -1,199 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.organizations import organizations_pb2 as perxis_dot_organizations_dot_organizations__pb2
-
-
-class OrganizationsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/account.organizations.Organizations/Create',
-                request_serializer=perxis_dot_organizations_dot_organizations__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_organizations_dot_organizations__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/account.organizations.Organizations/Get',
-                request_serializer=perxis_dot_organizations_dot_organizations__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_organizations_dot_organizations__pb2.GetResponse.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/account.organizations.Organizations/Delete',
-                request_serializer=perxis_dot_organizations_dot_organizations__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Find = channel.unary_unary(
-                '/account.organizations.Organizations/Find',
-                request_serializer=perxis_dot_organizations_dot_organizations__pb2.FindRequest.SerializeToString,
-                response_deserializer=perxis_dot_organizations_dot_organizations__pb2.FindResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/account.organizations.Organizations/Update',
-                request_serializer=perxis_dot_organizations_dot_organizations__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class OrganizationsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Find(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_OrganizationsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_organizations_dot_organizations__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_organizations_dot_organizations__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_organizations_dot_organizations__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_organizations_dot_organizations__pb2.GetResponse.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_organizations_dot_organizations__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Find': grpc.unary_unary_rpc_method_handler(
-                    servicer.Find,
-                    request_deserializer=perxis_dot_organizations_dot_organizations__pb2.FindRequest.FromString,
-                    response_serializer=perxis_dot_organizations_dot_organizations__pb2.FindResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_organizations_dot_organizations__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'account.organizations.Organizations', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Organizations(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Create',
-            perxis_dot_organizations_dot_organizations__pb2.CreateRequest.SerializeToString,
-            perxis_dot_organizations_dot_organizations__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Get',
-            perxis_dot_organizations_dot_organizations__pb2.GetRequest.SerializeToString,
-            perxis_dot_organizations_dot_organizations__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Delete',
-            perxis_dot_organizations_dot_organizations__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Find(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Find',
-            perxis_dot_organizations_dot_organizations__pb2.FindRequest.SerializeToString,
-            perxis_dot_organizations_dot_organizations__pb2.FindResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Update',
-            perxis_dot_organizations_dot_organizations__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/references/references_pb2.py b/perxis/references/references_pb2.py
deleted file mode 100644
index 0500fd21f63bcfdc52f3f4c3a641d27a20ad88c7..0000000000000000000000000000000000000000
--- a/perxis/references/references_pb2.py
+++ /dev/null
@@ -1,210 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/references/references.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from perxis.items import items_pb2 as perxis_dot_items_dot_items__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/references/references.proto',
-  package='content.references',
-  syntax='proto3',
-  serialized_options=b'Z5git.perx.ru/perxis/perxis/proto/references;references',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\"perxis/references/references.proto\x12\x12\x63ontent.references\x1a\x18perxis/items/items.proto\".\n\tReference\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rcollection_id\x18\x02 \x01(\t\"a\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\x12\x31\n\nreferences\x18\x03 \x03(\x0b\x32\x1d.content.references.Reference\"b\n\x0bGetResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.content.items.Item\x12/\n\x08notfound\x18\x02 \x03(\x0b\x32\x1d.content.references.Reference2V\n\nReferences\x12H\n\x03Get\x12\x1e.content.references.GetRequest\x1a\x1f.content.references.GetResponse\"\x00\x42\x37Z5git.perx.ru/perxis/perxis/proto/references;referencesb\x06proto3'
-  ,
-  dependencies=[perxis_dot_items_dot_items__pb2.DESCRIPTOR,])
-
-
-
-
-_REFERENCE = _descriptor.Descriptor(
-  name='Reference',
-  full_name='content.references.Reference',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.references.Reference.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='collection_id', full_name='content.references.Reference.collection_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=84,
-  serialized_end=130,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.references.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.references.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='env_id', full_name='content.references.GetRequest.env_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='references', full_name='content.references.GetRequest.references', index=2,
-      number=3, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=132,
-  serialized_end=229,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.references.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='content.references.GetResponse.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='notfound', full_name='content.references.GetResponse.notfound', index=1,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=231,
-  serialized_end=329,
-)
-
-_GETREQUEST.fields_by_name['references'].message_type = _REFERENCE
-_GETRESPONSE.fields_by_name['items'].message_type = perxis_dot_items_dot_items__pb2._ITEM
-_GETRESPONSE.fields_by_name['notfound'].message_type = _REFERENCE
-DESCRIPTOR.message_types_by_name['Reference'] = _REFERENCE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Reference = _reflection.GeneratedProtocolMessageType('Reference', (_message.Message,), {
-  'DESCRIPTOR' : _REFERENCE,
-  '__module__' : 'perxis.references.references_pb2'
-  # @@protoc_insertion_point(class_scope:content.references.Reference)
-  })
-_sym_db.RegisterMessage(Reference)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.references.references_pb2'
-  # @@protoc_insertion_point(class_scope:content.references.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.references.references_pb2'
-  # @@protoc_insertion_point(class_scope:content.references.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-
-DESCRIPTOR._options = None
-
-_REFERENCES = _descriptor.ServiceDescriptor(
-  name='References',
-  full_name='content.references.References',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=331,
-  serialized_end=417,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.references.References.Get',
-    index=0,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_REFERENCES)
-
-DESCRIPTOR.services_by_name['References'] = _REFERENCES
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/references/references_pb2_grpc.py b/perxis/references/references_pb2_grpc.py
deleted file mode 100644
index 89246f3a7d854d7fb104188251f418fc581c2a79..0000000000000000000000000000000000000000
--- a/perxis/references/references_pb2_grpc.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from perxis.references import references_pb2 as perxis_dot_references_dot_references__pb2
-
-
-class ReferencesStub(object):
-    """References принимает список ссылок на записи и возвращает два списка:
-    список найденных записей и не найденных ссылок
-    """
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Get = channel.unary_unary(
-                '/content.references.References/Get',
-                request_serializer=perxis_dot_references_dot_references__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_references_dot_references__pb2.GetResponse.FromString,
-                )
-
-
-class ReferencesServicer(object):
-    """References принимает список ссылок на записи и возвращает два списка:
-    список найденных записей и не найденных ссылок
-    """
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_ReferencesServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_references_dot_references__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_references_dot_references__pb2.GetResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.references.References', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class References(object):
-    """References принимает список ссылок на записи и возвращает два списка:
-    список найденных записей и не найденных ссылок
-    """
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.references.References/Get',
-            perxis_dot_references_dot_references__pb2.GetRequest.SerializeToString,
-            perxis_dot_references_dot_references__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/roles/roles_pb2.py b/perxis/roles/roles_pb2.py
deleted file mode 100644
index e3f50302fe094f9cb370bb24d092a1555c8fc99b..0000000000000000000000000000000000000000
--- a/perxis/roles/roles_pb2.py
+++ /dev/null
@@ -1,515 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/roles/roles.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/roles/roles.proto',
-  package='content.roles',
-  syntax='proto3',
-  serialized_options=b'Z+git.perx.ru/perxis/perxis/proto/roles;roles',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x18perxis/roles/roles.proto\x12\rcontent.roles\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"\x86\x01\n\x04Role\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x1b\n\x05rules\x18\x04 \x03(\x0b\x32\x0c.common.Rule\x12\x14\n\x0c\x65nvironments\x18\x05 \x03(\t\x12\x18\n\x10\x61llow_management\x18\n \x01(\x08\"2\n\rCreateRequest\x12!\n\x04role\x18\x01 \x01(\x0b\x32\x13.content.roles.Role\"6\n\x0e\x43reateResponse\x12$\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x13.content.roles.Role\"/\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07role_id\x18\x02 \x01(\t\"0\n\x0bGetResponse\x12!\n\x04role\x18\x01 \x01(\x0b\x32\x13.content.roles.Role\"2\n\rUpdateRequest\x12!\n\x04role\x18\x01 \x01(\x0b\x32\x13.content.roles.Role\"\x1f\n\x0bListRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"2\n\x0cListResponse\x12\"\n\x05roles\x18\x01 \x03(\x0b\x32\x13.content.roles.Role\"2\n\rDeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07role_id\x18\x02 \x01(\t2\xd7\x02\n\x05Roles\x12G\n\x06\x43reate\x12\x1c.content.roles.CreateRequest\x1a\x1d.content.roles.CreateResponse\"\x00\x12>\n\x03Get\x12\x19.content.roles.GetRequest\x1a\x1a.content.roles.GetResponse\"\x00\x12@\n\x06Update\x12\x1c.content.roles.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x41\n\x04List\x12\x1a.content.roles.ListRequest\x1a\x1b.content.roles.ListResponse\"\x00\x12@\n\x06\x44\x65lete\x12\x1c.content.roles.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42-Z+git.perx.ru/perxis/perxis/proto/roles;rolesb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
-
-
-
-
-_ROLE = _descriptor.Descriptor(
-  name='Role',
-  full_name='content.roles.Role',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.roles.Role.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.roles.Role.space_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='content.roles.Role.description', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='rules', full_name='content.roles.Role.rules', index=3,
-      number=4, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='environments', full_name='content.roles.Role.environments', index=4,
-      number=5, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='allow_management', full_name='content.roles.Role.allow_management', index=5,
-      number=10, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=101,
-  serialized_end=235,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.roles.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='role', full_name='content.roles.CreateRequest.role', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=237,
-  serialized_end=287,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.roles.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='created', full_name='content.roles.CreateResponse.created', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=289,
-  serialized_end=343,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.roles.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.roles.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role_id', full_name='content.roles.GetRequest.role_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=345,
-  serialized_end=392,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.roles.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='role', full_name='content.roles.GetResponse.role', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=394,
-  serialized_end=442,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='content.roles.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='role', full_name='content.roles.UpdateRequest.role', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=444,
-  serialized_end=494,
-)
-
-
-_LISTREQUEST = _descriptor.Descriptor(
-  name='ListRequest',
-  full_name='content.roles.ListRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.roles.ListRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=496,
-  serialized_end=527,
-)
-
-
-_LISTRESPONSE = _descriptor.Descriptor(
-  name='ListResponse',
-  full_name='content.roles.ListResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='roles', full_name='content.roles.ListResponse.roles', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=529,
-  serialized_end=579,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.roles.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.roles.DeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='role_id', full_name='content.roles.DeleteRequest.role_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=581,
-  serialized_end=631,
-)
-
-_ROLE.fields_by_name['rules'].message_type = perxis_dot_common_dot_common__pb2._RULE
-_CREATEREQUEST.fields_by_name['role'].message_type = _ROLE
-_CREATERESPONSE.fields_by_name['created'].message_type = _ROLE
-_GETRESPONSE.fields_by_name['role'].message_type = _ROLE
-_UPDATEREQUEST.fields_by_name['role'].message_type = _ROLE
-_LISTRESPONSE.fields_by_name['roles'].message_type = _ROLE
-DESCRIPTOR.message_types_by_name['Role'] = _ROLE
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['ListRequest'] = _LISTREQUEST
-DESCRIPTOR.message_types_by_name['ListResponse'] = _LISTRESPONSE
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Role = _reflection.GeneratedProtocolMessageType('Role', (_message.Message,), {
-  'DESCRIPTOR' : _ROLE,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.Role)
-  })
-_sym_db.RegisterMessage(Role)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-ListRequest = _reflection.GeneratedProtocolMessageType('ListRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREQUEST,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.ListRequest)
-  })
-_sym_db.RegisterMessage(ListRequest)
-
-ListResponse = _reflection.GeneratedProtocolMessageType('ListResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTRESPONSE,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.ListResponse)
-  })
-_sym_db.RegisterMessage(ListResponse)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-
-DESCRIPTOR._options = None
-
-_ROLES = _descriptor.ServiceDescriptor(
-  name='Roles',
-  full_name='content.roles.Roles',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=634,
-  serialized_end=977,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.roles.Roles.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.roles.Roles.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='content.roles.Roles.Update',
-    index=2,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='List',
-    full_name='content.roles.Roles.List',
-    index=3,
-    containing_service=None,
-    input_type=_LISTREQUEST,
-    output_type=_LISTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.roles.Roles.Delete',
-    index=4,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_ROLES)
-
-DESCRIPTOR.services_by_name['Roles'] = _ROLES
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/roles/roles_pb2_grpc.py b/perxis/roles/roles_pb2_grpc.py
deleted file mode 100644
index cab5305abe0dfe262a728206efb623d11c1eeae4..0000000000000000000000000000000000000000
--- a/perxis/roles/roles_pb2_grpc.py
+++ /dev/null
@@ -1,204 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.roles import roles_pb2 as perxis_dot_roles_dot_roles__pb2
-
-
-class RolesStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.roles.Roles/Create',
-                request_serializer=perxis_dot_roles_dot_roles__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_roles_dot_roles__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.roles.Roles/Get',
-                request_serializer=perxis_dot_roles_dot_roles__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_roles_dot_roles__pb2.GetResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/content.roles.Roles/Update',
-                request_serializer=perxis_dot_roles_dot_roles__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.List = channel.unary_unary(
-                '/content.roles.Roles/List',
-                request_serializer=perxis_dot_roles_dot_roles__pb2.ListRequest.SerializeToString,
-                response_deserializer=perxis_dot_roles_dot_roles__pb2.ListResponse.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.roles.Roles/Delete',
-                request_serializer=perxis_dot_roles_dot_roles__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class RolesServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Create - создает роль в рамках пространства
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Get - возвращает роль по id
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Update - обновляет параметры роли
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def List(self, request, context):
-        """List - возвращает список ролей, созданных в пространстве
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Delete - удаляет указанную роль из пространстве
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_RolesServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_roles_dot_roles__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_roles_dot_roles__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_roles_dot_roles__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_roles_dot_roles__pb2.GetResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_roles_dot_roles__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'List': grpc.unary_unary_rpc_method_handler(
-                    servicer.List,
-                    request_deserializer=perxis_dot_roles_dot_roles__pb2.ListRequest.FromString,
-                    response_serializer=perxis_dot_roles_dot_roles__pb2.ListResponse.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_roles_dot_roles__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.roles.Roles', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Roles(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Create',
-            perxis_dot_roles_dot_roles__pb2.CreateRequest.SerializeToString,
-            perxis_dot_roles_dot_roles__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Get',
-            perxis_dot_roles_dot_roles__pb2.GetRequest.SerializeToString,
-            perxis_dot_roles_dot_roles__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Update',
-            perxis_dot_roles_dot_roles__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def List(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/List',
-            perxis_dot_roles_dot_roles__pb2.ListRequest.SerializeToString,
-            perxis_dot_roles_dot_roles__pb2.ListResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Delete',
-            perxis_dot_roles_dot_roles__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/spaces/spaces_pb2.py b/perxis/spaces/spaces_pb2.py
deleted file mode 100644
index 5dd91ec414dd293faccd6a374848b35ac2f7e6d0..0000000000000000000000000000000000000000
--- a/perxis/spaces/spaces_pb2.py
+++ /dev/null
@@ -1,665 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/spaces/spaces.proto
-"""Generated protocol buffer code."""
-from google.protobuf.internal import enum_type_wrapper
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/spaces/spaces.proto',
-  package='content.spaces',
-  syntax='proto3',
-  serialized_options=b'Z-git.perx.ru/perxis/perxis/proto/spaces;spaces',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1aperxis/spaces/spaces.proto\x12\x0e\x63ontent.spaces\x1a\x1bgoogle/protobuf/empty.proto\"\x94\x01\n\x05Space\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06org_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12$\n\x05state\x18\x05 \x01(\x0e\x32\x15.content.spaces.State\x12&\n\x06\x63onfig\x18\n \x01(\x0b\x32\x16.content.spaces.Config\"\x1a\n\x06\x43onfig\x12\x10\n\x08\x66\x65\x61tures\x18\x01 \x03(\t\"5\n\rCreateRequest\x12$\n\x05space\x18\x01 \x01(\x0b\x32\x15.content.spaces.Space\"8\n\x0e\x43reateResponse\x12&\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x15.content.spaces.Space\"\x1e\n\nGetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"3\n\x0bGetResponse\x12$\n\x05space\x18\x01 \x01(\x0b\x32\x15.content.spaces.Space\"\x1d\n\x0bListRequest\x12\x0e\n\x06org_id\x18\x01 \x01(\t\"5\n\x0cListResponse\x12%\n\x06spaces\x18\x01 \x03(\x0b\x32\x15.content.spaces.Space\"5\n\rUpdateRequest\x12$\n\x05space\x18\x01 \x01(\x0b\x32\x15.content.spaces.Space\"O\n\x13UpdateConfigRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12&\n\x06\x63onfig\x18\x02 \x01(\x0b\x32\x16.content.spaces.Config\"!\n\rDeleteRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t*p\n\x05State\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03NEW\x10\x01\x12\t\n\x05READY\x10\x02\x12\r\n\tPREPARING\x10\x03\x12\x0f\n\x0bMAINTENANCE\x10\x04\x12\r\n\tMIGRATION\x10\x05\x12\x0c\n\x08\x44\x45LETING\x10\x06\x12\t\n\x05\x45RROR\x10\x07\x32\xaf\x03\n\x06Spaces\x12I\n\x06\x43reate\x12\x1d.content.spaces.CreateRequest\x1a\x1e.content.spaces.CreateResponse\"\x00\x12@\n\x03Get\x12\x1a.content.spaces.GetRequest\x1a\x1b.content.spaces.GetResponse\"\x00\x12\x43\n\x04List\x12\x1b.content.spaces.ListRequest\x1a\x1c.content.spaces.ListResponse\"\x00\x12\x41\n\x06Update\x12\x1d.content.spaces.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12M\n\x0cUpdateConfig\x12#.content.spaces.UpdateConfigRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x41\n\x06\x44\x65lete\x12\x1d.content.spaces.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42/Z-git.perx.ru/perxis/perxis/proto/spaces;spacesb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
-
-_STATE = _descriptor.EnumDescriptor(
-  name='State',
-  full_name='content.spaces.State',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='UNKNOWN', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='NEW', index=1, number=1,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='READY', index=2, number=2,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='PREPARING', index=3, number=3,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='MAINTENANCE', index=4, number=4,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='MIGRATION', index=5, number=5,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='DELETING', index=6, number=6,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-    _descriptor.EnumValueDescriptor(
-      name='ERROR', index=7, number=7,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=709,
-  serialized_end=821,
-)
-_sym_db.RegisterEnumDescriptor(_STATE)
-
-State = enum_type_wrapper.EnumTypeWrapper(_STATE)
-UNKNOWN = 0
-NEW = 1
-READY = 2
-PREPARING = 3
-MAINTENANCE = 4
-MIGRATION = 5
-DELETING = 6
-ERROR = 7
-
-
-
-_SPACE = _descriptor.Descriptor(
-  name='Space',
-  full_name='content.spaces.Space',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='content.spaces.Space.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='content.spaces.Space.org_id', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='content.spaces.Space.name', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='content.spaces.Space.description', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='state', full_name='content.spaces.Space.state', index=4,
-      number=5, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='config', full_name='content.spaces.Space.config', index=5,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=76,
-  serialized_end=224,
-)
-
-
-_CONFIG = _descriptor.Descriptor(
-  name='Config',
-  full_name='content.spaces.Config',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='features', full_name='content.spaces.Config.features', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=226,
-  serialized_end=252,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='content.spaces.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space', full_name='content.spaces.CreateRequest.space', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=254,
-  serialized_end=307,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='content.spaces.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='created', full_name='content.spaces.CreateResponse.created', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=309,
-  serialized_end=365,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='content.spaces.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.spaces.GetRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=367,
-  serialized_end=397,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.spaces.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space', full_name='content.spaces.GetResponse.space', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=399,
-  serialized_end=450,
-)
-
-
-_LISTREQUEST = _descriptor.Descriptor(
-  name='ListRequest',
-  full_name='content.spaces.ListRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='org_id', full_name='content.spaces.ListRequest.org_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=452,
-  serialized_end=481,
-)
-
-
-_LISTRESPONSE = _descriptor.Descriptor(
-  name='ListResponse',
-  full_name='content.spaces.ListResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='spaces', full_name='content.spaces.ListResponse.spaces', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=483,
-  serialized_end=536,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='content.spaces.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space', full_name='content.spaces.UpdateRequest.space', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=538,
-  serialized_end=591,
-)
-
-
-_UPDATECONFIGREQUEST = _descriptor.Descriptor(
-  name='UpdateConfigRequest',
-  full_name='content.spaces.UpdateConfigRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.spaces.UpdateConfigRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='config', full_name='content.spaces.UpdateConfigRequest.config', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=593,
-  serialized_end=672,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='content.spaces.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.spaces.DeleteRequest.space_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=674,
-  serialized_end=707,
-)
-
-_SPACE.fields_by_name['state'].enum_type = _STATE
-_SPACE.fields_by_name['config'].message_type = _CONFIG
-_CREATEREQUEST.fields_by_name['space'].message_type = _SPACE
-_CREATERESPONSE.fields_by_name['created'].message_type = _SPACE
-_GETRESPONSE.fields_by_name['space'].message_type = _SPACE
-_LISTRESPONSE.fields_by_name['spaces'].message_type = _SPACE
-_UPDATEREQUEST.fields_by_name['space'].message_type = _SPACE
-_UPDATECONFIGREQUEST.fields_by_name['config'].message_type = _CONFIG
-DESCRIPTOR.message_types_by_name['Space'] = _SPACE
-DESCRIPTOR.message_types_by_name['Config'] = _CONFIG
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['ListRequest'] = _LISTREQUEST
-DESCRIPTOR.message_types_by_name['ListResponse'] = _LISTRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['UpdateConfigRequest'] = _UPDATECONFIGREQUEST
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-DESCRIPTOR.enum_types_by_name['State'] = _STATE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Space = _reflection.GeneratedProtocolMessageType('Space', (_message.Message,), {
-  'DESCRIPTOR' : _SPACE,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.Space)
-  })
-_sym_db.RegisterMessage(Space)
-
-Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), {
-  'DESCRIPTOR' : _CONFIG,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.Config)
-  })
-_sym_db.RegisterMessage(Config)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-ListRequest = _reflection.GeneratedProtocolMessageType('ListRequest', (_message.Message,), {
-  'DESCRIPTOR' : _LISTREQUEST,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.ListRequest)
-  })
-_sym_db.RegisterMessage(ListRequest)
-
-ListResponse = _reflection.GeneratedProtocolMessageType('ListResponse', (_message.Message,), {
-  'DESCRIPTOR' : _LISTRESPONSE,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.ListResponse)
-  })
-_sym_db.RegisterMessage(ListResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-UpdateConfigRequest = _reflection.GeneratedProtocolMessageType('UpdateConfigRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATECONFIGREQUEST,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.UpdateConfigRequest)
-  })
-_sym_db.RegisterMessage(UpdateConfigRequest)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.spaces.spaces_pb2'
-  # @@protoc_insertion_point(class_scope:content.spaces.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-
-DESCRIPTOR._options = None
-
-_SPACES = _descriptor.ServiceDescriptor(
-  name='Spaces',
-  full_name='content.spaces.Spaces',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=824,
-  serialized_end=1255,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='content.spaces.Spaces.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.spaces.Spaces.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='List',
-    full_name='content.spaces.Spaces.List',
-    index=2,
-    containing_service=None,
-    input_type=_LISTREQUEST,
-    output_type=_LISTRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='content.spaces.Spaces.Update',
-    index=3,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='UpdateConfig',
-    full_name='content.spaces.Spaces.UpdateConfig',
-    index=4,
-    containing_service=None,
-    input_type=_UPDATECONFIGREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='content.spaces.Spaces.Delete',
-    index=5,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_SPACES)
-
-DESCRIPTOR.services_by_name['Spaces'] = _SPACES
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/spaces/spaces_pb2_grpc.py b/perxis/spaces/spaces_pb2_grpc.py
deleted file mode 100644
index 34911870fff30869ab8d72a6006f7a8d23ce1b0b..0000000000000000000000000000000000000000
--- a/perxis/spaces/spaces_pb2_grpc.py
+++ /dev/null
@@ -1,232 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.spaces import spaces_pb2 as perxis_dot_spaces_dot_spaces__pb2
-
-
-class SpacesStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/content.spaces.Spaces/Create',
-                request_serializer=perxis_dot_spaces_dot_spaces__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_spaces_dot_spaces__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/content.spaces.Spaces/Get',
-                request_serializer=perxis_dot_spaces_dot_spaces__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_spaces_dot_spaces__pb2.GetResponse.FromString,
-                )
-        self.List = channel.unary_unary(
-                '/content.spaces.Spaces/List',
-                request_serializer=perxis_dot_spaces_dot_spaces__pb2.ListRequest.SerializeToString,
-                response_deserializer=perxis_dot_spaces_dot_spaces__pb2.ListResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/content.spaces.Spaces/Update',
-                request_serializer=perxis_dot_spaces_dot_spaces__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.UpdateConfig = channel.unary_unary(
-                '/content.spaces.Spaces/UpdateConfig',
-                request_serializer=perxis_dot_spaces_dot_spaces__pb2.UpdateConfigRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/content.spaces.Spaces/Delete',
-                request_serializer=perxis_dot_spaces_dot_spaces__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-
-
-class SpacesServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def List(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def UpdateConfig(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_SpacesServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_spaces_dot_spaces__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_spaces_dot_spaces__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_spaces_dot_spaces__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_spaces_dot_spaces__pb2.GetResponse.SerializeToString,
-            ),
-            'List': grpc.unary_unary_rpc_method_handler(
-                    servicer.List,
-                    request_deserializer=perxis_dot_spaces_dot_spaces__pb2.ListRequest.FromString,
-                    response_serializer=perxis_dot_spaces_dot_spaces__pb2.ListResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_spaces_dot_spaces__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'UpdateConfig': grpc.unary_unary_rpc_method_handler(
-                    servicer.UpdateConfig,
-                    request_deserializer=perxis_dot_spaces_dot_spaces__pb2.UpdateConfigRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_spaces_dot_spaces__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.spaces.Spaces', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Spaces(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Create',
-            perxis_dot_spaces_dot_spaces__pb2.CreateRequest.SerializeToString,
-            perxis_dot_spaces_dot_spaces__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Get',
-            perxis_dot_spaces_dot_spaces__pb2.GetRequest.SerializeToString,
-            perxis_dot_spaces_dot_spaces__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def List(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/List',
-            perxis_dot_spaces_dot_spaces__pb2.ListRequest.SerializeToString,
-            perxis_dot_spaces_dot_spaces__pb2.ListResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Update',
-            perxis_dot_spaces_dot_spaces__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def UpdateConfig(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/UpdateConfig',
-            perxis_dot_spaces_dot_spaces__pb2.UpdateConfigRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Delete',
-            perxis_dot_spaces_dot_spaces__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/status/status_pb2.py b/perxis/status/status_pb2.py
deleted file mode 100644
index e9d00c310fc3e39adee98df79a32752933c49924..0000000000000000000000000000000000000000
--- a/perxis/status/status_pb2.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/status/status.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/status/status.proto',
-  package='google.rpc',
-  syntax='proto3',
-  serialized_options=b'\n\016com.google.rpcB\013StatusProtoP\001',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1aperxis/status/status.proto\x12\ngoogle.rpc\x1a\x19google/protobuf/any.proto\"N\n\x06Status\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\t\x12%\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyB\x1f\n\x0e\x63om.google.rpcB\x0bStatusProtoP\x01\x62\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,])
-
-
-
-
-_STATUS = _descriptor.Descriptor(
-  name='Status',
-  full_name='google.rpc.Status',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='code', full_name='google.rpc.Status.code', index=0,
-      number=1, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='message', full_name='google.rpc.Status.message', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='details', full_name='google.rpc.Status.details', index=2,
-      number=3, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=69,
-  serialized_end=147,
-)
-
-_STATUS.fields_by_name['details'].message_type = google_dot_protobuf_dot_any__pb2._ANY
-DESCRIPTOR.message_types_by_name['Status'] = _STATUS
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Status = _reflection.GeneratedProtocolMessageType('Status', (_message.Message,), {
-  'DESCRIPTOR' : _STATUS,
-  '__module__' : 'perxis.status.status_pb2'
-  # @@protoc_insertion_point(class_scope:google.rpc.Status)
-  })
-_sym_db.RegisterMessage(Status)
-
-
-DESCRIPTOR._options = None
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/status/status_pb2_grpc.py b/perxis/status/status_pb2_grpc.py
deleted file mode 100644
index 2daafffebfc817aefe8fcb96eaec25e65b3903e8..0000000000000000000000000000000000000000
--- a/perxis/status/status_pb2_grpc.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
diff --git a/perxis/users/users_pb2.py b/perxis/users/users_pb2.py
deleted file mode 100644
index d17f3db56ad707d5a229824f597c651f242003ca..0000000000000000000000000000000000000000
--- a/perxis/users/users_pb2.py
+++ /dev/null
@@ -1,708 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/users/users.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/users/users.proto',
-  package='account.users',
-  syntax='proto3',
-  serialized_options=b'Z+git.perx.ru/perxis/perxis/proto/users;users',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x18perxis/users/users.proto\x12\raccount.users\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1aperxis/common/common.proto\"\xcd\x01\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nidentities\x18\x03 \x03(\t\x12\x14\n\x0c\x64isplay_name\x18\x04 \x01(\t\x12\r\n\x05\x65mail\x18\x05 \x01(\t\x12\x32\n\x0e\x65mail_verified\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x12\n\navatar_url\x18\x07 \x01(\t\x12*\n\x06system\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\xbb\x01\n\x06\x46ilter\x12\n\n\x02id\x18\x01 \x03(\t\x12\x0c\n\x04name\x18\x02 \x03(\t\x12\x12\n\nidentities\x18\x03 \x03(\t\x12\x14\n\x0c\x64isplay_name\x18\x04 \x03(\t\x12\r\n\x05\x65mail\x18\x05 \x03(\t\x12\x32\n\x0e\x65mail_verified\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12*\n\x06system\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"4\n\rCreateRequest\x12#\n\x06\x63reate\x18\x01 \x01(\x0b\x32\x13.account.users.User\"3\n\x0e\x43reateResponse\x12!\n\x04user\x18\x01 \x01(\x0b\x32\x13.account.users.User\"\x1d\n\nGetRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\"0\n\x0bGetResponse\x12!\n\x04user\x18\x01 \x01(\x0b\x32\x13.account.users.User\"Z\n\x0b\x46indRequest\x12%\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x15.account.users.Filter\x12$\n\x07options\x18\n \x01(\x0b\x32\x13.common.FindOptions\"A\n\x0c\x46indResponse\x12\"\n\x05users\x18\x01 \x03(\x0b\x32\x13.account.users.User\x12\r\n\x05total\x18\x02 \x01(\x03\"4\n\rUpdateRequest\x12#\n\x06update\x18\x02 \x01(\x0b\x32\x13.account.users.User\" \n\rDeleteRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\"(\n\x14GetByIdentityRequest\x12\x10\n\x08identity\x18\x01 \x01(\t\":\n\x15GetByIdentityResponse\x12!\n\x04user\x18\x01 \x01(\x0b\x32\x13.account.users.User2\xb5\x03\n\x05Users\x12G\n\x06\x43reate\x12\x1c.account.users.CreateRequest\x1a\x1d.account.users.CreateResponse\"\x00\x12>\n\x03Get\x12\x19.account.users.GetRequest\x1a\x1a.account.users.GetResponse\"\x00\x12\x41\n\x04\x46ind\x12\x1a.account.users.FindRequest\x1a\x1b.account.users.FindResponse\"\x00\x12@\n\x06Update\x12\x1c.account.users.UpdateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12@\n\x06\x44\x65lete\x12\x1c.account.users.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\\\n\rGetByIdentity\x12#.account.users.GetByIdentityRequest\x1a$.account.users.GetByIdentityResponse\"\x00\x42-Z+git.perx.ru/perxis/perxis/proto/users;usersb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
-
-
-
-
-_USER = _descriptor.Descriptor(
-  name='User',
-  full_name='account.users.User',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='account.users.User.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='account.users.User.name', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='identities', full_name='account.users.User.identities', index=2,
-      number=3, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='display_name', full_name='account.users.User.display_name', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='email', full_name='account.users.User.email', index=4,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='email_verified', full_name='account.users.User.email_verified', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='avatar_url', full_name='account.users.User.avatar_url', index=6,
-      number=7, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='system', full_name='account.users.User.system', index=7,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=133,
-  serialized_end=338,
-)
-
-
-_FILTER = _descriptor.Descriptor(
-  name='Filter',
-  full_name='account.users.Filter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='account.users.Filter.id', index=0,
-      number=1, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='account.users.Filter.name', index=1,
-      number=2, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='identities', full_name='account.users.Filter.identities', index=2,
-      number=3, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='display_name', full_name='account.users.Filter.display_name', index=3,
-      number=4, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='email', full_name='account.users.Filter.email', index=4,
-      number=5, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='email_verified', full_name='account.users.Filter.email_verified', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='system', full_name='account.users.Filter.system', index=6,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=341,
-  serialized_end=528,
-)
-
-
-_CREATEREQUEST = _descriptor.Descriptor(
-  name='CreateRequest',
-  full_name='account.users.CreateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='create', full_name='account.users.CreateRequest.create', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=530,
-  serialized_end=582,
-)
-
-
-_CREATERESPONSE = _descriptor.Descriptor(
-  name='CreateResponse',
-  full_name='account.users.CreateResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='user', full_name='account.users.CreateResponse.user', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=584,
-  serialized_end=635,
-)
-
-
-_GETREQUEST = _descriptor.Descriptor(
-  name='GetRequest',
-  full_name='account.users.GetRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.users.GetRequest.user_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=637,
-  serialized_end=666,
-)
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='account.users.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='user', full_name='account.users.GetResponse.user', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=668,
-  serialized_end=716,
-)
-
-
-_FINDREQUEST = _descriptor.Descriptor(
-  name='FindRequest',
-  full_name='account.users.FindRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='filter', full_name='account.users.FindRequest.filter', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='options', full_name='account.users.FindRequest.options', index=1,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=718,
-  serialized_end=808,
-)
-
-
-_FINDRESPONSE = _descriptor.Descriptor(
-  name='FindResponse',
-  full_name='account.users.FindResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='users', full_name='account.users.FindResponse.users', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='account.users.FindResponse.total', index=1,
-      number=2, type=3, cpp_type=2, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=810,
-  serialized_end=875,
-)
-
-
-_UPDATEREQUEST = _descriptor.Descriptor(
-  name='UpdateRequest',
-  full_name='account.users.UpdateRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='update', full_name='account.users.UpdateRequest.update', index=0,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=877,
-  serialized_end=929,
-)
-
-
-_DELETEREQUEST = _descriptor.Descriptor(
-  name='DeleteRequest',
-  full_name='account.users.DeleteRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.users.DeleteRequest.user_id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=931,
-  serialized_end=963,
-)
-
-
-_GETBYIDENTITYREQUEST = _descriptor.Descriptor(
-  name='GetByIdentityRequest',
-  full_name='account.users.GetByIdentityRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='identity', full_name='account.users.GetByIdentityRequest.identity', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=965,
-  serialized_end=1005,
-)
-
-
-_GETBYIDENTITYRESPONSE = _descriptor.Descriptor(
-  name='GetByIdentityResponse',
-  full_name='account.users.GetByIdentityResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='user', full_name='account.users.GetByIdentityResponse.user', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1007,
-  serialized_end=1065,
-)
-
-_USER.fields_by_name['email_verified'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_USER.fields_by_name['system'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_FILTER.fields_by_name['email_verified'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_FILTER.fields_by_name['system'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_CREATEREQUEST.fields_by_name['create'].message_type = _USER
-_CREATERESPONSE.fields_by_name['user'].message_type = _USER
-_GETRESPONSE.fields_by_name['user'].message_type = _USER
-_FINDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDREQUEST.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
-_FINDRESPONSE.fields_by_name['users'].message_type = _USER
-_UPDATEREQUEST.fields_by_name['update'].message_type = _USER
-_GETBYIDENTITYRESPONSE.fields_by_name['user'].message_type = _USER
-DESCRIPTOR.message_types_by_name['User'] = _USER
-DESCRIPTOR.message_types_by_name['Filter'] = _FILTER
-DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
-DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
-DESCRIPTOR.message_types_by_name['GetRequest'] = _GETREQUEST
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-DESCRIPTOR.message_types_by_name['FindRequest'] = _FINDREQUEST
-DESCRIPTOR.message_types_by_name['FindResponse'] = _FINDRESPONSE
-DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
-DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
-DESCRIPTOR.message_types_by_name['GetByIdentityRequest'] = _GETBYIDENTITYREQUEST
-DESCRIPTOR.message_types_by_name['GetByIdentityResponse'] = _GETBYIDENTITYRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), {
-  'DESCRIPTOR' : _USER,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.User)
-  })
-_sym_db.RegisterMessage(User)
-
-Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
-  'DESCRIPTOR' : _FILTER,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.Filter)
-  })
-_sym_db.RegisterMessage(Filter)
-
-CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.CreateRequest)
-  })
-_sym_db.RegisterMessage(CreateRequest)
-
-CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), {
-  'DESCRIPTOR' : _CREATERESPONSE,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.CreateResponse)
-  })
-_sym_db.RegisterMessage(CreateResponse)
-
-GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.GetRequest)
-  })
-_sym_db.RegisterMessage(GetRequest)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-FindRequest = _reflection.GeneratedProtocolMessageType('FindRequest', (_message.Message,), {
-  'DESCRIPTOR' : _FINDREQUEST,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.FindRequest)
-  })
-_sym_db.RegisterMessage(FindRequest)
-
-FindResponse = _reflection.GeneratedProtocolMessageType('FindResponse', (_message.Message,), {
-  'DESCRIPTOR' : _FINDRESPONSE,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.FindResponse)
-  })
-_sym_db.RegisterMessage(FindResponse)
-
-UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
-  'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.UpdateRequest)
-  })
-_sym_db.RegisterMessage(UpdateRequest)
-
-DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.DeleteRequest)
-  })
-_sym_db.RegisterMessage(DeleteRequest)
-
-GetByIdentityRequest = _reflection.GeneratedProtocolMessageType('GetByIdentityRequest', (_message.Message,), {
-  'DESCRIPTOR' : _GETBYIDENTITYREQUEST,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.GetByIdentityRequest)
-  })
-_sym_db.RegisterMessage(GetByIdentityRequest)
-
-GetByIdentityResponse = _reflection.GeneratedProtocolMessageType('GetByIdentityResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETBYIDENTITYRESPONSE,
-  '__module__' : 'perxis.users.users_pb2'
-  # @@protoc_insertion_point(class_scope:account.users.GetByIdentityResponse)
-  })
-_sym_db.RegisterMessage(GetByIdentityResponse)
-
-
-DESCRIPTOR._options = None
-
-_USERS = _descriptor.ServiceDescriptor(
-  name='Users',
-  full_name='account.users.Users',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=1068,
-  serialized_end=1505,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Create',
-    full_name='account.users.Users.Create',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEREQUEST,
-    output_type=_CREATERESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='account.users.Users.Get',
-    index=1,
-    containing_service=None,
-    input_type=_GETREQUEST,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Find',
-    full_name='account.users.Users.Find',
-    index=2,
-    containing_service=None,
-    input_type=_FINDREQUEST,
-    output_type=_FINDRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Update',
-    full_name='account.users.Users.Update',
-    index=3,
-    containing_service=None,
-    input_type=_UPDATEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='Delete',
-    full_name='account.users.Users.Delete',
-    index=4,
-    containing_service=None,
-    input_type=_DELETEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='GetByIdentity',
-    full_name='account.users.Users.GetByIdentity',
-    index=5,
-    containing_service=None,
-    input_type=_GETBYIDENTITYREQUEST,
-    output_type=_GETBYIDENTITYRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_USERS)
-
-DESCRIPTOR.services_by_name['Users'] = _USERS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/users/users_pb2_grpc.py b/perxis/users/users_pb2_grpc.py
deleted file mode 100644
index 526520aa958bb60e0ded157215e8ee45c181c076..0000000000000000000000000000000000000000
--- a/perxis/users/users_pb2_grpc.py
+++ /dev/null
@@ -1,242 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.users import users_pb2 as perxis_dot_users_dot_users__pb2
-
-
-class UsersStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Create = channel.unary_unary(
-                '/account.users.Users/Create',
-                request_serializer=perxis_dot_users_dot_users__pb2.CreateRequest.SerializeToString,
-                response_deserializer=perxis_dot_users_dot_users__pb2.CreateResponse.FromString,
-                )
-        self.Get = channel.unary_unary(
-                '/account.users.Users/Get',
-                request_serializer=perxis_dot_users_dot_users__pb2.GetRequest.SerializeToString,
-                response_deserializer=perxis_dot_users_dot_users__pb2.GetResponse.FromString,
-                )
-        self.Find = channel.unary_unary(
-                '/account.users.Users/Find',
-                request_serializer=perxis_dot_users_dot_users__pb2.FindRequest.SerializeToString,
-                response_deserializer=perxis_dot_users_dot_users__pb2.FindResponse.FromString,
-                )
-        self.Update = channel.unary_unary(
-                '/account.users.Users/Update',
-                request_serializer=perxis_dot_users_dot_users__pb2.UpdateRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.Delete = channel.unary_unary(
-                '/account.users.Users/Delete',
-                request_serializer=perxis_dot_users_dot_users__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.GetByIdentity = channel.unary_unary(
-                '/account.users.Users/GetByIdentity',
-                request_serializer=perxis_dot_users_dot_users__pb2.GetByIdentityRequest.SerializeToString,
-                response_deserializer=perxis_dot_users_dot_users__pb2.GetByIdentityResponse.FromString,
-                )
-
-
-class UsersServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Create(self, request, context):
-        """Создание пользователя или регистрация текущего пользователя в системе, если create.id == `current`
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Get(self, request, context):
-        """- Получение любого пользователя по идентификатору
-        - Получение текущего (от лица которого делается запрос) пользователя по специальному идентификатору `current`
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Find(self, request, context):
-        """Найти пользователей с фильтрацией. Фильтры доступны пользователям в зависимости от их прав
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Update(self, request, context):
-        """- Обновление существующего пользователя по идентификатору
-        - Обновление текущего пользователя по спец. идентификатору `current`
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def Delete(self, request, context):
-        """- Удаление существующего пользователя по идентификатору
-        - Удаление текущего пользователя по спец. идентификатору `current`
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def GetByIdentity(self, request, context):
-        """Метод для внутреннего использования. Недоступен для внешних
-        запросов - авторизация вернет ошибку `access denied`
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_UsersServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Create': grpc.unary_unary_rpc_method_handler(
-                    servicer.Create,
-                    request_deserializer=perxis_dot_users_dot_users__pb2.CreateRequest.FromString,
-                    response_serializer=perxis_dot_users_dot_users__pb2.CreateResponse.SerializeToString,
-            ),
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=perxis_dot_users_dot_users__pb2.GetRequest.FromString,
-                    response_serializer=perxis_dot_users_dot_users__pb2.GetResponse.SerializeToString,
-            ),
-            'Find': grpc.unary_unary_rpc_method_handler(
-                    servicer.Find,
-                    request_deserializer=perxis_dot_users_dot_users__pb2.FindRequest.FromString,
-                    response_serializer=perxis_dot_users_dot_users__pb2.FindResponse.SerializeToString,
-            ),
-            'Update': grpc.unary_unary_rpc_method_handler(
-                    servicer.Update,
-                    request_deserializer=perxis_dot_users_dot_users__pb2.UpdateRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'Delete': grpc.unary_unary_rpc_method_handler(
-                    servicer.Delete,
-                    request_deserializer=perxis_dot_users_dot_users__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'GetByIdentity': grpc.unary_unary_rpc_method_handler(
-                    servicer.GetByIdentity,
-                    request_deserializer=perxis_dot_users_dot_users__pb2.GetByIdentityRequest.FromString,
-                    response_serializer=perxis_dot_users_dot_users__pb2.GetByIdentityResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'account.users.Users', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Users(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Create(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.users.Users/Create',
-            perxis_dot_users_dot_users__pb2.CreateRequest.SerializeToString,
-            perxis_dot_users_dot_users__pb2.CreateResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.users.Users/Get',
-            perxis_dot_users_dot_users__pb2.GetRequest.SerializeToString,
-            perxis_dot_users_dot_users__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Find(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.users.Users/Find',
-            perxis_dot_users_dot_users__pb2.FindRequest.SerializeToString,
-            perxis_dot_users_dot_users__pb2.FindResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Update(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.users.Users/Update',
-            perxis_dot_users_dot_users__pb2.UpdateRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def Delete(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.users.Users/Delete',
-            perxis_dot_users_dot_users__pb2.DeleteRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def GetByIdentity(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.users.Users/GetByIdentity',
-            perxis_dot_users_dot_users__pb2.GetByIdentityRequest.SerializeToString,
-            perxis_dot_users_dot_users__pb2.GetByIdentityResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/versions/account/versions_pb2.py b/perxis/versions/account/versions_pb2.py
deleted file mode 100644
index 6d2237f40ccca62724b25213056e021de7ee49c4..0000000000000000000000000000000000000000
--- a/perxis/versions/account/versions_pb2.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/versions/account/versions.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/versions/account/versions.proto',
-  package='account',
-  syntax='proto3',
-  serialized_options=b'Z8git.perx.ru/perxis/perxis/proto/versions/account;account',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n&perxis/versions/account/versions.proto\x12\x07\x61\x63\x63ount\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"/\n\x0bGetResponse\x12 \n\x07version\x18\x01 \x01(\x0b\x32\x0f.common.Version2A\n\x08Versions\x12\x35\n\x03Get\x12\x16.google.protobuf.Empty\x1a\x14.account.GetResponse\"\x00\x42:Z8git.perx.ru/perxis/perxis/proto/versions/account;accountb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
-
-
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='account.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='version', full_name='account.GetResponse.version', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=108,
-  serialized_end=155,
-)
-
-_GETRESPONSE.fields_by_name['version'].message_type = perxis_dot_common_dot_common__pb2._VERSION
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.versions.account.versions_pb2'
-  # @@protoc_insertion_point(class_scope:account.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-
-DESCRIPTOR._options = None
-
-_VERSIONS = _descriptor.ServiceDescriptor(
-  name='Versions',
-  full_name='account.Versions',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=157,
-  serialized_end=222,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='account.Versions.Get',
-    index=0,
-    containing_service=None,
-    input_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_VERSIONS)
-
-DESCRIPTOR.services_by_name['Versions'] = _VERSIONS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/versions/account/versions_pb2_grpc.py b/perxis/versions/account/versions_pb2_grpc.py
deleted file mode 100644
index 4db38eb732a0c0bbc4c9268fdfa0cdfc5ae1d2d9..0000000000000000000000000000000000000000
--- a/perxis/versions/account/versions_pb2_grpc.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.versions.account import versions_pb2 as perxis_dot_versions_dot_account_dot_versions__pb2
-
-
-class VersionsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Get = channel.unary_unary(
-                '/account.Versions/Get',
-                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-                response_deserializer=perxis_dot_versions_dot_account_dot_versions__pb2.GetResponse.FromString,
-                )
-
-
-class VersionsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_VersionsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                    response_serializer=perxis_dot_versions_dot_account_dot_versions__pb2.GetResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'account.Versions', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Versions(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/account.Versions/Get',
-            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            perxis_dot_versions_dot_account_dot_versions__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/versions/content/versions_pb2.py b/perxis/versions/content/versions_pb2.py
deleted file mode 100644
index f697c0798e7c3ba947994e66df8fc332875067db..0000000000000000000000000000000000000000
--- a/perxis/versions/content/versions_pb2.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: perxis/versions/content/versions.proto
-"""Generated protocol buffer code."""
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='perxis/versions/content/versions.proto',
-  package='content',
-  syntax='proto3',
-  serialized_options=b'Z8git.perx.ru/perxis/perxis/proto/versions/content;content',
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n&perxis/versions/content/versions.proto\x12\x07\x63ontent\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"/\n\x0bGetResponse\x12 \n\x07version\x18\x01 \x01(\x0b\x32\x0f.common.Version2A\n\x08Versions\x12\x35\n\x03Get\x12\x16.google.protobuf.Empty\x1a\x14.content.GetResponse\"\x00\x42:Z8git.perx.ru/perxis/perxis/proto/versions/content;contentb\x06proto3'
-  ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
-
-
-
-
-_GETRESPONSE = _descriptor.Descriptor(
-  name='GetResponse',
-  full_name='content.GetResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='version', full_name='content.GetResponse.version', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=108,
-  serialized_end=155,
-)
-
-_GETRESPONSE.fields_by_name['version'].message_type = perxis_dot_common_dot_common__pb2._VERSION
-DESCRIPTOR.message_types_by_name['GetResponse'] = _GETRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-GetResponse = _reflection.GeneratedProtocolMessageType('GetResponse', (_message.Message,), {
-  'DESCRIPTOR' : _GETRESPONSE,
-  '__module__' : 'perxis.versions.content.versions_pb2'
-  # @@protoc_insertion_point(class_scope:content.GetResponse)
-  })
-_sym_db.RegisterMessage(GetResponse)
-
-
-DESCRIPTOR._options = None
-
-_VERSIONS = _descriptor.ServiceDescriptor(
-  name='Versions',
-  full_name='content.Versions',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=157,
-  serialized_end=222,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Get',
-    full_name='content.Versions.Get',
-    index=0,
-    containing_service=None,
-    input_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    output_type=_GETRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_VERSIONS)
-
-DESCRIPTOR.services_by_name['Versions'] = _VERSIONS
-
-# @@protoc_insertion_point(module_scope)
diff --git a/perxis/versions/content/versions_pb2_grpc.py b/perxis/versions/content/versions_pb2_grpc.py
deleted file mode 100644
index 2e6b4cb218732b9ec9cb0265fed36c0fcf268149..0000000000000000000000000000000000000000
--- a/perxis/versions/content/versions_pb2_grpc.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from perxis.versions.content import versions_pb2 as perxis_dot_versions_dot_content_dot_versions__pb2
-
-
-class VersionsStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Get = channel.unary_unary(
-                '/content.Versions/Get',
-                request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-                response_deserializer=perxis_dot_versions_dot_content_dot_versions__pb2.GetResponse.FromString,
-                )
-
-
-class VersionsServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Get(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_VersionsServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Get': grpc.unary_unary_rpc_method_handler(
-                    servicer.Get,
-                    request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                    response_serializer=perxis_dot_versions_dot_content_dot_versions__pb2.GetResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'content.Versions', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Versions(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Get(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/content.Versions/Get',
-            google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            perxis_dot_versions_dot_content_dot_versions__pb2.GetResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/proto/perxis/clients/clients.proto b/proto/perxis/clients/clients.proto
deleted file mode 100644
index 6a9cd6e10d88bd539e69c266a204ad4c2010bd1b..0000000000000000000000000000000000000000
--- a/proto/perxis/clients/clients.proto
+++ /dev/null
@@ -1,125 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/clients;clients";
-
-package content.clients;
-
-message Client {
-  message OAuth {
-      string client_id = 4;       // Идентификатор клиента выданные IdP сервером, используется для идентификации клиента
-      string auth_id = 5;    // Сервис который используется для авторизации клиента
-      string token_url = 10;      // URL для получения/обновления access token клиента (опционально)
-      string client_secret = 11;    // Секретный Ключ клиента, используется для идентификации клиента (опционально)
-  }
-  message APIKey {
-    string key = 1;
-    bool rotate = 2;
-  }
-  message TLS {
-    string subject = 1;
-  }
-
-  // Внутренний идентификатор клиента внутри системы
-  string id = 1;
-
-  // Идентификатор пространства
-  string space_id = 2;
-
-  // Имя приложения (обязательное поле)
-  string name = 3;
-
-  // Описание клиента, назначение
-  string description = 6;
-
-  // Приложение отключено и не может авторизоваться
-  optional bool disabled = 7;
-
-//  // Приложение имеет доступ к указанным окружениям пространства (ID или Alias)
-//  repeated string environments = 8;
-//
-//  // Список правил доступа к коллекциям
-//  repeated common.Rule rules = 9;
-
-  string role_id = 8;
-
-  OAuth oauth = 10;
-  TLS tls = 11;
-  APIKey api_key = 12;
-}
-
-message CreateRequest {
-  Client client = 1;
-}
-
-message CreateResponse {
-  Client created = 1;
-}
-
-message GetRequest {
-  string space_id = 1;
-  string id = 2;
-}
-
-message GetResponse {
-  Client client = 1;
-}
-
-message GetByRequest {
-  string space_id = 1;
-  string oauth_client_id = 2;
-  string tls_subject= 3;
-  string api_key = 4;
-}
-
-message GetByResponse {
-  Client client = 1;
-}
-
-message UpdateRequest {
-  Client client = 1;
-}
-
-message ListRequest {
-  string space_id = 1;
-}
-
-message ListResponse {
-  repeated Client clients = 1;
-}
-
-message DeleteRequest {
-  string space_id = 1;
-  string id = 2;
-}
-
-message EnableRequest {
-  string space_id = 1;
-  string id = 2;
-  bool enable = 3;
-}
-
-service Clients  {
-
-  // Create - создает клиента (приложение) для работы с API
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-
-  // Get - возвращает клиента по id
-  rpc Get(GetRequest) returns(GetResponse) {}
-
-  // GetByClientID - возвращает клиента по clientId системы авторизации
-  rpc GetBy(GetByRequest) returns(GetByResponse) {}
-
-  // Update - обновляет параметры клиента
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-
-  // List - возвращает список клиентов созданных в пространстве
-  rpc List(ListRequest) returns(ListResponse) {}
-
-  // Delete - удаляет указанного клиента из пространстве
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-
-  // Enable - активирует/деактивирует клиента. Клиент не сможет обращаться к API платформы
-  rpc Enable(EnableRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/collaborators/collaborators.proto b/proto/perxis/collaborators/collaborators.proto
deleted file mode 100644
index 256cc6d44451761d22b8425b5b8ae1f1b1259964..0000000000000000000000000000000000000000
--- a/proto/perxis/collaborators/collaborators.proto
+++ /dev/null
@@ -1,52 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/collaborators;collaborators";
-
-package content.collaborators;
-
-message SetRequest {
-  string space_id = 1;
-  string subject = 2;
-  string role = 3;
-}
-
-message GetRequest {
-  string space_id = 1;
-  string subject = 2;
-}
-
-message GetResponse {
-  string role = 3;
-}
-
-message RemoveRequest {
-  string space_id = 1;
-  string subject = 2;
-}
-
-message ListCollaboratorsRequest {
-  string space_id = 1;
-}
-
-message ListCollaboratorsResponse {
-  repeated common.Collaborator collaborators = 1;
-}
-
-message ListSpacesRequest {
-  string subject = 1;
-}
-
-message ListSpacesResponse {
-  repeated common.Collaborator spaces = 1;
-}
-
-service Collaborators {
-  rpc Set(SetRequest) returns(google.protobuf.Empty) {}
-  rpc Get(GetRequest) returns(GetResponse) {}
-  rpc Remove(RemoveRequest) returns(google.protobuf.Empty) {}
-  rpc ListCollaborators(ListCollaboratorsRequest) returns(ListCollaboratorsResponse) {}
-  rpc ListSpaces(ListSpacesRequest) returns(ListSpacesResponse) {}
-}
diff --git a/proto/perxis/collections/collections.proto b/proto/perxis/collections/collections.proto
deleted file mode 100644
index e943d811c14cf47004bfc1d6c1c79223509cc287..0000000000000000000000000000000000000000
--- a/proto/perxis/collections/collections.proto
+++ /dev/null
@@ -1,119 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-import "google/protobuf/timestamp.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/collections;collections";
-
-package content.collections;
-
-message Access {
-  repeated common.Action actions = 1;
-  repeated string hidden_fields = 5;
-  repeated string readonly_fields = 6;
-  repeated string writeonly_fields = 7;
-}
-
-message Collection {
-  string id = 1;
-  string space_id = 2;
-  string env_id = 3;
-  string name = 4;
-  optional bool single = 5;
-  optional bool system = 6;
-  optional bool no_data = 12;
-  string schema = 7;
-//  string feature = 8;
-  bool hidden = 13;
-
-  message View {
-    string space_id = 1;
-    string env_id = 2;
-    string collection_id  = 3;
-    string filter = 4;
-  }
-  View view = 9;
-
-  enum State {
-    NEW = 0; // коллекция создана, еще не обработана
-    PREPARING = 1; // производится подготовка коллекции (создание индексов, копирование данных)
-    READY = 2; // коллекция готова к работе
-    ERROR = 3; // при обработке коллекции произошла ошибка
-    CHANGED = 4; // в коллекцию внесены изменения, но  еще не были применены. Коллекция должна после перейти в состояние Preparing
-  }
-  message StateInfo {
-    State state = 1;
-    string info = 2;
-    google.protobuf.Timestamp started_at = 3;
-  }
-  StateInfo state_info = 10;
-
-  Access access = 20;
-}
-
-message CreateRequest {
-  Collection collection = 1;
-}
-message CreateResponse {
-  Collection created = 1;
-}
-
-message GetOptions {
-  bool disable_schema_includes = 1;
-}
-
-message GetRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  GetOptions options = 4;
-}
-
-message GetResponse {
-  Collection collection = 1;
-}
-
-message ListRequest {
-  message Filter {
-    bool exclude_system = 1;
-   // bool exclude_no_data = 2;
-    bool include_no_data = 5;
-    bool include_hidden = 6;
-    repeated string name = 3;
-    repeated string id = 4;
-  }
-
-  string space_id = 1;
-  string env_id = 2;
-  Filter filter = 5;
-}
-message ListResponse {
-  repeated Collection collections = 1;
-}
-
-message UpdateRequest {
-  Collection collection = 1;
-}
-
-message SetSchemaRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string schema = 4;
-}
-
-message DeleteRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-}
-
-service Collections  {
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-  rpc Get(GetRequest) returns(GetResponse) {}
-  rpc List(ListRequest) returns(ListResponse) {}
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-  rpc SetSchema(SetSchemaRequest) returns(google.protobuf.Empty) {}
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/common/common.proto b/proto/perxis/common/common.proto
deleted file mode 100644
index 0c179c28f63b07c19d7af19b1fe988d0017c8af0..0000000000000000000000000000000000000000
--- a/proto/perxis/common/common.proto
+++ /dev/null
@@ -1,99 +0,0 @@
-syntax = "proto3";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/common;common";
-
-package common;
-
-import "google/protobuf/struct.proto";
-
-message Error {
-  message BadRequest {
-    message FieldViolation {
-      string field = 1;
-      string description = 2;
-    }
-    repeated FieldViolation errors = 1;
-  }
-
-  message Help {
-    message Link {
-      string description =1;
-      string url = 2;
-    }
-    repeated Link links = 1;
-  }
-
-  message DebugInfo {
-    repeated string stack_trace = 1;
-    string detail = 2;
-  }
-
-  message LocalizedMessage {
-    string locale = 1;
-    string message = 2;
-  }
-
-  uint64 error_code = 1; // Код ошибки
-  string error_id = 2; // ID конкретного инцидента, ID уникальна для каждого случая.
-  string reason = 3; // ???
-  string domain = 4; // Сервис,Пакет к которому относится ошибка
-  map<string,string> metadata = 9; // Мета-информация
-  BadRequest bad_request = 10; // Ошибка запроса
-  DebugInfo debug_info = 11; // Отладочная информация
-  Help help = 100; // Пользовательская информации и инструкции
-  repeated LocalizedMessage localized_messages = 200; // Перевод сообщения об ошибке
-}
-
-message Filter {
-  string op = 1;
-  string field = 2;
-  google.protobuf.Value value = 3;
-}
-
-message FindOptions {
-  repeated string sort = 1;
-  int32 page_num = 2;
-  int32 page_size = 3;
-  repeated string fields = 4;
-  bool exclude_fields = 5;
-}
-
-
-enum Access {
-  ANY = 0;
-  MINE = 1;
-  ROLE = 2;
-}
-
-enum Action {
-  UNKNOWN = 0;
-  CREATE = 1;
-  READ = 2;
-  UPDATE = 3;
-  DELETE = 4;
-}
-
-message Rule {
-  string collection_id = 1;
-  repeated Action actions = 2;
-  Access access = 3;
-  repeated string hidden_fields = 5;
-  repeated string readonly_fields = 6;
-  repeated string writeonly_fields = 7;
-  string read_filter = 8;
-  string write_filter = 9;
-}
-
-message Collaborator {
-  string space_id = 1;
-  string subject = 2;
-  string role = 3;
-}
-
-message Version {
-  string server_version = 1;
-  string api_version = 2;
-  string build_time = 3;
-  string commit = 4;
-  int32 build_number = 5;
-}
diff --git a/proto/perxis/delivery/delivery.proto b/proto/perxis/delivery/delivery.proto
deleted file mode 100644
index cc87830ee9c5c052c3d1907adbc5845d49fd76b0..0000000000000000000000000000000000000000
--- a/proto/perxis/delivery/delivery.proto
+++ /dev/null
@@ -1,88 +0,0 @@
-syntax = "proto3";
-
-import "perxis/locales/locales.proto";
-import "perxis/environments/environments.proto";
-import "perxis/collections/collections.proto";
-import "perxis/items/items.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/delivery;delivery";
-
-package delivery;
-
-message ListLocalesRequest {
-  string space_id = 1;
-}
-message ListLocalesResponse {
-  repeated content.locales.Locale locales = 1;
-}
-
-message GetEnvironmentRequest {
-  string space_id = 1;
-  string env_id = 2;
-}
-
-message GetEnvironmentResponse {
-  content.environments.Environment env = 1;
-}
-
-message ListEnvironmentsRequest {
-  string space_id = 1;
-}
-
-message ListEnvironmentsResponse {
-  repeated content.environments.Environment envs = 1;
-}
-
-message GetCollectionRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-
-}
-message GetCollectionResponse {
-  content.collections.Collection collection = 1;
-}
-
-message ListCollectionsRequest {
-  string space_id = 1;
-  string env_id = 2;
-}
-message ListCollectionsResponse {
-  repeated content.collections.Collection collections = 1;
-}
-
-message GetItemRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string item_id = 5;
-  content.items.GetPublishedOptions options = 6;
-}
-message GetItemResponse {
-  content.items.Item item = 1;
-}
-
-message FindItemsRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  content.items.Filter filter = 5;
-  content.items.FindPublishedOptions options = 6;
-}
-message FindItemsResponse{
-  repeated content.items.Item items = 1;
-  int32 total = 2;
-}
-
-service Delivery  {
-  rpc ListLocales(ListLocalesRequest) returns(ListLocalesResponse) {}
-
-  rpc GetEnvironment(GetEnvironmentRequest) returns(GetEnvironmentResponse) {}
-  rpc ListEnvironments(ListEnvironmentsRequest) returns(ListEnvironmentsResponse) {}
-
-  rpc GetCollection(GetCollectionRequest) returns(GetCollectionResponse) {}
-  rpc ListCollections(ListCollectionsRequest) returns(ListCollectionsResponse) {}
-
-  rpc GetItem(GetItemRequest) returns(GetItemResponse) {}
-  rpc FindItems(FindItemsRequest) returns(FindItemsResponse) {}
-}
diff --git a/proto/perxis/environments/environments.proto b/proto/perxis/environments/environments.proto
deleted file mode 100644
index 40077f26099124795044b00c830d5a0f73243d16..0000000000000000000000000000000000000000
--- a/proto/perxis/environments/environments.proto
+++ /dev/null
@@ -1,85 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/environments;environments";
-
-package content.environments;
-
-message Environment {
-  string id = 1;
-  string space_id = 2;
-  string description = 3;
-  enum State {
-    UNKNOWN = 0;
-    NEW = 1;
-    PREPARING = 2;
-    READY = 3;
-    ERROR = 4;
-  }
-  State state = 4;
-  string state_info = 5;
-  repeated string aliases = 6;
-  Config config = 10;
-}
-
-message Config {
-  string source_id = 1;
-  repeated string features = 2;
-}
-
-message CreateRequest {
-  Environment env = 1;
-}
-
-message CreateResponse {
-  Environment created = 1;
-}
-
-message ListRequest {
-  string space_id = 1;
-}
-
-message ListResponse {
-  repeated Environment envs = 1;
-}
-
-message GetRequest {
-  string space_id = 1;
-  string env_id = 2;
-}
-
-message GetResponse {
-  Environment env = 1;
-}
-
-message UpdateRequest {
-  Environment env = 1;
-}
-
-message SetAliasRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string alias  = 3;
-}
-
-message RemoveAliasRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string alias  = 3;
-}
-
-message DeleteRequest {
-  string space_id = 1;
-  string env_id = 2;
-}
-
-service Environments {
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-  rpc Get(GetRequest) returns(GetResponse) {}
-  rpc List(ListRequest) returns(ListResponse) {}
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-  rpc SetAlias(SetAliasRequest) returns(google.protobuf.Empty) {}
-  rpc RemoveAlias(RemoveAliasRequest) returns(google.protobuf.Empty) {}
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/extensions/extension.proto b/proto/perxis/extensions/extension.proto
deleted file mode 100644
index eeea2937a03e06601d05f7dad476ec3af03078df..0000000000000000000000000000000000000000
--- a/proto/perxis/extensions/extension.proto
+++ /dev/null
@@ -1,224 +0,0 @@
-/**
-# Расширения (Extensions)
-
-Расширения представляют собой отдельные сервисы предоставляющие дополнительные возможности для пользователей. Сервис
-может предоставлять несколько расширений одновременно.
-
-Для координации взаимодействия используется сервис менеджер расширений (Extension Manager). Для предоставления своих функций в систему сервис должен
-зарегистрироваться на контроллере.
-
-*/
-syntax = "proto3";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/extensions;extensions";
-
-package extensions;
-
-import "perxis/references/references.proto";
-
-// Extension - API расширения
-service Extension {
-
-  // Для установки расширения выполняется запрос к сервису с указанием расширений которые должны быть установлены. Если
-  // расширение уже установлено процесс возвращает ошибку.
-  rpc Install(InstallRequest) returns (InstallResponse) {}
-
-  // Можно запросить проверку статуса установки для расширения. При этом расширение проверяет наличие необходимых данных в
-  // пространстве или наличие новой версии расширения и сообщает об этом. Никаких действий с данными пространства не
-  // производится.
-  rpc Check(CheckRequest) returns (CheckResponse) {}
-
-  // Сервис выполняет необходимые действия с данными и миграции для соответствия нужной версии расширения.
-  // Если расширение не установлено процесс обновления возвращает ошибку.
-  rpc Update(UpdateRequest) returns (UpdateResponse) {}
-
-  // Удаление расширения из пространства.
-  rpc Uninstall(UninstallRequest) returns (UninstallResponse) {} // Удаление расширений
-
-
-  // Пользовательские Действия (Actions)
-  //
-  // Пользовательские действия позволяют расширить функционал пользовательского интерфейса путем
-  // добавления в интерфейс элементов взаимодействуя с которыми пользователь может вызывать реакцию на
-  // сервере или переход в интерфейсе.
-  //
-  // Пользовательские действия добавляются при установке расширений в системную коллекции `System/Actions`.
-  // Коллекция создается автоматически менеджером расширений. При установке так же отображается меню `Действия`
-  // доступное для всех пользователей.
-  //
-  // Примеры пользовательских действий:
-  // - "Собрать сайт" - добавляется Perxis.Web для сборки сайта, доступна пользователю через меню,
-  //   параметры space_id, env_id. При вызове выполняется запрос на сервер ProcessAction.
-  // - "Посмотреть задачи" - добавляется Tasks для перехода на коллекцию задач. Отображается в меню,
-  //   параметры space_id, env_id.
-  //
-  // Приложения так же могут использовать действия для вызова обработки в других приложениях при
-  // необходимости.
-  rpc Action(ActionRequest) returns(ActionResponse) {} // Выполнить указанное действие
-}
-
-message InstallRequest {
-  repeated string extensions = 10000; // Список расширений для установки
-  string space_id = 10010; // Пространство для установки расширений
-  string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
-  bool force = 10100; // Игнорировать и автоматически исправлять ошибки установки
-}
-
-message ExtensionRequestResult {
-  enum State {
-    OK = 0; // Запрос завершен
-    ERROR = 1; // Возникла ошибка
-    PENDING = 2; // Запрос ожидает выполнения
-    IN_PROGRESS = 3; // Запрос выполняется
-  }
-
-  State state = 10000;  // Состояние расширение
-  string extension = 10100; // Имя расширения
-  string msg = 10200; // Сообщение
-  string error = 10300; // Ошибка (state == ERROR)
-  bool update_available = 10400; // Доступно обновление
-}
-
-message InstallResponse {
-  repeated ExtensionRequestResult results = 10000; // Список состояний расширений после установки
-}
-
-message UninstallRequest {
-  repeated string extensions = 10000; // Список расширений для удаления
-  string space_id = 10010; // Пространство для удаления расширений
-  string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
-  bool remove = 10100; // Удалить все коллекции и данные
-  bool force = 10200; // Удалять расширения вне зависимости от возможных ошибок, без учета зависимостей
-}
-
-message UninstallResponse {
-  repeated ExtensionRequestResult results = 10000; // Список состояний расширений после удаления
-}
-
-message UpdateRequest {
-  repeated string extensions = 10000; // Список расширений для удаления
-  string space_id = 10010; // Пространство для удаления расширений
-  string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
-  bool force = 10100; // Выполнять обновление и автоматически исправлять ошибки
-}
-
-message UpdateResponse {
-  repeated ExtensionRequestResult results = 10000; // Список состояний расширений после удаления
-}
-
-message CheckRequest {
-  repeated string extensions = 10000; // Список расширений для удаления
-  string space_id = 10010; // Пространство для удаления расширений
-  string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
-}
-
-message CheckResponse {
-  repeated ExtensionRequestResult results = 10000; // Список состояний расширений
-}
-
-// ActionRequest - запрос на выполнение действия к расширению (или менеджеру расширений)
-message ActionRequest {
-  string extension = 1000;
-  string action = 10100;
-  string space_id = 10500;
-  string env_id = 10510;
-  string collection_id = 10520;
-  string item_id = 10530;
-  repeated string item_ids = 10540;
-
-  // Поля к которым применимо действие. В случае если действие выполняется из списка записей, содержит перечень
-  // полей которые пользователь выбрал для отображения в интерфейсе.
-  repeated string fields = 10550;
-
-  map<string,string> metadata = 11000;
-
-  // Ссылки на записи используемые для выполнения действия (назначение ссылок зависит от действия и расширения)
-  repeated content.references.Reference refs = 11010;
-
-  // Ссылка на документ с параметрами выполнения Action.
-  // Чтобы при выполнении действия открывалась форма параметров, необходимо указать `Action.params_collection`
-  content.references.Reference params = 11020;
-}
-
-message ActionResponse {
-  enum State {
-    DONE = 0; // Запрос завершен
-    ERROR = 1; // Возникла ошибка
-    PENDING = 2; // Запрос ожидает выполнения
-    IN_PROGRESS = 3; // Запрос выполняется
-  }
-
-  State state = 10000;  // Состояние расширение
-  string msg = 10100; // Сообщение о выполнении действия
-  string error = 10200; // Сообщение в случае ошибки
-  repeated Action next = 10300; // Следующие возможные действия. Интерфейс отображает как варианты дальнейших действий пользователя
-  map<string,string>metadata = 10400; // Метаданные запроса
-  repeated content.references.Reference refs = 10320; // Ссылки на записи (назначение ссылок зависит от действия и расширения)
-}
-
-
-/**
-Action описывает как коллекцию в системе с предуставновленными действиями, так и возможные дальнейшие действия после
-получения ответа  (см. `ActionResponse.next`)
-
-Если поле `request` присутствует, но не все требуемые поля заполнены, то значения для них берутся из текущих значений.
-
-Коллекция: space_actions (Пространство/Действия)
-Действия сохраненные в коллекции не содержат поля `request`. Значение заполняется текущими значениями.
-
-Пользовательские действия добавляются при установке расширений или при
-настройке в системную коллекции `Пространство/Действия` (system_actions). Расширения самостоятельно контролирует создание необходимых
-им действий в коллекции.
-
-Интерфейс загружает пользовательские действия и отображает их в интерфейсе соответствующим образом.
-*/
-message Action {
-  // Kind описывает c какой сущность системы связано действие и что требуется передать в качестве параметров
-  // Интерфейс загружает пользовательские действия и отображает их в интерфейсе в зависимости от ActionType.
-  enum Kind {
-    DEFAULT = 0; // Действие не отображается в интерфейсе и могут используется для выполнения дополнительных запросов (см. `ActionResponse.next`) или напрямую из сторонних приложений.
-    SPACE = 1; // Действие связано с пространством (требуется передача space_id). Отображается в меню "Действия".
-    ENVIRONMENT = 2; // Действие связано с окружением (требуется передача space_id, env_id). Отображается в меню "Действия".
-    COLLECTION = 3; // Действие связано с коллекцией (требуется передача space_id, env_id, collection_id). Отображается на экране списка записей.
-    ITEM = 4; // Действие связано с записью (требуется передача space_id, env_id, collection_id, item_id). Отображается на экране редактирования записи.
-    ITEMS = 5; // Действие связано с несколькими записями (требуется передача space_id, env_id, collection_id, item_ids). Отображается на экране списка записей.
-    REVISION = 6; // Действие связано с ревизией записи (требуется передача space_id, env_id, collection_id, item_id, rev_id). На данный момент не используется.
-    CREATE = 7; // Действие создание записи (требуется передача space_id, env_id, collection_id).
-  }
-
-  string extension = 10000; // Расширение
-  string action = 10100; // Идентификатор действия
-  string name = 10200; // Название действия для отображения в интерфейсе (пункт меню, кнопка).
-  string description = 10210; // Описание действия для отображения в интерфейсе
-  string icon = 10220; // Название иконки для отображения действия в интерфейсе
-  content.references.Reference image = 10230; // Изображение для отображения в действия в интерфейсе
-  repeated string groups = 10240; // Группы отображения действия в интерфейсе
-  Kind kind = 10300; // Указывает на что направлено действие
-  repeated string classes = 10310; // Классы данных к которым применимо действие (название коллекций или специальных групп в рамках которых данное действие применимо)
-  // Для `CREATE` действуют следующие правила:
-  // - Для создание записей в коллекции применимы действия которые содержат в classes название коллекции
-  // - Для создания записей в виджетах которые допускают создание записей (Block/BlockList) применимы действия которые содержат:
-  //   - в classes хотя бы одно значение из classes виджета
-  //   - если у виджета не указан classes, тогда названия коллекций которые могут быть использованы для создания элементов в поле (allowed_collections)
-  repeated content.references.Reference refs = 10320; // Ссылки на записи используемые для выполнения действия (назначение ссылок зависит от действия и расширения)
-
-  // Коллекция для сохранения параметрами действия. Если параметр указан, то при выполнении действия будет открываться
-  // форма создания записи в указанной коллекции
-  string params_collection = 10330;
-
-  ActionRequest request = 10400; // Параметры запроса (используется в случае `ActionResponse.next`)
-  bool navigation_action = 10500; // Флаг указывающий что действие переносить пользователя в другую часть интерфейса, а не отправляет запрос на сервер
-
-  // navigation_route - Строка шаблон для перехода в интерфейсе
-  // При указании полного адреса (http(s)://xyz), URL открывается в новом окне браузера
-  // Относительный адрес в пользовательском интерфейсе переносит пользователя в соответствующий раздел без перезагрузки приложения
-  //
-  // Переменные `:var` заменяются на текуще значение в пользовательском интерфейсе (Пример: `/spaces/:spaceId/envs/:envId/cols/:colId`)
-  // Перечень переменных для подстановки:
-  // - :spaceId
-  // - :envId
-  // - :colId
-  // - :itemId
-  //
-  string navigation_route = 10510;
-}
diff --git a/proto/perxis/extensions/manager.proto b/proto/perxis/extensions/manager.proto
deleted file mode 100644
index df4e52939166759aa244f65082f0c5473cc3dc67..0000000000000000000000000000000000000000
--- a/proto/perxis/extensions/manager.proto
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
-
-# Менеджер расширений
-
-Реализует функционал по координации расширений в системе и служит единой точкой доступа для работы с расширениями:
-- Регистрирует все расширения в едином реестре
-- Предоставляет доступ к реестру расширений на получение доступных расширений в системе
-- Контролирует процесс установки расширения, устанавливает все необходимые зависимости в правильном порядке
-- Контролирует создание системной коллекции `system_extensions` (System/Extensions) и создание/удалений в ней установленных расширений
-- Контролирует создание системной коллекции `system_actions` (System/Actions). Выполняет удаление всех действий связанных
-  с расширением при его удалении.
-- Выполняет переадресацию запросов на действия для расширений
-
-Менеджер расширений для контроля установленных расширений использует системные коллекции. При обращении к сервису контента
-используются системный уровень прав для создания необходимых коллекций и получения данных:
-1. `system_extensions` (System Extensions) - доступна только системным пользователям
-2. `system_actions` (System Actions) - по умолчанию доступна только системным пользователям, настройки доступа на чтение
- выдаются пользователям вручную. В зависимости от пользователя в интерфейсе отображаются те или иные доступные действия.
-
-Проверка наличия коллекций и создание в случае их отсутствия выполняется в момент установки расширений. После установки
-расширения в коллекцию `system_extensions` добавляется запись об установленном расширении. Действия добавляются в
-коллекцию `system_actions` расширениями по собственному усмотрению при установке.
-
-Для обращения к расширениям используются права текущего пользователя запрашивающего операцию. Если пользователь не
-обладает необходимыми правами для выполнения действия то операция вернет ошибку.
-
-*/
-syntax = "proto3";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/extensions;extensions";
-
-package extensions;
-
-// ExtensionManager - менеджер расширений. Должен реализовывать так же сервис Extension
-service ExtensionManager {
-  // ##  Регистрация расширений
-  //
-  // Регистрация\Дерегистрация происходить через сервис менеджера расширений (Extension Manager). В процессе регистрации сервис сообщает
-  // о поддерживаемых сервисом действиях (Actions) и версии сервиса и зависимостях:
-  // 1. Действия (Actions) - перечень действия которые обрабатываются сервисом. Включает в себя как системные действия,
-  // так и пользовательские, которые могут быть использованы в интерфейсе;
-  // 2. Имя сервиса/расширения - название сервиса внутри системы;
-  // 3. Версия сервиса - сервис сообщает текущую версию сервиса. Контроллер сообщает пользователю о возможности обновления
-  // расширения при смене версии;
-  // 4. Описание версии - содержит информацию об изменениях в последних версиях расширения;
-  // 5. Зависимости - перечень расширений которые необходимы сервису для функционирования. При установке сервиса
-  // все расширения от которых он зависит, будут так же установлены.
-  rpc RegisterExtensions(RegisterExtensionsRequest) returns (RegisterExtensionsResponse) {}
-
-  rpc UnregisterExtensions(UnregisterExtensionsRequest) returns (UnregisterExtensionsResponse) {}
-
-  // Получить список зарегистрированных сервисов
-  rpc ListExtensions(ListExtensionsRequest) returns (ListExtensionsResponse) {} // Получить список сервисов
-}
-
-// ServiceDescription описание сервиса
-message ExtensionDescriptor {
-  string extension = 10000; // Имя расширения
-  string title = 10010; // Название расширения
-  string description = 10020; // Описание расширения
-  string version = 10100; // Версия расширения
-  string version_description = 10110; // Описание версии
-  repeated string deps = 10200; // Зависимости от других расширений
-  string url = 5; // Адрес для внутри сети, коммуникация между сервисами
-  map<string,string> metadata = 6; // Метаданные сервиса, смотрите документацию по сервису
-//  repeated string actions = 10; // Список обрабатываемых действий. Можно указывать регулярное выражения для фильтрации действий.
-}
-
-message RegisterExtensionsRequest {
-  repeated ExtensionDescriptor extensions = 1;
-}
-
-message RegisterExtensionsResponse {}
-
-message UnregisterExtensionsRequest {
-  repeated ExtensionDescriptor extensions = 1;
-}
-
-message UnregisterExtensionsResponse {}
-
-message ListExtensionsFilter {
-  repeated string extension = 1; // Список имен сервисов для получения результатов. Список может содержать регулярные выражения.
-//  repeated string action = 2; // Список действий обрабатываемых сервисами. Список может содержать регулярные выражения.
-}
-
-message ListExtensionsRequest {
-  ListExtensionsFilter filter = 1;
-}
-
-message ListExtensionsResponse {
-  repeated ExtensionDescriptor extensions = 1;
-}
-
-// Описание коллекций
-
-// space_extensions (Пространство/Расширения)
-
-message SpaceExtensions {
-  enum State {
-    PENDING = 0;
-    INSTALLED = 1;
-    IN_PROGRESS = 2;
-    FAIL = 3;
-  }
-  string extension = 10000;
-  string title = 10010;
-  string version = 10100;
-  repeated string deps = 10200;
-  State state = 10300;
-  string status_error = 10400; // Сообщение к ошибке
-  string status_msg = 10500; // Сообщение к статусу
-}
diff --git a/proto/perxis/files/files.proto b/proto/perxis/files/files.proto
deleted file mode 100644
index d8a0c544ac965459fb1b3e63ca4120dc05aaae48..0000000000000000000000000000000000000000
--- a/proto/perxis/files/files.proto
+++ /dev/null
@@ -1,118 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/files;files";
-
-package files;
-
-// Сущности
-
-message File {
-  string id = 1;        // Уникальный идентификатор файла в хранилище
-  string name = 2;      // Имя файла
-  int32 size = 3;       // Размер файла
-  string mime_type = 4; // Mime-type файла
-  string url = 5;       // Адрес для загрузки файла
-}
-
-message MultipartUpload {
-  File file = 1;
-  string upload_id = 2;           // Идентификатор загрузки хранилища
-  int32 part_size = 3;           // Размер блока для загрузки
-  repeated string part_urls = 4; // Адреса для загрузки пол
-  repeated CompletedPart parts = 5;  // Идентификаторы загруженных блоков (S3 ETAGs)
-}
-
-message Upload {
-  File file = 1;
-  string upload_url = 2;   // URL для загрузки файлов
-}
-
-message CompletedPart {
-  int32 number = 1;
-  string id = 2;
-}
-
-// Запросы и ответы
-
-message StartUploadRequest {
-  MultipartUpload upload = 1;
-}
-message StartUploadResponse {
-  MultipartUpload upload = 1;
-}
-
-message CompleteUploadRequest {
-  MultipartUpload upload = 1;
-}
-message CompleteUploadResponse {
-  MultipartUpload upload = 1;
-}
-
-message AbortUploadRequest {
-  MultipartUpload upload = 1;
-}
-message AbortUploadResponse {}
-
-message MoveUploadRequest {
-  MultipartUpload upload = 1;
-}
-message MoveUploadResponse {
-  File file = 1;
-}
-
-message UploadRequest {
-  File file = 1;
-}
-message UploadResponse {
-  Upload upload = 1;
-}
-
-message GetFileRequest {
-  string id = 1;
-}
-message GetFileResponse {
-  File file = 1;
-}
-
-message DeleteFileRequest {
-  File file = 1;
-}
-message DeleteFileResponse {}
-
-service Files {
-  // StartUpload - инициирует процедуру загрузки файла в файловое хранилище.
-  // Используется клиентским приложением для начала загрузки файла
-  // Требуемые параметры: объект `MultipartUpload` с вложенным объектом `File`, в котором
-  // обязательные поля  Name и Size.
-  // Возвращает объект с заполненными полями ID, PartSize, PartURLs, MimeType, Size, UploadID.
-  rpc StartUpload(StartUploadRequest) returns(StartUploadResponse) {}
-
-  // CompleteUpload - завершает процедуру загрузку файла
-  // Предполагается, что в объекте, полученном из `StartUpload`, клиент должен заполнить поле
-  // Parts (идентификаторами загруженных блоков (S3 ETAGs)) и передать его в `CompleteUpload`
-  rpc CompleteUpload(CompleteUploadRequest) returns(CompleteUploadResponse) {}
-
-  // AbortUpload - прерывает процедуру загрузки файла, все загруженные части файла удаляются их хранилища
-  rpc AbortUpload(AbortUploadRequest) returns(google.protobuf.Empty) {}
-
-  // MoveUpload - перемещает загруженный файл из временного расположения в постоянное месторасположения.
-  // После перемещение загрузки хранилище выдает новый идентификатор постоянного файла
-  rpc MoveUpload(MoveUploadRequest) returns(MoveUploadResponse) {}
-
-  // Upload - инициация загрузки файла в хранилище. Возвращает объект, содержащий подписанный URL.
-  // Завершение загрузки файла осуществляется выполнением POST-запроса
-  rpc Upload(UploadRequest) returns(UploadResponse) {}
-
-  // GetFile - получить информацию о файле (ссылку) по ID
-  rpc GetFile(GetFileRequest) returns(GetFileResponse) {}
-
-  // DeleteFile - удаляет файл. Если происходит удаление оригинала,
-  // удаляются и все связанные структуры
-  // Возможны следующие ситуации:
-  //  - Удаление оригинального файла. Удаляется файл и все связанные с ним файлы.
-  //  - Удаление связанного файла. Для удаления конкретного файла передается 'ID', 'Type' и 'Name'
-  //  - Удаления связанных файлов конкретного типа (например, все 'thumbnails'). Передается 'ID' и 'Type'
-  rpc DeleteFile(DeleteFileRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/images/images.proto b/proto/perxis/images/images.proto
deleted file mode 100644
index 9be39fc05dab34be0a619178058b34bf419a03b8..0000000000000000000000000000000000000000
--- a/proto/perxis/images/images.proto
+++ /dev/null
@@ -1,40 +0,0 @@
-syntax = "proto3";
-
-import "perxis/files/files.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/images;images";
-
-package images;
-
-message Param {
-  string op = 1;
-  repeated string value = 2;
-}
-
-message GetRequest {
-
-  message GetOptions {
-    repeated Param params = 1;
-  }
-
-  files.File source = 1;
-  GetOptions opts = 2;
-}
-
-message GetResponse {
-  files.File result = 1;
-}
-
-// ImageService - сервис для обработки изображений
-service Images {
-
-  // Get - к файлу, идентификатор которого передан в запросе, применяются параметры.
-  // Может быть передано несколько параметров, порядок учитывается при обработке
-  // Допустимые операции:
-  //  - crop (ширина, высота)
-  //  - fit (ширина, высота)
-  //  - resize (ширина, высота)
-  //  - format (один из форматов [ png, jpeg, jpg, gif ]
-  // Возвращает объект File с заполненным полем File.URL
-  rpc Get(GetRequest) returns(GetResponse) {}
-}
diff --git a/proto/perxis/invitations/invitations.proto b/proto/perxis/invitations/invitations.proto
deleted file mode 100644
index 5f239c0e93d3c626bf62c7b0a9c66b7a547642e6..0000000000000000000000000000000000000000
--- a/proto/perxis/invitations/invitations.proto
+++ /dev/null
@@ -1,103 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/timestamp.proto";
-import "google/protobuf/empty.proto";
-import "google/protobuf/wrappers.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/invitations;invitations";
-
-package content.invitations;
-
-message Invitation {
-  string id = 1;
-  string email = 2;
-  string org_id = 3;
-  string space_id = 4;
-  string owner_id = 5;
-  string role = 6;
-  google.protobuf.Timestamp created_at = 7;
-  google.protobuf.Timestamp valid_until = 8;
-}
-
-message Filter {
-  repeated string id = 1;
-  repeated string email = 2;
-  repeated string org_id = 3;
-  repeated string space_id = 4;
-  repeated string owner_id = 5;
-  repeated string role = 6;
-}
-
-message FindOptions {
-  repeated string sort = 1;
-  int32 page_num = 2;
-  int32 page_size = 3;
-}
-
-message CreateRequest {
-  Invitation invitation = 1;
-}
-
-message CreateResponse {
-  Invitation invitation = 1;
-}
-
-message GetRequest {
-  string invitation_id = 1;
-}
-
-message GetResponse {
-  Invitation invitation = 1;
-}
-
-message UpdateRequest {
-  string invitation_id = 1;
-  google.protobuf.BoolValue sent = 2; // Флаг отправки приглашения
-  google.protobuf.BoolValue pending = 3; // Флаг принятия приглашения
-  google.protobuf.Timestamp sent_at = 4; // Время отправки приглашения
-  google.protobuf.Timestamp valid_until = 5; // Время до которого приглашение действует
-}
-
-message UpdateInvitationResponse {}
-
-message AcceptRequest {
-  string invitation_id = 1;
-  string user_id = 2;
-}
-
-message AcceptInvitationResponse {}
-
-message FindRequest {
-  Filter filter = 1;
-  FindOptions opts = 2;
-}
-
-message FindResponse {
-  repeated Invitation invitations = 1;
-  int64 total = 2;
-}
-
-message DeleteRequest {
-  string invitation_id = 1;
-}
-
-message DeleteSpaceInvitationResponse {}
-
-service Invitations  {
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-
-  // Получить данные о приглашении
-  rpc Get(GetRequest) returns(GetResponse) {}
-
-  // Обновить данные о приглашении
-  // rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-
-  // Принять приглашение
-  rpc Accept(AcceptRequest) returns(google.protobuf.Empty) {}
-
-  // Получить список приглашений для пространства
-  rpc Find(FindRequest) returns(FindResponse) {}
-
-  // Удалить приглашение
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/items/items.proto b/proto/perxis/items/items.proto
deleted file mode 100644
index 78aaae2ffe0ecab3b8e96c9da679c76d63fa2a36..0000000000000000000000000000000000000000
--- a/proto/perxis/items/items.proto
+++ /dev/null
@@ -1,304 +0,0 @@
-/**
- * # Items
- *
- * API Сервиса работы с пользовательским записями (Items)
- *
- * Предоставляет доступ к записям пользовательских коллекций
- *
- */
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-import "google/protobuf/timestamp.proto";
-import "google/protobuf/struct.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/items;items";
-
-package content.items;
-
-message Error {
-	string message = 1; // Сообщение об ошибке
-	string field = 2; // Поле в котором произошла ошибка
-
-}
-
-message DecodeError {
-  repeated Error errors = 2;
-}
-
-message ValidationError {
-  repeated Error errors = 2;
-}
-
-message ModificationError {
-  repeated Error errors = 2;
-}
-
-message Permissions {
-  bool edit = 1;
-  bool archive = 2;
-  bool publish = 3;
-  bool soft_delete = 4;
-  bool hard_delete = 5;
-}
-
-/**
- * Пользовательская запись
- */
-message Item {
-  enum State {
-    DRAFT = 0;
-    PUBLISHED = 1;
-    CHANGED = 2;
-    ARCHIVED = 3;
-  }
-  string id = 1;
-  string space_id = 2;
-  string env_id = 3;
-  string collection_id = 4;
-  State state = 5;
-  google.protobuf.Timestamp created_rev_at = 6; // дата создания текущей ревизии
-  string created_by = 7;                        // id пользователя создавшего первую ревизию
-  google.protobuf.Timestamp created_at = 8;     // дата создания первой ревизии
-  string updated_by = 9;                       // id пользователя обновившего текущую ревизию
-  google.protobuf.Timestamp updated_at = 10;     // дата обновления текущей ревизии
-  google.protobuf.Struct data = 11;
-  map<string, google.protobuf.Struct> translations = 12;
-  string revision_id = 13;
-  google.protobuf.Timestamp published_at = 14;
-  string published_by = 15;
-  google.protobuf.Timestamp archived_at = 16;
-  string archived_by = 17;
-  string locale = 18;
-  bool deleted = 19;
-  bool hidden = 20;
-  bool template = 21;
-  Permissions permissions = 22;
-}
-
-message Filter {
-  repeated string id = 1; // Список ID записей кото
-  repeated common.Filter data = 2; // Список фильтров
-  repeated string q = 3; // Список выражений для фильтрации
-}
-
-message CreateOptions {
-  bool update_attrs = 1;
-}
-
-message FindOptions {
-  common.FindOptions options = 2;
-  bool deleted = 3;
-  bool regular = 4;
-  bool hidden = 5;
-  bool templates = 6;
-}
-
-message UpdateOptions {
-  bool update_attrs = 1;
-}
-
-message GetPublishedOptions {
-  string locale_id = 1;
-}
-
-message DeleteOptions {
-  bool erase = 1;
-}
-
-message PublishOptions {
-  bool update_attrs = 1;
-}
-
-message FindPublishedOptions {
-  common.FindOptions options = 2;
-  string locale_id = 3;
-  bool regular = 4;
-  bool hidden = 5;
-  bool templates = 6;
-}
-
-message FindArchivedOptions {
-  common.FindOptions options = 2;
-}
-
-message ListRevisionsOptions {
-  common.FindOptions options = 2;
-}
-
-message CreateRequest {
-  Item item = 1;
-  CreateOptions options = 2;
-}
-message CreateResponse {
-  Item created = 1;
-}
-
-message IntrospectRequest {
-  Item item = 1;
-}
-message IntrospectResponse {
-  Item item = 1;
-  string schema = 2;
-  repeated common.Error.BadRequest.FieldViolation validation_errors = 3;
-}
-
-message GetRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string item_id = 4;
-}
-message GetResponse {
-  Item item = 1;
-}
-
-message FindRequest {
-  string space_id = 1; // ID Пространства
-  string env_id = 2; // ID окружения
-  string collection_id = 3; // ID коллекции
-  Filter filter = 4;
-  FindOptions options = 5; // Дополнительные параметры поиска
-}
-message FindResponse{
-  repeated Item items = 1;
-  int32 total = 2;
-}
-
-message UpdateRequest {
-  Item item = 1;
-  UpdateOptions options = 2;
-}
-
-message DeleteRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string item_id = 4;
-  DeleteOptions options = 5;
-}
-
-message UndeleteRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string item_id = 4;
-}
-
-message PublishRequest {
-  Item item = 1;
-  PublishOptions options = 2;
-}
-
-message UnpublishRequest {
-  Item item = 1;
-}
-
-message GetPublishedRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string item_id = 5;
-  GetPublishedOptions options = 10;
-}
-message GetPublishedResponse {
-  Item item = 1;
-}
-
-message FindPublishedRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  Filter filter = 4;
-  FindPublishedOptions options = 10;
-}
-message FindPublishedResponse{
-  repeated Item items = 1;
-  int32 total = 2;
-}
-
-message GetRevisionRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string item_id = 4;
-  string revision_id = 5;
-}
-message GetRevisionResponse {
-  Item item = 1;
-}
-
-message ListRevisionsRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  string item_id = 4;
-  ListRevisionsOptions options = 10;
-}
-message ListRevisionsResponse {
-  repeated Item items = 1;
-}
-
-/**
- * Запрос на архивирование элемента
- */
-message ArchiveRequest {
-  Item item = 1; // Элемент для архивации
-}
-
-message UnarchiveRequest {
-  Item item = 1;
-}
-
-message FindArchivedRequest {
-  string space_id = 1;
-  string env_id = 2;
-  string collection_id = 3;
-  Filter filter = 4;
-  FindArchivedOptions options = 6;
-}
-message FindArchivedResponse{
-  repeated Item items = 1;
-  int32 total = 2;
-}
-
-/**
- * Сервис API элементов
- */
-service Items {
-  /**
-   * Создать запись
-   */
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-
-  /**
-   * Валидация данных записи
-   */
-  rpc Introspect(IntrospectRequest) returns(IntrospectResponse) {}
-
-  /**
-   * Получение записи по идентификатору
-   */
-  rpc Get(GetRequest) returns(GetResponse) {}
-
-  /**
-   * Поиск по текущим записям
-   */
-  rpc Find(FindRequest) returns(FindResponse) {}
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-  rpc Undelete(UndeleteRequest) returns(google.protobuf.Empty) {}
-
-  rpc Publish(PublishRequest) returns(google.protobuf.Empty) {}
-  rpc Unpublish(UnpublishRequest) returns(google.protobuf.Empty) {}
-  rpc GetPublished(GetPublishedRequest) returns(GetPublishedResponse) {}
-  rpc FindPublished(FindPublishedRequest) returns(FindPublishedResponse) {}
-
-  rpc GetRevision(GetRevisionRequest) returns(GetRevisionResponse) {}
-  rpc ListRevisions(ListRevisionsRequest) returns(ListRevisionsResponse) {}
-
-  rpc Archive(ArchiveRequest) returns(google.protobuf.Empty) {}
-  rpc FindArchived(FindArchivedRequest) returns(FindArchivedResponse) {}
-  rpc Unarchive(UnarchiveRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/locales/locales.proto b/proto/perxis/locales/locales.proto
deleted file mode 100644
index 9d95ab2accd7b3bbdabb6355b7e9a2531042d6eb..0000000000000000000000000000000000000000
--- a/proto/perxis/locales/locales.proto
+++ /dev/null
@@ -1,39 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/locales;locales";
-
-package content.locales;
-
-message Locale {
-  string id = 1;
-  string space_id = 2;
-  string name = 3;
-}
-
-message CreateRequest {
-  Locale locale = 1;
-}
-
-message CreateResponse {
-  Locale locale = 1;
-}
-
-message ListRequest {
-  string space_id = 1;
-}
-message ListResponse {
-  repeated Locale locales = 1;
-}
-
-message DeleteRequest {
-  string space_id = 1;
-  string locale_id = 2;
-}
-
-service Locales {
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-  rpc List(ListRequest) returns(ListResponse) {}
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/members/members.proto b/proto/perxis/members/members.proto
deleted file mode 100644
index 236314ac4b94c38e91a1e19fc73ea0003cab1f61..0000000000000000000000000000000000000000
--- a/proto/perxis/members/members.proto
+++ /dev/null
@@ -1,80 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/members;members";
-
-package account.members;
-
-// Роль пользователя в организации
-enum Role {
-  NOT_MEMBER = 0; // Не является членом команды - значение по умолчанию
-  MEMBER = 1; // Входит в организацию и команды, может получать доступ к Space в соответствии с политикой доступа
-  OWNER = 2; // admin + может приглашать пользователей на роль owner
-  ADMIN = 3; // Входит в организацию, видит все Space, может задавать политики доступа, может приглашать пользователей на роли member, admin
-}
-
-message Member {
-  string org_id = 1;
-  string user_id = 2;
-  Role role = 3;
-}
-
-message SetRequest {
-  string org_id = 1;
-  string user_id = 2;
-  Role role = 3;
-}
-
-message GetRequest {
-  string org_id = 1;
-  string user_id = 2;
-}
-
-message GetResponse {
-  Role role = 3;
-}
-
-message RemoveRequest {
-  string org_id = 1;
-  string user_id = 2;
-}
-
-message ListMembersRequest {
-  string org_id = 1;
-}
-
-message ListMembersResponse {
-  repeated Member members = 1;
-}
-
-message ListOrganizationsRequest {
-  string user_id = 1;
-}
-
-message ListOrganizationsResponse {
-  repeated Member organizations = 1;
-}
-
-service Members {
-  rpc Set(SetRequest) returns(google.protobuf.Empty) {}
-  rpc Get(GetRequest) returns(GetResponse) {}
-  rpc Remove(RemoveRequest) returns(google.protobuf.Empty) {}
-  rpc ListMembers(ListMembersRequest) returns(ListMembersResponse) {}
-  rpc ListOrganizations(ListOrganizationsRequest) returns(ListOrganizationsResponse) {}
-}
-
-// Внутренний сервис (часть имплементации паттерна Observer). Используется для установки
-// членства в организации при принятии приглашения в пространство
-message OnCollaboratorSetRequest {
-  common.Collaborator collaborator = 1;
-}
-
-message OnCollaboratorSetResponse {
-  string delayed_task_id = 1;
-}
-
-service Observer {
-  rpc OnCollaboratorSet(OnCollaboratorSetRequest) returns(OnCollaboratorSetResponse) {}
-}
diff --git a/proto/perxis/organizations/organizations.proto b/proto/perxis/organizations/organizations.proto
deleted file mode 100644
index 3bb48cc4363c6e9839d0ca44e5a2eade2f7c0f99..0000000000000000000000000000000000000000
--- a/proto/perxis/organizations/organizations.proto
+++ /dev/null
@@ -1,66 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/organizations;organizations";
-
-package account.organizations;
-
-// Организация
-message Organization {
-  string id = 1; // Идентификатор организации
-  string name = 2; // Имя организации
-  string description = 3; // Описание организации
-  string logo_url = 5; // URI изображения логотипа
-  optional string owner_id = 6;
-}
-
-// Запросы и ответы
-
-message CreateRequest {
-  Organization org = 1;
-}
-
-message CreateResponse {
-  Organization created = 1;
-}
-
-message GetRequest {
-  string org_id = 1;
-}
-
-message GetResponse {
-  Organization org = 1;
-}
-
-message UpdateRequest {
-  Organization org = 1;
-}
-
-message DeleteRequest {
-  string org_id = 1;
-}
-
-message Filter {
-  repeated string ids = 3;
-  repeated string names = 4;
-}
-
-message FindRequest {
-  Filter filter = 1;
-  common.FindOptions opts = 2;
-}
-
-message FindResponse {
-  repeated Organization orgs = 1;
-  int64 total = 2;
-}
-
-service Organizations {
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-  rpc Get(GetRequest) returns(GetResponse) {}
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-  rpc Find(FindRequest) returns(FindResponse) {}
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/references/references.proto b/proto/perxis/references/references.proto
deleted file mode 100644
index b23a4e724fee88b2be220537886f4af37ee808aa..0000000000000000000000000000000000000000
--- a/proto/perxis/references/references.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-syntax = "proto3";
-
-import "perxis/items/items.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/references;references";
-
-package content.references;
-
-
-message Reference {
-  string id = 1;
-  string collection_id = 2;
-}
-
-message GetRequest {
-  string space_id = 1;
-  string env_id = 2;
-  repeated Reference references = 3;
-}
-
-message GetResponse {
-  repeated items.Item items = 1;
-  repeated Reference notfound = 2;
-}
-
-// References принимает список ссылок на записи и возвращает два списка:
-// список найденных записей и не найденных ссылок
-service References  {
-  rpc Get(GetRequest) returns(GetResponse) {}
-}
diff --git a/proto/perxis/roles/roles.proto b/proto/perxis/roles/roles.proto
deleted file mode 100644
index 2afd57c431e02a8cba89ae5421f5af892e5bbc83..0000000000000000000000000000000000000000
--- a/proto/perxis/roles/roles.proto
+++ /dev/null
@@ -1,88 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/roles;roles";
-
-package content.roles;
-
-message Role {
-  // Внутренний идентификатор роли
-  string id = 1;
-
-  // Идентификатор пространства
-  string space_id = 2;
-
-  // Описание роли, назначение
-  string description = 3;
-
-  // Список правил доступа к коллекциям
-  repeated common.Rule rules = 4;
-
-  // Список доступных окружений (ID или Alias)
-  repeated string environments = 5;
-
-  // Разрешить доступ API управления:
-  // - Управление коллекциями
-  // - Управление приложениями
-  // - Управление ролями
-  // - Управление окружениями
-  // - Управление приглашениями
-  // - Управление locales
-  // - Управление участниками
-  bool allow_management = 10;
-}
-
-message CreateRequest {
-  Role role = 1;
-}
-
-message CreateResponse {
-  Role created = 1;
-}
-
-message GetRequest {
-  string space_id = 1;
-  string role_id = 2;
-}
-
-message GetResponse {
-  Role role = 1;
-}
-
-message UpdateRequest {
-  Role role = 1;
-}
-
-message ListRequest {
-  string space_id = 1;
-}
-
-message ListResponse {
-  repeated Role roles = 1;
-}
-
-message DeleteRequest {
-  string space_id = 1;
-  string role_id = 2;
-}
-
-service Roles  {
-
-  // Create - создает роль в рамках пространства
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-
-  // Get - возвращает роль по id
-  rpc Get(GetRequest) returns(GetResponse) {}
-
-  // Update - обновляет параметры роли
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-
-  // List - возвращает список ролей, созданных в пространстве
-  rpc List(ListRequest) returns(ListResponse) {}
-
-  // Delete - удаляет указанную роль из пространстве
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-
-}
diff --git a/proto/perxis/spaces/spaces.proto b/proto/perxis/spaces/spaces.proto
deleted file mode 100644
index d9958b792b3f5860e6487fe4b8f4f4efd3087f39..0000000000000000000000000000000000000000
--- a/proto/perxis/spaces/spaces.proto
+++ /dev/null
@@ -1,77 +0,0 @@
-syntax = "proto3";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/spaces;spaces";
-
-package content.spaces;
-
-import "google/protobuf/empty.proto";
-
-message Space {
-  string id = 1;
-  string org_id = 2;
-  string name = 3;
-  string description = 4;
-  State state = 5;
-  Config config = 10;
-}
-
-enum State {
-  UNKNOWN = 0;
-  NEW = 1;
-  READY = 2;
-  PREPARING = 3;
-  MAINTENANCE = 4;
-  MIGRATION = 5;
-  DELETING = 6;
-  ERROR = 7;
-}
-
-message Config {
-  repeated string features = 1;
-}
-
-message CreateRequest {
-  Space space = 1;
-}
-
-message CreateResponse {
-  Space created = 1;
-}
-
-message GetRequest {
-  string space_id = 1;
-}
-
-message GetResponse {
-  Space space = 1;
-}
-
-message ListRequest {
-  string org_id = 1;
-}
-
-message ListResponse {
-  repeated Space spaces = 1;
-}
-
-message UpdateRequest {
-  Space space = 1;
-}
-
-message UpdateConfigRequest {
-  string space_id = 1;
-  Config config = 2;
-}
-
-message DeleteRequest {
-  string space_id = 1;
-}
-
-service Spaces {
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-  rpc Get(GetRequest) returns(GetResponse) {}
-  rpc List(ListRequest) returns(ListResponse) {}
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-  rpc UpdateConfig(UpdateConfigRequest) returns(google.protobuf.Empty) {}
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-}
diff --git a/proto/perxis/status/status.proto b/proto/perxis/status/status.proto
deleted file mode 100644
index 8fca6ab22d9e418c3f09d365d1e70ee8030f301e..0000000000000000000000000000000000000000
--- a/proto/perxis/status/status.proto
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2015, Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto3";
-
-package google.rpc;
-
-import "google/protobuf/any.proto";
-
-option java_multiple_files = true;
-option java_outer_classname = "StatusProto";
-option java_package = "com.google.rpc";
-
-
-// The `Status` type defines a logical error model that is suitable for different
-// programming environments, including REST APIs and RPC APIs. It is used by
-// [gRPC](https://github.com/grpc). The error model is designed to be:
-//
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code, error message,
-// and error details. The error code should be an enum value of
-// [google.rpc.Code][google.rpc.Code], but it may accept additional error codes if needed.  The
-// error message should be a developer-facing English message that helps
-// developers *understand* and *resolve* the error. If a localized user-facing
-// error message is needed, put the localized message in the error details or
-// localize it in the client. The optional error details may contain arbitrary
-// information about the error. There is a predefined set of error detail types
-// in the package `google.rpc` which can be used for common error conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error model, but it
-// is not necessarily the actual wire format. When the `Status` message is
-// exposed in different client libraries and different wire protocols, it can be
-// mapped differently. For example, it will likely be mapped to some exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the client,
-//     it may embed the `Status` in the normal response to indicate the partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step may
-//     have a `Status` message for error reporting purpose.
-//
-// - Batch operations. If a client uses batch request and batch response, the
-//     `Status` message should be used directly inside batch response, one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous operation
-//     results in its response, the status of those operations should be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message `Status` could
-//     be used directly after any stripping needed for security/privacy reasons.
-message Status {
-  // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
-  int32 code = 1;
-
-  // A developer-facing error message, which should be in English. Any
-  // user-facing error message should be localized and sent in the
-  // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
-  string message = 2;
-
-  // A list of messages that carry the error details.  There will be a
-  // common set of message types for APIs to use.
-  repeated google.protobuf.Any details = 3;
-}
diff --git a/proto/perxis/users/users.proto b/proto/perxis/users/users.proto
deleted file mode 100644
index 28f6372b3e9d2b0ddf2a10886afe123c84ced676..0000000000000000000000000000000000000000
--- a/proto/perxis/users/users.proto
+++ /dev/null
@@ -1,98 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "google/protobuf/wrappers.proto";
-import "perxis/common/common.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/users;users";
-
-package account.users;
-
-message User {
-  string id = 1; // Уникальный идентификатор, присваивается системой
-  string name = 2; // Уникальное имя, login
-  repeated string identities = 3; // Authorization subjects (JWT sub claims)
-  string display_name = 4; // Имя пользователя для отображения
-  string email = 5; // Email, указывается пользователем
-  google.protobuf.BoolValue email_verified = 6; // Флаг что email проверен
-  string avatar_url = 7; // URI изображения пользователя
-  google.protobuf.BoolValue system = 10; // Системный пользователь (может получать доступ к расширенному API)
-}
-
-message Filter {
-  repeated string id = 1;
-  repeated string name = 2;
-  repeated string identities = 3;
-  repeated string display_name = 4;
-  repeated string email = 5;
-  google.protobuf.BoolValue email_verified = 6;
-  google.protobuf.BoolValue system = 10;
-}
-
-message CreateRequest {
-  User create = 1;
-}
-
-message CreateResponse {
-  User user = 1;
-}
-
-// userId = `current` для получения текущего пользователя
-message GetRequest {
-  string user_id = 1;
-}
-
-message GetResponse {
-  User user = 1;
-}
-
-message FindRequest {
-  Filter filter = 1;
-  common.FindOptions options = 10;
-}
-
-message FindResponse {
-  repeated User users = 1;
-  int64 total = 2;
-}
-
-// userId = `current` для обновления текущего пользователя
-message UpdateRequest {
-  User update = 2; // Содержит только поля необходимые для обновления
-}
-
-message DeleteRequest {
-  string user_id = 1;
-}
-
-message GetByIdentityRequest {
-  string identity = 1;
-}
-
-message GetByIdentityResponse {
-  User user = 1;
-}
-
-service Users  {
-  // Создание пользователя или регистрация текущего пользователя в системе, если create.id == `current`
-  rpc Create(CreateRequest) returns(CreateResponse) {}
-
-  //  - Получение любого пользователя по идентификатору
-  //  - Получение текущего (от лица которого делается запрос) пользователя по специальному идентификатору `current`
-  rpc Get(GetRequest) returns(GetResponse) {}
-
-  // Найти пользователей с фильтрацией. Фильтры доступны пользователям в зависимости от их прав
-  rpc Find(FindRequest) returns(FindResponse) {}
-
-  //  - Обновление существующего пользователя по идентификатору
-  //  - Обновление текущего пользователя по спец. идентификатору `current`
-  rpc Update(UpdateRequest) returns(google.protobuf.Empty) {}
-
-  //  - Удаление существующего пользователя по идентификатору
-  //  - Удаление текущего пользователя по спец. идентификатору `current`
-  rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
-
-  // Метод для внутреннего использования. Недоступен для внешних
-  // запросов - авторизация вернет ошибку `access denied`
-  rpc GetByIdentity(GetByIdentityRequest) returns(GetByIdentityResponse) {}
-}
diff --git a/proto/perxis/versions/account/versions.proto b/proto/perxis/versions/account/versions.proto
deleted file mode 100644
index 1c27f8f3dfdf52a6052cfd4bc73ff5b5ff333a84..0000000000000000000000000000000000000000
--- a/proto/perxis/versions/account/versions.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/versions/account;account";
-
-package account;
-
-message GetResponse {
-  common.Version version = 1;
-}
-
-service Versions {
-  rpc Get(google.protobuf.Empty) returns(GetResponse) {}
-}
diff --git a/proto/perxis/versions/content/versions.proto b/proto/perxis/versions/content/versions.proto
deleted file mode 100644
index 582bd7ac04158e04b1c15209bafac9dfe1129382..0000000000000000000000000000000000000000
--- a/proto/perxis/versions/content/versions.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-syntax = "proto3";
-
-import "google/protobuf/empty.proto";
-import "perxis/common/common.proto";
-
-option go_package = "git.perx.ru/perxis/perxis/proto/versions/content;content";
-
-package content;
-
-message GetResponse {
-  common.Version version = 1;
-}
-
-service Versions {
-  rpc Get(google.protobuf.Empty) returns(GetResponse) {}
-}