From 0f40316ea002577ed206329d31bd8312bfdef61d Mon Sep 17 00:00:00 2001
From: Georgiy Eterevskiy <goshik_e@mail.ru>
Date: Mon, 17 May 2021 16:25:30 +0300
Subject: [PATCH] Update protos, regenerate python code

---
 Makefile                                      |   8 +-
 .../accountmanagement_pb2.py                  | 384 ++++-----
 .../accountmanagement_pb2_grpc.py             | 272 +++---
 .../__init__.py                               |   0
 perxis/clients/clients_pb2.py                 | 217 +----
 perxis/clients/clients_pb2_grpc.py            | 136 +--
 perxis/collaborators/collaborators_pb2.py     |  66 +-
 .../collaborators/collaborators_pb2_grpc.py   |  50 +-
 perxis/collections/__init__.py                |   0
 .../collections_pb2.py                        |  66 +-
 .../collections_pb2_grpc.py                   |  50 +-
 perxis/common/common_pb2.py                   | 223 +++--
 perxis/contentcontrol/contentcontrol_pb2.py   |  90 +-
 .../contentcontrol/contentcontrol_pb2_grpc.py |  56 +-
 perxis/contentdelivery/contentdelivery_pb2.py | 114 +--
 .../contentdelivery_pb2_grpc.py               |  86 +-
 .../contentmanagement/contentmanagment_pb2.py | 472 +++++------
 .../contentmanagment_pb2_grpc.py              | 284 +++----
 perxis/delivery/__init__.py                   |   0
 perxis/delivery/delivery_pb2.py               | 790 ++++++++++++++++++
 perxis/delivery/delivery_pb2_grpc.py          | 264 ++++++
 perxis/environments/environments_pb2.py       |  86 +-
 perxis/environments/environments_pb2_grpc.py  |  62 +-
 perxis/file/file_pb2.py                       | 106 +--
 perxis/file/file_pb2_grpc.py                  |  62 +-
 perxis/invitations/invitations_pb2.py         | 100 +--
 perxis/invitations/invitations_pb2_grpc.py    |  50 +-
 perxis/items/__init__.py                      |   0
 perxis/items/items_pb2.py                     | 346 ++++++--
 perxis/items/items_pb2_grpc.py                | 134 +--
 perxis/locales/locales_pb2.py                 |  46 +-
 perxis/locales/locales_pb2_grpc.py            |  32 +-
 perxis/members/members_pb2.py                 |  84 +-
 perxis/members/members_pb2_grpc.py            |  56 +-
 perxis/organizations/organizations_pb2.py     |  76 +-
 .../organizations/organizations_pb2_grpc.py   |  50 +-
 perxis/roles/__init__.py                      |   0
 perxis/roles/roles_pb2.py                     | 199 +----
 perxis/roles/roles_pb2_grpc.py                | 118 +--
 perxis/spaces/spaces_pb2.py                   |  80 +-
 perxis/spaces/spaces_pb2_grpc.py              |  56 +-
 perxis/users/users_pb2.py                     |  97 +--
 perxis/users/users_pb2_grpc.py                |  62 +-
 perxis/versions/__init__.py                   |   0
 perxis/versions/account/__init__.py           |   0
 perxis/versions/account/versions_pb2.py       | 101 +++
 perxis/versions/account/versions_pb2_grpc.py  |  67 ++
 perxis/versions/content/__init__.py           |   0
 perxis/versions/content/versions_pb2.py       | 101 +++
 perxis/versions/content/versions_pb2_grpc.py  |  67 ++
 .../accountmanagement/accountmanagement.proto |   2 +-
 proto/{ => perxis}/clients/clients.proto      |  20 +-
 .../collaborators/collaborators.proto         |   2 +-
 .../collections/collections.proto             |   4 +-
 proto/{ => perxis}/common/common.proto        |  15 +-
 .../contentcontrol/contentcontrol.proto       |   2 +-
 .../contentdelivery/contentdelivery.proto     |   2 +-
 .../contentmanagement/contentmanagment.proto  |   2 +-
 proto/perxis/delivery/delivery.proto          |  90 ++
 .../environments/environments.proto           |   0
 proto/{ => perxis}/file/file.proto            |   2 +-
 .../invitations/invitations.proto             |   0
 proto/{ => perxis}/items/items.proto          |  20 +-
 proto/{ => perxis}/locales/locales.proto      |   0
 proto/{ => perxis}/members/members.proto      |   2 +-
 .../organizations/organizations.proto         |   2 +-
 proto/{ => perxis}/roles/roles.proto          |  19 +-
 proto/{ => perxis}/spaces/spaces.proto        |   0
 proto/{ => perxis}/users/users.proto          |   3 +-
 proto/perxis/versions/account/versions.proto  |  16 +
 proto/perxis/versions/content/versions.proto  |  16 +
 setup.py                                      |   2 +-
 72 files changed, 3707 insertions(+), 2380 deletions(-)
 rename perxis/{collections_perxis => clients}/__init__.py (100%)
 create mode 100644 perxis/collections/__init__.py
 rename perxis/{collections_perxis => collections}/collections_pb2.py (86%)
 rename perxis/{collections_perxis => collections}/collections_pb2_grpc.py (72%)
 create mode 100644 perxis/delivery/__init__.py
 create mode 100644 perxis/delivery/delivery_pb2.py
 create mode 100644 perxis/delivery/delivery_pb2_grpc.py
 create mode 100644 perxis/items/__init__.py
 create mode 100644 perxis/roles/__init__.py
 create mode 100644 perxis/versions/__init__.py
 create mode 100644 perxis/versions/account/__init__.py
 create mode 100644 perxis/versions/account/versions_pb2.py
 create mode 100644 perxis/versions/account/versions_pb2_grpc.py
 create mode 100644 perxis/versions/content/__init__.py
 create mode 100644 perxis/versions/content/versions_pb2.py
 create mode 100644 perxis/versions/content/versions_pb2_grpc.py
 rename proto/{ => perxis}/accountmanagement/accountmanagement.proto (99%)
 rename proto/{ => perxis}/clients/clients.proto (81%)
 rename proto/{ => perxis}/collaborators/collaborators.proto (96%)
 rename proto/{ => perxis}/collections/collections.proto (95%)
 rename proto/{ => perxis}/common/common.proto (96%)
 rename proto/{ => perxis}/contentcontrol/contentcontrol.proto (96%)
 rename proto/{ => perxis}/contentdelivery/contentdelivery.proto (98%)
 rename proto/{ => perxis}/contentmanagement/contentmanagment.proto (99%)
 create mode 100644 proto/perxis/delivery/delivery.proto
 rename proto/{ => perxis}/environments/environments.proto (100%)
 rename proto/{ => perxis}/file/file.proto (98%)
 rename proto/{ => perxis}/invitations/invitations.proto (100%)
 rename proto/{ => perxis}/items/items.proto (93%)
 rename proto/{ => perxis}/locales/locales.proto (100%)
 rename proto/{ => perxis}/members/members.proto (98%)
 rename proto/{ => perxis}/organizations/organizations.proto (97%)
 rename proto/{ => perxis}/roles/roles.proto (73%)
 rename proto/{ => perxis}/spaces/spaces.proto (100%)
 rename proto/{ => perxis}/users/users.proto (96%)
 create mode 100644 proto/perxis/versions/account/versions.proto
 create mode 100644 proto/perxis/versions/content/versions.proto

diff --git a/Makefile b/Makefile
index c66baeb..7581b43 100644
--- a/Makefile
+++ b/Makefile
@@ -2,8 +2,7 @@
 SHELL = bash
 
 SRC_PROTO_FILES_DIR=./proto
-COPIES_PROTO_FILES_DIR=./proto_perxis
-OUTPUT_FILES_DIR=./perxis
+OUTPUT_FILES_DIR=./
 
 help:
 	@echo "clean - remove all build, test, coverage and Python artifacts"
@@ -51,10 +50,7 @@ lint: install-build-requirements
 	flake8 perxis/
 
 generate: clean-proto install-build-requirements
-	cp -avR $(SRC_PROTO_FILES_DIR) $(COPIES_PROTO_FILES_DIR)
-	mv $(COPIES_PROTO_FILES_DIR)/collections $(COPIES_PROTO_FILES_DIR)/collections_perxis
-	find $(COPIES_PROTO_FILES_DIR) -name '*.proto' -exec python3 -m grpc_tools.protoc -I${COPIES_PROTO_FILES_DIR} --python_out=$(OUTPUT_FILES_DIR) --grpc_python_out=$(OUTPUT_FILES_DIR) {} +
-	rm -fr $(COPIES_PROTO_FILES_DIR)
+	find $(PROTO_FILES_DIR) -name '*.proto' -exec python3 -m grpc_tools.protoc -I${PROTO_FILES_DIR} --python_out=$(OUTPUT_FILES_DIR) --grpc_python_out=$(OUTPUT_FILES_DIR) {} +
 
 dist: clean generate
 	python setup.py sdist
diff --git a/perxis/accountmanagement/accountmanagement_pb2.py b/perxis/accountmanagement/accountmanagement_pb2.py
index 21f2857..c255403 100644
--- a/perxis/accountmanagement/accountmanagement_pb2.py
+++ b/perxis/accountmanagement/accountmanagement_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: accountmanagement/accountmanagement.proto
+# source: perxis/accountmanagement/accountmanagement.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -14,18 +14,18 @@ _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
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='accountmanagement/accountmanagement.proto',
+  name='perxis/accountmanagement/accountmanagement.proto',
   package='accountmanagement',
   syntax='proto3',
   serialized_options=b'ZDgithub.com/perxteam/perxis/proto/accountmanagement;accountmanagement',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n)accountmanagement/accountmanagement.proto\x12\x11\x61\x63\x63ountmanagement\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x13\x63ommon/common.proto\"P\n\x19\x43reateOrganizationRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x10\n\x08logo_uri\x18\x04 \x01(\t\"H\n\x1a\x43reateOrganizationResponse\x12*\n\x0corganization\x18\x01 \x01(\x0b\x32\x14.common.Organization\"i\n\x19UpdateOrganizationRequest\x12\x17\n\x0forganization_id\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_uri\x18\x04 \x01(\t\"H\n\x1aUpdateOrganizationResponse\x12*\n\x0corganization\x18\x01 \x01(\x0b\x32\x14.common.Organization\"4\n\x19\x44\x65leteOrganizationRequest\x12\x17\n\x0forganization_id\x18\x01 \x01(\t\"\x1c\n\x1a\x44\x65leteOrganizationResponse\"[\n\x18\x46indOrganizationsRequest\x12\x10\n\x08page_num\x18\x01 \x01(\x05\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x0b\n\x03ids\x18\x03 \x03(\t\x12\r\n\x05names\x18\x04 \x03(\t\"W\n\x19\x46indOrganizationsResponse\x12+\n\rorganizations\x18\x01 \x03(\x0b\x32\x14.common.Organization\x12\r\n\x05total\x18\x02 \x01(\x05\"k\n#UpdateOrganizationMembershipRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\x12\x1a\n\x04role\x18\x03 \x01(\x0e\x32\x0c.common.Role\"O\n#DeleteOrganizationMembershipRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\"\x92\x01\n\"FindOrganizationMembershipsRequest\x12\x18\n\x10organization_ids\x18\x01 \x03(\t\x12\x10\n\x08user_ids\x18\x02 \x03(\t\x12\x1b\n\x05roles\x18\x03 \x03(\x0e\x32\x0c.common.Role\x12\x10\n\x08page_num\x18\t \x01(\x05\x12\x11\n\tpage_size\x18\n \x01(\x05\"i\n#FindOrganizationMembershipsResponse\x12\x33\n\x0bmemberships\x18\x01 \x03(\x0b\x32\x1e.common.OrganizationMembership\x12\r\n\x05total\x18\x02 \x01(\x05\"P\n\x12\x43reateSpaceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x17\n\x0forganization_id\x18\x03 \x01(\t\"3\n\x13\x43reateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"#\n\x0fGetSpaceRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"0\n\x10GetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"8\n\x1dListOrganizationSpacesRequest\x12\x17\n\x0forganization_id\x18\x01 \x01(\t\"?\n\x1eListOrganizationSpacesResponse\x12\x1d\n\x06spaces\x18\x01 \x03(\x0b\x32\r.common.Space\"Z\n\x12UpdateSpaceRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0f\n\x07\x61pi_url\x18\x04 \x01(\t\"3\n\x13UpdateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"&\n\x12\x44\x65leteSpaceRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"\x15\n\x13\x44\x65leteSpaceResponse\"S\n\x1c\x43reateSpaceInvitationRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x12\n\nspace_role\x18\x02 \x01(\t\x12\r\n\x05\x65mail\x18\x03 \x01(\t\"L\n\x1d\x43reateSpaceInvitationResponse\x12+\n\ninvitation\x18\x01 \x01(\x0b\x32\x17.common.SpaceInvitation\"2\n\x19GetSpaceInvitationRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"I\n\x1aGetSpaceInvitationResponse\x12+\n\ninvitation\x18\x01 \x01(\x0b\x32\x17.common.SpaceInvitation\"\xea\x01\n\x1cUpdateSpaceInvitationRequest\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\"\x1f\n\x1dUpdateSpaceInvitationResponse\"5\n\x1c\x41\x63\x63\x65ptSpaceInvitationRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"\x1f\n\x1d\x41\x63\x63\x65ptSpaceInvitationResponse\"\x83\x02\n\x1b\x46indSpaceInvitationsRequest\x12\x16\n\x0einvitation_ids\x18\x01 \x03(\t\x12\x18\n\x10organization_ids\x18\x02 \x03(\t\x12\x11\n\tspace_ids\x18\x03 \x03(\t\x12\x0e\n\x06\x65mails\x18\x04 \x03(\t\x12\x13\n\x0bspace_roles\x18\x05 \x03(\t\x12(\n\x04sent\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12+\n\x07pending\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x10\n\x08page_num\x18\t \x01(\x05\x12\x11\n\tpage_size\x18\n \x01(\x05\"[\n\x1c\x46indSpaceInvitationsResponse\x12,\n\x0binvitations\x18\x01 \x03(\x0b\x32\x17.common.SpaceInvitation\x12\r\n\x05total\x18\x02 \x01(\x05\"5\n\x1c\x44\x65leteSpaceInvitationRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"\x1f\n\x1d\x44\x65leteSpaceInvitationResponse\"R\n\x19SetSpaceMembershipRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x12\n\nspace_role\x18\x03 \x01(\t\"\x1c\n\x1aSetSpaceMembershipResponse\"A\n\x1c\x44\x65leteSpaceMembershipRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"\x1f\n\x1d\x44\x65leteSpaceMembershipResponse\"\x96\x01\n\x1b\x46indSpaceMembershipsRequest\x12\x18\n\x10organization_ids\x18\x01 \x03(\t\x12\x11\n\tspace_ids\x18\x02 \x03(\t\x12\x10\n\x08user_ids\x18\x03 \x03(\t\x12\x13\n\x0bspace_roles\x18\x04 \x03(\t\x12\x10\n\x08page_num\x18\t \x01(\x05\x12\x11\n\tpage_size\x18\n \x01(\x05\"\xe6\x01\n\x1c\x46indSpaceMembershipsResponse\x12T\n\x0bmemberships\x18\x01 \x03(\x0b\x32?.accountmanagement.FindSpaceMembershipsResponse.SpaceMembership\x12\r\n\x05total\x18\x02 \x01(\x05\x1a\x61\n\x0fSpaceMembership\x12\x17\n\x0forganization_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x03 \x01(\t\x12\x12\n\nspace_role\x18\x04 \x01(\t\"\x96\x01\n\x11\x43reateUserRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\x12\n\nidentities\x18\x04 \x03(\t\x12\r\n\x05\x65mail\x18\x05 \x01(\t\x12\x16\n\x0e\x65mail_verified\x18\x06 \x01(\x08\x12\x12\n\navatar_uri\x18\x07 \x01(\t\x12\x0e\n\x06system\x18\n \x01(\x08\"0\n\x12\x43reateUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"\x17\n\x15GetCurrentUserRequest\"4\n\x16GetCurrentUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"a\n\x18UpdateCurrentUserRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\r\n\x05\x65mail\x18\x04 \x01(\t\x12\x12\n\navatar_uri\x18\x06 \x01(\t\"7\n\x19UpdateCurrentUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"!\n\x0eGetUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\"-\n\x0fGetUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"\x82\x02\n\x10\x46indUsersRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x12\x12\n\nidentities\x18\x02 \x03(\t\x12\r\n\x05names\x18\x03 \x03(\t\x12\x15\n\rdisplay_names\x18\x04 \x03(\t\x12\x0e\n\x06\x65mails\x18\x05 \x03(\t\x12\x32\n\x0e\x65mail_verified\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x12\n\navatar_uri\x18\t \x03(\t\x12*\n\x06system\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x10\n\x08page_num\x18\x0b \x01(\x05\x12\x11\n\tpage_size\x18\x0c \x01(\x05\"?\n\x11\x46indUsersResponse\x12\x1b\n\x05users\x18\x01 \x03(\x0b\x32\x0c.common.User\x12\r\n\x05total\x18\x02 \x01(\x05\"B\n\x11UpdateUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x1c\n\x06update\x18\x02 \x01(\x0b\x32\x0c.common.User\"0\n\x12UpdateUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"$\n\x11\x44\x65leteUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\"\x14\n\x12\x44\x65leteUserResponse2\x80\x17\n\x11\x41\x63\x63ountManagement\x12[\n\nCreateUser\x12$.accountmanagement.CreateUserRequest\x1a%.accountmanagement.CreateUserResponse\"\x00\x12R\n\x07GetUser\x12!.accountmanagement.GetUserRequest\x1a\".accountmanagement.GetUserResponse\"\x00\x12X\n\tFindUsers\x12#.accountmanagement.FindUsersRequest\x1a$.accountmanagement.FindUsersResponse\"\x00\x12[\n\nUpdateUser\x12$.accountmanagement.UpdateUserRequest\x1a%.accountmanagement.UpdateUserResponse\"\x00\x12L\n\nDeleteUser\x12$.accountmanagement.DeleteUserRequest\x1a\x16.google.protobuf.Empty\"\x00\x12U\n\x0eGetCurrentUser\x12\x16.google.protobuf.Empty\x1a).accountmanagement.GetCurrentUserResponse\"\x00\x12p\n\x11UpdateCurrentUser\x12+.accountmanagement.UpdateCurrentUserRequest\x1a,.accountmanagement.UpdateCurrentUserResponse\"\x00\x12s\n\x12\x43reateOrganization\x12,.accountmanagement.CreateOrganizationRequest\x1a-.accountmanagement.CreateOrganizationResponse\"\x00\x12\\\n\x12\x44\x65leteOrganization\x12,.accountmanagement.DeleteOrganizationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x11\x46indOrganizations\x12+.accountmanagement.FindOrganizationsRequest\x1a,.accountmanagement.FindOrganizationsResponse\"\x00\x12s\n\x12UpdateOrganization\x12,.accountmanagement.UpdateOrganizationRequest\x1a-.accountmanagement.UpdateOrganizationResponse\"\x00\x12p\n\x1cUpdateOrganizationMembership\x12\x36.accountmanagement.UpdateOrganizationMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x1c\x44\x65leteOrganizationMembership\x12\x36.accountmanagement.DeleteOrganizationMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x8e\x01\n\x1b\x46indOrganizationMemberships\x12\x35.accountmanagement.FindOrganizationMembershipsRequest\x1a\x36.accountmanagement.FindOrganizationMembershipsResponse\"\x00\x12^\n\x0b\x43reateSpace\x12%.accountmanagement.CreateSpaceRequest\x1a&.accountmanagement.CreateSpaceResponse\"\x00\x12U\n\x08GetSpace\x12\".accountmanagement.GetSpaceRequest\x1a#.accountmanagement.GetSpaceResponse\"\x00\x12\x7f\n\x16ListOrganizationSpaces\x12\x30.accountmanagement.ListOrganizationSpacesRequest\x1a\x31.accountmanagement.ListOrganizationSpacesResponse\"\x00\x12^\n\x0bUpdateSpace\x12%.accountmanagement.UpdateSpaceRequest\x1a&.accountmanagement.UpdateSpaceResponse\"\x00\x12N\n\x0b\x44\x65leteSpace\x12%.accountmanagement.DeleteSpaceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12|\n\x15\x43reateSpaceInvitation\x12/.accountmanagement.CreateSpaceInvitationRequest\x1a\x30.accountmanagement.CreateSpaceInvitationResponse\"\x00\x12s\n\x12GetSpaceInvitation\x12,.accountmanagement.GetSpaceInvitationRequest\x1a-.accountmanagement.GetSpaceInvitationResponse\"\x00\x12\x62\n\x15UpdateSpaceInvitation\x12/.accountmanagement.UpdateSpaceInvitationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x15\x41\x63\x63\x65ptSpaceInvitation\x12/.accountmanagement.AcceptSpaceInvitationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12y\n\x14\x46indSpaceInvitations\x12..accountmanagement.FindSpaceInvitationsRequest\x1a/.accountmanagement.FindSpaceInvitationsResponse\"\x00\x12\x62\n\x15\x44\x65leteSpaceInvitation\x12/.accountmanagement.DeleteSpaceInvitationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\\\n\x12SetSpaceMembership\x12,.accountmanagement.SetSpaceMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x15\x44\x65leteSpaceMembership\x12/.accountmanagement.DeleteSpaceMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12y\n\x14\x46indSpaceMemberships\x12..accountmanagement.FindSpaceMembershipsRequest\x1a/.accountmanagement.FindSpaceMembershipsResponse\"\x00\x42\x46ZDgithub.com/perxteam/perxis/proto/accountmanagement;accountmanagementb\x06proto3'
+  serialized_pb=b'\n0perxis/accountmanagement/accountmanagement.proto\x12\x11\x61\x63\x63ountmanagement\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1aperxis/common/common.proto\"P\n\x19\x43reateOrganizationRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x10\n\x08logo_uri\x18\x04 \x01(\t\"H\n\x1a\x43reateOrganizationResponse\x12*\n\x0corganization\x18\x01 \x01(\x0b\x32\x14.common.Organization\"i\n\x19UpdateOrganizationRequest\x12\x17\n\x0forganization_id\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_uri\x18\x04 \x01(\t\"H\n\x1aUpdateOrganizationResponse\x12*\n\x0corganization\x18\x01 \x01(\x0b\x32\x14.common.Organization\"4\n\x19\x44\x65leteOrganizationRequest\x12\x17\n\x0forganization_id\x18\x01 \x01(\t\"\x1c\n\x1a\x44\x65leteOrganizationResponse\"[\n\x18\x46indOrganizationsRequest\x12\x10\n\x08page_num\x18\x01 \x01(\x05\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x0b\n\x03ids\x18\x03 \x03(\t\x12\r\n\x05names\x18\x04 \x03(\t\"W\n\x19\x46indOrganizationsResponse\x12+\n\rorganizations\x18\x01 \x03(\x0b\x32\x14.common.Organization\x12\r\n\x05total\x18\x02 \x01(\x05\"k\n#UpdateOrganizationMembershipRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\x12\x1a\n\x04role\x18\x03 \x01(\x0e\x32\x0c.common.Role\"O\n#DeleteOrganizationMembershipRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\"\x92\x01\n\"FindOrganizationMembershipsRequest\x12\x18\n\x10organization_ids\x18\x01 \x03(\t\x12\x10\n\x08user_ids\x18\x02 \x03(\t\x12\x1b\n\x05roles\x18\x03 \x03(\x0e\x32\x0c.common.Role\x12\x10\n\x08page_num\x18\t \x01(\x05\x12\x11\n\tpage_size\x18\n \x01(\x05\"i\n#FindOrganizationMembershipsResponse\x12\x33\n\x0bmemberships\x18\x01 \x03(\x0b\x32\x1e.common.OrganizationMembership\x12\r\n\x05total\x18\x02 \x01(\x05\"P\n\x12\x43reateSpaceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x17\n\x0forganization_id\x18\x03 \x01(\t\"3\n\x13\x43reateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"#\n\x0fGetSpaceRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"0\n\x10GetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"8\n\x1dListOrganizationSpacesRequest\x12\x17\n\x0forganization_id\x18\x01 \x01(\t\"?\n\x1eListOrganizationSpacesResponse\x12\x1d\n\x06spaces\x18\x01 \x03(\x0b\x32\r.common.Space\"Z\n\x12UpdateSpaceRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0f\n\x07\x61pi_url\x18\x04 \x01(\t\"3\n\x13UpdateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"&\n\x12\x44\x65leteSpaceRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"\x15\n\x13\x44\x65leteSpaceResponse\"S\n\x1c\x43reateSpaceInvitationRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x12\n\nspace_role\x18\x02 \x01(\t\x12\r\n\x05\x65mail\x18\x03 \x01(\t\"L\n\x1d\x43reateSpaceInvitationResponse\x12+\n\ninvitation\x18\x01 \x01(\x0b\x32\x17.common.SpaceInvitation\"2\n\x19GetSpaceInvitationRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"I\n\x1aGetSpaceInvitationResponse\x12+\n\ninvitation\x18\x01 \x01(\x0b\x32\x17.common.SpaceInvitation\"\xea\x01\n\x1cUpdateSpaceInvitationRequest\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\"\x1f\n\x1dUpdateSpaceInvitationResponse\"5\n\x1c\x41\x63\x63\x65ptSpaceInvitationRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"\x1f\n\x1d\x41\x63\x63\x65ptSpaceInvitationResponse\"\x83\x02\n\x1b\x46indSpaceInvitationsRequest\x12\x16\n\x0einvitation_ids\x18\x01 \x03(\t\x12\x18\n\x10organization_ids\x18\x02 \x03(\t\x12\x11\n\tspace_ids\x18\x03 \x03(\t\x12\x0e\n\x06\x65mails\x18\x04 \x03(\t\x12\x13\n\x0bspace_roles\x18\x05 \x03(\t\x12(\n\x04sent\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12+\n\x07pending\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x10\n\x08page_num\x18\t \x01(\x05\x12\x11\n\tpage_size\x18\n \x01(\x05\"[\n\x1c\x46indSpaceInvitationsResponse\x12,\n\x0binvitations\x18\x01 \x03(\x0b\x32\x17.common.SpaceInvitation\x12\r\n\x05total\x18\x02 \x01(\x05\"5\n\x1c\x44\x65leteSpaceInvitationRequest\x12\x15\n\rinvitation_id\x18\x01 \x01(\t\"\x1f\n\x1d\x44\x65leteSpaceInvitationResponse\"R\n\x19SetSpaceMembershipRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x12\n\nspace_role\x18\x03 \x01(\t\"\x1c\n\x1aSetSpaceMembershipResponse\"A\n\x1c\x44\x65leteSpaceMembershipRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"\x1f\n\x1d\x44\x65leteSpaceMembershipResponse\"\x96\x01\n\x1b\x46indSpaceMembershipsRequest\x12\x18\n\x10organization_ids\x18\x01 \x03(\t\x12\x11\n\tspace_ids\x18\x02 \x03(\t\x12\x10\n\x08user_ids\x18\x03 \x03(\t\x12\x13\n\x0bspace_roles\x18\x04 \x03(\t\x12\x10\n\x08page_num\x18\t \x01(\x05\x12\x11\n\tpage_size\x18\n \x01(\x05\"\xe6\x01\n\x1c\x46indSpaceMembershipsResponse\x12T\n\x0bmemberships\x18\x01 \x03(\x0b\x32?.accountmanagement.FindSpaceMembershipsResponse.SpaceMembership\x12\r\n\x05total\x18\x02 \x01(\x05\x1a\x61\n\x0fSpaceMembership\x12\x17\n\x0forganization_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x03 \x01(\t\x12\x12\n\nspace_role\x18\x04 \x01(\t\"\x96\x01\n\x11\x43reateUserRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\x12\n\nidentities\x18\x04 \x03(\t\x12\r\n\x05\x65mail\x18\x05 \x01(\t\x12\x16\n\x0e\x65mail_verified\x18\x06 \x01(\x08\x12\x12\n\navatar_uri\x18\x07 \x01(\t\x12\x0e\n\x06system\x18\n \x01(\x08\"0\n\x12\x43reateUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"\x17\n\x15GetCurrentUserRequest\"4\n\x16GetCurrentUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"a\n\x18UpdateCurrentUserRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\r\n\x05\x65mail\x18\x04 \x01(\t\x12\x12\n\navatar_uri\x18\x06 \x01(\t\"7\n\x19UpdateCurrentUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"!\n\x0eGetUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\"-\n\x0fGetUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"\x82\x02\n\x10\x46indUsersRequest\x12\x0b\n\x03ids\x18\x01 \x03(\t\x12\x12\n\nidentities\x18\x02 \x03(\t\x12\r\n\x05names\x18\x03 \x03(\t\x12\x15\n\rdisplay_names\x18\x04 \x03(\t\x12\x0e\n\x06\x65mails\x18\x05 \x03(\t\x12\x32\n\x0e\x65mail_verified\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x12\n\navatar_uri\x18\t \x03(\t\x12*\n\x06system\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x10\n\x08page_num\x18\x0b \x01(\x05\x12\x11\n\tpage_size\x18\x0c \x01(\x05\"?\n\x11\x46indUsersResponse\x12\x1b\n\x05users\x18\x01 \x03(\x0b\x32\x0c.common.User\x12\r\n\x05total\x18\x02 \x01(\x05\"B\n\x11UpdateUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x1c\n\x06update\x18\x02 \x01(\x0b\x32\x0c.common.User\"0\n\x12UpdateUserResponse\x12\x1a\n\x04user\x18\x01 \x01(\x0b\x32\x0c.common.User\"$\n\x11\x44\x65leteUserRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\"\x14\n\x12\x44\x65leteUserResponse2\x80\x17\n\x11\x41\x63\x63ountManagement\x12[\n\nCreateUser\x12$.accountmanagement.CreateUserRequest\x1a%.accountmanagement.CreateUserResponse\"\x00\x12R\n\x07GetUser\x12!.accountmanagement.GetUserRequest\x1a\".accountmanagement.GetUserResponse\"\x00\x12X\n\tFindUsers\x12#.accountmanagement.FindUsersRequest\x1a$.accountmanagement.FindUsersResponse\"\x00\x12[\n\nUpdateUser\x12$.accountmanagement.UpdateUserRequest\x1a%.accountmanagement.UpdateUserResponse\"\x00\x12L\n\nDeleteUser\x12$.accountmanagement.DeleteUserRequest\x1a\x16.google.protobuf.Empty\"\x00\x12U\n\x0eGetCurrentUser\x12\x16.google.protobuf.Empty\x1a).accountmanagement.GetCurrentUserResponse\"\x00\x12p\n\x11UpdateCurrentUser\x12+.accountmanagement.UpdateCurrentUserRequest\x1a,.accountmanagement.UpdateCurrentUserResponse\"\x00\x12s\n\x12\x43reateOrganization\x12,.accountmanagement.CreateOrganizationRequest\x1a-.accountmanagement.CreateOrganizationResponse\"\x00\x12\\\n\x12\x44\x65leteOrganization\x12,.accountmanagement.DeleteOrganizationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x11\x46indOrganizations\x12+.accountmanagement.FindOrganizationsRequest\x1a,.accountmanagement.FindOrganizationsResponse\"\x00\x12s\n\x12UpdateOrganization\x12,.accountmanagement.UpdateOrganizationRequest\x1a-.accountmanagement.UpdateOrganizationResponse\"\x00\x12p\n\x1cUpdateOrganizationMembership\x12\x36.accountmanagement.UpdateOrganizationMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x1c\x44\x65leteOrganizationMembership\x12\x36.accountmanagement.DeleteOrganizationMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x8e\x01\n\x1b\x46indOrganizationMemberships\x12\x35.accountmanagement.FindOrganizationMembershipsRequest\x1a\x36.accountmanagement.FindOrganizationMembershipsResponse\"\x00\x12^\n\x0b\x43reateSpace\x12%.accountmanagement.CreateSpaceRequest\x1a&.accountmanagement.CreateSpaceResponse\"\x00\x12U\n\x08GetSpace\x12\".accountmanagement.GetSpaceRequest\x1a#.accountmanagement.GetSpaceResponse\"\x00\x12\x7f\n\x16ListOrganizationSpaces\x12\x30.accountmanagement.ListOrganizationSpacesRequest\x1a\x31.accountmanagement.ListOrganizationSpacesResponse\"\x00\x12^\n\x0bUpdateSpace\x12%.accountmanagement.UpdateSpaceRequest\x1a&.accountmanagement.UpdateSpaceResponse\"\x00\x12N\n\x0b\x44\x65leteSpace\x12%.accountmanagement.DeleteSpaceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12|\n\x15\x43reateSpaceInvitation\x12/.accountmanagement.CreateSpaceInvitationRequest\x1a\x30.accountmanagement.CreateSpaceInvitationResponse\"\x00\x12s\n\x12GetSpaceInvitation\x12,.accountmanagement.GetSpaceInvitationRequest\x1a-.accountmanagement.GetSpaceInvitationResponse\"\x00\x12\x62\n\x15UpdateSpaceInvitation\x12/.accountmanagement.UpdateSpaceInvitationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x15\x41\x63\x63\x65ptSpaceInvitation\x12/.accountmanagement.AcceptSpaceInvitationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12y\n\x14\x46indSpaceInvitations\x12..accountmanagement.FindSpaceInvitationsRequest\x1a/.accountmanagement.FindSpaceInvitationsResponse\"\x00\x12\x62\n\x15\x44\x65leteSpaceInvitation\x12/.accountmanagement.DeleteSpaceInvitationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\\\n\x12SetSpaceMembership\x12,.accountmanagement.SetSpaceMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x62\n\x15\x44\x65leteSpaceMembership\x12/.accountmanagement.DeleteSpaceMembershipRequest\x1a\x16.google.protobuf.Empty\"\x00\x12y\n\x14\x46indSpaceMemberships\x12..accountmanagement.FindSpaceMembershipsRequest\x1a/.accountmanagement.FindSpaceMembershipsResponse\"\x00\x42\x46ZDgithub.com/perxteam/perxis/proto/accountmanagement;accountmanagementb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -71,8 +71,8 @@ _CREATEORGANIZATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=179,
-  serialized_end=259,
+  serialized_start=193,
+  serialized_end=273,
 )
 
 
@@ -103,8 +103,8 @@ _CREATEORGANIZATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=261,
-  serialized_end=333,
+  serialized_start=275,
+  serialized_end=347,
 )
 
 
@@ -156,8 +156,8 @@ _UPDATEORGANIZATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=335,
-  serialized_end=440,
+  serialized_start=349,
+  serialized_end=454,
 )
 
 
@@ -188,8 +188,8 @@ _UPDATEORGANIZATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=442,
-  serialized_end=514,
+  serialized_start=456,
+  serialized_end=528,
 )
 
 
@@ -220,8 +220,8 @@ _DELETEORGANIZATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=516,
-  serialized_end=568,
+  serialized_start=530,
+  serialized_end=582,
 )
 
 
@@ -245,8 +245,8 @@ _DELETEORGANIZATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=570,
-  serialized_end=598,
+  serialized_start=584,
+  serialized_end=612,
 )
 
 
@@ -298,8 +298,8 @@ _FINDORGANIZATIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=600,
-  serialized_end=691,
+  serialized_start=614,
+  serialized_end=705,
 )
 
 
@@ -337,8 +337,8 @@ _FINDORGANIZATIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=693,
-  serialized_end=780,
+  serialized_start=707,
+  serialized_end=794,
 )
 
 
@@ -383,8 +383,8 @@ _UPDATEORGANIZATIONMEMBERSHIPREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=782,
-  serialized_end=889,
+  serialized_start=796,
+  serialized_end=903,
 )
 
 
@@ -422,8 +422,8 @@ _DELETEORGANIZATIONMEMBERSHIPREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=891,
-  serialized_end=970,
+  serialized_start=905,
+  serialized_end=984,
 )
 
 
@@ -482,8 +482,8 @@ _FINDORGANIZATIONMEMBERSHIPSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=973,
-  serialized_end=1119,
+  serialized_start=987,
+  serialized_end=1133,
 )
 
 
@@ -521,8 +521,8 @@ _FINDORGANIZATIONMEMBERSHIPSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1121,
-  serialized_end=1226,
+  serialized_start=1135,
+  serialized_end=1240,
 )
 
 
@@ -567,8 +567,8 @@ _CREATESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1228,
-  serialized_end=1308,
+  serialized_start=1242,
+  serialized_end=1322,
 )
 
 
@@ -599,8 +599,8 @@ _CREATESPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1310,
-  serialized_end=1361,
+  serialized_start=1324,
+  serialized_end=1375,
 )
 
 
@@ -631,8 +631,8 @@ _GETSPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1363,
-  serialized_end=1398,
+  serialized_start=1377,
+  serialized_end=1412,
 )
 
 
@@ -663,8 +663,8 @@ _GETSPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1400,
-  serialized_end=1448,
+  serialized_start=1414,
+  serialized_end=1462,
 )
 
 
@@ -695,8 +695,8 @@ _LISTORGANIZATIONSPACESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1450,
-  serialized_end=1506,
+  serialized_start=1464,
+  serialized_end=1520,
 )
 
 
@@ -727,8 +727,8 @@ _LISTORGANIZATIONSPACESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1508,
-  serialized_end=1571,
+  serialized_start=1522,
+  serialized_end=1585,
 )
 
 
@@ -780,8 +780,8 @@ _UPDATESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1573,
-  serialized_end=1663,
+  serialized_start=1587,
+  serialized_end=1677,
 )
 
 
@@ -812,8 +812,8 @@ _UPDATESPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1665,
-  serialized_end=1716,
+  serialized_start=1679,
+  serialized_end=1730,
 )
 
 
@@ -844,8 +844,8 @@ _DELETESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1718,
-  serialized_end=1756,
+  serialized_start=1732,
+  serialized_end=1770,
 )
 
 
@@ -869,8 +869,8 @@ _DELETESPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1758,
-  serialized_end=1779,
+  serialized_start=1772,
+  serialized_end=1793,
 )
 
 
@@ -915,8 +915,8 @@ _CREATESPACEINVITATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1781,
-  serialized_end=1864,
+  serialized_start=1795,
+  serialized_end=1878,
 )
 
 
@@ -947,8 +947,8 @@ _CREATESPACEINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1866,
-  serialized_end=1942,
+  serialized_start=1880,
+  serialized_end=1956,
 )
 
 
@@ -979,8 +979,8 @@ _GETSPACEINVITATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1944,
-  serialized_end=1994,
+  serialized_start=1958,
+  serialized_end=2008,
 )
 
 
@@ -1011,8 +1011,8 @@ _GETSPACEINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1996,
-  serialized_end=2069,
+  serialized_start=2010,
+  serialized_end=2083,
 )
 
 
@@ -1071,8 +1071,8 @@ _UPDATESPACEINVITATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2072,
-  serialized_end=2306,
+  serialized_start=2086,
+  serialized_end=2320,
 )
 
 
@@ -1096,8 +1096,8 @@ _UPDATESPACEINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2308,
-  serialized_end=2339,
+  serialized_start=2322,
+  serialized_end=2353,
 )
 
 
@@ -1128,8 +1128,8 @@ _ACCEPTSPACEINVITATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2341,
-  serialized_end=2394,
+  serialized_start=2355,
+  serialized_end=2408,
 )
 
 
@@ -1153,8 +1153,8 @@ _ACCEPTSPACEINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2396,
-  serialized_end=2427,
+  serialized_start=2410,
+  serialized_end=2441,
 )
 
 
@@ -1241,8 +1241,8 @@ _FINDSPACEINVITATIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2430,
-  serialized_end=2689,
+  serialized_start=2444,
+  serialized_end=2703,
 )
 
 
@@ -1280,8 +1280,8 @@ _FINDSPACEINVITATIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2691,
-  serialized_end=2782,
+  serialized_start=2705,
+  serialized_end=2796,
 )
 
 
@@ -1312,8 +1312,8 @@ _DELETESPACEINVITATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2784,
-  serialized_end=2837,
+  serialized_start=2798,
+  serialized_end=2851,
 )
 
 
@@ -1337,8 +1337,8 @@ _DELETESPACEINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2839,
-  serialized_end=2870,
+  serialized_start=2853,
+  serialized_end=2884,
 )
 
 
@@ -1383,8 +1383,8 @@ _SETSPACEMEMBERSHIPREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2872,
-  serialized_end=2954,
+  serialized_start=2886,
+  serialized_end=2968,
 )
 
 
@@ -1408,8 +1408,8 @@ _SETSPACEMEMBERSHIPRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2956,
-  serialized_end=2984,
+  serialized_start=2970,
+  serialized_end=2998,
 )
 
 
@@ -1447,8 +1447,8 @@ _DELETESPACEMEMBERSHIPREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2986,
-  serialized_end=3051,
+  serialized_start=3000,
+  serialized_end=3065,
 )
 
 
@@ -1472,8 +1472,8 @@ _DELETESPACEMEMBERSHIPRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3053,
-  serialized_end=3084,
+  serialized_start=3067,
+  serialized_end=3098,
 )
 
 
@@ -1539,8 +1539,8 @@ _FINDSPACEMEMBERSHIPSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3087,
-  serialized_end=3237,
+  serialized_start=3101,
+  serialized_end=3251,
 )
 
 
@@ -1592,8 +1592,8 @@ _FINDSPACEMEMBERSHIPSRESPONSE_SPACEMEMBERSHIP = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3373,
-  serialized_end=3470,
+  serialized_start=3387,
+  serialized_end=3484,
 )
 
 _FINDSPACEMEMBERSHIPSRESPONSE = _descriptor.Descriptor(
@@ -1630,8 +1630,8 @@ _FINDSPACEMEMBERSHIPSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3240,
-  serialized_end=3470,
+  serialized_start=3254,
+  serialized_end=3484,
 )
 
 
@@ -1704,8 +1704,8 @@ _CREATEUSERREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3473,
-  serialized_end=3623,
+  serialized_start=3487,
+  serialized_end=3637,
 )
 
 
@@ -1736,8 +1736,8 @@ _CREATEUSERRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3625,
-  serialized_end=3673,
+  serialized_start=3639,
+  serialized_end=3687,
 )
 
 
@@ -1761,8 +1761,8 @@ _GETCURRENTUSERREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3675,
-  serialized_end=3698,
+  serialized_start=3689,
+  serialized_end=3712,
 )
 
 
@@ -1793,8 +1793,8 @@ _GETCURRENTUSERRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3700,
-  serialized_end=3752,
+  serialized_start=3714,
+  serialized_end=3766,
 )
 
 
@@ -1846,8 +1846,8 @@ _UPDATECURRENTUSERREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3754,
-  serialized_end=3851,
+  serialized_start=3768,
+  serialized_end=3865,
 )
 
 
@@ -1878,8 +1878,8 @@ _UPDATECURRENTUSERRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3853,
-  serialized_end=3908,
+  serialized_start=3867,
+  serialized_end=3922,
 )
 
 
@@ -1910,8 +1910,8 @@ _GETUSERREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3910,
-  serialized_end=3943,
+  serialized_start=3924,
+  serialized_end=3957,
 )
 
 
@@ -1942,8 +1942,8 @@ _GETUSERRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3945,
-  serialized_end=3990,
+  serialized_start=3959,
+  serialized_end=4004,
 )
 
 
@@ -2037,8 +2037,8 @@ _FINDUSERSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3993,
-  serialized_end=4251,
+  serialized_start=4007,
+  serialized_end=4265,
 )
 
 
@@ -2076,8 +2076,8 @@ _FINDUSERSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4253,
-  serialized_end=4316,
+  serialized_start=4267,
+  serialized_end=4330,
 )
 
 
@@ -2115,8 +2115,8 @@ _UPDATEUSERREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4318,
-  serialized_end=4384,
+  serialized_start=4332,
+  serialized_end=4398,
 )
 
 
@@ -2147,8 +2147,8 @@ _UPDATEUSERRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4386,
-  serialized_end=4434,
+  serialized_start=4400,
+  serialized_end=4448,
 )
 
 
@@ -2179,8 +2179,8 @@ _DELETEUSERREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4436,
-  serialized_end=4472,
+  serialized_start=4450,
+  serialized_end=4486,
 )
 
 
@@ -2204,40 +2204,40 @@ _DELETEUSERRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4474,
-  serialized_end=4494,
+  serialized_start=4488,
+  serialized_end=4508,
 )
 
-_CREATEORGANIZATIONRESPONSE.fields_by_name['organization'].message_type = common_dot_common__pb2._ORGANIZATION
-_UPDATEORGANIZATIONRESPONSE.fields_by_name['organization'].message_type = common_dot_common__pb2._ORGANIZATION
-_FINDORGANIZATIONSRESPONSE.fields_by_name['organizations'].message_type = common_dot_common__pb2._ORGANIZATION
-_UPDATEORGANIZATIONMEMBERSHIPREQUEST.fields_by_name['role'].enum_type = common_dot_common__pb2._ROLE
-_FINDORGANIZATIONMEMBERSHIPSREQUEST.fields_by_name['roles'].enum_type = common_dot_common__pb2._ROLE
-_FINDORGANIZATIONMEMBERSHIPSRESPONSE.fields_by_name['memberships'].message_type = common_dot_common__pb2._ORGANIZATIONMEMBERSHIP
-_CREATESPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_GETSPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_LISTORGANIZATIONSPACESRESPONSE.fields_by_name['spaces'].message_type = common_dot_common__pb2._SPACE
-_UPDATESPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_CREATESPACEINVITATIONRESPONSE.fields_by_name['invitation'].message_type = common_dot_common__pb2._SPACEINVITATION
-_GETSPACEINVITATIONRESPONSE.fields_by_name['invitation'].message_type = common_dot_common__pb2._SPACEINVITATION
+_CREATEORGANIZATIONRESPONSE.fields_by_name['organization'].message_type = perxis_dot_common_dot_common__pb2._ORGANIZATION
+_UPDATEORGANIZATIONRESPONSE.fields_by_name['organization'].message_type = perxis_dot_common_dot_common__pb2._ORGANIZATION
+_FINDORGANIZATIONSRESPONSE.fields_by_name['organizations'].message_type = perxis_dot_common_dot_common__pb2._ORGANIZATION
+_UPDATEORGANIZATIONMEMBERSHIPREQUEST.fields_by_name['role'].enum_type = perxis_dot_common_dot_common__pb2._ROLE
+_FINDORGANIZATIONMEMBERSHIPSREQUEST.fields_by_name['roles'].enum_type = perxis_dot_common_dot_common__pb2._ROLE
+_FINDORGANIZATIONMEMBERSHIPSRESPONSE.fields_by_name['memberships'].message_type = perxis_dot_common_dot_common__pb2._ORGANIZATIONMEMBERSHIP
+_CREATESPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_GETSPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_LISTORGANIZATIONSPACESRESPONSE.fields_by_name['spaces'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_UPDATESPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_CREATESPACEINVITATIONRESPONSE.fields_by_name['invitation'].message_type = perxis_dot_common_dot_common__pb2._SPACEINVITATION
+_GETSPACEINVITATIONRESPONSE.fields_by_name['invitation'].message_type = perxis_dot_common_dot_common__pb2._SPACEINVITATION
 _UPDATESPACEINVITATIONREQUEST.fields_by_name['sent'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
 _UPDATESPACEINVITATIONREQUEST.fields_by_name['pending'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
 _UPDATESPACEINVITATIONREQUEST.fields_by_name['sent_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
 _UPDATESPACEINVITATIONREQUEST.fields_by_name['valid_until'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
 _FINDSPACEINVITATIONSREQUEST.fields_by_name['sent'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
 _FINDSPACEINVITATIONSREQUEST.fields_by_name['pending'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_FINDSPACEINVITATIONSRESPONSE.fields_by_name['invitations'].message_type = common_dot_common__pb2._SPACEINVITATION
+_FINDSPACEINVITATIONSRESPONSE.fields_by_name['invitations'].message_type = perxis_dot_common_dot_common__pb2._SPACEINVITATION
 _FINDSPACEMEMBERSHIPSRESPONSE_SPACEMEMBERSHIP.containing_type = _FINDSPACEMEMBERSHIPSRESPONSE
 _FINDSPACEMEMBERSHIPSRESPONSE.fields_by_name['memberships'].message_type = _FINDSPACEMEMBERSHIPSRESPONSE_SPACEMEMBERSHIP
-_CREATEUSERRESPONSE.fields_by_name['user'].message_type = common_dot_common__pb2._USER
-_GETCURRENTUSERRESPONSE.fields_by_name['user'].message_type = common_dot_common__pb2._USER
-_UPDATECURRENTUSERRESPONSE.fields_by_name['user'].message_type = common_dot_common__pb2._USER
-_GETUSERRESPONSE.fields_by_name['user'].message_type = common_dot_common__pb2._USER
+_CREATEUSERRESPONSE.fields_by_name['user'].message_type = perxis_dot_common_dot_common__pb2._USER
+_GETCURRENTUSERRESPONSE.fields_by_name['user'].message_type = perxis_dot_common_dot_common__pb2._USER
+_UPDATECURRENTUSERRESPONSE.fields_by_name['user'].message_type = perxis_dot_common_dot_common__pb2._USER
+_GETUSERRESPONSE.fields_by_name['user'].message_type = perxis_dot_common_dot_common__pb2._USER
 _FINDUSERSREQUEST.fields_by_name['email_verified'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
 _FINDUSERSREQUEST.fields_by_name['system'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
-_FINDUSERSRESPONSE.fields_by_name['users'].message_type = common_dot_common__pb2._USER
-_UPDATEUSERREQUEST.fields_by_name['update'].message_type = common_dot_common__pb2._USER
-_UPDATEUSERRESPONSE.fields_by_name['user'].message_type = common_dot_common__pb2._USER
+_FINDUSERSRESPONSE.fields_by_name['users'].message_type = perxis_dot_common_dot_common__pb2._USER
+_UPDATEUSERREQUEST.fields_by_name['update'].message_type = perxis_dot_common_dot_common__pb2._USER
+_UPDATEUSERRESPONSE.fields_by_name['user'].message_type = perxis_dot_common_dot_common__pb2._USER
 DESCRIPTOR.message_types_by_name['CreateOrganizationRequest'] = _CREATEORGANIZATIONREQUEST
 DESCRIPTOR.message_types_by_name['CreateOrganizationResponse'] = _CREATEORGANIZATIONRESPONSE
 DESCRIPTOR.message_types_by_name['UpdateOrganizationRequest'] = _UPDATEORGANIZATIONREQUEST
@@ -2296,273 +2296,273 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 CreateOrganizationRequest = _reflection.GeneratedProtocolMessageType('CreateOrganizationRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATEORGANIZATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateOrganizationRequest)
   })
 _sym_db.RegisterMessage(CreateOrganizationRequest)
 
 CreateOrganizationResponse = _reflection.GeneratedProtocolMessageType('CreateOrganizationResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATEORGANIZATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateOrganizationResponse)
   })
 _sym_db.RegisterMessage(CreateOrganizationResponse)
 
 UpdateOrganizationRequest = _reflection.GeneratedProtocolMessageType('UpdateOrganizationRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEORGANIZATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateOrganizationRequest)
   })
 _sym_db.RegisterMessage(UpdateOrganizationRequest)
 
 UpdateOrganizationResponse = _reflection.GeneratedProtocolMessageType('UpdateOrganizationResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEORGANIZATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateOrganizationResponse)
   })
 _sym_db.RegisterMessage(UpdateOrganizationResponse)
 
 DeleteOrganizationRequest = _reflection.GeneratedProtocolMessageType('DeleteOrganizationRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETEORGANIZATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteOrganizationRequest)
   })
 _sym_db.RegisterMessage(DeleteOrganizationRequest)
 
 DeleteOrganizationResponse = _reflection.GeneratedProtocolMessageType('DeleteOrganizationResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETEORGANIZATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteOrganizationResponse)
   })
 _sym_db.RegisterMessage(DeleteOrganizationResponse)
 
 FindOrganizationsRequest = _reflection.GeneratedProtocolMessageType('FindOrganizationsRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDORGANIZATIONSREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindOrganizationsRequest)
   })
 _sym_db.RegisterMessage(FindOrganizationsRequest)
 
 FindOrganizationsResponse = _reflection.GeneratedProtocolMessageType('FindOrganizationsResponse', (_message.Message,), {
   'DESCRIPTOR' : _FINDORGANIZATIONSRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindOrganizationsResponse)
   })
 _sym_db.RegisterMessage(FindOrganizationsResponse)
 
 UpdateOrganizationMembershipRequest = _reflection.GeneratedProtocolMessageType('UpdateOrganizationMembershipRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEORGANIZATIONMEMBERSHIPREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateOrganizationMembershipRequest)
   })
 _sym_db.RegisterMessage(UpdateOrganizationMembershipRequest)
 
 DeleteOrganizationMembershipRequest = _reflection.GeneratedProtocolMessageType('DeleteOrganizationMembershipRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETEORGANIZATIONMEMBERSHIPREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteOrganizationMembershipRequest)
   })
 _sym_db.RegisterMessage(DeleteOrganizationMembershipRequest)
 
 FindOrganizationMembershipsRequest = _reflection.GeneratedProtocolMessageType('FindOrganizationMembershipsRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDORGANIZATIONMEMBERSHIPSREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindOrganizationMembershipsRequest)
   })
 _sym_db.RegisterMessage(FindOrganizationMembershipsRequest)
 
 FindOrganizationMembershipsResponse = _reflection.GeneratedProtocolMessageType('FindOrganizationMembershipsResponse', (_message.Message,), {
   'DESCRIPTOR' : _FINDORGANIZATIONMEMBERSHIPSRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindOrganizationMembershipsResponse)
   })
 _sym_db.RegisterMessage(FindOrganizationMembershipsResponse)
 
 CreateSpaceRequest = _reflection.GeneratedProtocolMessageType('CreateSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATESPACEREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateSpaceRequest)
   })
 _sym_db.RegisterMessage(CreateSpaceRequest)
 
 CreateSpaceResponse = _reflection.GeneratedProtocolMessageType('CreateSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATESPACERESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateSpaceResponse)
   })
 _sym_db.RegisterMessage(CreateSpaceResponse)
 
 GetSpaceRequest = _reflection.GeneratedProtocolMessageType('GetSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACEREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetSpaceRequest)
   })
 _sym_db.RegisterMessage(GetSpaceRequest)
 
 GetSpaceResponse = _reflection.GeneratedProtocolMessageType('GetSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACERESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetSpaceResponse)
   })
 _sym_db.RegisterMessage(GetSpaceResponse)
 
 ListOrganizationSpacesRequest = _reflection.GeneratedProtocolMessageType('ListOrganizationSpacesRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTORGANIZATIONSPACESREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.ListOrganizationSpacesRequest)
   })
 _sym_db.RegisterMessage(ListOrganizationSpacesRequest)
 
 ListOrganizationSpacesResponse = _reflection.GeneratedProtocolMessageType('ListOrganizationSpacesResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTORGANIZATIONSPACESRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.ListOrganizationSpacesResponse)
   })
 _sym_db.RegisterMessage(ListOrganizationSpacesResponse)
 
 UpdateSpaceRequest = _reflection.GeneratedProtocolMessageType('UpdateSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATESPACEREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateSpaceRequest)
   })
 _sym_db.RegisterMessage(UpdateSpaceRequest)
 
 UpdateSpaceResponse = _reflection.GeneratedProtocolMessageType('UpdateSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATESPACERESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateSpaceResponse)
   })
 _sym_db.RegisterMessage(UpdateSpaceResponse)
 
 DeleteSpaceRequest = _reflection.GeneratedProtocolMessageType('DeleteSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACEREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteSpaceRequest)
   })
 _sym_db.RegisterMessage(DeleteSpaceRequest)
 
 DeleteSpaceResponse = _reflection.GeneratedProtocolMessageType('DeleteSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACERESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteSpaceResponse)
   })
 _sym_db.RegisterMessage(DeleteSpaceResponse)
 
 CreateSpaceInvitationRequest = _reflection.GeneratedProtocolMessageType('CreateSpaceInvitationRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATESPACEINVITATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateSpaceInvitationRequest)
   })
 _sym_db.RegisterMessage(CreateSpaceInvitationRequest)
 
 CreateSpaceInvitationResponse = _reflection.GeneratedProtocolMessageType('CreateSpaceInvitationResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATESPACEINVITATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateSpaceInvitationResponse)
   })
 _sym_db.RegisterMessage(CreateSpaceInvitationResponse)
 
 GetSpaceInvitationRequest = _reflection.GeneratedProtocolMessageType('GetSpaceInvitationRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACEINVITATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetSpaceInvitationRequest)
   })
 _sym_db.RegisterMessage(GetSpaceInvitationRequest)
 
 GetSpaceInvitationResponse = _reflection.GeneratedProtocolMessageType('GetSpaceInvitationResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACEINVITATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetSpaceInvitationResponse)
   })
 _sym_db.RegisterMessage(GetSpaceInvitationResponse)
 
 UpdateSpaceInvitationRequest = _reflection.GeneratedProtocolMessageType('UpdateSpaceInvitationRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATESPACEINVITATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateSpaceInvitationRequest)
   })
 _sym_db.RegisterMessage(UpdateSpaceInvitationRequest)
 
 UpdateSpaceInvitationResponse = _reflection.GeneratedProtocolMessageType('UpdateSpaceInvitationResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATESPACEINVITATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateSpaceInvitationResponse)
   })
 _sym_db.RegisterMessage(UpdateSpaceInvitationResponse)
 
 AcceptSpaceInvitationRequest = _reflection.GeneratedProtocolMessageType('AcceptSpaceInvitationRequest', (_message.Message,), {
   'DESCRIPTOR' : _ACCEPTSPACEINVITATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.AcceptSpaceInvitationRequest)
   })
 _sym_db.RegisterMessage(AcceptSpaceInvitationRequest)
 
 AcceptSpaceInvitationResponse = _reflection.GeneratedProtocolMessageType('AcceptSpaceInvitationResponse', (_message.Message,), {
   'DESCRIPTOR' : _ACCEPTSPACEINVITATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.AcceptSpaceInvitationResponse)
   })
 _sym_db.RegisterMessage(AcceptSpaceInvitationResponse)
 
 FindSpaceInvitationsRequest = _reflection.GeneratedProtocolMessageType('FindSpaceInvitationsRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDSPACEINVITATIONSREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindSpaceInvitationsRequest)
   })
 _sym_db.RegisterMessage(FindSpaceInvitationsRequest)
 
 FindSpaceInvitationsResponse = _reflection.GeneratedProtocolMessageType('FindSpaceInvitationsResponse', (_message.Message,), {
   'DESCRIPTOR' : _FINDSPACEINVITATIONSRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindSpaceInvitationsResponse)
   })
 _sym_db.RegisterMessage(FindSpaceInvitationsResponse)
 
 DeleteSpaceInvitationRequest = _reflection.GeneratedProtocolMessageType('DeleteSpaceInvitationRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACEINVITATIONREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteSpaceInvitationRequest)
   })
 _sym_db.RegisterMessage(DeleteSpaceInvitationRequest)
 
 DeleteSpaceInvitationResponse = _reflection.GeneratedProtocolMessageType('DeleteSpaceInvitationResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACEINVITATIONRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteSpaceInvitationResponse)
   })
 _sym_db.RegisterMessage(DeleteSpaceInvitationResponse)
 
 SetSpaceMembershipRequest = _reflection.GeneratedProtocolMessageType('SetSpaceMembershipRequest', (_message.Message,), {
   'DESCRIPTOR' : _SETSPACEMEMBERSHIPREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.SetSpaceMembershipRequest)
   })
 _sym_db.RegisterMessage(SetSpaceMembershipRequest)
 
 SetSpaceMembershipResponse = _reflection.GeneratedProtocolMessageType('SetSpaceMembershipResponse', (_message.Message,), {
   'DESCRIPTOR' : _SETSPACEMEMBERSHIPRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.SetSpaceMembershipResponse)
   })
 _sym_db.RegisterMessage(SetSpaceMembershipResponse)
 
 DeleteSpaceMembershipRequest = _reflection.GeneratedProtocolMessageType('DeleteSpaceMembershipRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACEMEMBERSHIPREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteSpaceMembershipRequest)
   })
 _sym_db.RegisterMessage(DeleteSpaceMembershipRequest)
 
 DeleteSpaceMembershipResponse = _reflection.GeneratedProtocolMessageType('DeleteSpaceMembershipResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACEMEMBERSHIPRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteSpaceMembershipResponse)
   })
 _sym_db.RegisterMessage(DeleteSpaceMembershipResponse)
 
 FindSpaceMembershipsRequest = _reflection.GeneratedProtocolMessageType('FindSpaceMembershipsRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDSPACEMEMBERSHIPSREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindSpaceMembershipsRequest)
   })
 _sym_db.RegisterMessage(FindSpaceMembershipsRequest)
@@ -2571,12 +2571,12 @@ FindSpaceMembershipsResponse = _reflection.GeneratedProtocolMessageType('FindSpa
 
   'SpaceMembership' : _reflection.GeneratedProtocolMessageType('SpaceMembership', (_message.Message,), {
     'DESCRIPTOR' : _FINDSPACEMEMBERSHIPSRESPONSE_SPACEMEMBERSHIP,
-    '__module__' : 'accountmanagement.accountmanagement_pb2'
+    '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
     # @@protoc_insertion_point(class_scope:accountmanagement.FindSpaceMembershipsResponse.SpaceMembership)
     })
   ,
   'DESCRIPTOR' : _FINDSPACEMEMBERSHIPSRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindSpaceMembershipsResponse)
   })
 _sym_db.RegisterMessage(FindSpaceMembershipsResponse)
@@ -2584,98 +2584,98 @@ _sym_db.RegisterMessage(FindSpaceMembershipsResponse.SpaceMembership)
 
 CreateUserRequest = _reflection.GeneratedProtocolMessageType('CreateUserRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATEUSERREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateUserRequest)
   })
 _sym_db.RegisterMessage(CreateUserRequest)
 
 CreateUserResponse = _reflection.GeneratedProtocolMessageType('CreateUserResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATEUSERRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.CreateUserResponse)
   })
 _sym_db.RegisterMessage(CreateUserResponse)
 
 GetCurrentUserRequest = _reflection.GeneratedProtocolMessageType('GetCurrentUserRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETCURRENTUSERREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetCurrentUserRequest)
   })
 _sym_db.RegisterMessage(GetCurrentUserRequest)
 
 GetCurrentUserResponse = _reflection.GeneratedProtocolMessageType('GetCurrentUserResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETCURRENTUSERRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetCurrentUserResponse)
   })
 _sym_db.RegisterMessage(GetCurrentUserResponse)
 
 UpdateCurrentUserRequest = _reflection.GeneratedProtocolMessageType('UpdateCurrentUserRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATECURRENTUSERREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateCurrentUserRequest)
   })
 _sym_db.RegisterMessage(UpdateCurrentUserRequest)
 
 UpdateCurrentUserResponse = _reflection.GeneratedProtocolMessageType('UpdateCurrentUserResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATECURRENTUSERRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateCurrentUserResponse)
   })
 _sym_db.RegisterMessage(UpdateCurrentUserResponse)
 
 GetUserRequest = _reflection.GeneratedProtocolMessageType('GetUserRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETUSERREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetUserRequest)
   })
 _sym_db.RegisterMessage(GetUserRequest)
 
 GetUserResponse = _reflection.GeneratedProtocolMessageType('GetUserResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETUSERRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.GetUserResponse)
   })
 _sym_db.RegisterMessage(GetUserResponse)
 
 FindUsersRequest = _reflection.GeneratedProtocolMessageType('FindUsersRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDUSERSREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindUsersRequest)
   })
 _sym_db.RegisterMessage(FindUsersRequest)
 
 FindUsersResponse = _reflection.GeneratedProtocolMessageType('FindUsersResponse', (_message.Message,), {
   'DESCRIPTOR' : _FINDUSERSRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.FindUsersResponse)
   })
 _sym_db.RegisterMessage(FindUsersResponse)
 
 UpdateUserRequest = _reflection.GeneratedProtocolMessageType('UpdateUserRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEUSERREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateUserRequest)
   })
 _sym_db.RegisterMessage(UpdateUserRequest)
 
 UpdateUserResponse = _reflection.GeneratedProtocolMessageType('UpdateUserResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEUSERRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.UpdateUserResponse)
   })
 _sym_db.RegisterMessage(UpdateUserResponse)
 
 DeleteUserRequest = _reflection.GeneratedProtocolMessageType('DeleteUserRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETEUSERREQUEST,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteUserRequest)
   })
 _sym_db.RegisterMessage(DeleteUserRequest)
 
 DeleteUserResponse = _reflection.GeneratedProtocolMessageType('DeleteUserResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETEUSERRESPONSE,
-  '__module__' : 'accountmanagement.accountmanagement_pb2'
+  '__module__' : 'perxis.accountmanagement.accountmanagement_pb2'
   # @@protoc_insertion_point(class_scope:accountmanagement.DeleteUserResponse)
   })
 _sym_db.RegisterMessage(DeleteUserResponse)
@@ -2690,8 +2690,8 @@ _ACCOUNTMANAGEMENT = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=4497,
-  serialized_end=7441,
+  serialized_start=4511,
+  serialized_end=7455,
   methods=[
   _descriptor.MethodDescriptor(
     name='CreateUser',
diff --git a/perxis/accountmanagement/accountmanagement_pb2_grpc.py b/perxis/accountmanagement/accountmanagement_pb2_grpc.py
index 242b7b8..e4dd970 100644
--- a/perxis/accountmanagement/accountmanagement_pb2_grpc.py
+++ b/perxis/accountmanagement/accountmanagement_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from accountmanagement import accountmanagement_pb2 as accountmanagement_dot_accountmanagement__pb2
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+from perxis.accountmanagement import accountmanagement_pb2 as perxis_dot_accountmanagement_dot_accountmanagement__pb2
 
 
 class AccountManagementStub(object):
@@ -18,143 +18,143 @@ class AccountManagementStub(object):
         """
         self.CreateUser = channel.unary_unary(
                 '/accountmanagement.AccountManagement/CreateUser',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.CreateUserRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateUserResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateUserRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateUserResponse.FromString,
                 )
         self.GetUser = channel.unary_unary(
                 '/accountmanagement.AccountManagement/GetUser',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.GetUserRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.GetUserResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetUserRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetUserResponse.FromString,
                 )
         self.FindUsers = channel.unary_unary(
                 '/accountmanagement.AccountManagement/FindUsers',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.FindUsersRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.FindUsersResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindUsersRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindUsersResponse.FromString,
                 )
         self.UpdateUser = channel.unary_unary(
                 '/accountmanagement.AccountManagement/UpdateUser',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateUserRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateUserResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateUserRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateUserResponse.FromString,
                 )
         self.DeleteUser = channel.unary_unary(
                 '/accountmanagement.AccountManagement/DeleteUser',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.DeleteUserRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteUserRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.GetCurrentUser = channel.unary_unary(
                 '/accountmanagement.AccountManagement/GetCurrentUser',
                 request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.GetCurrentUserResponse.FromString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetCurrentUserResponse.FromString,
                 )
         self.UpdateCurrentUser = channel.unary_unary(
                 '/accountmanagement.AccountManagement/UpdateCurrentUser',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserResponse.FromString,
                 )
         self.CreateOrganization = channel.unary_unary(
                 '/accountmanagement.AccountManagement/CreateOrganization',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.CreateOrganizationRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateOrganizationResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateOrganizationRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateOrganizationResponse.FromString,
                 )
         self.DeleteOrganization = channel.unary_unary(
                 '/accountmanagement.AccountManagement/DeleteOrganization',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.FindOrganizations = channel.unary_unary(
                 '/accountmanagement.AccountManagement/FindOrganizations',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationsRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationsResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationsRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationsResponse.FromString,
                 )
         self.UpdateOrganization = channel.unary_unary(
                 '/accountmanagement.AccountManagement/UpdateOrganization',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationResponse.FromString,
                 )
         self.UpdateOrganizationMembership = channel.unary_unary(
                 '/accountmanagement.AccountManagement/UpdateOrganizationMembership',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationMembershipRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationMembershipRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.DeleteOrganizationMembership = channel.unary_unary(
                 '/accountmanagement.AccountManagement/DeleteOrganizationMembership',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationMembershipRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationMembershipRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.FindOrganizationMemberships = channel.unary_unary(
                 '/accountmanagement.AccountManagement/FindOrganizationMemberships',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsResponse.FromString,
                 )
         self.CreateSpace = channel.unary_unary(
                 '/accountmanagement.AccountManagement/CreateSpace',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceResponse.FromString,
                 )
         self.GetSpace = channel.unary_unary(
                 '/accountmanagement.AccountManagement/GetSpace',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceResponse.FromString,
                 )
         self.ListOrganizationSpaces = channel.unary_unary(
                 '/accountmanagement.AccountManagement/ListOrganizationSpaces',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesResponse.FromString,
                 )
         self.UpdateSpace = channel.unary_unary(
                 '/accountmanagement.AccountManagement/UpdateSpace',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateSpaceRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateSpaceResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceResponse.FromString,
                 )
         self.DeleteSpace = channel.unary_unary(
                 '/accountmanagement.AccountManagement/DeleteSpace',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.DeleteSpaceRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.CreateSpaceInvitation = channel.unary_unary(
                 '/accountmanagement.AccountManagement/CreateSpaceInvitation',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationResponse.FromString,
                 )
         self.GetSpaceInvitation = channel.unary_unary(
                 '/accountmanagement.AccountManagement/GetSpaceInvitation',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationResponse.FromString,
                 )
         self.UpdateSpaceInvitation = channel.unary_unary(
                 '/accountmanagement.AccountManagement/UpdateSpaceInvitation',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateSpaceInvitationRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceInvitationRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.AcceptSpaceInvitation = channel.unary_unary(
                 '/accountmanagement.AccountManagement/AcceptSpaceInvitation',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.AcceptSpaceInvitationRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.AcceptSpaceInvitationRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.FindSpaceInvitations = channel.unary_unary(
                 '/accountmanagement.AccountManagement/FindSpaceInvitations',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsResponse.FromString,
                 )
         self.DeleteSpaceInvitation = channel.unary_unary(
                 '/accountmanagement.AccountManagement/DeleteSpaceInvitation',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.DeleteSpaceInvitationRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceInvitationRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.SetSpaceMembership = channel.unary_unary(
                 '/accountmanagement.AccountManagement/SetSpaceMembership',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.SetSpaceMembershipRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.SetSpaceMembershipRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.DeleteSpaceMembership = channel.unary_unary(
                 '/accountmanagement.AccountManagement/DeleteSpaceMembership',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.DeleteSpaceMembershipRequest.SerializeToString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceMembershipRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.FindSpaceMemberships = channel.unary_unary(
                 '/accountmanagement.AccountManagement/FindSpaceMemberships',
-                request_serializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsRequest.SerializeToString,
-                response_deserializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsResponse.FromString,
+                request_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsRequest.SerializeToString,
+                response_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsResponse.FromString,
                 )
 
 
@@ -398,143 +398,143 @@ def add_AccountManagementServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'CreateUser': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateUser,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateUserRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.CreateUserResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateUserRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateUserResponse.SerializeToString,
             ),
             'GetUser': grpc.unary_unary_rpc_method_handler(
                     servicer.GetUser,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.GetUserRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.GetUserResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetUserRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetUserResponse.SerializeToString,
             ),
             'FindUsers': grpc.unary_unary_rpc_method_handler(
                     servicer.FindUsers,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.FindUsersRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.FindUsersResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindUsersRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindUsersResponse.SerializeToString,
             ),
             'UpdateUser': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateUser,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateUserRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateUserResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateUserRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateUserResponse.SerializeToString,
             ),
             'DeleteUser': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteUser,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.DeleteUserRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteUserRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'GetCurrentUser': grpc.unary_unary_rpc_method_handler(
                     servicer.GetCurrentUser,
                     request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.GetCurrentUserResponse.SerializeToString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetCurrentUserResponse.SerializeToString,
             ),
             'UpdateCurrentUser': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateCurrentUser,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserResponse.SerializeToString,
             ),
             'CreateOrganization': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateOrganization,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateOrganizationRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.CreateOrganizationResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateOrganizationRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateOrganizationResponse.SerializeToString,
             ),
             'DeleteOrganization': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteOrganization,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'FindOrganizations': grpc.unary_unary_rpc_method_handler(
                     servicer.FindOrganizations,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationsRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationsRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationsResponse.SerializeToString,
             ),
             'UpdateOrganization': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateOrganization,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationResponse.SerializeToString,
             ),
             'UpdateOrganizationMembership': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateOrganizationMembership,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationMembershipRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationMembershipRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'DeleteOrganizationMembership': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteOrganizationMembership,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationMembershipRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationMembershipRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'FindOrganizationMemberships': grpc.unary_unary_rpc_method_handler(
                     servicer.FindOrganizationMemberships,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsResponse.SerializeToString,
             ),
             'CreateSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateSpace,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceResponse.SerializeToString,
             ),
             'GetSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.GetSpace,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceResponse.SerializeToString,
             ),
             'ListOrganizationSpaces': grpc.unary_unary_rpc_method_handler(
                     servicer.ListOrganizationSpaces,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesResponse.SerializeToString,
             ),
             'UpdateSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateSpace,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateSpaceRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.UpdateSpaceResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceResponse.SerializeToString,
             ),
             'DeleteSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteSpace,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.DeleteSpaceRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'CreateSpaceInvitation': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateSpaceInvitation,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationResponse.SerializeToString,
             ),
             'GetSpaceInvitation': grpc.unary_unary_rpc_method_handler(
                     servicer.GetSpaceInvitation,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationResponse.SerializeToString,
             ),
             'UpdateSpaceInvitation': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateSpaceInvitation,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.UpdateSpaceInvitationRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceInvitationRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'AcceptSpaceInvitation': grpc.unary_unary_rpc_method_handler(
                     servicer.AcceptSpaceInvitation,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.AcceptSpaceInvitationRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.AcceptSpaceInvitationRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'FindSpaceInvitations': grpc.unary_unary_rpc_method_handler(
                     servicer.FindSpaceInvitations,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsResponse.SerializeToString,
             ),
             'DeleteSpaceInvitation': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteSpaceInvitation,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.DeleteSpaceInvitationRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceInvitationRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'SetSpaceMembership': grpc.unary_unary_rpc_method_handler(
                     servicer.SetSpaceMembership,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.SetSpaceMembershipRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.SetSpaceMembershipRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'DeleteSpaceMembership': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteSpaceMembership,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.DeleteSpaceMembershipRequest.FromString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceMembershipRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'FindSpaceMemberships': grpc.unary_unary_rpc_method_handler(
                     servicer.FindSpaceMemberships,
-                    request_deserializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsRequest.FromString,
-                    response_serializer=accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsRequest.FromString,
+                    response_serializer=perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsResponse.SerializeToString,
             ),
     }
     generic_handler = grpc.method_handlers_generic_handler(
@@ -559,8 +559,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/CreateUser',
-            accountmanagement_dot_accountmanagement__pb2.CreateUserRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.CreateUserResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateUserRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateUserResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -576,8 +576,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/GetUser',
-            accountmanagement_dot_accountmanagement__pb2.GetUserRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.GetUserResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetUserRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetUserResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -593,8 +593,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/FindUsers',
-            accountmanagement_dot_accountmanagement__pb2.FindUsersRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.FindUsersResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindUsersRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindUsersResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -610,8 +610,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/UpdateUser',
-            accountmanagement_dot_accountmanagement__pb2.UpdateUserRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.UpdateUserResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateUserRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateUserResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -627,7 +627,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/DeleteUser',
-            accountmanagement_dot_accountmanagement__pb2.DeleteUserRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteUserRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -645,7 +645,7 @@ class AccountManagement(object):
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/GetCurrentUser',
             google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.GetCurrentUserResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetCurrentUserResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -661,8 +661,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/UpdateCurrentUser',
-            accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateCurrentUserResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -678,8 +678,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/CreateOrganization',
-            accountmanagement_dot_accountmanagement__pb2.CreateOrganizationRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.CreateOrganizationResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateOrganizationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateOrganizationResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -695,7 +695,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/DeleteOrganization',
-            accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -712,8 +712,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/FindOrganizations',
-            accountmanagement_dot_accountmanagement__pb2.FindOrganizationsRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.FindOrganizationsResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationsRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -729,8 +729,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/UpdateOrganization',
-            accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -746,7 +746,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/UpdateOrganizationMembership',
-            accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationMembershipRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateOrganizationMembershipRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -763,7 +763,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/DeleteOrganizationMembership',
-            accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationMembershipRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteOrganizationMembershipRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -780,8 +780,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/FindOrganizationMemberships',
-            accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindOrganizationMembershipsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -797,8 +797,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/CreateSpace',
-            accountmanagement_dot_accountmanagement__pb2.CreateSpaceRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.CreateSpaceResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -814,8 +814,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/GetSpace',
-            accountmanagement_dot_accountmanagement__pb2.GetSpaceRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.GetSpaceResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -831,8 +831,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/ListOrganizationSpaces',
-            accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.ListOrganizationSpacesResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -848,8 +848,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/UpdateSpace',
-            accountmanagement_dot_accountmanagement__pb2.UpdateSpaceRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.UpdateSpaceResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -865,7 +865,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/DeleteSpace',
-            accountmanagement_dot_accountmanagement__pb2.DeleteSpaceRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -882,8 +882,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/CreateSpaceInvitation',
-            accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.CreateSpaceInvitationResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -899,8 +899,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/GetSpaceInvitation',
-            accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.GetSpaceInvitationResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -916,7 +916,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/UpdateSpaceInvitation',
-            accountmanagement_dot_accountmanagement__pb2.UpdateSpaceInvitationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.UpdateSpaceInvitationRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -933,7 +933,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/AcceptSpaceInvitation',
-            accountmanagement_dot_accountmanagement__pb2.AcceptSpaceInvitationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.AcceptSpaceInvitationRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -950,8 +950,8 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/FindSpaceInvitations',
-            accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceInvitationsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -967,7 +967,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/DeleteSpaceInvitation',
-            accountmanagement_dot_accountmanagement__pb2.DeleteSpaceInvitationRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceInvitationRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -984,7 +984,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/SetSpaceMembership',
-            accountmanagement_dot_accountmanagement__pb2.SetSpaceMembershipRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.SetSpaceMembershipRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1001,7 +1001,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/DeleteSpaceMembership',
-            accountmanagement_dot_accountmanagement__pb2.DeleteSpaceMembershipRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.DeleteSpaceMembershipRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1018,7 +1018,7 @@ class AccountManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/accountmanagement.AccountManagement/FindSpaceMemberships',
-            accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsRequest.SerializeToString,
-            accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsResponse.FromString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsRequest.SerializeToString,
+            perxis_dot_accountmanagement_dot_accountmanagement__pb2.FindSpaceMembershipsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/collections_perxis/__init__.py b/perxis/clients/__init__.py
similarity index 100%
rename from perxis/collections_perxis/__init__.py
rename to perxis/clients/__init__.py
diff --git a/perxis/clients/clients_pb2.py b/perxis/clients/clients_pb2.py
index 464c703..13a16a5 100644
--- a/perxis/clients/clients_pb2.py
+++ b/perxis/clients/clients_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: clients/clients.proto
+# source: perxis/clients/clients.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,18 +12,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='clients/clients.proto',
+  name='perxis/clients/clients.proto',
   package='content.clients',
   syntax='proto3',
   serialized_options=b'Z0github.com/perxteam/perxis/proto/clients;clients',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x15\x63lients/clients.proto\x12\x0f\x63ontent.clients\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/common.proto\"\xc4\x01\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\x11\n\tclient_id\x18\x04 \x01(\t\x12\x0f\n\x07\x61uth_id\x18\x05 \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\x14\n\x0c\x65nvironments\x18\x08 \x03(\t\x12\x1b\n\x05rules\x18\t \x03(\x0b\x32\x0c.common.RuleB\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\"L\n\x14GetByClientIDRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\x12\x0f\n\x07\x61uth_id\x18\x03 \x01(\t\"@\n\x15GetByClientIDResponse\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\"J\n\x0eSetRuleRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\x1a\n\x04rule\x18\x03 \x01(\x0b\x32\x0c.common.Rule\"B\n\x11RemoveRuleRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0f\n\x07rule_id\x18\x03 \x01(\t2\xa1\x05\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\x12`\n\rGetByClientID\x12%.content.clients.GetByClientIDRequest\x1a&.content.clients.GetByClientIDResponse\"\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\x12\x44\n\x07SetRule\x12\x1f.content.clients.SetRuleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12J\n\nRemoveRule\x12\".content.clients.RemoveRuleRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x32Z0github.com/perxteam/perxis/proto/clients;clientsb\x06proto3'
+  serialized_pb=b'\n\x1cperxis/clients/clients.proto\x12\x0f\x63ontent.clients\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"\xc4\x01\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\x11\n\tclient_id\x18\x04 \x01(\t\x12\x0f\n\x07\x61uth_id\x18\x05 \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\x14\n\x0c\x65nvironments\x18\x08 \x03(\t\x12\x1b\n\x05rules\x18\t \x03(\x0b\x32\x0c.common.RuleB\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\"L\n\x14GetByClientIDRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\x12\x0f\n\x07\x61uth_id\x18\x03 \x01(\t\"@\n\x15GetByClientIDResponse\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\x8f\x04\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\x12`\n\rGetByClientID\x12%.content.clients.GetByClientIDRequest\x1a&.content.clients.GetByClientIDResponse\"\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\x32Z0github.com/perxteam/perxis/proto/clients;clientsb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -116,8 +116,8 @@ _CLIENT = _descriptor.Descriptor(
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=93,
-  serialized_end=289,
+  serialized_start=107,
+  serialized_end=303,
 )
 
 
@@ -148,8 +148,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=291,
-  serialized_end=347,
+  serialized_start=305,
+  serialized_end=361,
 )
 
 
@@ -180,8 +180,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=349,
-  serialized_end=407,
+  serialized_start=363,
+  serialized_end=421,
 )
 
 
@@ -219,8 +219,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=409,
-  serialized_end=451,
+  serialized_start=423,
+  serialized_end=465,
 )
 
 
@@ -251,8 +251,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=453,
-  serialized_end=507,
+  serialized_start=467,
+  serialized_end=521,
 )
 
 
@@ -297,8 +297,8 @@ _GETBYCLIENTIDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=509,
-  serialized_end=585,
+  serialized_start=523,
+  serialized_end=599,
 )
 
 
@@ -329,8 +329,8 @@ _GETBYCLIENTIDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=587,
-  serialized_end=651,
+  serialized_start=601,
+  serialized_end=665,
 )
 
 
@@ -361,8 +361,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=653,
-  serialized_end=709,
+  serialized_start=667,
+  serialized_end=723,
 )
 
 
@@ -393,8 +393,8 @@ _LISTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=711,
-  serialized_end=742,
+  serialized_start=725,
+  serialized_end=756,
 )
 
 
@@ -425,8 +425,8 @@ _LISTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=744,
-  serialized_end=800,
+  serialized_start=758,
+  serialized_end=814,
 )
 
 
@@ -464,8 +464,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=802,
-  serialized_end=847,
+  serialized_start=816,
+  serialized_end=861,
 )
 
 
@@ -510,103 +510,11 @@ _ENABLEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=849,
-  serialized_end=910,
+  serialized_start=863,
+  serialized_end=924,
 )
 
-
-_SETRULEREQUEST = _descriptor.Descriptor(
-  name='SetRuleRequest',
-  full_name='content.clients.SetRuleRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.SetRuleRequest.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.SetRuleRequest.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='rule', full_name='content.clients.SetRuleRequest.rule', 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=912,
-  serialized_end=986,
-)
-
-
-_REMOVERULEREQUEST = _descriptor.Descriptor(
-  name='RemoveRuleRequest',
-  full_name='content.clients.RemoveRuleRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.clients.RemoveRuleRequest.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.RemoveRuleRequest.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='rule_id', full_name='content.clients.RemoveRuleRequest.rule_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=988,
-  serialized_end=1054,
-)
-
-_CLIENT.fields_by_name['rules'].message_type = common_dot_common__pb2._RULE
+_CLIENT.fields_by_name['rules'].message_type = perxis_dot_common_dot_common__pb2._RULE
 _CLIENT.oneofs_by_name['_disabled'].fields.append(
   _CLIENT.fields_by_name['disabled'])
 _CLIENT.fields_by_name['disabled'].containing_oneof = _CLIENT.oneofs_by_name['_disabled']
@@ -616,7 +524,6 @@ _GETRESPONSE.fields_by_name['client'].message_type = _CLIENT
 _GETBYCLIENTIDRESPONSE.fields_by_name['client'].message_type = _CLIENT
 _UPDATEREQUEST.fields_by_name['client'].message_type = _CLIENT
 _LISTRESPONSE.fields_by_name['clients'].message_type = _CLIENT
-_SETRULEREQUEST.fields_by_name['rule'].message_type = common_dot_common__pb2._RULE
 DESCRIPTOR.message_types_by_name['Client'] = _CLIENT
 DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
 DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
@@ -629,108 +536,92 @@ 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
-DESCRIPTOR.message_types_by_name['SetRuleRequest'] = _SETRULEREQUEST
-DESCRIPTOR.message_types_by_name['RemoveRuleRequest'] = _REMOVERULEREQUEST
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Client = _reflection.GeneratedProtocolMessageType('Client', (_message.Message,), {
   'DESCRIPTOR' : _CLIENT,
-  '__module__' : 'clients.clients_pb2'
+  '__module__' : 'perxis.clients.clients_pb2'
   # @@protoc_insertion_point(class_scope:content.clients.Client)
   })
 _sym_db.RegisterMessage(Client)
 
 CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'clients.clients_pb2'
+  '__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__' : 'clients.clients_pb2'
+  '__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__' : 'clients.clients_pb2'
+  '__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__' : 'clients.clients_pb2'
+  '__module__' : 'perxis.clients.clients_pb2'
   # @@protoc_insertion_point(class_scope:content.clients.GetResponse)
   })
 _sym_db.RegisterMessage(GetResponse)
 
 GetByClientIDRequest = _reflection.GeneratedProtocolMessageType('GetByClientIDRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETBYCLIENTIDREQUEST,
-  '__module__' : 'clients.clients_pb2'
+  '__module__' : 'perxis.clients.clients_pb2'
   # @@protoc_insertion_point(class_scope:content.clients.GetByClientIDRequest)
   })
 _sym_db.RegisterMessage(GetByClientIDRequest)
 
 GetByClientIDResponse = _reflection.GeneratedProtocolMessageType('GetByClientIDResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETBYCLIENTIDRESPONSE,
-  '__module__' : 'clients.clients_pb2'
+  '__module__' : 'perxis.clients.clients_pb2'
   # @@protoc_insertion_point(class_scope:content.clients.GetByClientIDResponse)
   })
 _sym_db.RegisterMessage(GetByClientIDResponse)
 
 UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEREQUEST,
-  '__module__' : 'clients.clients_pb2'
+  '__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__' : 'clients.clients_pb2'
+  '__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__' : 'clients.clients_pb2'
+  '__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__' : 'clients.clients_pb2'
+  '__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__' : 'clients.clients_pb2'
+  '__module__' : 'perxis.clients.clients_pb2'
   # @@protoc_insertion_point(class_scope:content.clients.EnableRequest)
   })
 _sym_db.RegisterMessage(EnableRequest)
 
-SetRuleRequest = _reflection.GeneratedProtocolMessageType('SetRuleRequest', (_message.Message,), {
-  'DESCRIPTOR' : _SETRULEREQUEST,
-  '__module__' : 'clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.SetRuleRequest)
-  })
-_sym_db.RegisterMessage(SetRuleRequest)
-
-RemoveRuleRequest = _reflection.GeneratedProtocolMessageType('RemoveRuleRequest', (_message.Message,), {
-  'DESCRIPTOR' : _REMOVERULEREQUEST,
-  '__module__' : 'clients.clients_pb2'
-  # @@protoc_insertion_point(class_scope:content.clients.RemoveRuleRequest)
-  })
-_sym_db.RegisterMessage(RemoveRuleRequest)
-
 
 DESCRIPTOR._options = None
 
@@ -741,8 +632,8 @@ _CLIENTS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1057,
-  serialized_end=1730,
+  serialized_start=927,
+  serialized_end=1454,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
@@ -814,26 +705,6 @@ _CLIENTS = _descriptor.ServiceDescriptor(
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
   ),
-  _descriptor.MethodDescriptor(
-    name='SetRule',
-    full_name='content.clients.Clients.SetRule',
-    index=7,
-    containing_service=None,
-    input_type=_SETRULEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='RemoveRule',
-    full_name='content.clients.Clients.RemoveRule',
-    index=8,
-    containing_service=None,
-    input_type=_REMOVERULEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
 ])
 _sym_db.RegisterServiceDescriptor(_CLIENTS)
 
diff --git a/perxis/clients/clients_pb2_grpc.py b/perxis/clients/clients_pb2_grpc.py
index 89b686c..2352efa 100644
--- a/perxis/clients/clients_pb2_grpc.py
+++ b/perxis/clients/clients_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from clients import clients_pb2 as clients_dot_clients__pb2
 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):
@@ -17,47 +17,37 @@ class ClientsStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.clients.Clients/Create',
-                request_serializer=clients_dot_clients__pb2.CreateRequest.SerializeToString,
-                response_deserializer=clients_dot_clients__pb2.CreateResponse.FromString,
+                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=clients_dot_clients__pb2.GetRequest.SerializeToString,
-                response_deserializer=clients_dot_clients__pb2.GetResponse.FromString,
+                request_serializer=perxis_dot_clients_dot_clients__pb2.GetRequest.SerializeToString,
+                response_deserializer=perxis_dot_clients_dot_clients__pb2.GetResponse.FromString,
                 )
         self.GetByClientID = channel.unary_unary(
                 '/content.clients.Clients/GetByClientID',
-                request_serializer=clients_dot_clients__pb2.GetByClientIDRequest.SerializeToString,
-                response_deserializer=clients_dot_clients__pb2.GetByClientIDResponse.FromString,
+                request_serializer=perxis_dot_clients_dot_clients__pb2.GetByClientIDRequest.SerializeToString,
+                response_deserializer=perxis_dot_clients_dot_clients__pb2.GetByClientIDResponse.FromString,
                 )
         self.Update = channel.unary_unary(
                 '/content.clients.Clients/Update',
-                request_serializer=clients_dot_clients__pb2.UpdateRequest.SerializeToString,
+                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=clients_dot_clients__pb2.ListRequest.SerializeToString,
-                response_deserializer=clients_dot_clients__pb2.ListResponse.FromString,
+                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=clients_dot_clients__pb2.DeleteRequest.SerializeToString,
+                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=clients_dot_clients__pb2.EnableRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.SetRule = channel.unary_unary(
-                '/content.clients.Clients/SetRule',
-                request_serializer=clients_dot_clients__pb2.SetRuleRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.RemoveRule = channel.unary_unary(
-                '/content.clients.Clients/RemoveRule',
-                request_serializer=clients_dot_clients__pb2.RemoveRuleRequest.SerializeToString,
+                request_serializer=perxis_dot_clients_dot_clients__pb2.EnableRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -114,66 +104,42 @@ class ClientsServicer(object):
         context.set_details('Method not implemented!')
         raise NotImplementedError('Method not implemented!')
 
-    def SetRule(self, request, context):
-        """SetRule - добавляет клиенту правила доступа к API
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def RemoveRule(self, request, context):
-        """SetRule - удаляет правилу с указанным Id
-        """
-        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=clients_dot_clients__pb2.CreateRequest.FromString,
-                    response_serializer=clients_dot_clients__pb2.CreateResponse.SerializeToString,
+                    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=clients_dot_clients__pb2.GetRequest.FromString,
-                    response_serializer=clients_dot_clients__pb2.GetResponse.SerializeToString,
+                    request_deserializer=perxis_dot_clients_dot_clients__pb2.GetRequest.FromString,
+                    response_serializer=perxis_dot_clients_dot_clients__pb2.GetResponse.SerializeToString,
             ),
             'GetByClientID': grpc.unary_unary_rpc_method_handler(
                     servicer.GetByClientID,
-                    request_deserializer=clients_dot_clients__pb2.GetByClientIDRequest.FromString,
-                    response_serializer=clients_dot_clients__pb2.GetByClientIDResponse.SerializeToString,
+                    request_deserializer=perxis_dot_clients_dot_clients__pb2.GetByClientIDRequest.FromString,
+                    response_serializer=perxis_dot_clients_dot_clients__pb2.GetByClientIDResponse.SerializeToString,
             ),
             'Update': grpc.unary_unary_rpc_method_handler(
                     servicer.Update,
-                    request_deserializer=clients_dot_clients__pb2.UpdateRequest.FromString,
+                    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=clients_dot_clients__pb2.ListRequest.FromString,
-                    response_serializer=clients_dot_clients__pb2.ListResponse.SerializeToString,
+                    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=clients_dot_clients__pb2.DeleteRequest.FromString,
+                    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=clients_dot_clients__pb2.EnableRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'SetRule': grpc.unary_unary_rpc_method_handler(
-                    servicer.SetRule,
-                    request_deserializer=clients_dot_clients__pb2.SetRuleRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'RemoveRule': grpc.unary_unary_rpc_method_handler(
-                    servicer.RemoveRule,
-                    request_deserializer=clients_dot_clients__pb2.RemoveRuleRequest.FromString,
+                    request_deserializer=perxis_dot_clients_dot_clients__pb2.EnableRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -198,8 +164,8 @@ class Clients(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Create',
-            clients_dot_clients__pb2.CreateRequest.SerializeToString,
-            clients_dot_clients__pb2.CreateResponse.FromString,
+            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)
 
@@ -215,8 +181,8 @@ class Clients(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Get',
-            clients_dot_clients__pb2.GetRequest.SerializeToString,
-            clients_dot_clients__pb2.GetResponse.FromString,
+            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)
 
@@ -232,8 +198,8 @@ class Clients(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/GetByClientID',
-            clients_dot_clients__pb2.GetByClientIDRequest.SerializeToString,
-            clients_dot_clients__pb2.GetByClientIDResponse.FromString,
+            perxis_dot_clients_dot_clients__pb2.GetByClientIDRequest.SerializeToString,
+            perxis_dot_clients_dot_clients__pb2.GetByClientIDResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -249,7 +215,7 @@ class Clients(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Update',
-            clients_dot_clients__pb2.UpdateRequest.SerializeToString,
+            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)
@@ -266,8 +232,8 @@ class Clients(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/List',
-            clients_dot_clients__pb2.ListRequest.SerializeToString,
-            clients_dot_clients__pb2.ListResponse.FromString,
+            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)
 
@@ -283,7 +249,7 @@ class Clients(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Delete',
-            clients_dot_clients__pb2.DeleteRequest.SerializeToString,
+            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)
@@ -300,41 +266,7 @@ class Clients(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.clients.Clients/Enable',
-            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)
-
-    @staticmethod
-    def SetRule(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/SetRule',
-            clients_dot_clients__pb2.SetRuleRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def RemoveRule(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/RemoveRule',
-            clients_dot_clients__pb2.RemoveRuleRequest.SerializeToString,
+            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
index 149e3c0..e7e5e9e 100644
--- a/perxis/collaborators/collaborators_pb2.py
+++ b/perxis/collaborators/collaborators_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: collaborators/collaborators.proto
+# source: perxis/collaborators/collaborators.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,18 +12,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='collaborators/collaborators.proto',
+  name='perxis/collaborators/collaborators.proto',
   package='content.collaborators',
   syntax='proto3',
   serialized_options=b'Z<github.com/perxteam/perxis/proto/collaborators;collaborators',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n!collaborators/collaborators.proto\x12\x15\x63ontent.collaborators\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/common.proto\"=\n\nSetRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\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\x07user_id\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\x07user_id\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\x07user_id\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<github.com/perxteam/perxis/proto/collaborators;collaboratorsb\x06proto3'
+  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\x07user_id\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\x07user_id\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\x07user_id\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\x07user_id\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<github.com/perxteam/perxis/proto/collaborators;collaboratorsb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -69,8 +69,8 @@ _SETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=110,
-  serialized_end=171,
+  serialized_start=124,
+  serialized_end=185,
 )
 
 
@@ -108,8 +108,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=173,
-  serialized_end=220,
+  serialized_start=187,
+  serialized_end=234,
 )
 
 
@@ -140,8 +140,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=222,
-  serialized_end=249,
+  serialized_start=236,
+  serialized_end=263,
 )
 
 
@@ -179,8 +179,8 @@ _REMOVEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=251,
-  serialized_end=301,
+  serialized_start=265,
+  serialized_end=315,
 )
 
 
@@ -211,8 +211,8 @@ _LISTCOLLABORATORSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=303,
-  serialized_end=347,
+  serialized_start=317,
+  serialized_end=361,
 )
 
 
@@ -243,8 +243,8 @@ _LISTCOLLABORATORSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=349,
-  serialized_end=421,
+  serialized_start=363,
+  serialized_end=435,
 )
 
 
@@ -275,8 +275,8 @@ _LISTSPACESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=423,
-  serialized_end=459,
+  serialized_start=437,
+  serialized_end=473,
 )
 
 
@@ -307,12 +307,12 @@ _LISTSPACESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=461,
-  serialized_end=519,
+  serialized_start=475,
+  serialized_end=533,
 )
 
-_LISTCOLLABORATORSRESPONSE.fields_by_name['collaborators'].message_type = common_dot_common__pb2._COLLABORATOR
-_LISTSPACESRESPONSE.fields_by_name['spaces'].message_type = common_dot_common__pb2._COLLABORATOR
+_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
@@ -325,56 +325,56 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 SetRequest = _reflection.GeneratedProtocolMessageType('SetRequest', (_message.Message,), {
   'DESCRIPTOR' : _SETREQUEST,
-  '__module__' : 'collaborators.collaborators_pb2'
+  '__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__' : 'collaborators.collaborators_pb2'
+  '__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__' : 'collaborators.collaborators_pb2'
+  '__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__' : 'collaborators.collaborators_pb2'
+  '__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__' : 'collaborators.collaborators_pb2'
+  '__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__' : 'collaborators.collaborators_pb2'
+  '__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__' : 'collaborators.collaborators_pb2'
+  '__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__' : 'collaborators.collaborators_pb2'
+  '__module__' : 'perxis.collaborators.collaborators_pb2'
   # @@protoc_insertion_point(class_scope:content.collaborators.ListSpacesResponse)
   })
 _sym_db.RegisterMessage(ListSpacesResponse)
@@ -389,8 +389,8 @@ _COLLABORATORS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=522,
-  serialized_end=982,
+  serialized_start=536,
+  serialized_end=996,
   methods=[
   _descriptor.MethodDescriptor(
     name='Set',
diff --git a/perxis/collaborators/collaborators_pb2_grpc.py b/perxis/collaborators/collaborators_pb2_grpc.py
index b7f685c..c307e39 100644
--- a/perxis/collaborators/collaborators_pb2_grpc.py
+++ b/perxis/collaborators/collaborators_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from collaborators import collaborators_pb2 as collaborators_dot_collaborators__pb2
 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):
@@ -17,28 +17,28 @@ class CollaboratorsStub(object):
         """
         self.Set = channel.unary_unary(
                 '/content.collaborators.Collaborators/Set',
-                request_serializer=collaborators_dot_collaborators__pb2.SetRequest.SerializeToString,
+                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=collaborators_dot_collaborators__pb2.GetRequest.SerializeToString,
-                response_deserializer=collaborators_dot_collaborators__pb2.GetResponse.FromString,
+                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=collaborators_dot_collaborators__pb2.RemoveRequest.SerializeToString,
+                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=collaborators_dot_collaborators__pb2.ListCollaboratorsRequest.SerializeToString,
-                response_deserializer=collaborators_dot_collaborators__pb2.ListCollaboratorsResponse.FromString,
+                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=collaborators_dot_collaborators__pb2.ListSpacesRequest.SerializeToString,
-                response_deserializer=collaborators_dot_collaborators__pb2.ListSpacesResponse.FromString,
+                request_serializer=perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesRequest.SerializeToString,
+                response_deserializer=perxis_dot_collaborators_dot_collaborators__pb2.ListSpacesResponse.FromString,
                 )
 
 
@@ -80,28 +80,28 @@ def add_CollaboratorsServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Set': grpc.unary_unary_rpc_method_handler(
                     servicer.Set,
-                    request_deserializer=collaborators_dot_collaborators__pb2.SetRequest.FromString,
+                    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=collaborators_dot_collaborators__pb2.GetRequest.FromString,
-                    response_serializer=collaborators_dot_collaborators__pb2.GetResponse.SerializeToString,
+                    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=collaborators_dot_collaborators__pb2.RemoveRequest.FromString,
+                    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=collaborators_dot_collaborators__pb2.ListCollaboratorsRequest.FromString,
-                    response_serializer=collaborators_dot_collaborators__pb2.ListCollaboratorsResponse.SerializeToString,
+                    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=collaborators_dot_collaborators__pb2.ListSpacesRequest.FromString,
-                    response_serializer=collaborators_dot_collaborators__pb2.ListSpacesResponse.SerializeToString,
+                    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(
@@ -125,7 +125,7 @@ class Collaborators(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/Set',
-            collaborators_dot_collaborators__pb2.SetRequest.SerializeToString,
+            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)
@@ -142,8 +142,8 @@ class Collaborators(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/Get',
-            collaborators_dot_collaborators__pb2.GetRequest.SerializeToString,
-            collaborators_dot_collaborators__pb2.GetResponse.FromString,
+            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)
 
@@ -159,7 +159,7 @@ class Collaborators(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/Remove',
-            collaborators_dot_collaborators__pb2.RemoveRequest.SerializeToString,
+            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)
@@ -176,8 +176,8 @@ class Collaborators(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/ListCollaborators',
-            collaborators_dot_collaborators__pb2.ListCollaboratorsRequest.SerializeToString,
-            collaborators_dot_collaborators__pb2.ListCollaboratorsResponse.FromString,
+            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)
 
@@ -193,7 +193,7 @@ class Collaborators(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collaborators.Collaborators/ListSpaces',
-            collaborators_dot_collaborators__pb2.ListSpacesRequest.SerializeToString,
-            collaborators_dot_collaborators__pb2.ListSpacesResponse.FromString,
+            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/__init__.py b/perxis/collections/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/perxis/collections_perxis/collections_pb2.py b/perxis/collections/collections_pb2.py
similarity index 86%
rename from perxis/collections_perxis/collections_pb2.py
rename to perxis/collections/collections_pb2.py
index c7c6de7..649f2f0 100644
--- a/perxis/collections_perxis/collections_pb2.py
+++ b/perxis/collections/collections_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: collections_perxis/collections.proto
+# source: perxis/collections/collections.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -15,12 +15,12 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='collections_perxis/collections.proto',
+  name='perxis/collections/collections.proto',
   package='content.collections',
   syntax='proto3',
   serialized_options=b'Z8github.com/perxteam/perxis/proto/collections;collections',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n$collections_perxis/collections.proto\x12\x13\x63ontent.collections\x1a\x1bgoogle/protobuf/empty.proto\"\x98\x01\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\x0e\n\x06schema\x18\x07 \x01(\tB\t\n\x07_singleB\t\n\x07_system\">\n\rCreateRequest\x12-\n\x04\x63oll\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\"E\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\"B\n\x0bGetResponse\x12\x33\n\ncollection\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\"/\n\x0bListRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\t\"D\n\x0cListResponse\x12\x34\n\x0b\x63ollections\x18\x01 \x03(\x0b\x32\x1f.content.collections.Collection\">\n\rUpdateRequest\x12-\n\x04\x63oll\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\"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\x8d\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\x12\x46\n\x06\x44\x65lete\x12\".content.collections.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42:Z8github.com/perxteam/perxis/proto/collections;collectionsb\x06proto3'
+  serialized_pb=b'\n$perxis/collections/collections.proto\x12\x13\x63ontent.collections\x1a\x1bgoogle/protobuf/empty.proto\"\x98\x01\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\x0e\n\x06schema\x18\x07 \x01(\tB\t\n\x07_singleB\t\n\x07_system\"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\"E\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\"B\n\x0bGetResponse\x12\x33\n\ncollection\x18\x01 \x01(\x0b\x32\x1f.content.collections.Collection\"/\n\x0bListRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nv_id\x18\x02 \x01(\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\"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\x8d\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\x12\x46\n\x06\x44\x65lete\x12\".content.collections.DeleteRequest\x1a\x16.google.protobuf.Empty\"\x00\x42:Z8github.com/perxteam/perxis/proto/collections;collectionsb\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
 
@@ -120,7 +120,7 @@ _CREATEREQUEST = _descriptor.Descriptor(
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='coll', full_name='content.collections.CreateRequest.coll', index=0,
+      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,
@@ -139,7 +139,7 @@ _CREATEREQUEST = _descriptor.Descriptor(
   oneofs=[
   ],
   serialized_start=245,
-  serialized_end=307,
+  serialized_end=313,
 )
 
 
@@ -170,8 +170,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=309,
-  serialized_end=375,
+  serialized_start=315,
+  serialized_end=381,
 )
 
 
@@ -216,8 +216,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=377,
-  serialized_end=446,
+  serialized_start=383,
+  serialized_end=452,
 )
 
 
@@ -248,8 +248,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=448,
-  serialized_end=514,
+  serialized_start=454,
+  serialized_end=520,
 )
 
 
@@ -287,8 +287,8 @@ _LISTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=516,
-  serialized_end=563,
+  serialized_start=522,
+  serialized_end=569,
 )
 
 
@@ -319,8 +319,8 @@ _LISTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=565,
-  serialized_end=633,
+  serialized_start=571,
+  serialized_end=639,
 )
 
 
@@ -333,7 +333,7 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='coll', full_name='content.collections.UpdateRequest.coll', index=0,
+      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,
@@ -351,8 +351,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=635,
-  serialized_end=697,
+  serialized_start=641,
+  serialized_end=709,
 )
 
 
@@ -397,8 +397,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=699,
-  serialized_end=771,
+  serialized_start=711,
+  serialized_end=783,
 )
 
 _COLLECTION.oneofs_by_name['_single'].fields.append(
@@ -407,11 +407,11 @@ _COLLECTION.fields_by_name['single'].containing_oneof = _COLLECTION.oneofs_by_na
 _COLLECTION.oneofs_by_name['_system'].fields.append(
   _COLLECTION.fields_by_name['system'])
 _COLLECTION.fields_by_name['system'].containing_oneof = _COLLECTION.oneofs_by_name['_system']
-_CREATEREQUEST.fields_by_name['coll'].message_type = _COLLECTION
+_CREATEREQUEST.fields_by_name['collection'].message_type = _COLLECTION
 _CREATERESPONSE.fields_by_name['created'].message_type = _COLLECTION
 _GETRESPONSE.fields_by_name['collection'].message_type = _COLLECTION
 _LISTRESPONSE.fields_by_name['collections'].message_type = _COLLECTION
-_UPDATEREQUEST.fields_by_name['coll'].message_type = _COLLECTION
+_UPDATEREQUEST.fields_by_name['collection'].message_type = _COLLECTION
 DESCRIPTOR.message_types_by_name['Collection'] = _COLLECTION
 DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
 DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
@@ -425,63 +425,63 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Collection = _reflection.GeneratedProtocolMessageType('Collection', (_message.Message,), {
   'DESCRIPTOR' : _COLLECTION,
-  '__module__' : 'collections_perxis.collections_pb2'
+  '__module__' : 'perxis.collections.collections_pb2'
   # @@protoc_insertion_point(class_scope:content.collections.Collection)
   })
 _sym_db.RegisterMessage(Collection)
 
 CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'collections_perxis.collections_pb2'
+  '__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__' : 'collections_perxis.collections_pb2'
+  '__module__' : 'perxis.collections.collections_pb2'
   # @@protoc_insertion_point(class_scope:content.collections.CreateResponse)
   })
 _sym_db.RegisterMessage(CreateResponse)
 
 GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'collections_perxis.collections_pb2'
+  '__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__' : 'collections_perxis.collections_pb2'
+  '__module__' : 'perxis.collections.collections_pb2'
   # @@protoc_insertion_point(class_scope:content.collections.GetResponse)
   })
 _sym_db.RegisterMessage(GetResponse)
 
 ListRequest = _reflection.GeneratedProtocolMessageType('ListRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTREQUEST,
-  '__module__' : 'collections_perxis.collections_pb2'
+  '__module__' : 'perxis.collections.collections_pb2'
   # @@protoc_insertion_point(class_scope:content.collections.ListRequest)
   })
 _sym_db.RegisterMessage(ListRequest)
 
 ListResponse = _reflection.GeneratedProtocolMessageType('ListResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTRESPONSE,
-  '__module__' : 'collections_perxis.collections_pb2'
+  '__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__' : 'collections_perxis.collections_pb2'
+  '__module__' : 'perxis.collections.collections_pb2'
   # @@protoc_insertion_point(class_scope:content.collections.UpdateRequest)
   })
 _sym_db.RegisterMessage(UpdateRequest)
 
 DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETEREQUEST,
-  '__module__' : 'collections_perxis.collections_pb2'
+  '__module__' : 'perxis.collections.collections_pb2'
   # @@protoc_insertion_point(class_scope:content.collections.DeleteRequest)
   })
 _sym_db.RegisterMessage(DeleteRequest)
@@ -496,8 +496,8 @@ _COLLECTIONS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=774,
-  serialized_end=1171,
+  serialized_start=786,
+  serialized_end=1183,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/collections_perxis/collections_pb2_grpc.py b/perxis/collections/collections_pb2_grpc.py
similarity index 72%
rename from perxis/collections_perxis/collections_pb2_grpc.py
rename to perxis/collections/collections_pb2_grpc.py
index 4888cd1..7278cf3 100644
--- a/perxis/collections_perxis/collections_pb2_grpc.py
+++ b/perxis/collections/collections_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from collections_perxis import collections_pb2 as collections__perxis_dot_collections__pb2
 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):
@@ -17,27 +17,27 @@ class CollectionsStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.collections.Collections/Create',
-                request_serializer=collections__perxis_dot_collections__pb2.CreateRequest.SerializeToString,
-                response_deserializer=collections__perxis_dot_collections__pb2.CreateResponse.FromString,
+                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=collections__perxis_dot_collections__pb2.GetRequest.SerializeToString,
-                response_deserializer=collections__perxis_dot_collections__pb2.GetResponse.FromString,
+                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=collections__perxis_dot_collections__pb2.ListRequest.SerializeToString,
-                response_deserializer=collections__perxis_dot_collections__pb2.ListResponse.FromString,
+                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=collections__perxis_dot_collections__pb2.UpdateRequest.SerializeToString,
+                request_serializer=perxis_dot_collections_dot_collections__pb2.UpdateRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.Delete = channel.unary_unary(
                 '/content.collections.Collections/Delete',
-                request_serializer=collections__perxis_dot_collections__pb2.DeleteRequest.SerializeToString,
+                request_serializer=perxis_dot_collections_dot_collections__pb2.DeleteRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -80,27 +80,27 @@ def add_CollectionsServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=collections__perxis_dot_collections__pb2.CreateRequest.FromString,
-                    response_serializer=collections__perxis_dot_collections__pb2.CreateResponse.SerializeToString,
+                    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=collections__perxis_dot_collections__pb2.GetRequest.FromString,
-                    response_serializer=collections__perxis_dot_collections__pb2.GetResponse.SerializeToString,
+                    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=collections__perxis_dot_collections__pb2.ListRequest.FromString,
-                    response_serializer=collections__perxis_dot_collections__pb2.ListResponse.SerializeToString,
+                    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=collections__perxis_dot_collections__pb2.UpdateRequest.FromString,
+                    request_deserializer=perxis_dot_collections_dot_collections__pb2.UpdateRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'Delete': grpc.unary_unary_rpc_method_handler(
                     servicer.Delete,
-                    request_deserializer=collections__perxis_dot_collections__pb2.DeleteRequest.FromString,
+                    request_deserializer=perxis_dot_collections_dot_collections__pb2.DeleteRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -125,8 +125,8 @@ class Collections(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Create',
-            collections__perxis_dot_collections__pb2.CreateRequest.SerializeToString,
-            collections__perxis_dot_collections__pb2.CreateResponse.FromString,
+            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)
 
@@ -142,8 +142,8 @@ class Collections(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Get',
-            collections__perxis_dot_collections__pb2.GetRequest.SerializeToString,
-            collections__perxis_dot_collections__pb2.GetResponse.FromString,
+            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)
 
@@ -159,8 +159,8 @@ class Collections(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/List',
-            collections__perxis_dot_collections__pb2.ListRequest.SerializeToString,
-            collections__perxis_dot_collections__pb2.ListResponse.FromString,
+            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)
 
@@ -176,7 +176,7 @@ class Collections(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Update',
-            collections__perxis_dot_collections__pb2.UpdateRequest.SerializeToString,
+            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)
@@ -193,7 +193,7 @@ class Collections(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.collections.Collections/Delete',
-            collections__perxis_dot_collections__pb2.DeleteRequest.SerializeToString,
+            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
index 4a23995..a3cc665 100644
--- a/perxis/common/common_pb2.py
+++ b/perxis/common/common_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: common/common.proto
+# source: perxis/common/common.proto
 """Generated protocol buffer code."""
 from google.protobuf.internal import enum_type_wrapper
 from google.protobuf import descriptor as _descriptor
@@ -18,12 +18,12 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='common/common.proto',
+  name='perxis/common/common.proto',
   package='common',
   syntax='proto3',
   serialized_options=b'Z.github.com/perxteam/perxis/proto/common;common',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x13\x63ommon/common.proto\x12\x06\x63ommon\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xb1\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\x16\n\x0e\x65mail_verified\x18\x06 \x01(\x08\x12\x12\n\navatar_uri\x18\x07 \x01(\t\x12*\n\x06system\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"O\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_uri\x18\x05 \x01(\t\"j\n\x16OrganizationMembership\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x03 \x01(\t\x12\x1a\n\x04role\x18\x04 \x01(\x0e\x32\x0c.common.Role\"\xac\x02\n\x0fSpaceInvitation\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x17\n\x0forganization_id\x18\x03 \x01(\t\x12\x10\n\x08space_id\x18\x04 \x01(\t\x12\x12\n\ncreated_by\x18\x05 \x01(\t\x12\x12\n\nspace_role\x18\x06 \x01(\t\x12\x0c\n\x04sent\x18\x07 \x01(\x08\x12\x0f\n\x07pending\x18\x08 \x01(\x08\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07sent_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bvalid_until\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"n\n\x05Space\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x0c\n\x04host\x18\x05 \x01(\t\x12\x0f\n\x07\x61pi_url\x18\x06 \x01(\t\"\xe4\x01\n\nCollection\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12*\n\x06single\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12*\n\x06hidden\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12*\n\x06system\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\xf5\x03\n\x04Item\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\x12\x0e\n\x06status\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12%\n\x04\x64\x61ta\x18\x08 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x34\n\x0ctranslations\x18\t \x03(\x0b\x32\x1e.common.Item.TranslationsEntry\x12\x13\n\x0brevision_id\x18\n \x01(\t\x12\x30\n\x0cpublished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0cpublished_by\x18\x0c \x01(\t\x12/\n\x0b\x61rchived_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x61rchived_by\x18\x0e \x01(\t\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\"\xa7\x01\n\x10\x46indItemsOptions\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1f\n\x07\x66ilters\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"\xb5\x01\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(\n\x05state\x18\x04 \x01(\x0e\x32\x19.common.Environment.State\x12\x0f\n\x07\x61liases\x18\x05 \x03(\t\"8\n\x05State\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\t\n\x05READY\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\"4\n\x06Locale\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"x\n\tSpaceRole\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12*\n\rcontent_rules\x18\x06 \x03(\x0b\x32\x13.common.ContentRule\"\xfd\x01\n\x0b\x43ontentRule\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rcollection_id\x18\x02 \x01(\t\x12\"\n\x06\x63reate\x18\x05 \x01(\x0e\x32\x12.common.ItemAccess\x12 \n\x04read\x18\x06 \x01(\x0e\x32\x12.common.ItemAccess\x12\"\n\x06update\x18\x07 \x01(\x0e\x32\x12.common.ItemAccess\x12\"\n\x06\x64\x65lete\x18\x08 \x01(\x0e\x32\x12.common.ItemAccess\x12\x1d\n\x15\x66ields_read_blacklist\x18\n \x03(\t\x12\x1e\n\x16\x66ields_write_blacklist\x18\x0b \x03(\t\"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\"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\"@\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\"\x92\x01\n\x04Rule\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rcollection_id\x18\x02 \x01(\t\x12\x1f\n\x07\x61\x63tions\x18\x03 \x03(\x0e\x32\x0e.common.Action\x12\x1e\n\x06\x61\x63\x63\x65ss\x18\x04 \x01(\x0e\x32\x0e.common.Access\x12\x0e\n\x06\x66ields\x18\x06 \x03(\t\x12\x16\n\x0e\x66ields_allowed\x18\x07 \x01(\x08\"?\n\x0c\x43ollaborator\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x0c\n\x04role\x18\x03 \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*\x16\n\nItemAccess\x12\x08\n\x04NONE\x10\x00*%\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\x30Z.github.com/perxteam/perxis/proto/common;commonb\x06proto3'
+  serialized_pb=b'\n\x1aperxis/common/common.proto\x12\x06\x63ommon\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xb1\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\x16\n\x0e\x65mail_verified\x18\x06 \x01(\x08\x12\x12\n\navatar_uri\x18\x07 \x01(\t\x12*\n\x06system\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"O\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_uri\x18\x05 \x01(\t\"j\n\x16OrganizationMembership\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\x12\x0f\n\x07user_id\x18\x03 \x01(\t\x12\x1a\n\x04role\x18\x04 \x01(\x0e\x32\x0c.common.Role\"\xac\x02\n\x0fSpaceInvitation\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x17\n\x0forganization_id\x18\x03 \x01(\t\x12\x10\n\x08space_id\x18\x04 \x01(\t\x12\x12\n\ncreated_by\x18\x05 \x01(\t\x12\x12\n\nspace_role\x18\x06 \x01(\t\x12\x0c\n\x04sent\x18\x07 \x01(\x08\x12\x0f\n\x07pending\x18\x08 \x01(\x08\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07sent_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bvalid_until\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"n\n\x05Space\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0forganization_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x0c\n\x04host\x18\x05 \x01(\t\x12\x0f\n\x07\x61pi_url\x18\x06 \x01(\t\"\xe4\x01\n\nCollection\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0e\n\x06schema\x18\x05 \x01(\t\x12*\n\x06single\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12*\n\x06hidden\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12*\n\x06system\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\xf5\x03\n\x04Item\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\x12\x0e\n\x06status\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12%\n\x04\x64\x61ta\x18\x08 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x34\n\x0ctranslations\x18\t \x03(\x0b\x32\x1e.common.Item.TranslationsEntry\x12\x13\n\x0brevision_id\x18\n \x01(\t\x12\x30\n\x0cpublished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0cpublished_by\x18\x0c \x01(\t\x12/\n\x0b\x61rchived_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x61rchived_by\x18\x0e \x01(\t\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\"\xa7\x01\n\x10\x46indItemsOptions\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1f\n\x07\x66ilters\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"\xb5\x01\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(\n\x05state\x18\x04 \x01(\x0e\x32\x19.common.Environment.State\x12\x0f\n\x07\x61liases\x18\x05 \x03(\t\"8\n\x05State\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\t\n\x05READY\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\"4\n\x06Locale\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"x\n\tSpaceRole\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12*\n\rcontent_rules\x18\x06 \x03(\x0b\x32\x13.common.ContentRule\"\xfd\x01\n\x0b\x43ontentRule\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rcollection_id\x18\x02 \x01(\t\x12\"\n\x06\x63reate\x18\x05 \x01(\x0e\x32\x12.common.ItemAccess\x12 \n\x04read\x18\x06 \x01(\x0e\x32\x12.common.ItemAccess\x12\"\n\x06update\x18\x07 \x01(\x0e\x32\x12.common.ItemAccess\x12\"\n\x06\x64\x65lete\x18\x08 \x01(\x0e\x32\x12.common.ItemAccess\x12\x1d\n\x15\x66ields_read_blacklist\x18\n \x03(\t\x12\x1e\n\x16\x66ields_write_blacklist\x18\x0b \x03(\t\"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\"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\"@\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\"\x86\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\x0e\n\x06\x66ields\x18\x06 \x03(\t\x12\x16\n\x0e\x66ields_allowed\x18\x07 \x01(\x08\"?\n\x0c\x43ollaborator\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\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*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*\x16\n\nItemAccess\x12\x08\n\x04NONE\x10\x00*%\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\x30Z.github.com/perxteam/perxis/proto/common;commonb\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,])
 
@@ -57,8 +57,8 @@ _ROLE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2867,
-  serialized_end=2923,
+  serialized_start=2976,
+  serialized_end=3032,
 )
 _sym_db.RegisterEnumDescriptor(_ROLE)
 
@@ -78,8 +78,8 @@ _ITEMACCESS = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2925,
-  serialized_end=2947,
+  serialized_start=3034,
+  serialized_end=3056,
 )
 _sym_db.RegisterEnumDescriptor(_ITEMACCESS)
 
@@ -109,8 +109,8 @@ _ACCESS = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2949,
-  serialized_end=2986,
+  serialized_start=3058,
+  serialized_end=3095,
 )
 _sym_db.RegisterEnumDescriptor(_ACCESS)
 
@@ -150,8 +150,8 @@ _ACTION = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2988,
-  serialized_end=3055,
+  serialized_start=3097,
+  serialized_end=3164,
 )
 _sym_db.RegisterEnumDescriptor(_ACTION)
 
@@ -201,8 +201,8 @@ _ENVIRONMENT_STATE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1941,
-  serialized_end=1997,
+  serialized_start=1948,
+  serialized_end=2004,
 )
 _sym_db.RegisterEnumDescriptor(_ENVIRONMENT_STATE)
 
@@ -283,8 +283,8 @@ _USER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=127,
-  serialized_end=304,
+  serialized_start=134,
+  serialized_end=311,
 )
 
 
@@ -336,8 +336,8 @@ _ORGANIZATION = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=306,
-  serialized_end=385,
+  serialized_start=313,
+  serialized_end=392,
 )
 
 
@@ -389,8 +389,8 @@ _ORGANIZATIONMEMBERSHIP = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=387,
-  serialized_end=493,
+  serialized_start=394,
+  serialized_end=500,
 )
 
 
@@ -491,8 +491,8 @@ _SPACEINVITATION = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=496,
-  serialized_end=796,
+  serialized_start=503,
+  serialized_end=803,
 )
 
 
@@ -558,8 +558,8 @@ _SPACE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=798,
-  serialized_end=908,
+  serialized_start=805,
+  serialized_end=915,
 )
 
 
@@ -639,8 +639,8 @@ _COLLECTION = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=911,
-  serialized_end=1139,
+  serialized_start=918,
+  serialized_end=1146,
 )
 
 
@@ -678,8 +678,8 @@ _ITEM_TRANSLATIONSENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1567,
-  serialized_end=1643,
+  serialized_start=1574,
+  serialized_end=1650,
 )
 
 _ITEM = _descriptor.Descriptor(
@@ -800,8 +800,8 @@ _ITEM = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1142,
-  serialized_end=1643,
+  serialized_start=1149,
+  serialized_end=1650,
 )
 
 
@@ -874,8 +874,8 @@ _FINDITEMSOPTIONS = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1646,
-  serialized_end=1813,
+  serialized_start=1653,
+  serialized_end=1820,
 )
 
 
@@ -935,8 +935,8 @@ _ENVIRONMENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1816,
-  serialized_end=1997,
+  serialized_start=1823,
+  serialized_end=2004,
 )
 
 
@@ -981,8 +981,8 @@ _LOCALE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1999,
-  serialized_end=2051,
+  serialized_start=2006,
+  serialized_end=2058,
 )
 
 
@@ -1041,8 +1041,8 @@ _SPACEROLE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2053,
-  serialized_end=2173,
+  serialized_start=2060,
+  serialized_end=2180,
 )
 
 
@@ -1122,8 +1122,8 @@ _CONTENTRULE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2176,
-  serialized_end=2429,
+  serialized_start=2183,
+  serialized_end=2436,
 )
 
 
@@ -1168,8 +1168,8 @@ _FILTER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2431,
-  serialized_end=2505,
+  serialized_start=2438,
+  serialized_end=2512,
 )
 
 
@@ -1228,8 +1228,8 @@ _FILE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2507,
-  serialized_end=2585,
+  serialized_start=2514,
+  serialized_end=2592,
 )
 
 
@@ -1274,8 +1274,8 @@ _FINDOPTIONS = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2587,
-  serialized_end=2651,
+  serialized_start=2594,
+  serialized_end=2658,
 )
 
 
@@ -1288,42 +1288,35 @@ _RULE = _descriptor.Descriptor(
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='id', full_name='common.Rule.id', index=0,
+      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='collection_id', full_name='common.Rule.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),
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='common.Rule.actions', index=2,
-      number=3, type=14, cpp_type=8, label=3,
+      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=3,
-      number=4, type=14, cpp_type=8, label=1,
+      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='fields', full_name='common.Rule.fields', index=4,
+      name='fields', full_name='common.Rule.fields', index=3,
       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='fields_allowed', full_name='common.Rule.fields_allowed', index=5,
+      name='fields_allowed', full_name='common.Rule.fields_allowed', 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,
@@ -1341,8 +1334,8 @@ _RULE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2654,
-  serialized_end=2800,
+  serialized_start=2661,
+  serialized_end=2795,
 )
 
 
@@ -1387,8 +1380,68 @@ _COLLABORATOR = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2802,
-  serialized_end=2865,
+  serialized_start=2797,
+  serialized_end=2860,
+)
+
+
+_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=2862,
+  serialized_end=2974,
 )
 
 _USER.fields_by_name['system'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
@@ -1434,6 +1487,7 @@ DESCRIPTOR.message_types_by_name['File'] = _FILE
 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['Role'] = _ROLE
 DESCRIPTOR.enum_types_by_name['ItemAccess'] = _ITEMACCESS
 DESCRIPTOR.enum_types_by_name['Access'] = _ACCESS
@@ -1442,42 +1496,42 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), {
   'DESCRIPTOR' : _USER,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.User)
   })
 _sym_db.RegisterMessage(User)
 
 Organization = _reflection.GeneratedProtocolMessageType('Organization', (_message.Message,), {
   'DESCRIPTOR' : _ORGANIZATION,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.Organization)
   })
 _sym_db.RegisterMessage(Organization)
 
 OrganizationMembership = _reflection.GeneratedProtocolMessageType('OrganizationMembership', (_message.Message,), {
   'DESCRIPTOR' : _ORGANIZATIONMEMBERSHIP,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.OrganizationMembership)
   })
 _sym_db.RegisterMessage(OrganizationMembership)
 
 SpaceInvitation = _reflection.GeneratedProtocolMessageType('SpaceInvitation', (_message.Message,), {
   'DESCRIPTOR' : _SPACEINVITATION,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.SpaceInvitation)
   })
 _sym_db.RegisterMessage(SpaceInvitation)
 
 Space = _reflection.GeneratedProtocolMessageType('Space', (_message.Message,), {
   'DESCRIPTOR' : _SPACE,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.Space)
   })
 _sym_db.RegisterMessage(Space)
 
 Collection = _reflection.GeneratedProtocolMessageType('Collection', (_message.Message,), {
   'DESCRIPTOR' : _COLLECTION,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.Collection)
   })
 _sym_db.RegisterMessage(Collection)
@@ -1486,12 +1540,12 @@ Item = _reflection.GeneratedProtocolMessageType('Item', (_message.Message,), {
 
   'TranslationsEntry' : _reflection.GeneratedProtocolMessageType('TranslationsEntry', (_message.Message,), {
     'DESCRIPTOR' : _ITEM_TRANSLATIONSENTRY,
-    '__module__' : 'common.common_pb2'
+    '__module__' : 'perxis.common.common_pb2'
     # @@protoc_insertion_point(class_scope:common.Item.TranslationsEntry)
     })
   ,
   'DESCRIPTOR' : _ITEM,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.Item)
   })
 _sym_db.RegisterMessage(Item)
@@ -1499,74 +1553,81 @@ _sym_db.RegisterMessage(Item.TranslationsEntry)
 
 FindItemsOptions = _reflection.GeneratedProtocolMessageType('FindItemsOptions', (_message.Message,), {
   'DESCRIPTOR' : _FINDITEMSOPTIONS,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.FindItemsOptions)
   })
 _sym_db.RegisterMessage(FindItemsOptions)
 
 Environment = _reflection.GeneratedProtocolMessageType('Environment', (_message.Message,), {
   'DESCRIPTOR' : _ENVIRONMENT,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.Environment)
   })
 _sym_db.RegisterMessage(Environment)
 
 Locale = _reflection.GeneratedProtocolMessageType('Locale', (_message.Message,), {
   'DESCRIPTOR' : _LOCALE,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.Locale)
   })
 _sym_db.RegisterMessage(Locale)
 
 SpaceRole = _reflection.GeneratedProtocolMessageType('SpaceRole', (_message.Message,), {
   'DESCRIPTOR' : _SPACEROLE,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.SpaceRole)
   })
 _sym_db.RegisterMessage(SpaceRole)
 
 ContentRule = _reflection.GeneratedProtocolMessageType('ContentRule', (_message.Message,), {
   'DESCRIPTOR' : _CONTENTRULE,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.ContentRule)
   })
 _sym_db.RegisterMessage(ContentRule)
 
 Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
   'DESCRIPTOR' : _FILTER,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.Filter)
   })
 _sym_db.RegisterMessage(Filter)
 
 File = _reflection.GeneratedProtocolMessageType('File', (_message.Message,), {
   'DESCRIPTOR' : _FILE,
-  '__module__' : 'common.common_pb2'
+  '__module__' : 'perxis.common.common_pb2'
   # @@protoc_insertion_point(class_scope:common.File)
   })
 _sym_db.RegisterMessage(File)
 
 FindOptions = _reflection.GeneratedProtocolMessageType('FindOptions', (_message.Message,), {
   'DESCRIPTOR' : _FINDOPTIONS,
-  '__module__' : 'common.common_pb2'
+  '__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__' : 'common.common_pb2'
+  '__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__' : 'common.common_pb2'
+  '__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
 _ITEM_TRANSLATIONSENTRY._options = None
diff --git a/perxis/contentcontrol/contentcontrol_pb2.py b/perxis/contentcontrol/contentcontrol_pb2.py
index 04c6fff..80f2203 100644
--- a/perxis/contentcontrol/contentcontrol_pb2.py
+++ b/perxis/contentcontrol/contentcontrol_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: contentcontrol/contentcontrol.proto
+# source: perxis/contentcontrol/contentcontrol.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,18 +12,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='contentcontrol/contentcontrol.proto',
+  name='perxis/contentcontrol/contentcontrol.proto',
   package='contentcontrol',
   syntax='proto3',
   serialized_options=b'Z>github.com/perxteam/perxis/proto/contentcontrol;contentcontrol',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n#contentcontrol/contentcontrol.proto\x12\x0e\x63ontentcontrol\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/common.proto\"\x14\n\x04Host\x12\x0c\n\x04name\x18\x01 \x01(\t\"!\n\x11ListSpacesOptions\x12\x0c\n\x04host\x18\x01 \x01(\t\"2\n\x12\x43reateSpaceRequest\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"3\n\x13\x43reateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\" \n\x12\x44\x65leteSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x1d\n\x0fGetSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"0\n\x10GetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"3\n\x12ListSpacesResponse\x12\x1d\n\x06spaces\x18\x01 \x03(\x0b\x32\r.common.Space\"D\n\x11ListSpacesRequest\x12/\n\x04opts\x18\x01 \x01(\x0b\x32!.contentcontrol.ListSpacesOptions\"5\n\x15\x43\x61nCreateSpaceRequest\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"<\n\x16\x43\x61nCreateSpaceResponse\x12\"\n\x04host\x18\x01 \x01(\x0b\x32\x14.contentcontrol.Host2\xc2\x03\n\x0e\x43ontentControl\x12\x61\n\x0e\x43\x61nCreateSpace\x12%.contentcontrol.CanCreateSpaceRequest\x1a&.contentcontrol.CanCreateSpaceResponse\"\x00\x12X\n\x0b\x43reateSpace\x12\".contentcontrol.CreateSpaceRequest\x1a#.contentcontrol.CreateSpaceResponse\"\x00\x12K\n\x0b\x44\x65leteSpace\x12\".contentcontrol.DeleteSpaceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12O\n\x08GetSpace\x12\x1f.contentcontrol.GetSpaceRequest\x1a .contentcontrol.GetSpaceResponse\"\x00\x12U\n\nListSpaces\x12!.contentcontrol.ListSpacesRequest\x1a\".contentcontrol.ListSpacesResponse\"\x00\x42@Z>github.com/perxteam/perxis/proto/contentcontrol;contentcontrolb\x06proto3'
+  serialized_pb=b'\n*perxis/contentcontrol/contentcontrol.proto\x12\x0e\x63ontentcontrol\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"\x14\n\x04Host\x12\x0c\n\x04name\x18\x01 \x01(\t\"!\n\x11ListSpacesOptions\x12\x0c\n\x04host\x18\x01 \x01(\t\"2\n\x12\x43reateSpaceRequest\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"3\n\x13\x43reateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\" \n\x12\x44\x65leteSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x1d\n\x0fGetSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"0\n\x10GetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"3\n\x12ListSpacesResponse\x12\x1d\n\x06spaces\x18\x01 \x03(\x0b\x32\r.common.Space\"D\n\x11ListSpacesRequest\x12/\n\x04opts\x18\x01 \x01(\x0b\x32!.contentcontrol.ListSpacesOptions\"5\n\x15\x43\x61nCreateSpaceRequest\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"<\n\x16\x43\x61nCreateSpaceResponse\x12\"\n\x04host\x18\x01 \x01(\x0b\x32\x14.contentcontrol.Host2\xc2\x03\n\x0e\x43ontentControl\x12\x61\n\x0e\x43\x61nCreateSpace\x12%.contentcontrol.CanCreateSpaceRequest\x1a&.contentcontrol.CanCreateSpaceResponse\"\x00\x12X\n\x0b\x43reateSpace\x12\".contentcontrol.CreateSpaceRequest\x1a#.contentcontrol.CreateSpaceResponse\"\x00\x12K\n\x0b\x44\x65leteSpace\x12\".contentcontrol.DeleteSpaceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12O\n\x08GetSpace\x12\x1f.contentcontrol.GetSpaceRequest\x1a .contentcontrol.GetSpaceResponse\"\x00\x12U\n\nListSpaces\x12!.contentcontrol.ListSpacesRequest\x1a\".contentcontrol.ListSpacesResponse\"\x00\x42@Z>github.com/perxteam/perxis/proto/contentcontrol;contentcontrolb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -55,8 +55,8 @@ _HOST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=105,
-  serialized_end=125,
+  serialized_start=119,
+  serialized_end=139,
 )
 
 
@@ -87,8 +87,8 @@ _LISTSPACESOPTIONS = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=127,
-  serialized_end=160,
+  serialized_start=141,
+  serialized_end=174,
 )
 
 
@@ -119,8 +119,8 @@ _CREATESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=162,
-  serialized_end=212,
+  serialized_start=176,
+  serialized_end=226,
 )
 
 
@@ -151,8 +151,8 @@ _CREATESPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=214,
-  serialized_end=265,
+  serialized_start=228,
+  serialized_end=279,
 )
 
 
@@ -183,8 +183,8 @@ _DELETESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=267,
-  serialized_end=299,
+  serialized_start=281,
+  serialized_end=313,
 )
 
 
@@ -215,8 +215,8 @@ _GETSPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=301,
-  serialized_end=330,
+  serialized_start=315,
+  serialized_end=344,
 )
 
 
@@ -247,8 +247,8 @@ _GETSPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=332,
-  serialized_end=380,
+  serialized_start=346,
+  serialized_end=394,
 )
 
 
@@ -279,8 +279,8 @@ _LISTSPACESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=382,
-  serialized_end=433,
+  serialized_start=396,
+  serialized_end=447,
 )
 
 
@@ -311,8 +311,8 @@ _LISTSPACESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=435,
-  serialized_end=503,
+  serialized_start=449,
+  serialized_end=517,
 )
 
 
@@ -343,8 +343,8 @@ _CANCREATESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=505,
-  serialized_end=558,
+  serialized_start=519,
+  serialized_end=572,
 )
 
 
@@ -375,16 +375,16 @@ _CANCREATESPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=560,
-  serialized_end=620,
+  serialized_start=574,
+  serialized_end=634,
 )
 
-_CREATESPACEREQUEST.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_CREATESPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_GETSPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_LISTSPACESRESPONSE.fields_by_name['spaces'].message_type = common_dot_common__pb2._SPACE
+_CREATESPACEREQUEST.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_CREATESPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_GETSPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_LISTSPACESRESPONSE.fields_by_name['spaces'].message_type = perxis_dot_common_dot_common__pb2._SPACE
 _LISTSPACESREQUEST.fields_by_name['opts'].message_type = _LISTSPACESOPTIONS
-_CANCREATESPACEREQUEST.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
+_CANCREATESPACEREQUEST.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
 _CANCREATESPACERESPONSE.fields_by_name['host'].message_type = _HOST
 DESCRIPTOR.message_types_by_name['Host'] = _HOST
 DESCRIPTOR.message_types_by_name['ListSpacesOptions'] = _LISTSPACESOPTIONS
@@ -401,77 +401,77 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Host = _reflection.GeneratedProtocolMessageType('Host', (_message.Message,), {
   'DESCRIPTOR' : _HOST,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.Host)
   })
 _sym_db.RegisterMessage(Host)
 
 ListSpacesOptions = _reflection.GeneratedProtocolMessageType('ListSpacesOptions', (_message.Message,), {
   'DESCRIPTOR' : _LISTSPACESOPTIONS,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.ListSpacesOptions)
   })
 _sym_db.RegisterMessage(ListSpacesOptions)
 
 CreateSpaceRequest = _reflection.GeneratedProtocolMessageType('CreateSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATESPACEREQUEST,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.CreateSpaceRequest)
   })
 _sym_db.RegisterMessage(CreateSpaceRequest)
 
 CreateSpaceResponse = _reflection.GeneratedProtocolMessageType('CreateSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATESPACERESPONSE,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.CreateSpaceResponse)
   })
 _sym_db.RegisterMessage(CreateSpaceResponse)
 
 DeleteSpaceRequest = _reflection.GeneratedProtocolMessageType('DeleteSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACEREQUEST,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.DeleteSpaceRequest)
   })
 _sym_db.RegisterMessage(DeleteSpaceRequest)
 
 GetSpaceRequest = _reflection.GeneratedProtocolMessageType('GetSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACEREQUEST,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.GetSpaceRequest)
   })
 _sym_db.RegisterMessage(GetSpaceRequest)
 
 GetSpaceResponse = _reflection.GeneratedProtocolMessageType('GetSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACERESPONSE,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.GetSpaceResponse)
   })
 _sym_db.RegisterMessage(GetSpaceResponse)
 
 ListSpacesResponse = _reflection.GeneratedProtocolMessageType('ListSpacesResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTSPACESRESPONSE,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.ListSpacesResponse)
   })
 _sym_db.RegisterMessage(ListSpacesResponse)
 
 ListSpacesRequest = _reflection.GeneratedProtocolMessageType('ListSpacesRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTSPACESREQUEST,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.ListSpacesRequest)
   })
 _sym_db.RegisterMessage(ListSpacesRequest)
 
 CanCreateSpaceRequest = _reflection.GeneratedProtocolMessageType('CanCreateSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _CANCREATESPACEREQUEST,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.CanCreateSpaceRequest)
   })
 _sym_db.RegisterMessage(CanCreateSpaceRequest)
 
 CanCreateSpaceResponse = _reflection.GeneratedProtocolMessageType('CanCreateSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _CANCREATESPACERESPONSE,
-  '__module__' : 'contentcontrol.contentcontrol_pb2'
+  '__module__' : 'perxis.contentcontrol.contentcontrol_pb2'
   # @@protoc_insertion_point(class_scope:contentcontrol.CanCreateSpaceResponse)
   })
 _sym_db.RegisterMessage(CanCreateSpaceResponse)
@@ -486,8 +486,8 @@ _CONTENTCONTROL = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=623,
-  serialized_end=1073,
+  serialized_start=637,
+  serialized_end=1087,
   methods=[
   _descriptor.MethodDescriptor(
     name='CanCreateSpace',
diff --git a/perxis/contentcontrol/contentcontrol_pb2_grpc.py b/perxis/contentcontrol/contentcontrol_pb2_grpc.py
index 1afb317..7a5ad69 100644
--- a/perxis/contentcontrol/contentcontrol_pb2_grpc.py
+++ b/perxis/contentcontrol/contentcontrol_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from contentcontrol import contentcontrol_pb2 as contentcontrol_dot_contentcontrol__pb2
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+from perxis.contentcontrol import contentcontrol_pb2 as perxis_dot_contentcontrol_dot_contentcontrol__pb2
 
 
 class ContentControlStub(object):
@@ -17,28 +17,28 @@ class ContentControlStub(object):
         """
         self.CanCreateSpace = channel.unary_unary(
                 '/contentcontrol.ContentControl/CanCreateSpace',
-                request_serializer=contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceRequest.SerializeToString,
-                response_deserializer=contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceResponse.FromString,
+                request_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceResponse.FromString,
                 )
         self.CreateSpace = channel.unary_unary(
                 '/contentcontrol.ContentControl/CreateSpace',
-                request_serializer=contentcontrol_dot_contentcontrol__pb2.CreateSpaceRequest.SerializeToString,
-                response_deserializer=contentcontrol_dot_contentcontrol__pb2.CreateSpaceResponse.FromString,
+                request_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CreateSpaceRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CreateSpaceResponse.FromString,
                 )
         self.DeleteSpace = channel.unary_unary(
                 '/contentcontrol.ContentControl/DeleteSpace',
-                request_serializer=contentcontrol_dot_contentcontrol__pb2.DeleteSpaceRequest.SerializeToString,
+                request_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.DeleteSpaceRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.GetSpace = channel.unary_unary(
                 '/contentcontrol.ContentControl/GetSpace',
-                request_serializer=contentcontrol_dot_contentcontrol__pb2.GetSpaceRequest.SerializeToString,
-                response_deserializer=contentcontrol_dot_contentcontrol__pb2.GetSpaceResponse.FromString,
+                request_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.GetSpaceRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.GetSpaceResponse.FromString,
                 )
         self.ListSpaces = channel.unary_unary(
                 '/contentcontrol.ContentControl/ListSpaces',
-                request_serializer=contentcontrol_dot_contentcontrol__pb2.ListSpacesRequest.SerializeToString,
-                response_deserializer=contentcontrol_dot_contentcontrol__pb2.ListSpacesResponse.FromString,
+                request_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.ListSpacesRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.ListSpacesResponse.FromString,
                 )
 
 
@@ -81,28 +81,28 @@ def add_ContentControlServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'CanCreateSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.CanCreateSpace,
-                    request_deserializer=contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceRequest.FromString,
-                    response_serializer=contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceRequest.FromString,
+                    response_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceResponse.SerializeToString,
             ),
             'CreateSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateSpace,
-                    request_deserializer=contentcontrol_dot_contentcontrol__pb2.CreateSpaceRequest.FromString,
-                    response_serializer=contentcontrol_dot_contentcontrol__pb2.CreateSpaceResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CreateSpaceRequest.FromString,
+                    response_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.CreateSpaceResponse.SerializeToString,
             ),
             'DeleteSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteSpace,
-                    request_deserializer=contentcontrol_dot_contentcontrol__pb2.DeleteSpaceRequest.FromString,
+                    request_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.DeleteSpaceRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'GetSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.GetSpace,
-                    request_deserializer=contentcontrol_dot_contentcontrol__pb2.GetSpaceRequest.FromString,
-                    response_serializer=contentcontrol_dot_contentcontrol__pb2.GetSpaceResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.GetSpaceRequest.FromString,
+                    response_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.GetSpaceResponse.SerializeToString,
             ),
             'ListSpaces': grpc.unary_unary_rpc_method_handler(
                     servicer.ListSpaces,
-                    request_deserializer=contentcontrol_dot_contentcontrol__pb2.ListSpacesRequest.FromString,
-                    response_serializer=contentcontrol_dot_contentcontrol__pb2.ListSpacesResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.ListSpacesRequest.FromString,
+                    response_serializer=perxis_dot_contentcontrol_dot_contentcontrol__pb2.ListSpacesResponse.SerializeToString,
             ),
     }
     generic_handler = grpc.method_handlers_generic_handler(
@@ -126,8 +126,8 @@ class ContentControl(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentcontrol.ContentControl/CanCreateSpace',
-            contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceRequest.SerializeToString,
-            contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceResponse.FromString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceRequest.SerializeToString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.CanCreateSpaceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -143,8 +143,8 @@ class ContentControl(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentcontrol.ContentControl/CreateSpace',
-            contentcontrol_dot_contentcontrol__pb2.CreateSpaceRequest.SerializeToString,
-            contentcontrol_dot_contentcontrol__pb2.CreateSpaceResponse.FromString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.CreateSpaceRequest.SerializeToString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.CreateSpaceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -160,7 +160,7 @@ class ContentControl(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentcontrol.ContentControl/DeleteSpace',
-            contentcontrol_dot_contentcontrol__pb2.DeleteSpaceRequest.SerializeToString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.DeleteSpaceRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -177,8 +177,8 @@ class ContentControl(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentcontrol.ContentControl/GetSpace',
-            contentcontrol_dot_contentcontrol__pb2.GetSpaceRequest.SerializeToString,
-            contentcontrol_dot_contentcontrol__pb2.GetSpaceResponse.FromString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.GetSpaceRequest.SerializeToString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.GetSpaceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -194,7 +194,7 @@ class ContentControl(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentcontrol.ContentControl/ListSpaces',
-            contentcontrol_dot_contentcontrol__pb2.ListSpacesRequest.SerializeToString,
-            contentcontrol_dot_contentcontrol__pb2.ListSpacesResponse.FromString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.ListSpacesRequest.SerializeToString,
+            perxis_dot_contentcontrol_dot_contentcontrol__pb2.ListSpacesResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/contentdelivery/contentdelivery_pb2.py b/perxis/contentdelivery/contentdelivery_pb2.py
index 76a8f6e..f8c2e00 100644
--- a/perxis/contentdelivery/contentdelivery_pb2.py
+++ b/perxis/contentdelivery/contentdelivery_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: contentdelivery/contentdelivery.proto
+# source: perxis/contentdelivery/contentdelivery.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -11,18 +11,18 @@ from google.protobuf import symbol_database as _symbol_database
 _sym_db = _symbol_database.Default()
 
 
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='contentdelivery/contentdelivery.proto',
+  name='perxis/contentdelivery/contentdelivery.proto',
   package='contentdelivery',
   syntax='proto3',
   serialized_options=b'Z@github.com/perxteam/perxis/proto/contentdelivery;contentdelivery',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n%contentdelivery/contentdelivery.proto\x12\x0f\x63ontentdelivery\x1a\x13\x63ommon/common.proto\"\x1d\n\x0fGetSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"0\n\x10GetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"&\n\x12ListLocalesRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"6\n\x13ListLocalesResponse\x12\x1f\n\x07locales\x18\x01 \x03(\x0b\x32\x0e.common.Locale\"5\n\x15GetEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x16GetEnvironmentResponse\x12(\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x13.common.Environment\"L\n\x14GetCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"?\n\x15GetCollectionResponse\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"B\n\x16ListCollectionsRequest\x12\x16\n\x0e\x65nvironment_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x17ListCollectionsResponse\x12\'\n\x0b\x63ollections\x18\x01 \x03(\x0b\x32\x12.common.Collection\"m\n\x0eGetItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rcollection_id\x18\x02 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x03 \x01(\t\x12\x10\n\x08space_id\x18\x04 \x01(\t\x12\x0e\n\x06locale\x18\x05 \x01(\t\"-\n\x0fGetItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"\xb4\x01\n\x10\x46indItemsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1c\n\x04\x64\x61ta\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x0e\n\x06locale\x18\x05 \x01(\t\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"?\n\x11\x46indItemsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\x12\r\n\x05total\x18\x02 \x01(\x05\x32\x95\x05\n\x0f\x43ontentDelivery\x12Q\n\x08GetSpace\x12 .contentdelivery.GetSpaceRequest\x1a!.contentdelivery.GetSpaceResponse\"\x00\x12Z\n\x0bListLocales\x12#.contentdelivery.ListLocalesRequest\x1a$.contentdelivery.ListLocalesResponse\"\x00\x12\x63\n\x0eGetEnvironment\x12&.contentdelivery.GetEnvironmentRequest\x1a\'.contentdelivery.GetEnvironmentResponse\"\x00\x12`\n\rGetCollection\x12%.contentdelivery.GetCollectionRequest\x1a&.contentdelivery.GetCollectionResponse\"\x00\x12\x66\n\x0fListCollections\x12\'.contentdelivery.ListCollectionsRequest\x1a(.contentdelivery.ListCollectionsResponse\"\x00\x12N\n\x07GetItem\x12\x1f.contentdelivery.GetItemRequest\x1a .contentdelivery.GetItemResponse\"\x00\x12T\n\tFindItems\x12!.contentdelivery.FindItemsRequest\x1a\".contentdelivery.FindItemsResponse\"\x00\x42\x42Z@github.com/perxteam/perxis/proto/contentdelivery;contentdeliveryb\x06proto3'
+  serialized_pb=b'\n,perxis/contentdelivery/contentdelivery.proto\x12\x0f\x63ontentdelivery\x1a\x1aperxis/common/common.proto\"\x1d\n\x0fGetSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"0\n\x10GetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"&\n\x12ListLocalesRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"6\n\x13ListLocalesResponse\x12\x1f\n\x07locales\x18\x01 \x03(\x0b\x32\x0e.common.Locale\"5\n\x15GetEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x16GetEnvironmentResponse\x12(\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x13.common.Environment\"L\n\x14GetCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"?\n\x15GetCollectionResponse\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"B\n\x16ListCollectionsRequest\x12\x16\n\x0e\x65nvironment_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x17ListCollectionsResponse\x12\'\n\x0b\x63ollections\x18\x01 \x03(\x0b\x32\x12.common.Collection\"m\n\x0eGetItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x15\n\rcollection_id\x18\x02 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x03 \x01(\t\x12\x10\n\x08space_id\x18\x04 \x01(\t\x12\x0e\n\x06locale\x18\x05 \x01(\t\"-\n\x0fGetItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"\xb4\x01\n\x10\x46indItemsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1c\n\x04\x64\x61ta\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x0e\n\x06locale\x18\x05 \x01(\t\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"?\n\x11\x46indItemsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\x12\r\n\x05total\x18\x02 \x01(\x05\x32\x95\x05\n\x0f\x43ontentDelivery\x12Q\n\x08GetSpace\x12 .contentdelivery.GetSpaceRequest\x1a!.contentdelivery.GetSpaceResponse\"\x00\x12Z\n\x0bListLocales\x12#.contentdelivery.ListLocalesRequest\x1a$.contentdelivery.ListLocalesResponse\"\x00\x12\x63\n\x0eGetEnvironment\x12&.contentdelivery.GetEnvironmentRequest\x1a\'.contentdelivery.GetEnvironmentResponse\"\x00\x12`\n\rGetCollection\x12%.contentdelivery.GetCollectionRequest\x1a&.contentdelivery.GetCollectionResponse\"\x00\x12\x66\n\x0fListCollections\x12\'.contentdelivery.ListCollectionsRequest\x1a(.contentdelivery.ListCollectionsResponse\"\x00\x12N\n\x07GetItem\x12\x1f.contentdelivery.GetItemRequest\x1a .contentdelivery.GetItemResponse\"\x00\x12T\n\tFindItems\x12!.contentdelivery.FindItemsRequest\x1a\".contentdelivery.FindItemsResponse\"\x00\x42\x42Z@github.com/perxteam/perxis/proto/contentdelivery;contentdeliveryb\x06proto3'
   ,
-  dependencies=[common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -54,8 +54,8 @@ _GETSPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=79,
-  serialized_end=108,
+  serialized_start=93,
+  serialized_end=122,
 )
 
 
@@ -86,8 +86,8 @@ _GETSPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=110,
-  serialized_end=158,
+  serialized_start=124,
+  serialized_end=172,
 )
 
 
@@ -118,8 +118,8 @@ _LISTLOCALESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=160,
-  serialized_end=198,
+  serialized_start=174,
+  serialized_end=212,
 )
 
 
@@ -150,8 +150,8 @@ _LISTLOCALESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=200,
-  serialized_end=254,
+  serialized_start=214,
+  serialized_end=268,
 )
 
 
@@ -189,8 +189,8 @@ _GETENVIRONMENTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=256,
-  serialized_end=309,
+  serialized_start=270,
+  serialized_end=323,
 )
 
 
@@ -221,8 +221,8 @@ _GETENVIRONMENTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=311,
-  serialized_end=377,
+  serialized_start=325,
+  serialized_end=391,
 )
 
 
@@ -267,8 +267,8 @@ _GETCOLLECTIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=379,
-  serialized_end=455,
+  serialized_start=393,
+  serialized_end=469,
 )
 
 
@@ -299,8 +299,8 @@ _GETCOLLECTIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=457,
-  serialized_end=520,
+  serialized_start=471,
+  serialized_end=534,
 )
 
 
@@ -338,8 +338,8 @@ _LISTCOLLECTIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=522,
-  serialized_end=588,
+  serialized_start=536,
+  serialized_end=602,
 )
 
 
@@ -370,8 +370,8 @@ _LISTCOLLECTIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=590,
-  serialized_end=656,
+  serialized_start=604,
+  serialized_end=670,
 )
 
 
@@ -430,8 +430,8 @@ _GETITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=658,
-  serialized_end=767,
+  serialized_start=672,
+  serialized_end=781,
 )
 
 
@@ -462,8 +462,8 @@ _GETITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=769,
-  serialized_end=814,
+  serialized_start=783,
+  serialized_end=828,
 )
 
 
@@ -543,8 +543,8 @@ _FINDITEMSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=817,
-  serialized_end=997,
+  serialized_start=831,
+  serialized_end=1011,
 )
 
 
@@ -582,18 +582,18 @@ _FINDITEMSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=999,
-  serialized_end=1062,
+  serialized_start=1013,
+  serialized_end=1076,
 )
 
-_GETSPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_LISTLOCALESRESPONSE.fields_by_name['locales'].message_type = common_dot_common__pb2._LOCALE
-_GETENVIRONMENTRESPONSE.fields_by_name['environment'].message_type = common_dot_common__pb2._ENVIRONMENT
-_GETCOLLECTIONRESPONSE.fields_by_name['collection'].message_type = common_dot_common__pb2._COLLECTION
-_LISTCOLLECTIONSRESPONSE.fields_by_name['collections'].message_type = common_dot_common__pb2._COLLECTION
-_GETITEMRESPONSE.fields_by_name['item'].message_type = common_dot_common__pb2._ITEM
-_FINDITEMSREQUEST.fields_by_name['data'].message_type = common_dot_common__pb2._FILTER
-_FINDITEMSRESPONSE.fields_by_name['items'].message_type = common_dot_common__pb2._ITEM
+_GETSPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_LISTLOCALESRESPONSE.fields_by_name['locales'].message_type = perxis_dot_common_dot_common__pb2._LOCALE
+_GETENVIRONMENTRESPONSE.fields_by_name['environment'].message_type = perxis_dot_common_dot_common__pb2._ENVIRONMENT
+_GETCOLLECTIONRESPONSE.fields_by_name['collection'].message_type = perxis_dot_common_dot_common__pb2._COLLECTION
+_LISTCOLLECTIONSRESPONSE.fields_by_name['collections'].message_type = perxis_dot_common_dot_common__pb2._COLLECTION
+_GETITEMRESPONSE.fields_by_name['item'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_FINDITEMSREQUEST.fields_by_name['data'].message_type = perxis_dot_common_dot_common__pb2._FILTER
+_FINDITEMSRESPONSE.fields_by_name['items'].message_type = perxis_dot_common_dot_common__pb2._ITEM
 DESCRIPTOR.message_types_by_name['GetSpaceRequest'] = _GETSPACEREQUEST
 DESCRIPTOR.message_types_by_name['GetSpaceResponse'] = _GETSPACERESPONSE
 DESCRIPTOR.message_types_by_name['ListLocalesRequest'] = _LISTLOCALESREQUEST
@@ -612,98 +612,98 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 GetSpaceRequest = _reflection.GeneratedProtocolMessageType('GetSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACEREQUEST,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetSpaceRequest)
   })
 _sym_db.RegisterMessage(GetSpaceRequest)
 
 GetSpaceResponse = _reflection.GeneratedProtocolMessageType('GetSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETSPACERESPONSE,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetSpaceResponse)
   })
 _sym_db.RegisterMessage(GetSpaceResponse)
 
 ListLocalesRequest = _reflection.GeneratedProtocolMessageType('ListLocalesRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTLOCALESREQUEST,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.ListLocalesRequest)
   })
 _sym_db.RegisterMessage(ListLocalesRequest)
 
 ListLocalesResponse = _reflection.GeneratedProtocolMessageType('ListLocalesResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTLOCALESRESPONSE,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.ListLocalesResponse)
   })
 _sym_db.RegisterMessage(ListLocalesResponse)
 
 GetEnvironmentRequest = _reflection.GeneratedProtocolMessageType('GetEnvironmentRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETENVIRONMENTREQUEST,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetEnvironmentRequest)
   })
 _sym_db.RegisterMessage(GetEnvironmentRequest)
 
 GetEnvironmentResponse = _reflection.GeneratedProtocolMessageType('GetEnvironmentResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETENVIRONMENTRESPONSE,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetEnvironmentResponse)
   })
 _sym_db.RegisterMessage(GetEnvironmentResponse)
 
 GetCollectionRequest = _reflection.GeneratedProtocolMessageType('GetCollectionRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETCOLLECTIONREQUEST,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetCollectionRequest)
   })
 _sym_db.RegisterMessage(GetCollectionRequest)
 
 GetCollectionResponse = _reflection.GeneratedProtocolMessageType('GetCollectionResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETCOLLECTIONRESPONSE,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetCollectionResponse)
   })
 _sym_db.RegisterMessage(GetCollectionResponse)
 
 ListCollectionsRequest = _reflection.GeneratedProtocolMessageType('ListCollectionsRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTCOLLECTIONSREQUEST,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.ListCollectionsRequest)
   })
 _sym_db.RegisterMessage(ListCollectionsRequest)
 
 ListCollectionsResponse = _reflection.GeneratedProtocolMessageType('ListCollectionsResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTCOLLECTIONSRESPONSE,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.ListCollectionsResponse)
   })
 _sym_db.RegisterMessage(ListCollectionsResponse)
 
 GetItemRequest = _reflection.GeneratedProtocolMessageType('GetItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETITEMREQUEST,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetItemRequest)
   })
 _sym_db.RegisterMessage(GetItemRequest)
 
 GetItemResponse = _reflection.GeneratedProtocolMessageType('GetItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETITEMRESPONSE,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.GetItemResponse)
   })
 _sym_db.RegisterMessage(GetItemResponse)
 
 FindItemsRequest = _reflection.GeneratedProtocolMessageType('FindItemsRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDITEMSREQUEST,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.FindItemsRequest)
   })
 _sym_db.RegisterMessage(FindItemsRequest)
 
 FindItemsResponse = _reflection.GeneratedProtocolMessageType('FindItemsResponse', (_message.Message,), {
   'DESCRIPTOR' : _FINDITEMSRESPONSE,
-  '__module__' : 'contentdelivery.contentdelivery_pb2'
+  '__module__' : 'perxis.contentdelivery.contentdelivery_pb2'
   # @@protoc_insertion_point(class_scope:contentdelivery.FindItemsResponse)
   })
 _sym_db.RegisterMessage(FindItemsResponse)
@@ -718,8 +718,8 @@ _CONTENTDELIVERY = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1065,
-  serialized_end=1726,
+  serialized_start=1079,
+  serialized_end=1740,
   methods=[
   _descriptor.MethodDescriptor(
     name='GetSpace',
diff --git a/perxis/contentdelivery/contentdelivery_pb2_grpc.py b/perxis/contentdelivery/contentdelivery_pb2_grpc.py
index da17b05..bbb40a1 100644
--- a/perxis/contentdelivery/contentdelivery_pb2_grpc.py
+++ b/perxis/contentdelivery/contentdelivery_pb2_grpc.py
@@ -2,7 +2,7 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from contentdelivery import contentdelivery_pb2 as contentdelivery_dot_contentdelivery__pb2
+from perxis.contentdelivery import contentdelivery_pb2 as perxis_dot_contentdelivery_dot_contentdelivery__pb2
 
 
 class ContentDeliveryStub(object):
@@ -16,38 +16,38 @@ class ContentDeliveryStub(object):
         """
         self.GetSpace = channel.unary_unary(
                 '/contentdelivery.ContentDelivery/GetSpace',
-                request_serializer=contentdelivery_dot_contentdelivery__pb2.GetSpaceRequest.SerializeToString,
-                response_deserializer=contentdelivery_dot_contentdelivery__pb2.GetSpaceResponse.FromString,
+                request_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetSpaceRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetSpaceResponse.FromString,
                 )
         self.ListLocales = channel.unary_unary(
                 '/contentdelivery.ContentDelivery/ListLocales',
-                request_serializer=contentdelivery_dot_contentdelivery__pb2.ListLocalesRequest.SerializeToString,
-                response_deserializer=contentdelivery_dot_contentdelivery__pb2.ListLocalesResponse.FromString,
+                request_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListLocalesRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListLocalesResponse.FromString,
                 )
         self.GetEnvironment = channel.unary_unary(
                 '/contentdelivery.ContentDelivery/GetEnvironment',
-                request_serializer=contentdelivery_dot_contentdelivery__pb2.GetEnvironmentRequest.SerializeToString,
-                response_deserializer=contentdelivery_dot_contentdelivery__pb2.GetEnvironmentResponse.FromString,
+                request_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetEnvironmentRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetEnvironmentResponse.FromString,
                 )
         self.GetCollection = channel.unary_unary(
                 '/contentdelivery.ContentDelivery/GetCollection',
-                request_serializer=contentdelivery_dot_contentdelivery__pb2.GetCollectionRequest.SerializeToString,
-                response_deserializer=contentdelivery_dot_contentdelivery__pb2.GetCollectionResponse.FromString,
+                request_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetCollectionRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetCollectionResponse.FromString,
                 )
         self.ListCollections = channel.unary_unary(
                 '/contentdelivery.ContentDelivery/ListCollections',
-                request_serializer=contentdelivery_dot_contentdelivery__pb2.ListCollectionsRequest.SerializeToString,
-                response_deserializer=contentdelivery_dot_contentdelivery__pb2.ListCollectionsResponse.FromString,
+                request_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListCollectionsRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListCollectionsResponse.FromString,
                 )
         self.GetItem = channel.unary_unary(
                 '/contentdelivery.ContentDelivery/GetItem',
-                request_serializer=contentdelivery_dot_contentdelivery__pb2.GetItemRequest.SerializeToString,
-                response_deserializer=contentdelivery_dot_contentdelivery__pb2.GetItemResponse.FromString,
+                request_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetItemRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetItemResponse.FromString,
                 )
         self.FindItems = channel.unary_unary(
                 '/contentdelivery.ContentDelivery/FindItems',
-                request_serializer=contentdelivery_dot_contentdelivery__pb2.FindItemsRequest.SerializeToString,
-                response_deserializer=contentdelivery_dot_contentdelivery__pb2.FindItemsResponse.FromString,
+                request_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.FindItemsRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.FindItemsResponse.FromString,
                 )
 
 
@@ -101,38 +101,38 @@ def add_ContentDeliveryServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'GetSpace': grpc.unary_unary_rpc_method_handler(
                     servicer.GetSpace,
-                    request_deserializer=contentdelivery_dot_contentdelivery__pb2.GetSpaceRequest.FromString,
-                    response_serializer=contentdelivery_dot_contentdelivery__pb2.GetSpaceResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetSpaceRequest.FromString,
+                    response_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetSpaceResponse.SerializeToString,
             ),
             'ListLocales': grpc.unary_unary_rpc_method_handler(
                     servicer.ListLocales,
-                    request_deserializer=contentdelivery_dot_contentdelivery__pb2.ListLocalesRequest.FromString,
-                    response_serializer=contentdelivery_dot_contentdelivery__pb2.ListLocalesResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListLocalesRequest.FromString,
+                    response_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListLocalesResponse.SerializeToString,
             ),
             'GetEnvironment': grpc.unary_unary_rpc_method_handler(
                     servicer.GetEnvironment,
-                    request_deserializer=contentdelivery_dot_contentdelivery__pb2.GetEnvironmentRequest.FromString,
-                    response_serializer=contentdelivery_dot_contentdelivery__pb2.GetEnvironmentResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetEnvironmentRequest.FromString,
+                    response_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetEnvironmentResponse.SerializeToString,
             ),
             'GetCollection': grpc.unary_unary_rpc_method_handler(
                     servicer.GetCollection,
-                    request_deserializer=contentdelivery_dot_contentdelivery__pb2.GetCollectionRequest.FromString,
-                    response_serializer=contentdelivery_dot_contentdelivery__pb2.GetCollectionResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetCollectionRequest.FromString,
+                    response_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetCollectionResponse.SerializeToString,
             ),
             'ListCollections': grpc.unary_unary_rpc_method_handler(
                     servicer.ListCollections,
-                    request_deserializer=contentdelivery_dot_contentdelivery__pb2.ListCollectionsRequest.FromString,
-                    response_serializer=contentdelivery_dot_contentdelivery__pb2.ListCollectionsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListCollectionsRequest.FromString,
+                    response_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListCollectionsResponse.SerializeToString,
             ),
             'GetItem': grpc.unary_unary_rpc_method_handler(
                     servicer.GetItem,
-                    request_deserializer=contentdelivery_dot_contentdelivery__pb2.GetItemRequest.FromString,
-                    response_serializer=contentdelivery_dot_contentdelivery__pb2.GetItemResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetItemRequest.FromString,
+                    response_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetItemResponse.SerializeToString,
             ),
             'FindItems': grpc.unary_unary_rpc_method_handler(
                     servicer.FindItems,
-                    request_deserializer=contentdelivery_dot_contentdelivery__pb2.FindItemsRequest.FromString,
-                    response_serializer=contentdelivery_dot_contentdelivery__pb2.FindItemsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.FindItemsRequest.FromString,
+                    response_serializer=perxis_dot_contentdelivery_dot_contentdelivery__pb2.FindItemsResponse.SerializeToString,
             ),
     }
     generic_handler = grpc.method_handlers_generic_handler(
@@ -156,8 +156,8 @@ class ContentDelivery(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentdelivery.ContentDelivery/GetSpace',
-            contentdelivery_dot_contentdelivery__pb2.GetSpaceRequest.SerializeToString,
-            contentdelivery_dot_contentdelivery__pb2.GetSpaceResponse.FromString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetSpaceRequest.SerializeToString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetSpaceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -173,8 +173,8 @@ class ContentDelivery(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentdelivery.ContentDelivery/ListLocales',
-            contentdelivery_dot_contentdelivery__pb2.ListLocalesRequest.SerializeToString,
-            contentdelivery_dot_contentdelivery__pb2.ListLocalesResponse.FromString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListLocalesRequest.SerializeToString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListLocalesResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -190,8 +190,8 @@ class ContentDelivery(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentdelivery.ContentDelivery/GetEnvironment',
-            contentdelivery_dot_contentdelivery__pb2.GetEnvironmentRequest.SerializeToString,
-            contentdelivery_dot_contentdelivery__pb2.GetEnvironmentResponse.FromString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetEnvironmentRequest.SerializeToString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetEnvironmentResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -207,8 +207,8 @@ class ContentDelivery(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentdelivery.ContentDelivery/GetCollection',
-            contentdelivery_dot_contentdelivery__pb2.GetCollectionRequest.SerializeToString,
-            contentdelivery_dot_contentdelivery__pb2.GetCollectionResponse.FromString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetCollectionRequest.SerializeToString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetCollectionResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -224,8 +224,8 @@ class ContentDelivery(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentdelivery.ContentDelivery/ListCollections',
-            contentdelivery_dot_contentdelivery__pb2.ListCollectionsRequest.SerializeToString,
-            contentdelivery_dot_contentdelivery__pb2.ListCollectionsResponse.FromString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListCollectionsRequest.SerializeToString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.ListCollectionsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -241,8 +241,8 @@ class ContentDelivery(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentdelivery.ContentDelivery/GetItem',
-            contentdelivery_dot_contentdelivery__pb2.GetItemRequest.SerializeToString,
-            contentdelivery_dot_contentdelivery__pb2.GetItemResponse.FromString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetItemRequest.SerializeToString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.GetItemResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -258,7 +258,7 @@ class ContentDelivery(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentdelivery.ContentDelivery/FindItems',
-            contentdelivery_dot_contentdelivery__pb2.FindItemsRequest.SerializeToString,
-            contentdelivery_dot_contentdelivery__pb2.FindItemsResponse.FromString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.FindItemsRequest.SerializeToString,
+            perxis_dot_contentdelivery_dot_contentdelivery__pb2.FindItemsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/perxis/contentmanagement/contentmanagment_pb2.py b/perxis/contentmanagement/contentmanagment_pb2.py
index 482a8f5..9f413d0 100644
--- a/perxis/contentmanagement/contentmanagment_pb2.py
+++ b/perxis/contentmanagement/contentmanagment_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: contentmanagement/contentmanagment.proto
+# source: perxis/contentmanagement/contentmanagment.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,18 +12,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='contentmanagement/contentmanagment.proto',
+  name='perxis/contentmanagement/contentmanagment.proto',
   package='contentmanagement',
   syntax='proto3',
   serialized_options=b'ZDgithub.com/perxteam/perxis/proto/contentmanagement;contentmanagement',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n(contentmanagement/contentmanagment.proto\x12\x11\x63ontentmanagement\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/common.proto\"A\n\x17\x43reateCollectionRequest\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"B\n\x18\x43reateCollectionResponse\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"L\n\x14GetCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"?\n\x15GetCollectionResponse\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"B\n\x16ListCollectionsRequest\x12\x16\n\x0e\x65nvironment_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x17ListCollectionsResponse\x12\'\n\x0b\x63ollections\x18\x01 \x03(\x0b\x32\x12.common.Collection\"w\n\x17UpdateCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12&\n\ncollection\x18\x04 \x01(\x0b\x32\x12.common.Collection\"\x1a\n\x18UpdateCollectionResponse\"O\n\x17\x44\x65leteCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"\x1a\n\x18\x44\x65leteCollectionResponse\"/\n\x11\x43reateItemRequest\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"0\n\x12\x43reateItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"]\n\x0eGetItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"-\n\x0fGetItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"p\n\x11UpdateItemRequest\x12\x16\n\x0e\x65nvironment_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1a\n\x04item\x18\x04 \x01(\x0b\x32\x0c.common.Item\"0\n\x12UpdateItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"`\n\x11\x44\x65leteItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x14\n\x12\x44\x65leteItemResponse\"a\n\x12PublishItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x15\n\x13PublishItemResponse\"c\n\x14UnpublishItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x17\n\x15UnpublishItemResponse\"a\n\x12\x41rchiveItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x15\n\x13\x41rchiveItemResponse\"c\n\x14UnarchiveItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x17\n\x15UnarchiveItemResponse\"g\n\x18ListItemRevisionsRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"8\n\x19ListItemRevisionsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\"z\n\x16GetItemRevisionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\x12\x13\n\x0brevision_id\x18\x05 \x01(\t\"5\n\x17GetItemRevisionResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"\xa4\x01\n\x10\x46indItemsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1c\n\x04\x64\x61ta\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"?\n\x11\x46indItemsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\x12\r\n\x05total\x18\x02 \x01(\x05\"\xac\x01\n\x18\x46indArchivedItemsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1c\n\x04\x64\x61ta\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"G\n\x19\x46indArchivedItemsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\x12\r\n\x05total\x18\x02 \x01(\x05\"9\n\x19\x43ontentCreateSpaceRequest\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\":\n\x1a\x43ontentCreateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"\'\n\x19\x43ontentDeleteSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"$\n\x16\x43ontentGetSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"7\n\x17\x43ontentGetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"\x13\n\x11ListSpacesRequest\"3\n\x12ListSpacesResponse\x12\x1d\n\x06spaces\x18\x01 \x03(\x0b\x32\r.common.Space\"5\n\x13\x43reateLocaleRequest\x12\x1e\n\x06locale\x18\x01 \x01(\x0b\x32\x0e.common.Locale\"6\n\x14\x43reateLocaleResponse\x12\x1e\n\x06locale\x18\x01 \x01(\x0b\x32\x0e.common.Locale\"&\n\x12ListLocalesRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"6\n\x13ListLocalesResponse\x12\x1f\n\x07locales\x18\x01 \x03(\x0b\x32\x0e.common.Locale\"3\n\x13\x44\x65leteLocaleRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"\x16\n\x14\x44\x65leteLocaleResponse\"a\n\x18\x43reateEnvironmentRequest\x12\x1b\n\x13\x62\x61se_environment_id\x18\x01 \x01(\t\x12(\n\x0b\x65nvironment\x18\x02 \x01(\x0b\x32\x13.common.Environment\"E\n\x19\x43reateEnvironmentResponse\x12(\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x13.common.Environment\"5\n\x15GetEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x16GetEnvironmentResponse\x12(\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x13.common.Environment\"+\n\x17ListEnvironmentsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"E\n\x18ListEnvironmentsResponse\x12)\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x13.common.Environment\"b\n\x18UpdateEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12(\n\x0b\x65nvironment\x18\x03 \x01(\x0b\x32\x13.common.Environment\"\x1b\n\x19UpdateEnvironmentResponse\"8\n\x18\x44\x65leteEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"\x1b\n\x19\x44\x65leteEnvironmentResponse\"I\n\x1aSetEnvironmentAliasRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"\x1d\n\x1bSetEnvironmentAliasResponse\"L\n\x1dRemoveEnvironmentAliasRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\" \n\x1eRemoveEnvironmentAliasResponse\"?\n\x16\x43reateSpaceRoleRequest\x12%\n\nspace_role\x18\x01 \x01(\x0b\x32\x11.common.SpaceRole\"?\n\x16UpdateSpaceRoleRequest\x12%\n\nspace_role\x18\x01 \x01(\x0b\x32\x11.common.SpaceRole\")\n\x15ListSpaceRolesRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"@\n\x16ListSpaceRolesResponse\x12&\n\x0bspace_roles\x18\x01 \x03(\x0b\x32\x11.common.SpaceRole\"6\n\x16\x44\x65leteSpaceRoleRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t2\xa4\x17\n\x11\x43ontentManagement\x12m\n\x10\x43reateCollection\x12*.contentmanagement.CreateCollectionRequest\x1a+.contentmanagement.CreateCollectionResponse\"\x00\x12\x64\n\rGetCollection\x12\'.contentmanagement.GetCollectionRequest\x1a(.contentmanagement.GetCollectionResponse\"\x00\x12j\n\x0fListCollections\x12).contentmanagement.ListCollectionsRequest\x1a*.contentmanagement.ListCollectionsResponse\"\x00\x12X\n\x10UpdateCollection\x12*.contentmanagement.UpdateCollectionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12X\n\x10\x44\x65leteCollection\x12*.contentmanagement.DeleteCollectionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12[\n\nCreateItem\x12$.contentmanagement.CreateItemRequest\x1a%.contentmanagement.CreateItemResponse\"\x00\x12R\n\x07GetItem\x12!.contentmanagement.GetItemRequest\x1a\".contentmanagement.GetItemResponse\"\x00\x12[\n\nUpdateItem\x12$.contentmanagement.UpdateItemRequest\x1a%.contentmanagement.UpdateItemResponse\"\x00\x12L\n\nDeleteItem\x12$.contentmanagement.DeleteItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12N\n\x0bPublishItem\x12%.contentmanagement.PublishItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12R\n\rUnpublishItem\x12\'.contentmanagement.UnpublishItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12N\n\x0b\x41rchiveItem\x12%.contentmanagement.ArchiveItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12R\n\rUnarchiveItem\x12\'.contentmanagement.UnarchiveItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x11ListItemRevisions\x12+.contentmanagement.ListItemRevisionsRequest\x1a,.contentmanagement.ListItemRevisionsResponse\"\x00\x12j\n\x0fGetItemRevision\x12).contentmanagement.GetItemRevisionRequest\x1a*.contentmanagement.GetItemRevisionResponse\"\x00\x12X\n\tFindItems\x12#.contentmanagement.FindItemsRequest\x1a$.contentmanagement.FindItemsResponse\"\x00\x12p\n\x11\x46indArchivedItems\x12+.contentmanagement.FindArchivedItemsRequest\x1a,.contentmanagement.FindArchivedItemsResponse\"\x00\x12\x61\n\x0c\x43reateLocale\x12&.contentmanagement.CreateLocaleRequest\x1a\'.contentmanagement.CreateLocaleResponse\"\x00\x12^\n\x0bListLocales\x12%.contentmanagement.ListLocalesRequest\x1a&.contentmanagement.ListLocalesResponse\"\x00\x12P\n\x0c\x44\x65leteLocale\x12&.contentmanagement.DeleteLocaleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x11\x43reateEnvironment\x12+.contentmanagement.CreateEnvironmentRequest\x1a,.contentmanagement.CreateEnvironmentResponse\"\x00\x12g\n\x0eGetEnvironment\x12(.contentmanagement.GetEnvironmentRequest\x1a).contentmanagement.GetEnvironmentResponse\"\x00\x12m\n\x10ListEnvironments\x12*.contentmanagement.ListEnvironmentsRequest\x1a+.contentmanagement.ListEnvironmentsResponse\"\x00\x12Z\n\x11UpdateEnvironment\x12+.contentmanagement.UpdateEnvironmentRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x11\x44\x65leteEnvironment\x12+.contentmanagement.DeleteEnvironmentRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x13SetEnvironmentAlias\x12-.contentmanagement.SetEnvironmentAliasRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x16RemoveEnvironmentAlias\x12\x30.contentmanagement.RemoveEnvironmentAliasRequest\x1a\x16.google.protobuf.Empty\"\x00\x12V\n\x0f\x43reateSpaceRole\x12).contentmanagement.CreateSpaceRoleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12V\n\x0fUpdateSpaceRole\x12).contentmanagement.UpdateSpaceRoleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12g\n\x0eListSpaceRoles\x12(.contentmanagement.ListSpaceRolesRequest\x1a).contentmanagement.ListSpaceRolesResponse\"\x00\x12V\n\x0f\x44\x65leteSpaceRole\x12).contentmanagement.DeleteSpaceRoleRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x46ZDgithub.com/perxteam/perxis/proto/contentmanagement;contentmanagementb\x06proto3'
+  serialized_pb=b'\n/perxis/contentmanagement/contentmanagment.proto\x12\x11\x63ontentmanagement\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"A\n\x17\x43reateCollectionRequest\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"B\n\x18\x43reateCollectionResponse\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"L\n\x14GetCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"?\n\x15GetCollectionResponse\x12&\n\ncollection\x18\x01 \x01(\x0b\x32\x12.common.Collection\"B\n\x16ListCollectionsRequest\x12\x16\n\x0e\x65nvironment_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x17ListCollectionsResponse\x12\'\n\x0b\x63ollections\x18\x01 \x03(\x0b\x32\x12.common.Collection\"w\n\x17UpdateCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12&\n\ncollection\x18\x04 \x01(\x0b\x32\x12.common.Collection\"\x1a\n\x18UpdateCollectionResponse\"O\n\x17\x44\x65leteCollectionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\"\x1a\n\x18\x44\x65leteCollectionResponse\"/\n\x11\x43reateItemRequest\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"0\n\x12\x43reateItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"]\n\x0eGetItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"-\n\x0fGetItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"p\n\x11UpdateItemRequest\x12\x16\n\x0e\x65nvironment_id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1a\n\x04item\x18\x04 \x01(\x0b\x32\x0c.common.Item\"0\n\x12UpdateItemResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"`\n\x11\x44\x65leteItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x14\n\x12\x44\x65leteItemResponse\"a\n\x12PublishItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x15\n\x13PublishItemResponse\"c\n\x14UnpublishItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x17\n\x15UnpublishItemResponse\"a\n\x12\x41rchiveItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x15\n\x13\x41rchiveItemResponse\"c\n\x14UnarchiveItemRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"\x17\n\x15UnarchiveItemResponse\"g\n\x18ListItemRevisionsRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\"8\n\x19ListItemRevisionsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\"z\n\x16GetItemRevisionRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x10\n\x08space_id\x18\x03 \x01(\t\x12\x15\n\rcollection_id\x18\x04 \x01(\t\x12\x13\n\x0brevision_id\x18\x05 \x01(\t\"5\n\x17GetItemRevisionResponse\x12\x1a\n\x04item\x18\x01 \x01(\x0b\x32\x0c.common.Item\"\xa4\x01\n\x10\x46indItemsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1c\n\x04\x64\x61ta\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"?\n\x11\x46indItemsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\x12\r\n\x05total\x18\x02 \x01(\x05\"\xac\x01\n\x18\x46indArchivedItemsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x16\n\x0e\x65nvironment_id\x18\x02 \x01(\t\x12\x15\n\rcollection_id\x18\x03 \x01(\t\x12\x1c\n\x04\x64\x61ta\x18\x04 \x03(\x0b\x32\x0e.common.Filter\x12\x10\n\x08page_num\x18\x08 \x01(\x05\x12\x11\n\tpage_size\x18\t \x01(\x05\x12\x0c\n\x04sort\x18\n \x03(\t\"G\n\x19\x46indArchivedItemsResponse\x12\x1b\n\x05items\x18\x01 \x03(\x0b\x32\x0c.common.Item\x12\r\n\x05total\x18\x02 \x01(\x05\"9\n\x19\x43ontentCreateSpaceRequest\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\":\n\x1a\x43ontentCreateSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"\'\n\x19\x43ontentDeleteSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"$\n\x16\x43ontentGetSpaceRequest\x12\n\n\x02id\x18\x01 \x01(\t\"7\n\x17\x43ontentGetSpaceResponse\x12\x1c\n\x05space\x18\x01 \x01(\x0b\x32\r.common.Space\"\x13\n\x11ListSpacesRequest\"3\n\x12ListSpacesResponse\x12\x1d\n\x06spaces\x18\x01 \x03(\x0b\x32\r.common.Space\"5\n\x13\x43reateLocaleRequest\x12\x1e\n\x06locale\x18\x01 \x01(\x0b\x32\x0e.common.Locale\"6\n\x14\x43reateLocaleResponse\x12\x1e\n\x06locale\x18\x01 \x01(\x0b\x32\x0e.common.Locale\"&\n\x12ListLocalesRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"6\n\x13ListLocalesResponse\x12\x1f\n\x07locales\x18\x01 \x03(\x0b\x32\x0e.common.Locale\"3\n\x13\x44\x65leteLocaleRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"\x16\n\x14\x44\x65leteLocaleResponse\"a\n\x18\x43reateEnvironmentRequest\x12\x1b\n\x13\x62\x61se_environment_id\x18\x01 \x01(\t\x12(\n\x0b\x65nvironment\x18\x02 \x01(\x0b\x32\x13.common.Environment\"E\n\x19\x43reateEnvironmentResponse\x12(\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x13.common.Environment\"5\n\x15GetEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"B\n\x16GetEnvironmentResponse\x12(\n\x0b\x65nvironment\x18\x01 \x01(\x0b\x32\x13.common.Environment\"+\n\x17ListEnvironmentsRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"E\n\x18ListEnvironmentsResponse\x12)\n\x0c\x65nvironments\x18\x01 \x03(\x0b\x32\x13.common.Environment\"b\n\x18UpdateEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12(\n\x0b\x65nvironment\x18\x03 \x01(\x0b\x32\x13.common.Environment\"\x1b\n\x19UpdateEnvironmentResponse\"8\n\x18\x44\x65leteEnvironmentRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\"\x1b\n\x19\x44\x65leteEnvironmentResponse\"I\n\x1aSetEnvironmentAliasRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\"\x1d\n\x1bSetEnvironmentAliasResponse\"L\n\x1dRemoveEnvironmentAliasRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\" \n\x1eRemoveEnvironmentAliasResponse\"?\n\x16\x43reateSpaceRoleRequest\x12%\n\nspace_role\x18\x01 \x01(\x0b\x32\x11.common.SpaceRole\"?\n\x16UpdateSpaceRoleRequest\x12%\n\nspace_role\x18\x01 \x01(\x0b\x32\x11.common.SpaceRole\")\n\x15ListSpaceRolesRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\"@\n\x16ListSpaceRolesResponse\x12&\n\x0bspace_roles\x18\x01 \x03(\x0b\x32\x11.common.SpaceRole\"6\n\x16\x44\x65leteSpaceRoleRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08space_id\x18\x02 \x01(\t2\xa4\x17\n\x11\x43ontentManagement\x12m\n\x10\x43reateCollection\x12*.contentmanagement.CreateCollectionRequest\x1a+.contentmanagement.CreateCollectionResponse\"\x00\x12\x64\n\rGetCollection\x12\'.contentmanagement.GetCollectionRequest\x1a(.contentmanagement.GetCollectionResponse\"\x00\x12j\n\x0fListCollections\x12).contentmanagement.ListCollectionsRequest\x1a*.contentmanagement.ListCollectionsResponse\"\x00\x12X\n\x10UpdateCollection\x12*.contentmanagement.UpdateCollectionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12X\n\x10\x44\x65leteCollection\x12*.contentmanagement.DeleteCollectionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12[\n\nCreateItem\x12$.contentmanagement.CreateItemRequest\x1a%.contentmanagement.CreateItemResponse\"\x00\x12R\n\x07GetItem\x12!.contentmanagement.GetItemRequest\x1a\".contentmanagement.GetItemResponse\"\x00\x12[\n\nUpdateItem\x12$.contentmanagement.UpdateItemRequest\x1a%.contentmanagement.UpdateItemResponse\"\x00\x12L\n\nDeleteItem\x12$.contentmanagement.DeleteItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12N\n\x0bPublishItem\x12%.contentmanagement.PublishItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12R\n\rUnpublishItem\x12\'.contentmanagement.UnpublishItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12N\n\x0b\x41rchiveItem\x12%.contentmanagement.ArchiveItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12R\n\rUnarchiveItem\x12\'.contentmanagement.UnarchiveItemRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x11ListItemRevisions\x12+.contentmanagement.ListItemRevisionsRequest\x1a,.contentmanagement.ListItemRevisionsResponse\"\x00\x12j\n\x0fGetItemRevision\x12).contentmanagement.GetItemRevisionRequest\x1a*.contentmanagement.GetItemRevisionResponse\"\x00\x12X\n\tFindItems\x12#.contentmanagement.FindItemsRequest\x1a$.contentmanagement.FindItemsResponse\"\x00\x12p\n\x11\x46indArchivedItems\x12+.contentmanagement.FindArchivedItemsRequest\x1a,.contentmanagement.FindArchivedItemsResponse\"\x00\x12\x61\n\x0c\x43reateLocale\x12&.contentmanagement.CreateLocaleRequest\x1a\'.contentmanagement.CreateLocaleResponse\"\x00\x12^\n\x0bListLocales\x12%.contentmanagement.ListLocalesRequest\x1a&.contentmanagement.ListLocalesResponse\"\x00\x12P\n\x0c\x44\x65leteLocale\x12&.contentmanagement.DeleteLocaleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x11\x43reateEnvironment\x12+.contentmanagement.CreateEnvironmentRequest\x1a,.contentmanagement.CreateEnvironmentResponse\"\x00\x12g\n\x0eGetEnvironment\x12(.contentmanagement.GetEnvironmentRequest\x1a).contentmanagement.GetEnvironmentResponse\"\x00\x12m\n\x10ListEnvironments\x12*.contentmanagement.ListEnvironmentsRequest\x1a+.contentmanagement.ListEnvironmentsResponse\"\x00\x12Z\n\x11UpdateEnvironment\x12+.contentmanagement.UpdateEnvironmentRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x11\x44\x65leteEnvironment\x12+.contentmanagement.DeleteEnvironmentRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n\x13SetEnvironmentAlias\x12-.contentmanagement.SetEnvironmentAliasRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x16RemoveEnvironmentAlias\x12\x30.contentmanagement.RemoveEnvironmentAliasRequest\x1a\x16.google.protobuf.Empty\"\x00\x12V\n\x0f\x43reateSpaceRole\x12).contentmanagement.CreateSpaceRoleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12V\n\x0fUpdateSpaceRole\x12).contentmanagement.UpdateSpaceRoleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12g\n\x0eListSpaceRoles\x12(.contentmanagement.ListSpaceRolesRequest\x1a).contentmanagement.ListSpaceRolesResponse\"\x00\x12V\n\x0f\x44\x65leteSpaceRole\x12).contentmanagement.DeleteSpaceRoleRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x46ZDgithub.com/perxteam/perxis/proto/contentmanagement;contentmanagementb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -55,8 +55,8 @@ _CREATECOLLECTIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=113,
-  serialized_end=178,
+  serialized_start=127,
+  serialized_end=192,
 )
 
 
@@ -87,8 +87,8 @@ _CREATECOLLECTIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=180,
-  serialized_end=246,
+  serialized_start=194,
+  serialized_end=260,
 )
 
 
@@ -133,8 +133,8 @@ _GETCOLLECTIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=248,
-  serialized_end=324,
+  serialized_start=262,
+  serialized_end=338,
 )
 
 
@@ -165,8 +165,8 @@ _GETCOLLECTIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=326,
-  serialized_end=389,
+  serialized_start=340,
+  serialized_end=403,
 )
 
 
@@ -204,8 +204,8 @@ _LISTCOLLECTIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=391,
-  serialized_end=457,
+  serialized_start=405,
+  serialized_end=471,
 )
 
 
@@ -236,8 +236,8 @@ _LISTCOLLECTIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=459,
-  serialized_end=525,
+  serialized_start=473,
+  serialized_end=539,
 )
 
 
@@ -289,8 +289,8 @@ _UPDATECOLLECTIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=527,
-  serialized_end=646,
+  serialized_start=541,
+  serialized_end=660,
 )
 
 
@@ -314,8 +314,8 @@ _UPDATECOLLECTIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=648,
-  serialized_end=674,
+  serialized_start=662,
+  serialized_end=688,
 )
 
 
@@ -360,8 +360,8 @@ _DELETECOLLECTIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=676,
-  serialized_end=755,
+  serialized_start=690,
+  serialized_end=769,
 )
 
 
@@ -385,8 +385,8 @@ _DELETECOLLECTIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=757,
-  serialized_end=783,
+  serialized_start=771,
+  serialized_end=797,
 )
 
 
@@ -417,8 +417,8 @@ _CREATEITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=785,
-  serialized_end=832,
+  serialized_start=799,
+  serialized_end=846,
 )
 
 
@@ -449,8 +449,8 @@ _CREATEITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=834,
-  serialized_end=882,
+  serialized_start=848,
+  serialized_end=896,
 )
 
 
@@ -502,8 +502,8 @@ _GETITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=884,
-  serialized_end=977,
+  serialized_start=898,
+  serialized_end=991,
 )
 
 
@@ -534,8 +534,8 @@ _GETITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=979,
-  serialized_end=1024,
+  serialized_start=993,
+  serialized_end=1038,
 )
 
 
@@ -587,8 +587,8 @@ _UPDATEITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1026,
-  serialized_end=1138,
+  serialized_start=1040,
+  serialized_end=1152,
 )
 
 
@@ -619,8 +619,8 @@ _UPDATEITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1140,
-  serialized_end=1188,
+  serialized_start=1154,
+  serialized_end=1202,
 )
 
 
@@ -672,8 +672,8 @@ _DELETEITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1190,
-  serialized_end=1286,
+  serialized_start=1204,
+  serialized_end=1300,
 )
 
 
@@ -697,8 +697,8 @@ _DELETEITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1288,
-  serialized_end=1308,
+  serialized_start=1302,
+  serialized_end=1322,
 )
 
 
@@ -750,8 +750,8 @@ _PUBLISHITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1310,
-  serialized_end=1407,
+  serialized_start=1324,
+  serialized_end=1421,
 )
 
 
@@ -775,8 +775,8 @@ _PUBLISHITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1409,
-  serialized_end=1430,
+  serialized_start=1423,
+  serialized_end=1444,
 )
 
 
@@ -828,8 +828,8 @@ _UNPUBLISHITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1432,
-  serialized_end=1531,
+  serialized_start=1446,
+  serialized_end=1545,
 )
 
 
@@ -853,8 +853,8 @@ _UNPUBLISHITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1533,
-  serialized_end=1556,
+  serialized_start=1547,
+  serialized_end=1570,
 )
 
 
@@ -906,8 +906,8 @@ _ARCHIVEITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1558,
-  serialized_end=1655,
+  serialized_start=1572,
+  serialized_end=1669,
 )
 
 
@@ -931,8 +931,8 @@ _ARCHIVEITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1657,
-  serialized_end=1678,
+  serialized_start=1671,
+  serialized_end=1692,
 )
 
 
@@ -984,8 +984,8 @@ _UNARCHIVEITEMREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1680,
-  serialized_end=1779,
+  serialized_start=1694,
+  serialized_end=1793,
 )
 
 
@@ -1009,8 +1009,8 @@ _UNARCHIVEITEMRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1781,
-  serialized_end=1804,
+  serialized_start=1795,
+  serialized_end=1818,
 )
 
 
@@ -1062,8 +1062,8 @@ _LISTITEMREVISIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1806,
-  serialized_end=1909,
+  serialized_start=1820,
+  serialized_end=1923,
 )
 
 
@@ -1094,8 +1094,8 @@ _LISTITEMREVISIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1911,
-  serialized_end=1967,
+  serialized_start=1925,
+  serialized_end=1981,
 )
 
 
@@ -1154,8 +1154,8 @@ _GETITEMREVISIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1969,
-  serialized_end=2091,
+  serialized_start=1983,
+  serialized_end=2105,
 )
 
 
@@ -1186,8 +1186,8 @@ _GETITEMREVISIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2093,
-  serialized_end=2146,
+  serialized_start=2107,
+  serialized_end=2160,
 )
 
 
@@ -1260,8 +1260,8 @@ _FINDITEMSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2149,
-  serialized_end=2313,
+  serialized_start=2163,
+  serialized_end=2327,
 )
 
 
@@ -1299,8 +1299,8 @@ _FINDITEMSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2315,
-  serialized_end=2378,
+  serialized_start=2329,
+  serialized_end=2392,
 )
 
 
@@ -1373,8 +1373,8 @@ _FINDARCHIVEDITEMSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2381,
-  serialized_end=2553,
+  serialized_start=2395,
+  serialized_end=2567,
 )
 
 
@@ -1412,8 +1412,8 @@ _FINDARCHIVEDITEMSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2555,
-  serialized_end=2626,
+  serialized_start=2569,
+  serialized_end=2640,
 )
 
 
@@ -1444,8 +1444,8 @@ _CONTENTCREATESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2628,
-  serialized_end=2685,
+  serialized_start=2642,
+  serialized_end=2699,
 )
 
 
@@ -1476,8 +1476,8 @@ _CONTENTCREATESPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2687,
-  serialized_end=2745,
+  serialized_start=2701,
+  serialized_end=2759,
 )
 
 
@@ -1508,8 +1508,8 @@ _CONTENTDELETESPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2747,
-  serialized_end=2786,
+  serialized_start=2761,
+  serialized_end=2800,
 )
 
 
@@ -1540,8 +1540,8 @@ _CONTENTGETSPACEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2788,
-  serialized_end=2824,
+  serialized_start=2802,
+  serialized_end=2838,
 )
 
 
@@ -1572,8 +1572,8 @@ _CONTENTGETSPACERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2826,
-  serialized_end=2881,
+  serialized_start=2840,
+  serialized_end=2895,
 )
 
 
@@ -1597,8 +1597,8 @@ _LISTSPACESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2883,
-  serialized_end=2902,
+  serialized_start=2897,
+  serialized_end=2916,
 )
 
 
@@ -1629,8 +1629,8 @@ _LISTSPACESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2904,
-  serialized_end=2955,
+  serialized_start=2918,
+  serialized_end=2969,
 )
 
 
@@ -1661,8 +1661,8 @@ _CREATELOCALEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2957,
-  serialized_end=3010,
+  serialized_start=2971,
+  serialized_end=3024,
 )
 
 
@@ -1693,8 +1693,8 @@ _CREATELOCALERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3012,
-  serialized_end=3066,
+  serialized_start=3026,
+  serialized_end=3080,
 )
 
 
@@ -1725,8 +1725,8 @@ _LISTLOCALESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3068,
-  serialized_end=3106,
+  serialized_start=3082,
+  serialized_end=3120,
 )
 
 
@@ -1757,8 +1757,8 @@ _LISTLOCALESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3108,
-  serialized_end=3162,
+  serialized_start=3122,
+  serialized_end=3176,
 )
 
 
@@ -1796,8 +1796,8 @@ _DELETELOCALEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3164,
-  serialized_end=3215,
+  serialized_start=3178,
+  serialized_end=3229,
 )
 
 
@@ -1821,8 +1821,8 @@ _DELETELOCALERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3217,
-  serialized_end=3239,
+  serialized_start=3231,
+  serialized_end=3253,
 )
 
 
@@ -1860,8 +1860,8 @@ _CREATEENVIRONMENTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3241,
-  serialized_end=3338,
+  serialized_start=3255,
+  serialized_end=3352,
 )
 
 
@@ -1892,8 +1892,8 @@ _CREATEENVIRONMENTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3340,
-  serialized_end=3409,
+  serialized_start=3354,
+  serialized_end=3423,
 )
 
 
@@ -1931,8 +1931,8 @@ _GETENVIRONMENTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3411,
-  serialized_end=3464,
+  serialized_start=3425,
+  serialized_end=3478,
 )
 
 
@@ -1963,8 +1963,8 @@ _GETENVIRONMENTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3466,
-  serialized_end=3532,
+  serialized_start=3480,
+  serialized_end=3546,
 )
 
 
@@ -1995,8 +1995,8 @@ _LISTENVIRONMENTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3534,
-  serialized_end=3577,
+  serialized_start=3548,
+  serialized_end=3591,
 )
 
 
@@ -2027,8 +2027,8 @@ _LISTENVIRONMENTSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3579,
-  serialized_end=3648,
+  serialized_start=3593,
+  serialized_end=3662,
 )
 
 
@@ -2073,8 +2073,8 @@ _UPDATEENVIRONMENTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3650,
-  serialized_end=3748,
+  serialized_start=3664,
+  serialized_end=3762,
 )
 
 
@@ -2098,8 +2098,8 @@ _UPDATEENVIRONMENTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3750,
-  serialized_end=3777,
+  serialized_start=3764,
+  serialized_end=3791,
 )
 
 
@@ -2137,8 +2137,8 @@ _DELETEENVIRONMENTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3779,
-  serialized_end=3835,
+  serialized_start=3793,
+  serialized_end=3849,
 )
 
 
@@ -2162,8 +2162,8 @@ _DELETEENVIRONMENTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3837,
-  serialized_end=3864,
+  serialized_start=3851,
+  serialized_end=3878,
 )
 
 
@@ -2208,8 +2208,8 @@ _SETENVIRONMENTALIASREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3866,
-  serialized_end=3939,
+  serialized_start=3880,
+  serialized_end=3953,
 )
 
 
@@ -2233,8 +2233,8 @@ _SETENVIRONMENTALIASRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3941,
-  serialized_end=3970,
+  serialized_start=3955,
+  serialized_end=3984,
 )
 
 
@@ -2279,8 +2279,8 @@ _REMOVEENVIRONMENTALIASREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3972,
-  serialized_end=4048,
+  serialized_start=3986,
+  serialized_end=4062,
 )
 
 
@@ -2304,8 +2304,8 @@ _REMOVEENVIRONMENTALIASRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4050,
-  serialized_end=4082,
+  serialized_start=4064,
+  serialized_end=4096,
 )
 
 
@@ -2336,8 +2336,8 @@ _CREATESPACEROLEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4084,
-  serialized_end=4147,
+  serialized_start=4098,
+  serialized_end=4161,
 )
 
 
@@ -2368,8 +2368,8 @@ _UPDATESPACEROLEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4149,
-  serialized_end=4212,
+  serialized_start=4163,
+  serialized_end=4226,
 )
 
 
@@ -2400,8 +2400,8 @@ _LISTSPACEROLESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4214,
-  serialized_end=4255,
+  serialized_start=4228,
+  serialized_end=4269,
 )
 
 
@@ -2432,8 +2432,8 @@ _LISTSPACEROLESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4257,
-  serialized_end=4321,
+  serialized_start=4271,
+  serialized_end=4335,
 )
 
 
@@ -2471,41 +2471,41 @@ _DELETESPACEROLEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4323,
-  serialized_end=4377,
+  serialized_start=4337,
+  serialized_end=4391,
 )
 
-_CREATECOLLECTIONREQUEST.fields_by_name['collection'].message_type = common_dot_common__pb2._COLLECTION
-_CREATECOLLECTIONRESPONSE.fields_by_name['collection'].message_type = common_dot_common__pb2._COLLECTION
-_GETCOLLECTIONRESPONSE.fields_by_name['collection'].message_type = common_dot_common__pb2._COLLECTION
-_LISTCOLLECTIONSRESPONSE.fields_by_name['collections'].message_type = common_dot_common__pb2._COLLECTION
-_UPDATECOLLECTIONREQUEST.fields_by_name['collection'].message_type = common_dot_common__pb2._COLLECTION
-_CREATEITEMREQUEST.fields_by_name['item'].message_type = common_dot_common__pb2._ITEM
-_CREATEITEMRESPONSE.fields_by_name['item'].message_type = common_dot_common__pb2._ITEM
-_GETITEMRESPONSE.fields_by_name['item'].message_type = common_dot_common__pb2._ITEM
-_UPDATEITEMREQUEST.fields_by_name['item'].message_type = common_dot_common__pb2._ITEM
-_UPDATEITEMRESPONSE.fields_by_name['item'].message_type = common_dot_common__pb2._ITEM
-_LISTITEMREVISIONSRESPONSE.fields_by_name['items'].message_type = common_dot_common__pb2._ITEM
-_GETITEMREVISIONRESPONSE.fields_by_name['item'].message_type = common_dot_common__pb2._ITEM
-_FINDITEMSREQUEST.fields_by_name['data'].message_type = common_dot_common__pb2._FILTER
-_FINDITEMSRESPONSE.fields_by_name['items'].message_type = common_dot_common__pb2._ITEM
-_FINDARCHIVEDITEMSREQUEST.fields_by_name['data'].message_type = common_dot_common__pb2._FILTER
-_FINDARCHIVEDITEMSRESPONSE.fields_by_name['items'].message_type = common_dot_common__pb2._ITEM
-_CONTENTCREATESPACEREQUEST.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_CONTENTCREATESPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_CONTENTGETSPACERESPONSE.fields_by_name['space'].message_type = common_dot_common__pb2._SPACE
-_LISTSPACESRESPONSE.fields_by_name['spaces'].message_type = common_dot_common__pb2._SPACE
-_CREATELOCALEREQUEST.fields_by_name['locale'].message_type = common_dot_common__pb2._LOCALE
-_CREATELOCALERESPONSE.fields_by_name['locale'].message_type = common_dot_common__pb2._LOCALE
-_LISTLOCALESRESPONSE.fields_by_name['locales'].message_type = common_dot_common__pb2._LOCALE
-_CREATEENVIRONMENTREQUEST.fields_by_name['environment'].message_type = common_dot_common__pb2._ENVIRONMENT
-_CREATEENVIRONMENTRESPONSE.fields_by_name['environment'].message_type = common_dot_common__pb2._ENVIRONMENT
-_GETENVIRONMENTRESPONSE.fields_by_name['environment'].message_type = common_dot_common__pb2._ENVIRONMENT
-_LISTENVIRONMENTSRESPONSE.fields_by_name['environments'].message_type = common_dot_common__pb2._ENVIRONMENT
-_UPDATEENVIRONMENTREQUEST.fields_by_name['environment'].message_type = common_dot_common__pb2._ENVIRONMENT
-_CREATESPACEROLEREQUEST.fields_by_name['space_role'].message_type = common_dot_common__pb2._SPACEROLE
-_UPDATESPACEROLEREQUEST.fields_by_name['space_role'].message_type = common_dot_common__pb2._SPACEROLE
-_LISTSPACEROLESRESPONSE.fields_by_name['space_roles'].message_type = common_dot_common__pb2._SPACEROLE
+_CREATECOLLECTIONREQUEST.fields_by_name['collection'].message_type = perxis_dot_common_dot_common__pb2._COLLECTION
+_CREATECOLLECTIONRESPONSE.fields_by_name['collection'].message_type = perxis_dot_common_dot_common__pb2._COLLECTION
+_GETCOLLECTIONRESPONSE.fields_by_name['collection'].message_type = perxis_dot_common_dot_common__pb2._COLLECTION
+_LISTCOLLECTIONSRESPONSE.fields_by_name['collections'].message_type = perxis_dot_common_dot_common__pb2._COLLECTION
+_UPDATECOLLECTIONREQUEST.fields_by_name['collection'].message_type = perxis_dot_common_dot_common__pb2._COLLECTION
+_CREATEITEMREQUEST.fields_by_name['item'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_CREATEITEMRESPONSE.fields_by_name['item'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_GETITEMRESPONSE.fields_by_name['item'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_UPDATEITEMREQUEST.fields_by_name['item'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_UPDATEITEMRESPONSE.fields_by_name['item'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_LISTITEMREVISIONSRESPONSE.fields_by_name['items'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_GETITEMREVISIONRESPONSE.fields_by_name['item'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_FINDITEMSREQUEST.fields_by_name['data'].message_type = perxis_dot_common_dot_common__pb2._FILTER
+_FINDITEMSRESPONSE.fields_by_name['items'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_FINDARCHIVEDITEMSREQUEST.fields_by_name['data'].message_type = perxis_dot_common_dot_common__pb2._FILTER
+_FINDARCHIVEDITEMSRESPONSE.fields_by_name['items'].message_type = perxis_dot_common_dot_common__pb2._ITEM
+_CONTENTCREATESPACEREQUEST.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_CONTENTCREATESPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_CONTENTGETSPACERESPONSE.fields_by_name['space'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_LISTSPACESRESPONSE.fields_by_name['spaces'].message_type = perxis_dot_common_dot_common__pb2._SPACE
+_CREATELOCALEREQUEST.fields_by_name['locale'].message_type = perxis_dot_common_dot_common__pb2._LOCALE
+_CREATELOCALERESPONSE.fields_by_name['locale'].message_type = perxis_dot_common_dot_common__pb2._LOCALE
+_LISTLOCALESRESPONSE.fields_by_name['locales'].message_type = perxis_dot_common_dot_common__pb2._LOCALE
+_CREATEENVIRONMENTREQUEST.fields_by_name['environment'].message_type = perxis_dot_common_dot_common__pb2._ENVIRONMENT
+_CREATEENVIRONMENTRESPONSE.fields_by_name['environment'].message_type = perxis_dot_common_dot_common__pb2._ENVIRONMENT
+_GETENVIRONMENTRESPONSE.fields_by_name['environment'].message_type = perxis_dot_common_dot_common__pb2._ENVIRONMENT
+_LISTENVIRONMENTSRESPONSE.fields_by_name['environments'].message_type = perxis_dot_common_dot_common__pb2._ENVIRONMENT
+_UPDATEENVIRONMENTREQUEST.fields_by_name['environment'].message_type = perxis_dot_common_dot_common__pb2._ENVIRONMENT
+_CREATESPACEROLEREQUEST.fields_by_name['space_role'].message_type = perxis_dot_common_dot_common__pb2._SPACEROLE
+_UPDATESPACEROLEREQUEST.fields_by_name['space_role'].message_type = perxis_dot_common_dot_common__pb2._SPACEROLE
+_LISTSPACEROLESRESPONSE.fields_by_name['space_roles'].message_type = perxis_dot_common_dot_common__pb2._SPACEROLE
 DESCRIPTOR.message_types_by_name['CreateCollectionRequest'] = _CREATECOLLECTIONREQUEST
 DESCRIPTOR.message_types_by_name['CreateCollectionResponse'] = _CREATECOLLECTIONRESPONSE
 DESCRIPTOR.message_types_by_name['GetCollectionRequest'] = _GETCOLLECTIONREQUEST
@@ -2576,462 +2576,462 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 CreateCollectionRequest = _reflection.GeneratedProtocolMessageType('CreateCollectionRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATECOLLECTIONREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateCollectionRequest)
   })
 _sym_db.RegisterMessage(CreateCollectionRequest)
 
 CreateCollectionResponse = _reflection.GeneratedProtocolMessageType('CreateCollectionResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATECOLLECTIONRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateCollectionResponse)
   })
 _sym_db.RegisterMessage(CreateCollectionResponse)
 
 GetCollectionRequest = _reflection.GeneratedProtocolMessageType('GetCollectionRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETCOLLECTIONREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetCollectionRequest)
   })
 _sym_db.RegisterMessage(GetCollectionRequest)
 
 GetCollectionResponse = _reflection.GeneratedProtocolMessageType('GetCollectionResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETCOLLECTIONRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetCollectionResponse)
   })
 _sym_db.RegisterMessage(GetCollectionResponse)
 
 ListCollectionsRequest = _reflection.GeneratedProtocolMessageType('ListCollectionsRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTCOLLECTIONSREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListCollectionsRequest)
   })
 _sym_db.RegisterMessage(ListCollectionsRequest)
 
 ListCollectionsResponse = _reflection.GeneratedProtocolMessageType('ListCollectionsResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTCOLLECTIONSRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListCollectionsResponse)
   })
 _sym_db.RegisterMessage(ListCollectionsResponse)
 
 UpdateCollectionRequest = _reflection.GeneratedProtocolMessageType('UpdateCollectionRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATECOLLECTIONREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UpdateCollectionRequest)
   })
 _sym_db.RegisterMessage(UpdateCollectionRequest)
 
 UpdateCollectionResponse = _reflection.GeneratedProtocolMessageType('UpdateCollectionResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATECOLLECTIONRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UpdateCollectionResponse)
   })
 _sym_db.RegisterMessage(UpdateCollectionResponse)
 
 DeleteCollectionRequest = _reflection.GeneratedProtocolMessageType('DeleteCollectionRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETECOLLECTIONREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteCollectionRequest)
   })
 _sym_db.RegisterMessage(DeleteCollectionRequest)
 
 DeleteCollectionResponse = _reflection.GeneratedProtocolMessageType('DeleteCollectionResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETECOLLECTIONRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteCollectionResponse)
   })
 _sym_db.RegisterMessage(DeleteCollectionResponse)
 
 CreateItemRequest = _reflection.GeneratedProtocolMessageType('CreateItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATEITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateItemRequest)
   })
 _sym_db.RegisterMessage(CreateItemRequest)
 
 CreateItemResponse = _reflection.GeneratedProtocolMessageType('CreateItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATEITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateItemResponse)
   })
 _sym_db.RegisterMessage(CreateItemResponse)
 
 GetItemRequest = _reflection.GeneratedProtocolMessageType('GetItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetItemRequest)
   })
 _sym_db.RegisterMessage(GetItemRequest)
 
 GetItemResponse = _reflection.GeneratedProtocolMessageType('GetItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetItemResponse)
   })
 _sym_db.RegisterMessage(GetItemResponse)
 
 UpdateItemRequest = _reflection.GeneratedProtocolMessageType('UpdateItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UpdateItemRequest)
   })
 _sym_db.RegisterMessage(UpdateItemRequest)
 
 UpdateItemResponse = _reflection.GeneratedProtocolMessageType('UpdateItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UpdateItemResponse)
   })
 _sym_db.RegisterMessage(UpdateItemResponse)
 
 DeleteItemRequest = _reflection.GeneratedProtocolMessageType('DeleteItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETEITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteItemRequest)
   })
 _sym_db.RegisterMessage(DeleteItemRequest)
 
 DeleteItemResponse = _reflection.GeneratedProtocolMessageType('DeleteItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETEITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteItemResponse)
   })
 _sym_db.RegisterMessage(DeleteItemResponse)
 
 PublishItemRequest = _reflection.GeneratedProtocolMessageType('PublishItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _PUBLISHITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.PublishItemRequest)
   })
 _sym_db.RegisterMessage(PublishItemRequest)
 
 PublishItemResponse = _reflection.GeneratedProtocolMessageType('PublishItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _PUBLISHITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.PublishItemResponse)
   })
 _sym_db.RegisterMessage(PublishItemResponse)
 
 UnpublishItemRequest = _reflection.GeneratedProtocolMessageType('UnpublishItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _UNPUBLISHITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UnpublishItemRequest)
   })
 _sym_db.RegisterMessage(UnpublishItemRequest)
 
 UnpublishItemResponse = _reflection.GeneratedProtocolMessageType('UnpublishItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _UNPUBLISHITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UnpublishItemResponse)
   })
 _sym_db.RegisterMessage(UnpublishItemResponse)
 
 ArchiveItemRequest = _reflection.GeneratedProtocolMessageType('ArchiveItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _ARCHIVEITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ArchiveItemRequest)
   })
 _sym_db.RegisterMessage(ArchiveItemRequest)
 
 ArchiveItemResponse = _reflection.GeneratedProtocolMessageType('ArchiveItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _ARCHIVEITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ArchiveItemResponse)
   })
 _sym_db.RegisterMessage(ArchiveItemResponse)
 
 UnarchiveItemRequest = _reflection.GeneratedProtocolMessageType('UnarchiveItemRequest', (_message.Message,), {
   'DESCRIPTOR' : _UNARCHIVEITEMREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UnarchiveItemRequest)
   })
 _sym_db.RegisterMessage(UnarchiveItemRequest)
 
 UnarchiveItemResponse = _reflection.GeneratedProtocolMessageType('UnarchiveItemResponse', (_message.Message,), {
   'DESCRIPTOR' : _UNARCHIVEITEMRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UnarchiveItemResponse)
   })
 _sym_db.RegisterMessage(UnarchiveItemResponse)
 
 ListItemRevisionsRequest = _reflection.GeneratedProtocolMessageType('ListItemRevisionsRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTITEMREVISIONSREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListItemRevisionsRequest)
   })
 _sym_db.RegisterMessage(ListItemRevisionsRequest)
 
 ListItemRevisionsResponse = _reflection.GeneratedProtocolMessageType('ListItemRevisionsResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTITEMREVISIONSRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListItemRevisionsResponse)
   })
 _sym_db.RegisterMessage(ListItemRevisionsResponse)
 
 GetItemRevisionRequest = _reflection.GeneratedProtocolMessageType('GetItemRevisionRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETITEMREVISIONREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetItemRevisionRequest)
   })
 _sym_db.RegisterMessage(GetItemRevisionRequest)
 
 GetItemRevisionResponse = _reflection.GeneratedProtocolMessageType('GetItemRevisionResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETITEMREVISIONRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetItemRevisionResponse)
   })
 _sym_db.RegisterMessage(GetItemRevisionResponse)
 
 FindItemsRequest = _reflection.GeneratedProtocolMessageType('FindItemsRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDITEMSREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.FindItemsRequest)
   })
 _sym_db.RegisterMessage(FindItemsRequest)
 
 FindItemsResponse = _reflection.GeneratedProtocolMessageType('FindItemsResponse', (_message.Message,), {
   'DESCRIPTOR' : _FINDITEMSRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.FindItemsResponse)
   })
 _sym_db.RegisterMessage(FindItemsResponse)
 
 FindArchivedItemsRequest = _reflection.GeneratedProtocolMessageType('FindArchivedItemsRequest', (_message.Message,), {
   'DESCRIPTOR' : _FINDARCHIVEDITEMSREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.FindArchivedItemsRequest)
   })
 _sym_db.RegisterMessage(FindArchivedItemsRequest)
 
 FindArchivedItemsResponse = _reflection.GeneratedProtocolMessageType('FindArchivedItemsResponse', (_message.Message,), {
   'DESCRIPTOR' : _FINDARCHIVEDITEMSRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.FindArchivedItemsResponse)
   })
 _sym_db.RegisterMessage(FindArchivedItemsResponse)
 
 ContentCreateSpaceRequest = _reflection.GeneratedProtocolMessageType('ContentCreateSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _CONTENTCREATESPACEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ContentCreateSpaceRequest)
   })
 _sym_db.RegisterMessage(ContentCreateSpaceRequest)
 
 ContentCreateSpaceResponse = _reflection.GeneratedProtocolMessageType('ContentCreateSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _CONTENTCREATESPACERESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ContentCreateSpaceResponse)
   })
 _sym_db.RegisterMessage(ContentCreateSpaceResponse)
 
 ContentDeleteSpaceRequest = _reflection.GeneratedProtocolMessageType('ContentDeleteSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _CONTENTDELETESPACEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ContentDeleteSpaceRequest)
   })
 _sym_db.RegisterMessage(ContentDeleteSpaceRequest)
 
 ContentGetSpaceRequest = _reflection.GeneratedProtocolMessageType('ContentGetSpaceRequest', (_message.Message,), {
   'DESCRIPTOR' : _CONTENTGETSPACEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ContentGetSpaceRequest)
   })
 _sym_db.RegisterMessage(ContentGetSpaceRequest)
 
 ContentGetSpaceResponse = _reflection.GeneratedProtocolMessageType('ContentGetSpaceResponse', (_message.Message,), {
   'DESCRIPTOR' : _CONTENTGETSPACERESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ContentGetSpaceResponse)
   })
 _sym_db.RegisterMessage(ContentGetSpaceResponse)
 
 ListSpacesRequest = _reflection.GeneratedProtocolMessageType('ListSpacesRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTSPACESREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListSpacesRequest)
   })
 _sym_db.RegisterMessage(ListSpacesRequest)
 
 ListSpacesResponse = _reflection.GeneratedProtocolMessageType('ListSpacesResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTSPACESRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListSpacesResponse)
   })
 _sym_db.RegisterMessage(ListSpacesResponse)
 
 CreateLocaleRequest = _reflection.GeneratedProtocolMessageType('CreateLocaleRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATELOCALEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateLocaleRequest)
   })
 _sym_db.RegisterMessage(CreateLocaleRequest)
 
 CreateLocaleResponse = _reflection.GeneratedProtocolMessageType('CreateLocaleResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATELOCALERESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateLocaleResponse)
   })
 _sym_db.RegisterMessage(CreateLocaleResponse)
 
 ListLocalesRequest = _reflection.GeneratedProtocolMessageType('ListLocalesRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTLOCALESREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListLocalesRequest)
   })
 _sym_db.RegisterMessage(ListLocalesRequest)
 
 ListLocalesResponse = _reflection.GeneratedProtocolMessageType('ListLocalesResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTLOCALESRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListLocalesResponse)
   })
 _sym_db.RegisterMessage(ListLocalesResponse)
 
 DeleteLocaleRequest = _reflection.GeneratedProtocolMessageType('DeleteLocaleRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETELOCALEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteLocaleRequest)
   })
 _sym_db.RegisterMessage(DeleteLocaleRequest)
 
 DeleteLocaleResponse = _reflection.GeneratedProtocolMessageType('DeleteLocaleResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETELOCALERESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteLocaleResponse)
   })
 _sym_db.RegisterMessage(DeleteLocaleResponse)
 
 CreateEnvironmentRequest = _reflection.GeneratedProtocolMessageType('CreateEnvironmentRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATEENVIRONMENTREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateEnvironmentRequest)
   })
 _sym_db.RegisterMessage(CreateEnvironmentRequest)
 
 CreateEnvironmentResponse = _reflection.GeneratedProtocolMessageType('CreateEnvironmentResponse', (_message.Message,), {
   'DESCRIPTOR' : _CREATEENVIRONMENTRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateEnvironmentResponse)
   })
 _sym_db.RegisterMessage(CreateEnvironmentResponse)
 
 GetEnvironmentRequest = _reflection.GeneratedProtocolMessageType('GetEnvironmentRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETENVIRONMENTREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetEnvironmentRequest)
   })
 _sym_db.RegisterMessage(GetEnvironmentRequest)
 
 GetEnvironmentResponse = _reflection.GeneratedProtocolMessageType('GetEnvironmentResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETENVIRONMENTRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.GetEnvironmentResponse)
   })
 _sym_db.RegisterMessage(GetEnvironmentResponse)
 
 ListEnvironmentsRequest = _reflection.GeneratedProtocolMessageType('ListEnvironmentsRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTENVIRONMENTSREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListEnvironmentsRequest)
   })
 _sym_db.RegisterMessage(ListEnvironmentsRequest)
 
 ListEnvironmentsResponse = _reflection.GeneratedProtocolMessageType('ListEnvironmentsResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTENVIRONMENTSRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListEnvironmentsResponse)
   })
 _sym_db.RegisterMessage(ListEnvironmentsResponse)
 
 UpdateEnvironmentRequest = _reflection.GeneratedProtocolMessageType('UpdateEnvironmentRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEENVIRONMENTREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UpdateEnvironmentRequest)
   })
 _sym_db.RegisterMessage(UpdateEnvironmentRequest)
 
 UpdateEnvironmentResponse = _reflection.GeneratedProtocolMessageType('UpdateEnvironmentResponse', (_message.Message,), {
   'DESCRIPTOR' : _UPDATEENVIRONMENTRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UpdateEnvironmentResponse)
   })
 _sym_db.RegisterMessage(UpdateEnvironmentResponse)
 
 DeleteEnvironmentRequest = _reflection.GeneratedProtocolMessageType('DeleteEnvironmentRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETEENVIRONMENTREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteEnvironmentRequest)
   })
 _sym_db.RegisterMessage(DeleteEnvironmentRequest)
 
 DeleteEnvironmentResponse = _reflection.GeneratedProtocolMessageType('DeleteEnvironmentResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETEENVIRONMENTRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteEnvironmentResponse)
   })
 _sym_db.RegisterMessage(DeleteEnvironmentResponse)
 
 SetEnvironmentAliasRequest = _reflection.GeneratedProtocolMessageType('SetEnvironmentAliasRequest', (_message.Message,), {
   'DESCRIPTOR' : _SETENVIRONMENTALIASREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.SetEnvironmentAliasRequest)
   })
 _sym_db.RegisterMessage(SetEnvironmentAliasRequest)
 
 SetEnvironmentAliasResponse = _reflection.GeneratedProtocolMessageType('SetEnvironmentAliasResponse', (_message.Message,), {
   'DESCRIPTOR' : _SETENVIRONMENTALIASRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.SetEnvironmentAliasResponse)
   })
 _sym_db.RegisterMessage(SetEnvironmentAliasResponse)
 
 RemoveEnvironmentAliasRequest = _reflection.GeneratedProtocolMessageType('RemoveEnvironmentAliasRequest', (_message.Message,), {
   'DESCRIPTOR' : _REMOVEENVIRONMENTALIASREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.RemoveEnvironmentAliasRequest)
   })
 _sym_db.RegisterMessage(RemoveEnvironmentAliasRequest)
 
 RemoveEnvironmentAliasResponse = _reflection.GeneratedProtocolMessageType('RemoveEnvironmentAliasResponse', (_message.Message,), {
   'DESCRIPTOR' : _REMOVEENVIRONMENTALIASRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.RemoveEnvironmentAliasResponse)
   })
 _sym_db.RegisterMessage(RemoveEnvironmentAliasResponse)
 
 CreateSpaceRoleRequest = _reflection.GeneratedProtocolMessageType('CreateSpaceRoleRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATESPACEROLEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.CreateSpaceRoleRequest)
   })
 _sym_db.RegisterMessage(CreateSpaceRoleRequest)
 
 UpdateSpaceRoleRequest = _reflection.GeneratedProtocolMessageType('UpdateSpaceRoleRequest', (_message.Message,), {
   'DESCRIPTOR' : _UPDATESPACEROLEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.UpdateSpaceRoleRequest)
   })
 _sym_db.RegisterMessage(UpdateSpaceRoleRequest)
 
 ListSpaceRolesRequest = _reflection.GeneratedProtocolMessageType('ListSpaceRolesRequest', (_message.Message,), {
   'DESCRIPTOR' : _LISTSPACEROLESREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListSpaceRolesRequest)
   })
 _sym_db.RegisterMessage(ListSpaceRolesRequest)
 
 ListSpaceRolesResponse = _reflection.GeneratedProtocolMessageType('ListSpaceRolesResponse', (_message.Message,), {
   'DESCRIPTOR' : _LISTSPACEROLESRESPONSE,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.ListSpaceRolesResponse)
   })
 _sym_db.RegisterMessage(ListSpaceRolesResponse)
 
 DeleteSpaceRoleRequest = _reflection.GeneratedProtocolMessageType('DeleteSpaceRoleRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETESPACEROLEREQUEST,
-  '__module__' : 'contentmanagement.contentmanagment_pb2'
+  '__module__' : 'perxis.contentmanagement.contentmanagment_pb2'
   # @@protoc_insertion_point(class_scope:contentmanagement.DeleteSpaceRoleRequest)
   })
 _sym_db.RegisterMessage(DeleteSpaceRoleRequest)
@@ -3046,8 +3046,8 @@ _CONTENTMANAGEMENT = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=4380,
-  serialized_end=7360,
+  serialized_start=4394,
+  serialized_end=7374,
   methods=[
   _descriptor.MethodDescriptor(
     name='CreateCollection',
diff --git a/perxis/contentmanagement/contentmanagment_pb2_grpc.py b/perxis/contentmanagement/contentmanagment_pb2_grpc.py
index ce3b4f0..1ccb526 100644
--- a/perxis/contentmanagement/contentmanagment_pb2_grpc.py
+++ b/perxis/contentmanagement/contentmanagment_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from contentmanagement import contentmanagment_pb2 as contentmanagement_dot_contentmanagment__pb2
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+from perxis.contentmanagement import contentmanagment_pb2 as perxis_dot_contentmanagement_dot_contentmanagment__pb2
 
 
 class ContentManagementStub(object):
@@ -17,157 +17,157 @@ class ContentManagementStub(object):
         """
         self.CreateCollection = channel.unary_unary(
                 '/contentmanagement.ContentManagement/CreateCollection',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.CreateCollectionRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateCollectionResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateCollectionRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateCollectionResponse.FromString,
                 )
         self.GetCollection = channel.unary_unary(
                 '/contentmanagement.ContentManagement/GetCollection',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.GetCollectionRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.GetCollectionResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetCollectionRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetCollectionResponse.FromString,
                 )
         self.ListCollections = channel.unary_unary(
                 '/contentmanagement.ContentManagement/ListCollections',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.ListCollectionsRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.ListCollectionsResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListCollectionsRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListCollectionsResponse.FromString,
                 )
         self.UpdateCollection = channel.unary_unary(
                 '/contentmanagement.ContentManagement/UpdateCollection',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.UpdateCollectionRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateCollectionRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.DeleteCollection = channel.unary_unary(
                 '/contentmanagement.ContentManagement/DeleteCollection',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.DeleteCollectionRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteCollectionRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.CreateItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/CreateItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.CreateItemRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateItemResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateItemRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateItemResponse.FromString,
                 )
         self.GetItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/GetItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.GetItemRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.GetItemResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemResponse.FromString,
                 )
         self.UpdateItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/UpdateItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.UpdateItemRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.UpdateItemResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateItemRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateItemResponse.FromString,
                 )
         self.DeleteItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/DeleteItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.DeleteItemRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteItemRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.PublishItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/PublishItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.PublishItemRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.PublishItemRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.UnpublishItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/UnpublishItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.UnpublishItemRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UnpublishItemRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.ArchiveItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/ArchiveItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.ArchiveItemRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ArchiveItemRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.UnarchiveItem = channel.unary_unary(
                 '/contentmanagement.ContentManagement/UnarchiveItem',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.UnarchiveItemRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UnarchiveItemRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.ListItemRevisions = channel.unary_unary(
                 '/contentmanagement.ContentManagement/ListItemRevisions',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsResponse.FromString,
                 )
         self.GetItemRevision = channel.unary_unary(
                 '/contentmanagement.ContentManagement/GetItemRevision',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.GetItemRevisionRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.GetItemRevisionResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRevisionRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRevisionResponse.FromString,
                 )
         self.FindItems = channel.unary_unary(
                 '/contentmanagement.ContentManagement/FindItems',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.FindItemsRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.FindItemsResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindItemsRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindItemsResponse.FromString,
                 )
         self.FindArchivedItems = channel.unary_unary(
                 '/contentmanagement.ContentManagement/FindArchivedItems',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsResponse.FromString,
                 )
         self.CreateLocale = channel.unary_unary(
                 '/contentmanagement.ContentManagement/CreateLocale',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.CreateLocaleRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateLocaleResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateLocaleRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateLocaleResponse.FromString,
                 )
         self.ListLocales = channel.unary_unary(
                 '/contentmanagement.ContentManagement/ListLocales',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.ListLocalesRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.ListLocalesResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListLocalesRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListLocalesResponse.FromString,
                 )
         self.DeleteLocale = channel.unary_unary(
                 '/contentmanagement.ContentManagement/DeleteLocale',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.DeleteLocaleRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteLocaleRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.CreateEnvironment = channel.unary_unary(
                 '/contentmanagement.ContentManagement/CreateEnvironment',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentResponse.FromString,
                 )
         self.GetEnvironment = channel.unary_unary(
                 '/contentmanagement.ContentManagement/GetEnvironment',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.GetEnvironmentRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.GetEnvironmentResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetEnvironmentRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetEnvironmentResponse.FromString,
                 )
         self.ListEnvironments = channel.unary_unary(
                 '/contentmanagement.ContentManagement/ListEnvironments',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsResponse.FromString,
                 )
         self.UpdateEnvironment = channel.unary_unary(
                 '/contentmanagement.ContentManagement/UpdateEnvironment',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.UpdateEnvironmentRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateEnvironmentRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.DeleteEnvironment = channel.unary_unary(
                 '/contentmanagement.ContentManagement/DeleteEnvironment',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.DeleteEnvironmentRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteEnvironmentRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.SetEnvironmentAlias = channel.unary_unary(
                 '/contentmanagement.ContentManagement/SetEnvironmentAlias',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.SetEnvironmentAliasRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.SetEnvironmentAliasRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.RemoveEnvironmentAlias = channel.unary_unary(
                 '/contentmanagement.ContentManagement/RemoveEnvironmentAlias',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.RemoveEnvironmentAliasRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.RemoveEnvironmentAliasRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.CreateSpaceRole = channel.unary_unary(
                 '/contentmanagement.ContentManagement/CreateSpaceRole',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.CreateSpaceRoleRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateSpaceRoleRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.UpdateSpaceRole = channel.unary_unary(
                 '/contentmanagement.ContentManagement/UpdateSpaceRole',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.UpdateSpaceRoleRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateSpaceRoleRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.ListSpaceRoles = channel.unary_unary(
                 '/contentmanagement.ContentManagement/ListSpaceRoles',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesRequest.SerializeToString,
-                response_deserializer=contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesResponse.FromString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesRequest.SerializeToString,
+                response_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesResponse.FromString,
                 )
         self.DeleteSpaceRole = channel.unary_unary(
                 '/contentmanagement.ContentManagement/DeleteSpaceRole',
-                request_serializer=contentmanagement_dot_contentmanagment__pb2.DeleteSpaceRoleRequest.SerializeToString,
+                request_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteSpaceRoleRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -371,157 +371,157 @@ def add_ContentManagementServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'CreateCollection': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateCollection,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateCollectionRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.CreateCollectionResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateCollectionRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateCollectionResponse.SerializeToString,
             ),
             'GetCollection': grpc.unary_unary_rpc_method_handler(
                     servicer.GetCollection,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.GetCollectionRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.GetCollectionResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetCollectionRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetCollectionResponse.SerializeToString,
             ),
             'ListCollections': grpc.unary_unary_rpc_method_handler(
                     servicer.ListCollections,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.ListCollectionsRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.ListCollectionsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListCollectionsRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListCollectionsResponse.SerializeToString,
             ),
             'UpdateCollection': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateCollection,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.UpdateCollectionRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateCollectionRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'DeleteCollection': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteCollection,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.DeleteCollectionRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteCollectionRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'CreateItem': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateItemRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.CreateItemResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateItemRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateItemResponse.SerializeToString,
             ),
             'GetItem': grpc.unary_unary_rpc_method_handler(
                     servicer.GetItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.GetItemRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.GetItemResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemResponse.SerializeToString,
             ),
             'UpdateItem': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.UpdateItemRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.UpdateItemResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateItemRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateItemResponse.SerializeToString,
             ),
             'DeleteItem': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.DeleteItemRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteItemRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'PublishItem': grpc.unary_unary_rpc_method_handler(
                     servicer.PublishItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.PublishItemRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.PublishItemRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'UnpublishItem': grpc.unary_unary_rpc_method_handler(
                     servicer.UnpublishItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.UnpublishItemRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UnpublishItemRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'ArchiveItem': grpc.unary_unary_rpc_method_handler(
                     servicer.ArchiveItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.ArchiveItemRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ArchiveItemRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'UnarchiveItem': grpc.unary_unary_rpc_method_handler(
                     servicer.UnarchiveItem,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.UnarchiveItemRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UnarchiveItemRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'ListItemRevisions': grpc.unary_unary_rpc_method_handler(
                     servicer.ListItemRevisions,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsResponse.SerializeToString,
             ),
             'GetItemRevision': grpc.unary_unary_rpc_method_handler(
                     servicer.GetItemRevision,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.GetItemRevisionRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.GetItemRevisionResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRevisionRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRevisionResponse.SerializeToString,
             ),
             'FindItems': grpc.unary_unary_rpc_method_handler(
                     servicer.FindItems,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.FindItemsRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.FindItemsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindItemsRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindItemsResponse.SerializeToString,
             ),
             'FindArchivedItems': grpc.unary_unary_rpc_method_handler(
                     servicer.FindArchivedItems,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsResponse.SerializeToString,
             ),
             'CreateLocale': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateLocale,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateLocaleRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.CreateLocaleResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateLocaleRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateLocaleResponse.SerializeToString,
             ),
             'ListLocales': grpc.unary_unary_rpc_method_handler(
                     servicer.ListLocales,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.ListLocalesRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.ListLocalesResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListLocalesRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListLocalesResponse.SerializeToString,
             ),
             'DeleteLocale': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteLocale,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.DeleteLocaleRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteLocaleRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'CreateEnvironment': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateEnvironment,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentResponse.SerializeToString,
             ),
             'GetEnvironment': grpc.unary_unary_rpc_method_handler(
                     servicer.GetEnvironment,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.GetEnvironmentRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.GetEnvironmentResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetEnvironmentRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetEnvironmentResponse.SerializeToString,
             ),
             'ListEnvironments': grpc.unary_unary_rpc_method_handler(
                     servicer.ListEnvironments,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsResponse.SerializeToString,
             ),
             'UpdateEnvironment': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateEnvironment,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.UpdateEnvironmentRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateEnvironmentRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'DeleteEnvironment': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteEnvironment,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.DeleteEnvironmentRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteEnvironmentRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'SetEnvironmentAlias': grpc.unary_unary_rpc_method_handler(
                     servicer.SetEnvironmentAlias,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.SetEnvironmentAliasRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.SetEnvironmentAliasRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'RemoveEnvironmentAlias': grpc.unary_unary_rpc_method_handler(
                     servicer.RemoveEnvironmentAlias,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.RemoveEnvironmentAliasRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.RemoveEnvironmentAliasRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'CreateSpaceRole': grpc.unary_unary_rpc_method_handler(
                     servicer.CreateSpaceRole,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.CreateSpaceRoleRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateSpaceRoleRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'UpdateSpaceRole': grpc.unary_unary_rpc_method_handler(
                     servicer.UpdateSpaceRole,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.UpdateSpaceRoleRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateSpaceRoleRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'ListSpaceRoles': grpc.unary_unary_rpc_method_handler(
                     servicer.ListSpaceRoles,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesRequest.FromString,
-                    response_serializer=contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesResponse.SerializeToString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesRequest.FromString,
+                    response_serializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesResponse.SerializeToString,
             ),
             'DeleteSpaceRole': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteSpaceRole,
-                    request_deserializer=contentmanagement_dot_contentmanagment__pb2.DeleteSpaceRoleRequest.FromString,
+                    request_deserializer=perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteSpaceRoleRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -546,8 +546,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/CreateCollection',
-            contentmanagement_dot_contentmanagment__pb2.CreateCollectionRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.CreateCollectionResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateCollectionRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateCollectionResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -563,8 +563,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/GetCollection',
-            contentmanagement_dot_contentmanagment__pb2.GetCollectionRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.GetCollectionResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetCollectionRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetCollectionResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -580,8 +580,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/ListCollections',
-            contentmanagement_dot_contentmanagment__pb2.ListCollectionsRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.ListCollectionsResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListCollectionsRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListCollectionsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -597,7 +597,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/UpdateCollection',
-            contentmanagement_dot_contentmanagment__pb2.UpdateCollectionRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateCollectionRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -614,7 +614,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/DeleteCollection',
-            contentmanagement_dot_contentmanagment__pb2.DeleteCollectionRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteCollectionRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -631,8 +631,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/CreateItem',
-            contentmanagement_dot_contentmanagment__pb2.CreateItemRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.CreateItemResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateItemResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -648,8 +648,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/GetItem',
-            contentmanagement_dot_contentmanagment__pb2.GetItemRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.GetItemResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -665,8 +665,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/UpdateItem',
-            contentmanagement_dot_contentmanagment__pb2.UpdateItemRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.UpdateItemResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateItemResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -682,7 +682,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/DeleteItem',
-            contentmanagement_dot_contentmanagment__pb2.DeleteItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteItemRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -699,7 +699,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/PublishItem',
-            contentmanagement_dot_contentmanagment__pb2.PublishItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.PublishItemRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -716,7 +716,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/UnpublishItem',
-            contentmanagement_dot_contentmanagment__pb2.UnpublishItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.UnpublishItemRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -733,7 +733,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/ArchiveItem',
-            contentmanagement_dot_contentmanagment__pb2.ArchiveItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ArchiveItemRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -750,7 +750,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/UnarchiveItem',
-            contentmanagement_dot_contentmanagment__pb2.UnarchiveItemRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.UnarchiveItemRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -767,8 +767,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/ListItemRevisions',
-            contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListItemRevisionsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -784,8 +784,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/GetItemRevision',
-            contentmanagement_dot_contentmanagment__pb2.GetItemRevisionRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.GetItemRevisionResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRevisionRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetItemRevisionResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -801,8 +801,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/FindItems',
-            contentmanagement_dot_contentmanagment__pb2.FindItemsRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.FindItemsResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindItemsRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindItemsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -818,8 +818,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/FindArchivedItems',
-            contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.FindArchivedItemsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -835,8 +835,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/CreateLocale',
-            contentmanagement_dot_contentmanagment__pb2.CreateLocaleRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.CreateLocaleResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateLocaleRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateLocaleResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -852,8 +852,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/ListLocales',
-            contentmanagement_dot_contentmanagment__pb2.ListLocalesRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.ListLocalesResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListLocalesRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListLocalesResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -869,7 +869,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/DeleteLocale',
-            contentmanagement_dot_contentmanagment__pb2.DeleteLocaleRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteLocaleRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -886,8 +886,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/CreateEnvironment',
-            contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateEnvironmentResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -903,8 +903,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/GetEnvironment',
-            contentmanagement_dot_contentmanagment__pb2.GetEnvironmentRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.GetEnvironmentResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetEnvironmentRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.GetEnvironmentResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -920,8 +920,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/ListEnvironments',
-            contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListEnvironmentsResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -937,7 +937,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/UpdateEnvironment',
-            contentmanagement_dot_contentmanagment__pb2.UpdateEnvironmentRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateEnvironmentRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -954,7 +954,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/DeleteEnvironment',
-            contentmanagement_dot_contentmanagment__pb2.DeleteEnvironmentRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteEnvironmentRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -971,7 +971,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/SetEnvironmentAlias',
-            contentmanagement_dot_contentmanagment__pb2.SetEnvironmentAliasRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.SetEnvironmentAliasRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -988,7 +988,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/RemoveEnvironmentAlias',
-            contentmanagement_dot_contentmanagment__pb2.RemoveEnvironmentAliasRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.RemoveEnvironmentAliasRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1005,7 +1005,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/CreateSpaceRole',
-            contentmanagement_dot_contentmanagment__pb2.CreateSpaceRoleRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.CreateSpaceRoleRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1022,7 +1022,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/UpdateSpaceRole',
-            contentmanagement_dot_contentmanagment__pb2.UpdateSpaceRoleRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.UpdateSpaceRoleRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1039,8 +1039,8 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/ListSpaceRoles',
-            contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesRequest.SerializeToString,
-            contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesResponse.FromString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.ListSpaceRolesResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -1056,7 +1056,7 @@ class ContentManagement(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/contentmanagement.ContentManagement/DeleteSpaceRole',
-            contentmanagement_dot_contentmanagment__pb2.DeleteSpaceRoleRequest.SerializeToString,
+            perxis_dot_contentmanagement_dot_contentmanagment__pb2.DeleteSpaceRoleRequest.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/delivery/__init__.py b/perxis/delivery/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/perxis/delivery/delivery_pb2.py b/perxis/delivery/delivery_pb2.py
new file mode 100644
index 0000000..469db22
--- /dev/null
+++ b/perxis/delivery/delivery_pb2.py
@@ -0,0 +1,790 @@
+# -*- 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
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='perxis/delivery/delivery.proto',
+  package='delivery',
+  syntax='proto3',
+  serialized_options=b'Z2github.com/perxteam/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\x1a\x1aperxis/common/common.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\"m\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\x11\n\tlocale_id\x18\x04 \x01(\t\x12\x0f\n\x07item_id\x18\x05 \x01(\t\"4\n\x0fGetItemResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\xab\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\x11\n\tlocale_id\x18\x04 \x01(\t\x12%\n\x06\x66ilter\x18\x05 \x01(\x0b\x32\x15.content.items.Filter\x12$\n\x07options\x18\x06 \x01(\x0b\x32\x13.common.FindOptions\"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\x34Z2github.com/perxteam/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,perxis_dot_common_dot_common__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=206,
+  serialized_end=244,
+)
+
+
+_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=246,
+  serialized_end=309,
+)
+
+
+_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=311,
+  serialized_end=368,
+)
+
+
+_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=370,
+  serialized_end=442,
+)
+
+
+_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=444,
+  serialized_end=487,
+)
+
+
+_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=489,
+  serialized_end=564,
+)
+
+
+_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=566,
+  serialized_end=645,
+)
+
+
+_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=647,
+  serialized_end=723,
+)
+
+
+_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=725,
+  serialized_end=783,
+)
+
+
+_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=785,
+  serialized_end=864,
+)
+
+
+_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='locale_id', full_name='delivery.GetItemRequest.locale_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='item_id', full_name='delivery.GetItemRequest.item_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=866,
+  serialized_end=975,
+)
+
+
+_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=977,
+  serialized_end=1029,
+)
+
+
+_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='locale_id', full_name='delivery.FindItemsRequest.locale_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='filter', full_name='delivery.FindItemsRequest.filter', 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),
+    _descriptor.FieldDescriptor(
+      name='options', full_name='delivery.FindItemsRequest.options', 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),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1032,
+  serialized_end=1203,
+)
+
+
+_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=1205,
+  serialized_end=1275,
+)
+
+_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
+_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_common_dot_common__pb2._FINDOPTIONS
+_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=1278,
+  serialized_end=1858,
+  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
new file mode 100644
index 0000000..02b1bd5
--- /dev/null
+++ b/perxis/delivery/delivery_pb2_grpc.py
@@ -0,0 +1,264 @@
+# 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
index 7aefe1d..5eebe8d 100644
--- a/perxis/environments/environments_pb2.py
+++ b/perxis/environments/environments_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: environments/environments.proto
+# source: perxis/environments/environments.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -15,12 +15,12 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='environments/environments.proto',
+  name='perxis/environments/environments.proto',
   package='content.environments',
   syntax='proto3',
   serialized_options=b'Z:github.com/perxteam/perxis/proto/environments;environments',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1f\x65nvironments/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<Z:github.com/perxteam/perxis/proto/environments;environmentsb\x06proto3'
+  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<Z:github.com/perxteam/perxis/proto/environments;environmentsb\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
 
@@ -61,8 +61,8 @@ _ENVIRONMENT_STATE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=292,
-  serialized_end=358,
+  serialized_start=299,
+  serialized_end=365,
 )
 _sym_db.RegisterEnumDescriptor(_ENVIRONMENT_STATE)
 
@@ -137,8 +137,8 @@ _ENVIRONMENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=87,
-  serialized_end=358,
+  serialized_start=94,
+  serialized_end=365,
 )
 
 
@@ -176,8 +176,8 @@ _CONFIG = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=360,
-  serialized_end=405,
+  serialized_start=367,
+  serialized_end=412,
 )
 
 
@@ -208,8 +208,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=407,
-  serialized_end=470,
+  serialized_start=414,
+  serialized_end=477,
 )
 
 
@@ -240,8 +240,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=472,
-  serialized_end=540,
+  serialized_start=479,
+  serialized_end=547,
 )
 
 
@@ -272,8 +272,8 @@ _LISTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=542,
-  serialized_end=573,
+  serialized_start=549,
+  serialized_end=580,
 )
 
 
@@ -304,8 +304,8 @@ _LISTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=575,
-  serialized_end=638,
+  serialized_start=582,
+  serialized_end=645,
 )
 
 
@@ -343,8 +343,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=640,
-  serialized_end=686,
+  serialized_start=647,
+  serialized_end=693,
 )
 
 
@@ -375,8 +375,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=688,
-  serialized_end=749,
+  serialized_start=695,
+  serialized_end=756,
 )
 
 
@@ -407,8 +407,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=751,
-  serialized_end=814,
+  serialized_start=758,
+  serialized_end=821,
 )
 
 
@@ -453,8 +453,8 @@ _SETALIASREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=816,
-  serialized_end=882,
+  serialized_start=823,
+  serialized_end=889,
 )
 
 
@@ -499,8 +499,8 @@ _REMOVEALIASREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=884,
-  serialized_end=953,
+  serialized_start=891,
+  serialized_end=960,
 )
 
 
@@ -538,8 +538,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=955,
-  serialized_end=1004,
+  serialized_start=962,
+  serialized_end=1011,
 )
 
 _ENVIRONMENT.fields_by_name['state'].enum_type = _ENVIRONMENT_STATE
@@ -566,84 +566,84 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Environment = _reflection.GeneratedProtocolMessageType('Environment', (_message.Message,), {
   'DESCRIPTOR' : _ENVIRONMENT,
-  '__module__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__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__' : 'environments.environments_pb2'
+  '__module__' : 'perxis.environments.environments_pb2'
   # @@protoc_insertion_point(class_scope:content.environments.DeleteRequest)
   })
 _sym_db.RegisterMessage(DeleteRequest)
@@ -658,8 +658,8 @@ _ENVIRONMENTS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1007,
-  serialized_end=1573,
+  serialized_start=1014,
+  serialized_end=1580,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/environments/environments_pb2_grpc.py b/perxis/environments/environments_pb2_grpc.py
index 0799457..2a955c7 100644
--- a/perxis/environments/environments_pb2_grpc.py
+++ b/perxis/environments/environments_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from environments import environments_pb2 as environments_dot_environments__pb2
 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):
@@ -17,37 +17,37 @@ class EnvironmentsStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.environments.Environments/Create',
-                request_serializer=environments_dot_environments__pb2.CreateRequest.SerializeToString,
-                response_deserializer=environments_dot_environments__pb2.CreateResponse.FromString,
+                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=environments_dot_environments__pb2.GetRequest.SerializeToString,
-                response_deserializer=environments_dot_environments__pb2.GetResponse.FromString,
+                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=environments_dot_environments__pb2.ListRequest.SerializeToString,
-                response_deserializer=environments_dot_environments__pb2.ListResponse.FromString,
+                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=environments_dot_environments__pb2.UpdateRequest.SerializeToString,
+                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=environments_dot_environments__pb2.SetAliasRequest.SerializeToString,
+                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=environments_dot_environments__pb2.RemoveAliasRequest.SerializeToString,
+                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=environments_dot_environments__pb2.DeleteRequest.SerializeToString,
+                request_serializer=perxis_dot_environments_dot_environments__pb2.DeleteRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -102,37 +102,37 @@ def add_EnvironmentsServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=environments_dot_environments__pb2.CreateRequest.FromString,
-                    response_serializer=environments_dot_environments__pb2.CreateResponse.SerializeToString,
+                    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=environments_dot_environments__pb2.GetRequest.FromString,
-                    response_serializer=environments_dot_environments__pb2.GetResponse.SerializeToString,
+                    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=environments_dot_environments__pb2.ListRequest.FromString,
-                    response_serializer=environments_dot_environments__pb2.ListResponse.SerializeToString,
+                    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=environments_dot_environments__pb2.UpdateRequest.FromString,
+                    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=environments_dot_environments__pb2.SetAliasRequest.FromString,
+                    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=environments_dot_environments__pb2.RemoveAliasRequest.FromString,
+                    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=environments_dot_environments__pb2.DeleteRequest.FromString,
+                    request_deserializer=perxis_dot_environments_dot_environments__pb2.DeleteRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -157,8 +157,8 @@ class Environments(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Create',
-            environments_dot_environments__pb2.CreateRequest.SerializeToString,
-            environments_dot_environments__pb2.CreateResponse.FromString,
+            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)
 
@@ -174,8 +174,8 @@ class Environments(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Get',
-            environments_dot_environments__pb2.GetRequest.SerializeToString,
-            environments_dot_environments__pb2.GetResponse.FromString,
+            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)
 
@@ -191,8 +191,8 @@ class Environments(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/List',
-            environments_dot_environments__pb2.ListRequest.SerializeToString,
-            environments_dot_environments__pb2.ListResponse.FromString,
+            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)
 
@@ -208,7 +208,7 @@ class Environments(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Update',
-            environments_dot_environments__pb2.UpdateRequest.SerializeToString,
+            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)
@@ -225,7 +225,7 @@ class Environments(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/SetAlias',
-            environments_dot_environments__pb2.SetAliasRequest.SerializeToString,
+            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)
@@ -242,7 +242,7 @@ class Environments(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/RemoveAlias',
-            environments_dot_environments__pb2.RemoveAliasRequest.SerializeToString,
+            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)
@@ -259,7 +259,7 @@ class Environments(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.environments.Environments/Delete',
-            environments_dot_environments__pb2.DeleteRequest.SerializeToString,
+            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/file/file_pb2.py b/perxis/file/file_pb2.py
index 4ff246a..56544ba 100644
--- a/perxis/file/file_pb2.py
+++ b/perxis/file/file_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: file/file.proto
+# source: perxis/file/file.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,18 +12,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='file/file.proto',
+  name='perxis/file/file.proto',
   package='file',
   syntax='proto3',
   serialized_options=b'Z*github.com/perxteam/perxis/proto/file;file',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x0f\x66ile/file.proto\x12\x04\x66ile\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/common.proto\"\x81\x01\n\x06Upload\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.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\x13.file.CompletedPart\"+\n\rCompletedPart\x12\x0e\n\x06number\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\t\"2\n\x12StartUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"3\n\x13StartUploadResponse\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"5\n\x15\x43ompleteUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"6\n\x16\x43ompleteUploadResponse\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"2\n\x12\x41\x62ortUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"\x15\n\x13\x41\x62ortUploadResponse\"1\n\x11MoveUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"0\n\x12MoveUploadResponse\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.File\"\x1c\n\x0eGetFileRequest\x12\n\n\x02id\x18\x01 \x01(\t\"-\n\x0fGetFileResponse\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.File\"/\n\x11\x44\x65leteFileRequest\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.File\"\x14\n\x12\x44\x65leteFileResponse2\xa3\x03\n\x0b\x46ileService\x12\x44\n\x0bStartUpload\x12\x18.file.StartUploadRequest\x1a\x19.file.StartUploadResponse\"\x00\x12M\n\x0e\x43ompleteUpload\x12\x1b.file.CompleteUploadRequest\x1a\x1c.file.CompleteUploadResponse\"\x00\x12\x41\n\x0b\x41\x62ortUpload\x12\x18.file.AbortUploadRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x41\n\nMoveUpload\x12\x17.file.MoveUploadRequest\x1a\x18.file.MoveUploadResponse\"\x00\x12\x38\n\x07GetFile\x12\x14.file.GetFileRequest\x1a\x15.file.GetFileResponse\"\x00\x12?\n\nDeleteFile\x12\x17.file.DeleteFileRequest\x1a\x16.google.protobuf.Empty\"\x00\x42,Z*github.com/perxteam/perxis/proto/file;fileb\x06proto3'
+  serialized_pb=b'\n\x16perxis/file/file.proto\x12\x04\x66ile\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"\x81\x01\n\x06Upload\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.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\x13.file.CompletedPart\"+\n\rCompletedPart\x12\x0e\n\x06number\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\t\"2\n\x12StartUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"3\n\x13StartUploadResponse\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"5\n\x15\x43ompleteUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"6\n\x16\x43ompleteUploadResponse\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"2\n\x12\x41\x62ortUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"\x15\n\x13\x41\x62ortUploadResponse\"1\n\x11MoveUploadRequest\x12\x1c\n\x06upload\x18\x01 \x01(\x0b\x32\x0c.file.Upload\"0\n\x12MoveUploadResponse\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.File\"\x1c\n\x0eGetFileRequest\x12\n\n\x02id\x18\x01 \x01(\t\"-\n\x0fGetFileResponse\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.File\"/\n\x11\x44\x65leteFileRequest\x12\x1a\n\x04\x66ile\x18\x01 \x01(\x0b\x32\x0c.common.File\"\x14\n\x12\x44\x65leteFileResponse2\xa3\x03\n\x0b\x46ileService\x12\x44\n\x0bStartUpload\x12\x18.file.StartUploadRequest\x1a\x19.file.StartUploadResponse\"\x00\x12M\n\x0e\x43ompleteUpload\x12\x1b.file.CompleteUploadRequest\x1a\x1c.file.CompleteUploadResponse\"\x00\x12\x41\n\x0b\x41\x62ortUpload\x12\x18.file.AbortUploadRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x41\n\nMoveUpload\x12\x17.file.MoveUploadRequest\x1a\x18.file.MoveUploadResponse\"\x00\x12\x38\n\x07GetFile\x12\x14.file.GetFileRequest\x1a\x15.file.GetFileResponse\"\x00\x12?\n\nDeleteFile\x12\x17.file.DeleteFileRequest\x1a\x16.google.protobuf.Empty\"\x00\x42,Z*github.com/perxteam/perxis/proto/file;fileb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -83,8 +83,8 @@ _UPLOAD = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=76,
-  serialized_end=205,
+  serialized_start=90,
+  serialized_end=219,
 )
 
 
@@ -122,8 +122,8 @@ _COMPLETEDPART = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=207,
-  serialized_end=250,
+  serialized_start=221,
+  serialized_end=264,
 )
 
 
@@ -154,8 +154,8 @@ _STARTUPLOADREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=252,
-  serialized_end=302,
+  serialized_start=266,
+  serialized_end=316,
 )
 
 
@@ -186,8 +186,8 @@ _STARTUPLOADRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=304,
-  serialized_end=355,
+  serialized_start=318,
+  serialized_end=369,
 )
 
 
@@ -218,8 +218,8 @@ _COMPLETEUPLOADREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=357,
-  serialized_end=410,
+  serialized_start=371,
+  serialized_end=424,
 )
 
 
@@ -250,8 +250,8 @@ _COMPLETEUPLOADRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=412,
-  serialized_end=466,
+  serialized_start=426,
+  serialized_end=480,
 )
 
 
@@ -282,8 +282,8 @@ _ABORTUPLOADREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=468,
-  serialized_end=518,
+  serialized_start=482,
+  serialized_end=532,
 )
 
 
@@ -307,8 +307,8 @@ _ABORTUPLOADRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=520,
-  serialized_end=541,
+  serialized_start=534,
+  serialized_end=555,
 )
 
 
@@ -339,8 +339,8 @@ _MOVEUPLOADREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=543,
-  serialized_end=592,
+  serialized_start=557,
+  serialized_end=606,
 )
 
 
@@ -371,8 +371,8 @@ _MOVEUPLOADRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=594,
-  serialized_end=642,
+  serialized_start=608,
+  serialized_end=656,
 )
 
 
@@ -403,8 +403,8 @@ _GETFILEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=644,
-  serialized_end=672,
+  serialized_start=658,
+  serialized_end=686,
 )
 
 
@@ -435,8 +435,8 @@ _GETFILERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=674,
-  serialized_end=719,
+  serialized_start=688,
+  serialized_end=733,
 )
 
 
@@ -467,8 +467,8 @@ _DELETEFILEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=721,
-  serialized_end=768,
+  serialized_start=735,
+  serialized_end=782,
 )
 
 
@@ -492,11 +492,11 @@ _DELETEFILERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=770,
-  serialized_end=790,
+  serialized_start=784,
+  serialized_end=804,
 )
 
-_UPLOAD.fields_by_name['file'].message_type = common_dot_common__pb2._FILE
+_UPLOAD.fields_by_name['file'].message_type = perxis_dot_common_dot_common__pb2._FILE
 _UPLOAD.fields_by_name['parts'].message_type = _COMPLETEDPART
 _STARTUPLOADREQUEST.fields_by_name['upload'].message_type = _UPLOAD
 _STARTUPLOADRESPONSE.fields_by_name['upload'].message_type = _UPLOAD
@@ -504,9 +504,9 @@ _COMPLETEUPLOADREQUEST.fields_by_name['upload'].message_type = _UPLOAD
 _COMPLETEUPLOADRESPONSE.fields_by_name['upload'].message_type = _UPLOAD
 _ABORTUPLOADREQUEST.fields_by_name['upload'].message_type = _UPLOAD
 _MOVEUPLOADREQUEST.fields_by_name['upload'].message_type = _UPLOAD
-_MOVEUPLOADRESPONSE.fields_by_name['file'].message_type = common_dot_common__pb2._FILE
-_GETFILERESPONSE.fields_by_name['file'].message_type = common_dot_common__pb2._FILE
-_DELETEFILEREQUEST.fields_by_name['file'].message_type = common_dot_common__pb2._FILE
+_MOVEUPLOADRESPONSE.fields_by_name['file'].message_type = perxis_dot_common_dot_common__pb2._FILE
+_GETFILERESPONSE.fields_by_name['file'].message_type = perxis_dot_common_dot_common__pb2._FILE
+_DELETEFILEREQUEST.fields_by_name['file'].message_type = perxis_dot_common_dot_common__pb2._FILE
 DESCRIPTOR.message_types_by_name['Upload'] = _UPLOAD
 DESCRIPTOR.message_types_by_name['CompletedPart'] = _COMPLETEDPART
 DESCRIPTOR.message_types_by_name['StartUploadRequest'] = _STARTUPLOADREQUEST
@@ -525,98 +525,98 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Upload = _reflection.GeneratedProtocolMessageType('Upload', (_message.Message,), {
   'DESCRIPTOR' : _UPLOAD,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.Upload)
   })
 _sym_db.RegisterMessage(Upload)
 
 CompletedPart = _reflection.GeneratedProtocolMessageType('CompletedPart', (_message.Message,), {
   'DESCRIPTOR' : _COMPLETEDPART,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.CompletedPart)
   })
 _sym_db.RegisterMessage(CompletedPart)
 
 StartUploadRequest = _reflection.GeneratedProtocolMessageType('StartUploadRequest', (_message.Message,), {
   'DESCRIPTOR' : _STARTUPLOADREQUEST,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.StartUploadRequest)
   })
 _sym_db.RegisterMessage(StartUploadRequest)
 
 StartUploadResponse = _reflection.GeneratedProtocolMessageType('StartUploadResponse', (_message.Message,), {
   'DESCRIPTOR' : _STARTUPLOADRESPONSE,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.StartUploadResponse)
   })
 _sym_db.RegisterMessage(StartUploadResponse)
 
 CompleteUploadRequest = _reflection.GeneratedProtocolMessageType('CompleteUploadRequest', (_message.Message,), {
   'DESCRIPTOR' : _COMPLETEUPLOADREQUEST,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.CompleteUploadRequest)
   })
 _sym_db.RegisterMessage(CompleteUploadRequest)
 
 CompleteUploadResponse = _reflection.GeneratedProtocolMessageType('CompleteUploadResponse', (_message.Message,), {
   'DESCRIPTOR' : _COMPLETEUPLOADRESPONSE,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.CompleteUploadResponse)
   })
 _sym_db.RegisterMessage(CompleteUploadResponse)
 
 AbortUploadRequest = _reflection.GeneratedProtocolMessageType('AbortUploadRequest', (_message.Message,), {
   'DESCRIPTOR' : _ABORTUPLOADREQUEST,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.AbortUploadRequest)
   })
 _sym_db.RegisterMessage(AbortUploadRequest)
 
 AbortUploadResponse = _reflection.GeneratedProtocolMessageType('AbortUploadResponse', (_message.Message,), {
   'DESCRIPTOR' : _ABORTUPLOADRESPONSE,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.AbortUploadResponse)
   })
 _sym_db.RegisterMessage(AbortUploadResponse)
 
 MoveUploadRequest = _reflection.GeneratedProtocolMessageType('MoveUploadRequest', (_message.Message,), {
   'DESCRIPTOR' : _MOVEUPLOADREQUEST,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.MoveUploadRequest)
   })
 _sym_db.RegisterMessage(MoveUploadRequest)
 
 MoveUploadResponse = _reflection.GeneratedProtocolMessageType('MoveUploadResponse', (_message.Message,), {
   'DESCRIPTOR' : _MOVEUPLOADRESPONSE,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.MoveUploadResponse)
   })
 _sym_db.RegisterMessage(MoveUploadResponse)
 
 GetFileRequest = _reflection.GeneratedProtocolMessageType('GetFileRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETFILEREQUEST,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.GetFileRequest)
   })
 _sym_db.RegisterMessage(GetFileRequest)
 
 GetFileResponse = _reflection.GeneratedProtocolMessageType('GetFileResponse', (_message.Message,), {
   'DESCRIPTOR' : _GETFILERESPONSE,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.GetFileResponse)
   })
 _sym_db.RegisterMessage(GetFileResponse)
 
 DeleteFileRequest = _reflection.GeneratedProtocolMessageType('DeleteFileRequest', (_message.Message,), {
   'DESCRIPTOR' : _DELETEFILEREQUEST,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.DeleteFileRequest)
   })
 _sym_db.RegisterMessage(DeleteFileRequest)
 
 DeleteFileResponse = _reflection.GeneratedProtocolMessageType('DeleteFileResponse', (_message.Message,), {
   'DESCRIPTOR' : _DELETEFILERESPONSE,
-  '__module__' : 'file.file_pb2'
+  '__module__' : 'perxis.file.file_pb2'
   # @@protoc_insertion_point(class_scope:file.DeleteFileResponse)
   })
 _sym_db.RegisterMessage(DeleteFileResponse)
@@ -631,8 +631,8 @@ _FILESERVICE = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=793,
-  serialized_end=1212,
+  serialized_start=807,
+  serialized_end=1226,
   methods=[
   _descriptor.MethodDescriptor(
     name='StartUpload',
diff --git a/perxis/file/file_pb2_grpc.py b/perxis/file/file_pb2_grpc.py
index d8df23b..333d12b 100644
--- a/perxis/file/file_pb2_grpc.py
+++ b/perxis/file/file_pb2_grpc.py
@@ -2,8 +2,8 @@
 """Client and server classes corresponding to protobuf-defined services."""
 import grpc
 
-from file import file_pb2 as file_dot_file__pb2
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+from perxis.file import file_pb2 as perxis_dot_file_dot_file__pb2
 
 
 class FileServiceStub(object):
@@ -17,32 +17,32 @@ class FileServiceStub(object):
         """
         self.StartUpload = channel.unary_unary(
                 '/file.FileService/StartUpload',
-                request_serializer=file_dot_file__pb2.StartUploadRequest.SerializeToString,
-                response_deserializer=file_dot_file__pb2.StartUploadResponse.FromString,
+                request_serializer=perxis_dot_file_dot_file__pb2.StartUploadRequest.SerializeToString,
+                response_deserializer=perxis_dot_file_dot_file__pb2.StartUploadResponse.FromString,
                 )
         self.CompleteUpload = channel.unary_unary(
                 '/file.FileService/CompleteUpload',
-                request_serializer=file_dot_file__pb2.CompleteUploadRequest.SerializeToString,
-                response_deserializer=file_dot_file__pb2.CompleteUploadResponse.FromString,
+                request_serializer=perxis_dot_file_dot_file__pb2.CompleteUploadRequest.SerializeToString,
+                response_deserializer=perxis_dot_file_dot_file__pb2.CompleteUploadResponse.FromString,
                 )
         self.AbortUpload = channel.unary_unary(
                 '/file.FileService/AbortUpload',
-                request_serializer=file_dot_file__pb2.AbortUploadRequest.SerializeToString,
+                request_serializer=perxis_dot_file_dot_file__pb2.AbortUploadRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.MoveUpload = channel.unary_unary(
                 '/file.FileService/MoveUpload',
-                request_serializer=file_dot_file__pb2.MoveUploadRequest.SerializeToString,
-                response_deserializer=file_dot_file__pb2.MoveUploadResponse.FromString,
+                request_serializer=perxis_dot_file_dot_file__pb2.MoveUploadRequest.SerializeToString,
+                response_deserializer=perxis_dot_file_dot_file__pb2.MoveUploadResponse.FromString,
                 )
         self.GetFile = channel.unary_unary(
                 '/file.FileService/GetFile',
-                request_serializer=file_dot_file__pb2.GetFileRequest.SerializeToString,
-                response_deserializer=file_dot_file__pb2.GetFileResponse.FromString,
+                request_serializer=perxis_dot_file_dot_file__pb2.GetFileRequest.SerializeToString,
+                response_deserializer=perxis_dot_file_dot_file__pb2.GetFileResponse.FromString,
                 )
         self.DeleteFile = channel.unary_unary(
                 '/file.FileService/DeleteFile',
-                request_serializer=file_dot_file__pb2.DeleteFileRequest.SerializeToString,
+                request_serializer=perxis_dot_file_dot_file__pb2.DeleteFileRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -104,32 +104,32 @@ def add_FileServiceServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'StartUpload': grpc.unary_unary_rpc_method_handler(
                     servicer.StartUpload,
-                    request_deserializer=file_dot_file__pb2.StartUploadRequest.FromString,
-                    response_serializer=file_dot_file__pb2.StartUploadResponse.SerializeToString,
+                    request_deserializer=perxis_dot_file_dot_file__pb2.StartUploadRequest.FromString,
+                    response_serializer=perxis_dot_file_dot_file__pb2.StartUploadResponse.SerializeToString,
             ),
             'CompleteUpload': grpc.unary_unary_rpc_method_handler(
                     servicer.CompleteUpload,
-                    request_deserializer=file_dot_file__pb2.CompleteUploadRequest.FromString,
-                    response_serializer=file_dot_file__pb2.CompleteUploadResponse.SerializeToString,
+                    request_deserializer=perxis_dot_file_dot_file__pb2.CompleteUploadRequest.FromString,
+                    response_serializer=perxis_dot_file_dot_file__pb2.CompleteUploadResponse.SerializeToString,
             ),
             'AbortUpload': grpc.unary_unary_rpc_method_handler(
                     servicer.AbortUpload,
-                    request_deserializer=file_dot_file__pb2.AbortUploadRequest.FromString,
+                    request_deserializer=perxis_dot_file_dot_file__pb2.AbortUploadRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'MoveUpload': grpc.unary_unary_rpc_method_handler(
                     servicer.MoveUpload,
-                    request_deserializer=file_dot_file__pb2.MoveUploadRequest.FromString,
-                    response_serializer=file_dot_file__pb2.MoveUploadResponse.SerializeToString,
+                    request_deserializer=perxis_dot_file_dot_file__pb2.MoveUploadRequest.FromString,
+                    response_serializer=perxis_dot_file_dot_file__pb2.MoveUploadResponse.SerializeToString,
             ),
             'GetFile': grpc.unary_unary_rpc_method_handler(
                     servicer.GetFile,
-                    request_deserializer=file_dot_file__pb2.GetFileRequest.FromString,
-                    response_serializer=file_dot_file__pb2.GetFileResponse.SerializeToString,
+                    request_deserializer=perxis_dot_file_dot_file__pb2.GetFileRequest.FromString,
+                    response_serializer=perxis_dot_file_dot_file__pb2.GetFileResponse.SerializeToString,
             ),
             'DeleteFile': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteFile,
-                    request_deserializer=file_dot_file__pb2.DeleteFileRequest.FromString,
+                    request_deserializer=perxis_dot_file_dot_file__pb2.DeleteFileRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -154,8 +154,8 @@ class FileService(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/file.FileService/StartUpload',
-            file_dot_file__pb2.StartUploadRequest.SerializeToString,
-            file_dot_file__pb2.StartUploadResponse.FromString,
+            perxis_dot_file_dot_file__pb2.StartUploadRequest.SerializeToString,
+            perxis_dot_file_dot_file__pb2.StartUploadResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -171,8 +171,8 @@ class FileService(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/file.FileService/CompleteUpload',
-            file_dot_file__pb2.CompleteUploadRequest.SerializeToString,
-            file_dot_file__pb2.CompleteUploadResponse.FromString,
+            perxis_dot_file_dot_file__pb2.CompleteUploadRequest.SerializeToString,
+            perxis_dot_file_dot_file__pb2.CompleteUploadResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -188,7 +188,7 @@ class FileService(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/file.FileService/AbortUpload',
-            file_dot_file__pb2.AbortUploadRequest.SerializeToString,
+            perxis_dot_file_dot_file__pb2.AbortUploadRequest.SerializeToString,
             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -205,8 +205,8 @@ class FileService(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/file.FileService/MoveUpload',
-            file_dot_file__pb2.MoveUploadRequest.SerializeToString,
-            file_dot_file__pb2.MoveUploadResponse.FromString,
+            perxis_dot_file_dot_file__pb2.MoveUploadRequest.SerializeToString,
+            perxis_dot_file_dot_file__pb2.MoveUploadResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -222,8 +222,8 @@ class FileService(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/file.FileService/GetFile',
-            file_dot_file__pb2.GetFileRequest.SerializeToString,
-            file_dot_file__pb2.GetFileResponse.FromString,
+            perxis_dot_file_dot_file__pb2.GetFileRequest.SerializeToString,
+            perxis_dot_file_dot_file__pb2.GetFileResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
@@ -239,7 +239,7 @@ class FileService(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/file.FileService/DeleteFile',
-            file_dot_file__pb2.DeleteFileRequest.SerializeToString,
+            perxis_dot_file_dot_file__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/invitations/invitations_pb2.py b/perxis/invitations/invitations_pb2.py
index 3e18f5d..dde31a1 100644
--- a/perxis/invitations/invitations_pb2.py
+++ b/perxis/invitations/invitations_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: invitations/invitations.proto
+# source: perxis/invitations/invitations.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -17,12 +17,12 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='invitations/invitations.proto',
+  name='perxis/invitations/invitations.proto',
   package='content.invitations',
   syntax='proto3',
   serialized_options=b'Z8github.com/perxteam/perxis/proto/invitations;invitations',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1dinvitations/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:Z8github.com/perxteam/perxis/proto/invitations;invitationsb\x06proto3'
+  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:Z8github.com/perxteam/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,])
 
@@ -105,8 +105,8 @@ _INVITATION = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=149,
-  serialized_end=351,
+  serialized_start=156,
+  serialized_end=358,
 )
 
 
@@ -172,8 +172,8 @@ _FILTER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=353,
-  serialized_end=454,
+  serialized_start=360,
+  serialized_end=461,
 )
 
 
@@ -218,8 +218,8 @@ _FINDOPTIONS = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=456,
-  serialized_end=520,
+  serialized_start=463,
+  serialized_end=527,
 )
 
 
@@ -250,8 +250,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=522,
-  serialized_end=590,
+  serialized_start=529,
+  serialized_end=597,
 )
 
 
@@ -282,8 +282,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=592,
-  serialized_end=661,
+  serialized_start=599,
+  serialized_end=668,
 )
 
 
@@ -314,8 +314,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=663,
-  serialized_end=698,
+  serialized_start=670,
+  serialized_end=705,
 )
 
 
@@ -346,8 +346,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=700,
-  serialized_end=766,
+  serialized_start=707,
+  serialized_end=773,
 )
 
 
@@ -406,8 +406,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=769,
-  serialized_end=988,
+  serialized_start=776,
+  serialized_end=995,
 )
 
 
@@ -431,8 +431,8 @@ _UPDATEINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=990,
-  serialized_end=1016,
+  serialized_start=997,
+  serialized_end=1023,
 )
 
 
@@ -470,8 +470,8 @@ _ACCEPTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1018,
-  serialized_end=1073,
+  serialized_start=1025,
+  serialized_end=1080,
 )
 
 
@@ -495,8 +495,8 @@ _ACCEPTINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1075,
-  serialized_end=1101,
+  serialized_start=1082,
+  serialized_end=1108,
 )
 
 
@@ -534,8 +534,8 @@ _FINDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1103,
-  serialized_end=1209,
+  serialized_start=1110,
+  serialized_end=1216,
 )
 
 
@@ -573,8 +573,8 @@ _FINDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1211,
-  serialized_end=1294,
+  serialized_start=1218,
+  serialized_end=1301,
 )
 
 
@@ -605,8 +605,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1296,
-  serialized_end=1334,
+  serialized_start=1303,
+  serialized_end=1341,
 )
 
 
@@ -630,8 +630,8 @@ _DELETESPACEINVITATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1336,
-  serialized_end=1367,
+  serialized_start=1343,
+  serialized_end=1374,
 )
 
 _INVITATION.fields_by_name['created_at'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP
@@ -665,105 +665,105 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Invitation = _reflection.GeneratedProtocolMessageType('Invitation', (_message.Message,), {
   'DESCRIPTOR' : _INVITATION,
-  '__module__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__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__' : 'invitations.invitations_pb2'
+  '__module__' : 'perxis.invitations.invitations_pb2'
   # @@protoc_insertion_point(class_scope:content.invitations.DeleteSpaceInvitationResponse)
   })
 _sym_db.RegisterMessage(DeleteSpaceInvitationResponse)
@@ -778,8 +778,8 @@ _INVITATIONS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1370,
-  serialized_end=1767,
+  serialized_start=1377,
+  serialized_end=1774,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/invitations/invitations_pb2_grpc.py b/perxis/invitations/invitations_pb2_grpc.py
index a0a7760..8a13a95 100644
--- a/perxis/invitations/invitations_pb2_grpc.py
+++ b/perxis/invitations/invitations_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from invitations import invitations_pb2 as invitations_dot_invitations__pb2
+from perxis.invitations import invitations_pb2 as perxis_dot_invitations_dot_invitations__pb2
 
 
 class InvitationsStub(object):
@@ -17,27 +17,27 @@ class InvitationsStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.invitations.Invitations/Create',
-                request_serializer=invitations_dot_invitations__pb2.CreateRequest.SerializeToString,
-                response_deserializer=invitations_dot_invitations__pb2.CreateResponse.FromString,
+                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=invitations_dot_invitations__pb2.GetRequest.SerializeToString,
-                response_deserializer=invitations_dot_invitations__pb2.GetResponse.FromString,
+                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=invitations_dot_invitations__pb2.AcceptRequest.SerializeToString,
+                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=invitations_dot_invitations__pb2.FindRequest.SerializeToString,
-                response_deserializer=invitations_dot_invitations__pb2.FindResponse.FromString,
+                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=invitations_dot_invitations__pb2.DeleteRequest.SerializeToString,
+                request_serializer=perxis_dot_invitations_dot_invitations__pb2.DeleteRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -87,27 +87,27 @@ def add_InvitationsServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=invitations_dot_invitations__pb2.CreateRequest.FromString,
-                    response_serializer=invitations_dot_invitations__pb2.CreateResponse.SerializeToString,
+                    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=invitations_dot_invitations__pb2.GetRequest.FromString,
-                    response_serializer=invitations_dot_invitations__pb2.GetResponse.SerializeToString,
+                    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=invitations_dot_invitations__pb2.AcceptRequest.FromString,
+                    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=invitations_dot_invitations__pb2.FindRequest.FromString,
-                    response_serializer=invitations_dot_invitations__pb2.FindResponse.SerializeToString,
+                    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=invitations_dot_invitations__pb2.DeleteRequest.FromString,
+                    request_deserializer=perxis_dot_invitations_dot_invitations__pb2.DeleteRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -132,8 +132,8 @@ class Invitations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Create',
-            invitations_dot_invitations__pb2.CreateRequest.SerializeToString,
-            invitations_dot_invitations__pb2.CreateResponse.FromString,
+            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)
 
@@ -149,8 +149,8 @@ class Invitations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Get',
-            invitations_dot_invitations__pb2.GetRequest.SerializeToString,
-            invitations_dot_invitations__pb2.GetResponse.FromString,
+            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)
 
@@ -166,7 +166,7 @@ class Invitations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Accept',
-            invitations_dot_invitations__pb2.AcceptRequest.SerializeToString,
+            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)
@@ -183,8 +183,8 @@ class Invitations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Find',
-            invitations_dot_invitations__pb2.FindRequest.SerializeToString,
-            invitations_dot_invitations__pb2.FindResponse.FromString,
+            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)
 
@@ -200,7 +200,7 @@ class Invitations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.invitations.Invitations/Delete',
-            invitations_dot_invitations__pb2.DeleteRequest.SerializeToString,
+            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/__init__.py b/perxis/items/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/perxis/items/items_pb2.py b/perxis/items/items_pb2.py
index b29376b..a44076d 100644
--- a/perxis/items/items_pb2.py
+++ b/perxis/items/items_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: items/items.proto
+# source: perxis/items/items.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,20 +12,20 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__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='items/items.proto',
+  name='perxis/items/items.proto',
   package='content.items',
   syntax='proto3',
   serialized_options=b'Z,github.com/perxteam/perxis/proto/items;items',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x11items/items.proto\x12\rcontent.items\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xb1\x04\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.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12%\n\x04\x64\x61ta\x18\x08 \x01(\x0b\x32\x17.google.protobuf.Struct\x12;\n\x0ctranslations\x18\t \x03(\x0b\x32%.content.items.Item.TranslationsEntry\x12\x13\n\x0brevision_id\x18\n \x01(\t\x12\x30\n\x0cpublished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0cpublished_by\x18\x0c \x01(\t\x12/\n\x0b\x61rchived_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x61rchived_by\x18\x0e \x01(\t\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\"2\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\"2\n\rCreateRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"6\n\x0e\x43reateResponse\x12$\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"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\"\x93\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\x13.common.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\"2\n\rUpdateRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"Y\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\"3\n\x0ePublishRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\\\n\x10UnpublishRequest\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\"r\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\x11\n\tlocale_id\x18\x04 \x01(\t\x12\x0f\n\x07item_id\x18\x05 \x01(\t\"9\n\x14GetPublishedResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\xaf\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\x11\n\tlocale_id\x18\x04 \x01(\t\x12%\n\x06\x66ilter\x18\x05 \x01(\x0b\x32\x15.content.items.Filter\x12$\n\x07options\x18\x06 \x01(\x0b\x32\x13.common.FindOptions\"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\"`\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\";\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\"\\\n\x10UnarchiveRequest\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\"\x9b\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\x05 \x01(\x0b\x32\x15.content.items.Filter\x12$\n\x07options\x18\x06 \x01(\x0b\x32\x13.common.FindOptions\"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\xb9\x08\n\x05Items\x12G\n\x06\x43reate\x12\x1c.content.items.CreateRequest\x1a\x1d.content.items.CreateResponse\"\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\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,github.com/perxteam/perxis/proto/items;itemsb\x06proto3'
+  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\"\xb1\x04\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.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ncreated_by\x18\x07 \x01(\t\x12%\n\x04\x64\x61ta\x18\x08 \x01(\x0b\x32\x17.google.protobuf.Struct\x12;\n\x0ctranslations\x18\t \x03(\x0b\x32%.content.items.Item.TranslationsEntry\x12\x13\n\x0brevision_id\x18\n \x01(\t\x12\x30\n\x0cpublished_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0cpublished_by\x18\x0c \x01(\t\x12/\n\x0b\x61rchived_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x61rchived_by\x18\x0e \x01(\t\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\"2\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\"2\n\rCreateRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"6\n\x0e\x43reateResponse\x12$\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"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\"\x93\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\x13.common.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\"2\n\rUpdateRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"Y\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\"3\n\x0ePublishRequest\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\\\n\x10UnpublishRequest\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\"r\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\x11\n\tlocale_id\x18\x04 \x01(\t\x12\x0f\n\x07item_id\x18\x05 \x01(\t\"9\n\x14GetPublishedResponse\x12!\n\x04item\x18\x01 \x01(\x0b\x32\x13.content.items.Item\"\xaf\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\x11\n\tlocale_id\x18\x04 \x01(\t\x12%\n\x06\x66ilter\x18\x05 \x01(\x0b\x32\x15.content.items.Filter\x12$\n\x07options\x18\x06 \x01(\x0b\x32\x13.common.FindOptions\"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\"`\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\";\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\"\\\n\x10UnarchiveRequest\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\"\x9b\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\x05 \x01(\x0b\x32\x15.content.items.Filter\x12$\n\x07options\x18\x06 \x01(\x0b\x32\x13.common.FindOptions\"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\xb9\x08\n\x05Items\x12G\n\x06\x43reate\x12\x1c.content.items.CreateRequest\x1a\x1d.content.items.CreateResponse\"\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\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,github.com/perxteam/perxis/proto/items;itemsb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,])
+  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,])
 
 
 
@@ -49,12 +49,147 @@ _ITEM_STATE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=678,
-  serialized_end=711,
+  serialized_start=902,
+  serialized_end=935,
 )
 _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,
+)
+
+
 _ITEM_TRANSLATIONSENTRY = _descriptor.Descriptor(
   name='TranslationsEntry',
   full_name='content.items.Item.TranslationsEntry',
@@ -89,8 +224,8 @@ _ITEM_TRANSLATIONSENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=600,
-  serialized_end=676,
+  serialized_start=824,
+  serialized_end=900,
 )
 
 _ITEM = _descriptor.Descriptor(
@@ -212,8 +347,8 @@ _ITEM = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=150,
-  serialized_end=711,
+  serialized_start=374,
+  serialized_end=935,
 )
 
 
@@ -251,8 +386,8 @@ _FILTER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=713,
-  serialized_end=763,
+  serialized_start=937,
+  serialized_end=987,
 )
 
 
@@ -283,8 +418,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=765,
-  serialized_end=815,
+  serialized_start=989,
+  serialized_end=1039,
 )
 
 
@@ -315,8 +450,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=817,
-  serialized_end=871,
+  serialized_start=1041,
+  serialized_end=1095,
 )
 
 
@@ -368,8 +503,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=873,
-  serialized_end=959,
+  serialized_start=1097,
+  serialized_end=1183,
 )
 
 
@@ -400,8 +535,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=961,
-  serialized_end=1009,
+  serialized_start=1185,
+  serialized_end=1233,
 )
 
 
@@ -460,8 +595,8 @@ _FINDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1012,
-  serialized_end=1159,
+  serialized_start=1236,
+  serialized_end=1383,
 )
 
 
@@ -499,8 +634,8 @@ _FINDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1161,
-  serialized_end=1226,
+  serialized_start=1385,
+  serialized_end=1450,
 )
 
 
@@ -531,8 +666,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1228,
-  serialized_end=1278,
+  serialized_start=1452,
+  serialized_end=1502,
 )
 
 
@@ -584,8 +719,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1280,
-  serialized_end=1369,
+  serialized_start=1504,
+  serialized_end=1593,
 )
 
 
@@ -616,8 +751,8 @@ _PUBLISHREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1371,
-  serialized_end=1422,
+  serialized_start=1595,
+  serialized_end=1646,
 )
 
 
@@ -669,8 +804,8 @@ _UNPUBLISHREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1424,
-  serialized_end=1516,
+  serialized_start=1648,
+  serialized_end=1740,
 )
 
 
@@ -729,8 +864,8 @@ _GETPUBLISHEDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1518,
-  serialized_end=1632,
+  serialized_start=1742,
+  serialized_end=1856,
 )
 
 
@@ -761,8 +896,8 @@ _GETPUBLISHEDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1634,
-  serialized_end=1691,
+  serialized_start=1858,
+  serialized_end=1915,
 )
 
 
@@ -828,8 +963,8 @@ _FINDPUBLISHEDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1694,
-  serialized_end=1869,
+  serialized_start=1918,
+  serialized_end=2093,
 )
 
 
@@ -867,8 +1002,8 @@ _FINDPUBLISHEDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1871,
-  serialized_end=1945,
+  serialized_start=2095,
+  serialized_end=2169,
 )
 
 
@@ -927,8 +1062,8 @@ _GETREVISIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1947,
-  serialized_end=2062,
+  serialized_start=2171,
+  serialized_end=2286,
 )
 
 
@@ -959,8 +1094,8 @@ _GETREVISIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2064,
-  serialized_end=2120,
+  serialized_start=2288,
+  serialized_end=2344,
 )
 
 
@@ -1012,8 +1147,8 @@ _LISTREVISIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2122,
-  serialized_end=2218,
+  serialized_start=2346,
+  serialized_end=2442,
 )
 
 
@@ -1044,8 +1179,8 @@ _LISTREVISIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2220,
-  serialized_end=2279,
+  serialized_start=2444,
+  serialized_end=2503,
 )
 
 
@@ -1076,8 +1211,8 @@ _ARCHIVEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2281,
-  serialized_end=2332,
+  serialized_start=2505,
+  serialized_end=2556,
 )
 
 
@@ -1129,8 +1264,8 @@ _UNARCHIVEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2334,
-  serialized_end=2426,
+  serialized_start=2558,
+  serialized_end=2650,
 )
 
 
@@ -1189,8 +1324,8 @@ _FINDARCHIVEDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2429,
-  serialized_end=2584,
+  serialized_start=2653,
+  serialized_end=2808,
 )
 
 
@@ -1228,10 +1363,13 @@ _FINDARCHIVEDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2586,
-  serialized_end=2659,
+  serialized_start=2810,
+  serialized_end=2883,
 )
 
+_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
@@ -1241,25 +1379,29 @@ _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_STATE.containing_type = _ITEM
-_FILTER.fields_by_name['data'].message_type = common_dot_common__pb2._FILTER
+_FILTER.fields_by_name['data'].message_type = perxis_dot_common_dot_common__pb2._FILTER
 _CREATEREQUEST.fields_by_name['item'].message_type = _ITEM
 _CREATERESPONSE.fields_by_name['created'].message_type = _ITEM
 _GETRESPONSE.fields_by_name['item'].message_type = _ITEM
 _FINDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDREQUEST.fields_by_name['options'].message_type = common_dot_common__pb2._FINDOPTIONS
+_FINDREQUEST.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
 _FINDRESPONSE.fields_by_name['items'].message_type = _ITEM
 _UPDATEREQUEST.fields_by_name['item'].message_type = _ITEM
 _PUBLISHREQUEST.fields_by_name['item'].message_type = _ITEM
 _GETPUBLISHEDRESPONSE.fields_by_name['item'].message_type = _ITEM
 _FINDPUBLISHEDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDPUBLISHEDREQUEST.fields_by_name['options'].message_type = common_dot_common__pb2._FINDOPTIONS
+_FINDPUBLISHEDREQUEST.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
 _FINDPUBLISHEDRESPONSE.fields_by_name['items'].message_type = _ITEM
 _GETREVISIONRESPONSE.fields_by_name['item'].message_type = _ITEM
 _LISTREVISIONSRESPONSE.fields_by_name['items'].message_type = _ITEM
 _ARCHIVEREQUEST.fields_by_name['item'].message_type = _ITEM
 _FINDARCHIVEDREQUEST.fields_by_name['filter'].message_type = _FILTER
-_FINDARCHIVEDREQUEST.fields_by_name['options'].message_type = common_dot_common__pb2._FINDOPTIONS
+_FINDARCHIVEDREQUEST.fields_by_name['options'].message_type = perxis_dot_common_dot_common__pb2._FINDOPTIONS
 _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['Item'] = _ITEM
 DESCRIPTOR.message_types_by_name['Filter'] = _FILTER
 DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
@@ -1286,16 +1428,44 @@ 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)
+
 Item = _reflection.GeneratedProtocolMessageType('Item', (_message.Message,), {
 
   'TranslationsEntry' : _reflection.GeneratedProtocolMessageType('TranslationsEntry', (_message.Message,), {
     'DESCRIPTOR' : _ITEM_TRANSLATIONSENTRY,
-    '__module__' : 'items.items_pb2'
+    '__module__' : 'perxis.items.items_pb2'
     # @@protoc_insertion_point(class_scope:content.items.Item.TranslationsEntry)
     })
   ,
   'DESCRIPTOR' : _ITEM,
-  '__module__' : 'items.items_pb2'
+  '__module__' : 'perxis.items.items_pb2'
   # @@protoc_insertion_point(class_scope:content.items.Item)
   })
 _sym_db.RegisterMessage(Item)
@@ -1303,161 +1473,161 @@ _sym_db.RegisterMessage(Item.TranslationsEntry)
 
 Filter = _reflection.GeneratedProtocolMessageType('Filter', (_message.Message,), {
   'DESCRIPTOR' : _FILTER,
-  '__module__' : 'items.items_pb2'
+  '__module__' : 'perxis.items.items_pb2'
   # @@protoc_insertion_point(class_scope:content.items.Filter)
   })
 _sym_db.RegisterMessage(Filter)
 
 CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), {
   'DESCRIPTOR' : _CREATEREQUEST,
-  '__module__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__module__' : 'perxis.items.items_pb2'
   # @@protoc_insertion_point(class_scope:content.items.CreateResponse)
   })
 _sym_db.RegisterMessage(CreateResponse)
 
 GetRequest = _reflection.GeneratedProtocolMessageType('GetRequest', (_message.Message,), {
   'DESCRIPTOR' : _GETREQUEST,
-  '__module__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__module__' : 'perxis.items.items_pb2'
   # @@protoc_insertion_point(class_scope:content.items.DeleteRequest)
   })
 _sym_db.RegisterMessage(DeleteRequest)
 
 PublishRequest = _reflection.GeneratedProtocolMessageType('PublishRequest', (_message.Message,), {
   'DESCRIPTOR' : _PUBLISHREQUEST,
-  '__module__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__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__' : 'items.items_pb2'
+  '__module__' : 'perxis.items.items_pb2'
   # @@protoc_insertion_point(class_scope:content.items.FindArchivedResponse)
   })
 _sym_db.RegisterMessage(FindArchivedResponse)
@@ -1473,8 +1643,8 @@ _ITEMS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=2662,
-  serialized_end=3743,
+  serialized_start=2886,
+  serialized_end=3967,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/items/items_pb2_grpc.py b/perxis/items/items_pb2_grpc.py
index ba84d90..6a09d34 100644
--- a/perxis/items/items_pb2_grpc.py
+++ b/perxis/items/items_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from items import items_pb2 as items_dot_items__pb2
+from perxis.items import items_pb2 as perxis_dot_items_dot_items__pb2
 
 
 class ItemsStub(object):
@@ -17,72 +17,72 @@ class ItemsStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.items.Items/Create',
-                request_serializer=items_dot_items__pb2.CreateRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.CreateResponse.FromString,
+                request_serializer=perxis_dot_items_dot_items__pb2.CreateRequest.SerializeToString,
+                response_deserializer=perxis_dot_items_dot_items__pb2.CreateResponse.FromString,
                 )
         self.Get = channel.unary_unary(
                 '/content.items.Items/Get',
-                request_serializer=items_dot_items__pb2.GetRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.GetResponse.FromString,
+                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=items_dot_items__pb2.FindRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.FindResponse.FromString,
+                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=items_dot_items__pb2.UpdateRequest.SerializeToString,
+                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=items_dot_items__pb2.DeleteRequest.SerializeToString,
+                request_serializer=perxis_dot_items_dot_items__pb2.DeleteRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
         self.Publish = channel.unary_unary(
                 '/content.items.Items/Publish',
-                request_serializer=items_dot_items__pb2.PublishRequest.SerializeToString,
+                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=items_dot_items__pb2.UnpublishRequest.SerializeToString,
+                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=items_dot_items__pb2.GetPublishedRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.GetPublishedResponse.FromString,
+                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=items_dot_items__pb2.FindPublishedRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.FindPublishedResponse.FromString,
+                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=items_dot_items__pb2.GetRevisionRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.GetRevisionResponse.FromString,
+                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=items_dot_items__pb2.ListRevisionsRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.ListRevisionsResponse.FromString,
+                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=items_dot_items__pb2.ArchiveRequest.SerializeToString,
+                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=items_dot_items__pb2.FindArchivedRequest.SerializeToString,
-                response_deserializer=items_dot_items__pb2.FindArchivedResponse.FromString,
+                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=items_dot_items__pb2.UnarchiveRequest.SerializeToString,
+                request_serializer=perxis_dot_items_dot_items__pb2.UnarchiveRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -179,72 +179,72 @@ def add_ItemsServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=items_dot_items__pb2.CreateRequest.FromString,
-                    response_serializer=items_dot_items__pb2.CreateResponse.SerializeToString,
+                    request_deserializer=perxis_dot_items_dot_items__pb2.CreateRequest.FromString,
+                    response_serializer=perxis_dot_items_dot_items__pb2.CreateResponse.SerializeToString,
             ),
             'Get': grpc.unary_unary_rpc_method_handler(
                     servicer.Get,
-                    request_deserializer=items_dot_items__pb2.GetRequest.FromString,
-                    response_serializer=items_dot_items__pb2.GetResponse.SerializeToString,
+                    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=items_dot_items__pb2.FindRequest.FromString,
-                    response_serializer=items_dot_items__pb2.FindResponse.SerializeToString,
+                    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=items_dot_items__pb2.UpdateRequest.FromString,
+                    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=items_dot_items__pb2.DeleteRequest.FromString,
+                    request_deserializer=perxis_dot_items_dot_items__pb2.DeleteRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
             'Publish': grpc.unary_unary_rpc_method_handler(
                     servicer.Publish,
-                    request_deserializer=items_dot_items__pb2.PublishRequest.FromString,
+                    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=items_dot_items__pb2.UnpublishRequest.FromString,
+                    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=items_dot_items__pb2.GetPublishedRequest.FromString,
-                    response_serializer=items_dot_items__pb2.GetPublishedResponse.SerializeToString,
+                    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=items_dot_items__pb2.FindPublishedRequest.FromString,
-                    response_serializer=items_dot_items__pb2.FindPublishedResponse.SerializeToString,
+                    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=items_dot_items__pb2.GetRevisionRequest.FromString,
-                    response_serializer=items_dot_items__pb2.GetRevisionResponse.SerializeToString,
+                    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=items_dot_items__pb2.ListRevisionsRequest.FromString,
-                    response_serializer=items_dot_items__pb2.ListRevisionsResponse.SerializeToString,
+                    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=items_dot_items__pb2.ArchiveRequest.FromString,
+                    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=items_dot_items__pb2.FindArchivedRequest.FromString,
-                    response_serializer=items_dot_items__pb2.FindArchivedResponse.SerializeToString,
+                    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=items_dot_items__pb2.UnarchiveRequest.FromString,
+                    request_deserializer=perxis_dot_items_dot_items__pb2.UnarchiveRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -269,8 +269,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Create',
-            items_dot_items__pb2.CreateRequest.SerializeToString,
-            items_dot_items__pb2.CreateResponse.FromString,
+            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)
 
@@ -286,8 +286,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Get',
-            items_dot_items__pb2.GetRequest.SerializeToString,
-            items_dot_items__pb2.GetResponse.FromString,
+            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)
 
@@ -303,8 +303,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Find',
-            items_dot_items__pb2.FindRequest.SerializeToString,
-            items_dot_items__pb2.FindResponse.FromString,
+            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)
 
@@ -320,7 +320,7 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Update',
-            items_dot_items__pb2.UpdateRequest.SerializeToString,
+            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)
@@ -337,7 +337,7 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Delete',
-            items_dot_items__pb2.DeleteRequest.SerializeToString,
+            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)
@@ -354,7 +354,7 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Publish',
-            items_dot_items__pb2.PublishRequest.SerializeToString,
+            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)
@@ -371,7 +371,7 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Unpublish',
-            items_dot_items__pb2.UnpublishRequest.SerializeToString,
+            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)
@@ -388,8 +388,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/GetPublished',
-            items_dot_items__pb2.GetPublishedRequest.SerializeToString,
-            items_dot_items__pb2.GetPublishedResponse.FromString,
+            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)
 
@@ -405,8 +405,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/FindPublished',
-            items_dot_items__pb2.FindPublishedRequest.SerializeToString,
-            items_dot_items__pb2.FindPublishedResponse.FromString,
+            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)
 
@@ -422,8 +422,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/GetRevision',
-            items_dot_items__pb2.GetRevisionRequest.SerializeToString,
-            items_dot_items__pb2.GetRevisionResponse.FromString,
+            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)
 
@@ -439,8 +439,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/ListRevisions',
-            items_dot_items__pb2.ListRevisionsRequest.SerializeToString,
-            items_dot_items__pb2.ListRevisionsResponse.FromString,
+            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)
 
@@ -456,7 +456,7 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Archive',
-            items_dot_items__pb2.ArchiveRequest.SerializeToString,
+            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)
@@ -473,8 +473,8 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/FindArchived',
-            items_dot_items__pb2.FindArchivedRequest.SerializeToString,
-            items_dot_items__pb2.FindArchivedResponse.FromString,
+            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)
 
@@ -490,7 +490,7 @@ class Items(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.items.Items/Unarchive',
-            items_dot_items__pb2.UnarchiveRequest.SerializeToString,
+            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
index d162bea..df3bca9 100644
--- a/perxis/locales/locales_pb2.py
+++ b/perxis/locales/locales_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: locales/locales.proto
+# source: perxis/locales/locales.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -15,12 +15,12 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='locales/locales.proto',
+  name='perxis/locales/locales.proto',
   package='content.locales',
   syntax='proto3',
   serialized_options=b'Z0github.com/perxteam/perxis/proto/locales;locales',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x15locales/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\x32Z0github.com/perxteam/perxis/proto/locales;localesb\x06proto3'
+  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\x32Z0github.com/perxteam/perxis/proto/locales;localesb\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
 
@@ -68,8 +68,8 @@ _LOCALE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=71,
-  serialized_end=123,
+  serialized_start=78,
+  serialized_end=130,
 )
 
 
@@ -100,8 +100,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=125,
-  serialized_end=181,
+  serialized_start=132,
+  serialized_end=188,
 )
 
 
@@ -132,8 +132,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=183,
-  serialized_end=240,
+  serialized_start=190,
+  serialized_end=247,
 )
 
 
@@ -164,8 +164,8 @@ _LISTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=242,
-  serialized_end=273,
+  serialized_start=249,
+  serialized_end=280,
 )
 
 
@@ -196,8 +196,8 @@ _LISTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=275,
-  serialized_end=331,
+  serialized_start=282,
+  serialized_end=338,
 )
 
 
@@ -235,8 +235,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=333,
-  serialized_end=385,
+  serialized_start=340,
+  serialized_end=392,
 )
 
 _CREATEREQUEST.fields_by_name['locale'].message_type = _LOCALE
@@ -252,42 +252,42 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Locale = _reflection.GeneratedProtocolMessageType('Locale', (_message.Message,), {
   'DESCRIPTOR' : _LOCALE,
-  '__module__' : 'locales.locales_pb2'
+  '__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__' : 'locales.locales_pb2'
+  '__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__' : 'locales.locales_pb2'
+  '__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__' : 'locales.locales_pb2'
+  '__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__' : 'locales.locales_pb2'
+  '__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__' : 'locales.locales_pb2'
+  '__module__' : 'perxis.locales.locales_pb2'
   # @@protoc_insertion_point(class_scope:content.locales.DeleteRequest)
   })
 _sym_db.RegisterMessage(DeleteRequest)
@@ -302,8 +302,8 @@ _LOCALES = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=388,
-  serialized_end=613,
+  serialized_start=395,
+  serialized_end=620,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/locales/locales_pb2_grpc.py b/perxis/locales/locales_pb2_grpc.py
index 4a75d07..b9cc4f3 100644
--- a/perxis/locales/locales_pb2_grpc.py
+++ b/perxis/locales/locales_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from locales import locales_pb2 as locales_dot_locales__pb2
+from perxis.locales import locales_pb2 as perxis_dot_locales_dot_locales__pb2
 
 
 class LocalesStub(object):
@@ -17,17 +17,17 @@ class LocalesStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.locales.Locales/Create',
-                request_serializer=locales_dot_locales__pb2.CreateRequest.SerializeToString,
-                response_deserializer=locales_dot_locales__pb2.CreateResponse.FromString,
+                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=locales_dot_locales__pb2.ListRequest.SerializeToString,
-                response_deserializer=locales_dot_locales__pb2.ListResponse.FromString,
+                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=locales_dot_locales__pb2.DeleteRequest.SerializeToString,
+                request_serializer=perxis_dot_locales_dot_locales__pb2.DeleteRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -58,17 +58,17 @@ def add_LocalesServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=locales_dot_locales__pb2.CreateRequest.FromString,
-                    response_serializer=locales_dot_locales__pb2.CreateResponse.SerializeToString,
+                    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=locales_dot_locales__pb2.ListRequest.FromString,
-                    response_serializer=locales_dot_locales__pb2.ListResponse.SerializeToString,
+                    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=locales_dot_locales__pb2.DeleteRequest.FromString,
+                    request_deserializer=perxis_dot_locales_dot_locales__pb2.DeleteRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -93,8 +93,8 @@ class Locales(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.locales.Locales/Create',
-            locales_dot_locales__pb2.CreateRequest.SerializeToString,
-            locales_dot_locales__pb2.CreateResponse.FromString,
+            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)
 
@@ -110,8 +110,8 @@ class Locales(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.locales.Locales/List',
-            locales_dot_locales__pb2.ListRequest.SerializeToString,
-            locales_dot_locales__pb2.ListResponse.FromString,
+            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)
 
@@ -127,7 +127,7 @@ class Locales(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.locales.Locales/Delete',
-            locales_dot_locales__pb2.DeleteRequest.SerializeToString,
+            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
index 265f18a..1da6b28 100644
--- a/perxis/members/members_pb2.py
+++ b/perxis/members/members_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: members/members.proto
+# source: perxis/members/members.proto
 """Generated protocol buffer code."""
 from google.protobuf.internal import enum_type_wrapper
 from google.protobuf import descriptor as _descriptor
@@ -13,18 +13,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='members/members.proto',
+  name='perxis/members/members.proto',
   package='account.members',
   syntax='proto3',
   serialized_options=b'Z0github.com/perxteam/perxis/proto/members;members',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x15members/members.proto\x12\x0f\x61\x63\x63ount.members\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/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*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\x32\x64\n\x08Observer\x12X\n\x11OnCollaboratorSet\x12).account.members.OnCollaboratorSetRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x32Z0github.com/perxteam/perxis/proto/members;membersb\x06proto3'
+  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*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\x32\x64\n\x08Observer\x12X\n\x11OnCollaboratorSet\x12).account.members.OnCollaboratorSetRequest\x1a\x16.google.protobuf.Empty\"\x00\x42\x32Z0github.com/perxteam/perxis/proto/members;membersb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 _ROLE = _descriptor.EnumDescriptor(
   name='Role',
@@ -56,8 +56,8 @@ _ROLE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=702,
-  serialized_end=758,
+  serialized_start=716,
+  serialized_end=772,
 )
 _sym_db.RegisterEnumDescriptor(_ROLE)
 
@@ -110,8 +110,8 @@ _MEMBER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=92,
-  serialized_end=170,
+  serialized_start=106,
+  serialized_end=184,
 )
 
 
@@ -156,8 +156,8 @@ _SETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=172,
-  serialized_end=254,
+  serialized_start=186,
+  serialized_end=268,
 )
 
 
@@ -195,8 +195,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=256,
-  serialized_end=301,
+  serialized_start=270,
+  serialized_end=315,
 )
 
 
@@ -227,8 +227,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=303,
-  serialized_end=353,
+  serialized_start=317,
+  serialized_end=367,
 )
 
 
@@ -266,8 +266,8 @@ _REMOVEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=355,
-  serialized_end=403,
+  serialized_start=369,
+  serialized_end=417,
 )
 
 
@@ -298,8 +298,8 @@ _LISTMEMBERSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=405,
-  serialized_end=441,
+  serialized_start=419,
+  serialized_end=455,
 )
 
 
@@ -330,8 +330,8 @@ _LISTMEMBERSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=443,
-  serialized_end=506,
+  serialized_start=457,
+  serialized_end=520,
 )
 
 
@@ -362,8 +362,8 @@ _LISTORGANIZATIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=508,
-  serialized_end=551,
+  serialized_start=522,
+  serialized_end=565,
 )
 
 
@@ -394,8 +394,8 @@ _LISTORGANIZATIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=553,
-  serialized_end=628,
+  serialized_start=567,
+  serialized_end=642,
 )
 
 
@@ -426,8 +426,8 @@ _ONCOLLABORATORSETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=630,
-  serialized_end=700,
+  serialized_start=644,
+  serialized_end=714,
 )
 
 _MEMBER.fields_by_name['role'].enum_type = _ROLE
@@ -435,7 +435,7 @@ _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 = common_dot_common__pb2._COLLABORATOR
+_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
@@ -451,70 +451,70 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Member = _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), {
   'DESCRIPTOR' : _MEMBER,
-  '__module__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__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__' : 'members.members_pb2'
+  '__module__' : 'perxis.members.members_pb2'
   # @@protoc_insertion_point(class_scope:account.members.OnCollaboratorSetRequest)
   })
 _sym_db.RegisterMessage(OnCollaboratorSetRequest)
@@ -529,8 +529,8 @@ _MEMBERS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=761,
-  serialized_end=1170,
+  serialized_start=775,
+  serialized_end=1184,
   methods=[
   _descriptor.MethodDescriptor(
     name='Set',
@@ -595,8 +595,8 @@ _OBSERVER = _descriptor.ServiceDescriptor(
   index=1,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1172,
-  serialized_end=1272,
+  serialized_start=1186,
+  serialized_end=1286,
   methods=[
   _descriptor.MethodDescriptor(
     name='OnCollaboratorSet',
diff --git a/perxis/members/members_pb2_grpc.py b/perxis/members/members_pb2_grpc.py
index c535b40..9faf20c 100644
--- a/perxis/members/members_pb2_grpc.py
+++ b/perxis/members/members_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from members import members_pb2 as members_dot_members__pb2
+from perxis.members import members_pb2 as perxis_dot_members_dot_members__pb2
 
 
 class MembersStub(object):
@@ -17,28 +17,28 @@ class MembersStub(object):
         """
         self.Set = channel.unary_unary(
                 '/account.members.Members/Set',
-                request_serializer=members_dot_members__pb2.SetRequest.SerializeToString,
+                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=members_dot_members__pb2.GetRequest.SerializeToString,
-                response_deserializer=members_dot_members__pb2.GetResponse.FromString,
+                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=members_dot_members__pb2.RemoveRequest.SerializeToString,
+                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=members_dot_members__pb2.ListMembersRequest.SerializeToString,
-                response_deserializer=members_dot_members__pb2.ListMembersResponse.FromString,
+                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=members_dot_members__pb2.ListOrganizationsRequest.SerializeToString,
-                response_deserializer=members_dot_members__pb2.ListOrganizationsResponse.FromString,
+                request_serializer=perxis_dot_members_dot_members__pb2.ListOrganizationsRequest.SerializeToString,
+                response_deserializer=perxis_dot_members_dot_members__pb2.ListOrganizationsResponse.FromString,
                 )
 
 
@@ -80,28 +80,28 @@ def add_MembersServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Set': grpc.unary_unary_rpc_method_handler(
                     servicer.Set,
-                    request_deserializer=members_dot_members__pb2.SetRequest.FromString,
+                    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=members_dot_members__pb2.GetRequest.FromString,
-                    response_serializer=members_dot_members__pb2.GetResponse.SerializeToString,
+                    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=members_dot_members__pb2.RemoveRequest.FromString,
+                    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=members_dot_members__pb2.ListMembersRequest.FromString,
-                    response_serializer=members_dot_members__pb2.ListMembersResponse.SerializeToString,
+                    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=members_dot_members__pb2.ListOrganizationsRequest.FromString,
-                    response_serializer=members_dot_members__pb2.ListOrganizationsResponse.SerializeToString,
+                    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(
@@ -125,7 +125,7 @@ class Members(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.members.Members/Set',
-            members_dot_members__pb2.SetRequest.SerializeToString,
+            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)
@@ -142,8 +142,8 @@ class Members(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.members.Members/Get',
-            members_dot_members__pb2.GetRequest.SerializeToString,
-            members_dot_members__pb2.GetResponse.FromString,
+            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)
 
@@ -159,7 +159,7 @@ class Members(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.members.Members/Remove',
-            members_dot_members__pb2.RemoveRequest.SerializeToString,
+            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)
@@ -176,8 +176,8 @@ class Members(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.members.Members/ListMembers',
-            members_dot_members__pb2.ListMembersRequest.SerializeToString,
-            members_dot_members__pb2.ListMembersResponse.FromString,
+            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)
 
@@ -193,8 +193,8 @@ class Members(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.members.Members/ListOrganizations',
-            members_dot_members__pb2.ListOrganizationsRequest.SerializeToString,
-            members_dot_members__pb2.ListOrganizationsResponse.FromString,
+            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)
 
@@ -210,7 +210,7 @@ class ObserverStub(object):
         """
         self.OnCollaboratorSet = channel.unary_unary(
                 '/account.members.Observer/OnCollaboratorSet',
-                request_serializer=members_dot_members__pb2.OnCollaboratorSetRequest.SerializeToString,
+                request_serializer=perxis_dot_members_dot_members__pb2.OnCollaboratorSetRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -229,7 +229,7 @@ def add_ObserverServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'OnCollaboratorSet': grpc.unary_unary_rpc_method_handler(
                     servicer.OnCollaboratorSet,
-                    request_deserializer=members_dot_members__pb2.OnCollaboratorSetRequest.FromString,
+                    request_deserializer=perxis_dot_members_dot_members__pb2.OnCollaboratorSetRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -254,7 +254,7 @@ class Observer(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.members.Observer/OnCollaboratorSet',
-            members_dot_members__pb2.OnCollaboratorSetRequest.SerializeToString,
+            perxis_dot_members_dot_members__pb2.OnCollaboratorSetRequest.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/organizations/organizations_pb2.py b/perxis/organizations/organizations_pb2.py
index a2cad51..afe8d97 100644
--- a/perxis/organizations/organizations_pb2.py
+++ b/perxis/organizations/organizations_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: organizations/organizations.proto
+# source: perxis/organizations/organizations.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,18 +12,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='organizations/organizations.proto',
+  name='perxis/organizations/organizations.proto',
   package='account.organizations',
   syntax='proto3',
   serialized_options=b'Z<github.com/perxteam/perxis/proto/organizations;organizations',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n!organizations/organizations.proto\x12\x15\x61\x63\x63ount.organizations\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/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<github.com/perxteam/perxis/proto/organizations;organizationsb\x06proto3'
+  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<github.com/perxteam/perxis/proto/organizations;organizationsb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -88,8 +88,8 @@ _ORGANIZATION = _descriptor.Descriptor(
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=110,
-  serialized_end=225,
+  serialized_start=124,
+  serialized_end=239,
 )
 
 
@@ -120,8 +120,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=227,
-  serialized_end=292,
+  serialized_start=241,
+  serialized_end=306,
 )
 
 
@@ -152,8 +152,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=294,
-  serialized_end=364,
+  serialized_start=308,
+  serialized_end=378,
 )
 
 
@@ -184,8 +184,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=366,
-  serialized_end=394,
+  serialized_start=380,
+  serialized_end=408,
 )
 
 
@@ -216,8 +216,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=396,
-  serialized_end=459,
+  serialized_start=410,
+  serialized_end=473,
 )
 
 
@@ -248,8 +248,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=461,
-  serialized_end=526,
+  serialized_start=475,
+  serialized_end=540,
 )
 
 
@@ -280,8 +280,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=528,
-  serialized_end=559,
+  serialized_start=542,
+  serialized_end=573,
 )
 
 
@@ -319,8 +319,8 @@ _FILTER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=561,
-  serialized_end=597,
+  serialized_start=575,
+  serialized_end=611,
 )
 
 
@@ -358,8 +358,8 @@ _FINDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=599,
-  serialized_end=694,
+  serialized_start=613,
+  serialized_end=708,
 )
 
 
@@ -397,8 +397,8 @@ _FINDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=696,
-  serialized_end=776,
+  serialized_start=710,
+  serialized_end=790,
 )
 
 _ORGANIZATION.oneofs_by_name['_owner_id'].fields.append(
@@ -409,7 +409,7 @@ _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 = common_dot_common__pb2._FINDOPTIONS
+_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
@@ -425,70 +425,70 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Organization = _reflection.GeneratedProtocolMessageType('Organization', (_message.Message,), {
   'DESCRIPTOR' : _ORGANIZATION,
-  '__module__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__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__' : 'organizations.organizations_pb2'
+  '__module__' : 'perxis.organizations.organizations_pb2'
   # @@protoc_insertion_point(class_scope:account.organizations.FindResponse)
   })
 _sym_db.RegisterMessage(FindResponse)
@@ -503,8 +503,8 @@ _ORGANIZATIONS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=779,
-  serialized_end=1194,
+  serialized_start=793,
+  serialized_end=1208,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/organizations/organizations_pb2_grpc.py b/perxis/organizations/organizations_pb2_grpc.py
index 24616c5..f205eaa 100644
--- a/perxis/organizations/organizations_pb2_grpc.py
+++ b/perxis/organizations/organizations_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from organizations import organizations_pb2 as organizations_dot_organizations__pb2
+from perxis.organizations import organizations_pb2 as perxis_dot_organizations_dot_organizations__pb2
 
 
 class OrganizationsStub(object):
@@ -17,27 +17,27 @@ class OrganizationsStub(object):
         """
         self.Create = channel.unary_unary(
                 '/account.organizations.Organizations/Create',
-                request_serializer=organizations_dot_organizations__pb2.CreateRequest.SerializeToString,
-                response_deserializer=organizations_dot_organizations__pb2.CreateResponse.FromString,
+                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=organizations_dot_organizations__pb2.GetRequest.SerializeToString,
-                response_deserializer=organizations_dot_organizations__pb2.GetResponse.FromString,
+                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=organizations_dot_organizations__pb2.DeleteRequest.SerializeToString,
+                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=organizations_dot_organizations__pb2.FindRequest.SerializeToString,
-                response_deserializer=organizations_dot_organizations__pb2.FindResponse.FromString,
+                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=organizations_dot_organizations__pb2.UpdateRequest.SerializeToString,
+                request_serializer=perxis_dot_organizations_dot_organizations__pb2.UpdateRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -80,27 +80,27 @@ def add_OrganizationsServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=organizations_dot_organizations__pb2.CreateRequest.FromString,
-                    response_serializer=organizations_dot_organizations__pb2.CreateResponse.SerializeToString,
+                    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=organizations_dot_organizations__pb2.GetRequest.FromString,
-                    response_serializer=organizations_dot_organizations__pb2.GetResponse.SerializeToString,
+                    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=organizations_dot_organizations__pb2.DeleteRequest.FromString,
+                    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=organizations_dot_organizations__pb2.FindRequest.FromString,
-                    response_serializer=organizations_dot_organizations__pb2.FindResponse.SerializeToString,
+                    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=organizations_dot_organizations__pb2.UpdateRequest.FromString,
+                    request_deserializer=perxis_dot_organizations_dot_organizations__pb2.UpdateRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -125,8 +125,8 @@ class Organizations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Create',
-            organizations_dot_organizations__pb2.CreateRequest.SerializeToString,
-            organizations_dot_organizations__pb2.CreateResponse.FromString,
+            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)
 
@@ -142,8 +142,8 @@ class Organizations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Get',
-            organizations_dot_organizations__pb2.GetRequest.SerializeToString,
-            organizations_dot_organizations__pb2.GetResponse.FromString,
+            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)
 
@@ -159,7 +159,7 @@ class Organizations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Delete',
-            organizations_dot_organizations__pb2.DeleteRequest.SerializeToString,
+            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)
@@ -176,8 +176,8 @@ class Organizations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Find',
-            organizations_dot_organizations__pb2.FindRequest.SerializeToString,
-            organizations_dot_organizations__pb2.FindResponse.FromString,
+            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)
 
@@ -193,7 +193,7 @@ class Organizations(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.organizations.Organizations/Update',
-            organizations_dot_organizations__pb2.UpdateRequest.SerializeToString,
+            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/roles/__init__.py b/perxis/roles/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/perxis/roles/roles_pb2.py b/perxis/roles/roles_pb2.py
index 7dae3e8..4b931c2 100644
--- a/perxis/roles/roles_pb2.py
+++ b/perxis/roles/roles_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: roles/roles.proto
+# source: perxis/roles/roles.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -12,18 +12,18 @@ _sym_db = _symbol_database.Default()
 
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='roles/roles.proto',
+  name='perxis/roles/roles.proto',
   package='content.roles',
   syntax='proto3',
   serialized_options=b'Z,github.com/perxteam/perxis/proto/roles;roles',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x11roles/roles.proto\x12\rcontent.roles\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x63ommon/common.proto\"d\n\x04Role\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\x04 \x01(\t\x12\x1b\n\x05rules\x18\x05 \x03(\x0b\x32\x0c.common.Rule\"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(\t\"O\n\x0eSetRuleRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07role_id\x18\x02 \x01(\t\x12\x1a\n\x04rule\x18\x03 \x01(\x0b\x32\x0c.common.Rule\"G\n\x11RemoveRuleRequest\x12\x10\n\x08space_id\x18\x01 \x01(\t\x12\x0f\n\x07role_id\x18\x02 \x01(\t\x12\x0f\n\x07rule_id\x18\x03 \x01(\t2\xe5\x03\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\x12\x42\n\x07SetRule\x12\x1d.content.roles.SetRuleRequest\x1a\x16.google.protobuf.Empty\"\x00\x12H\n\nRemoveRule\x12 .content.roles.RemoveRuleRequest\x1a\x16.google.protobuf.Empty\"\x00\x42.Z,github.com/perxteam/perxis/proto/roles;rolesb\x06proto3'
+  serialized_pb=b'\n\x18perxis/roles/roles.proto\x12\rcontent.roles\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1aperxis/common/common.proto\"d\n\x04Role\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\x04 \x01(\t\x12\x1b\n\x05rules\x18\x05 \x03(\x0b\x32\x0c.common.Rule\"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,github.com/perxteam/perxis/proto/roles;rolesb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -83,8 +83,8 @@ _ROLE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=86,
-  serialized_end=186,
+  serialized_start=100,
+  serialized_end=200,
 )
 
 
@@ -115,8 +115,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=188,
-  serialized_end=238,
+  serialized_start=202,
+  serialized_end=252,
 )
 
 
@@ -147,8 +147,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=240,
-  serialized_end=294,
+  serialized_start=254,
+  serialized_end=308,
 )
 
 
@@ -186,8 +186,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=296,
-  serialized_end=343,
+  serialized_start=310,
+  serialized_end=357,
 )
 
 
@@ -218,8 +218,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=345,
-  serialized_end=393,
+  serialized_start=359,
+  serialized_end=407,
 )
 
 
@@ -250,8 +250,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=395,
-  serialized_end=445,
+  serialized_start=409,
+  serialized_end=459,
 )
 
 
@@ -282,8 +282,8 @@ _LISTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=447,
-  serialized_end=478,
+  serialized_start=461,
+  serialized_end=492,
 )
 
 
@@ -314,8 +314,8 @@ _LISTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=480,
-  serialized_end=530,
+  serialized_start=494,
+  serialized_end=544,
 )
 
 
@@ -353,109 +353,16 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=532,
-  serialized_end=582,
+  serialized_start=546,
+  serialized_end=596,
 )
 
-
-_SETRULEREQUEST = _descriptor.Descriptor(
-  name='SetRuleRequest',
-  full_name='content.roles.SetRuleRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.roles.SetRuleRequest.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.SetRuleRequest.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),
-    _descriptor.FieldDescriptor(
-      name='rule', full_name='content.roles.SetRuleRequest.rule', 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=584,
-  serialized_end=663,
-)
-
-
-_REMOVERULEREQUEST = _descriptor.Descriptor(
-  name='RemoveRuleRequest',
-  full_name='content.roles.RemoveRuleRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='space_id', full_name='content.roles.RemoveRuleRequest.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.RemoveRuleRequest.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),
-    _descriptor.FieldDescriptor(
-      name='rule_id', full_name='content.roles.RemoveRuleRequest.rule_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=665,
-  serialized_end=736,
-)
-
-_ROLE.fields_by_name['rules'].message_type = common_dot_common__pb2._RULE
+_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
-_SETRULEREQUEST.fields_by_name['rule'].message_type = common_dot_common__pb2._RULE
 DESCRIPTOR.message_types_by_name['Role'] = _ROLE
 DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
 DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
@@ -465,87 +372,71 @@ 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['SetRuleRequest'] = _SETRULEREQUEST
-DESCRIPTOR.message_types_by_name['RemoveRuleRequest'] = _REMOVERULEREQUEST
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Role = _reflection.GeneratedProtocolMessageType('Role', (_message.Message,), {
   'DESCRIPTOR' : _ROLE,
-  '__module__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__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__' : 'roles.roles_pb2'
+  '__module__' : 'perxis.roles.roles_pb2'
   # @@protoc_insertion_point(class_scope:content.roles.DeleteRequest)
   })
 _sym_db.RegisterMessage(DeleteRequest)
 
-SetRuleRequest = _reflection.GeneratedProtocolMessageType('SetRuleRequest', (_message.Message,), {
-  'DESCRIPTOR' : _SETRULEREQUEST,
-  '__module__' : 'roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.SetRuleRequest)
-  })
-_sym_db.RegisterMessage(SetRuleRequest)
-
-RemoveRuleRequest = _reflection.GeneratedProtocolMessageType('RemoveRuleRequest', (_message.Message,), {
-  'DESCRIPTOR' : _REMOVERULEREQUEST,
-  '__module__' : 'roles.roles_pb2'
-  # @@protoc_insertion_point(class_scope:content.roles.RemoveRuleRequest)
-  })
-_sym_db.RegisterMessage(RemoveRuleRequest)
-
 
 DESCRIPTOR._options = None
 
@@ -556,8 +447,8 @@ _ROLES = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=739,
-  serialized_end=1224,
+  serialized_start=599,
+  serialized_end=942,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
@@ -609,26 +500,6 @@ _ROLES = _descriptor.ServiceDescriptor(
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
   ),
-  _descriptor.MethodDescriptor(
-    name='SetRule',
-    full_name='content.roles.Roles.SetRule',
-    index=5,
-    containing_service=None,
-    input_type=_SETRULEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-  _descriptor.MethodDescriptor(
-    name='RemoveRule',
-    full_name='content.roles.Roles.RemoveRule',
-    index=6,
-    containing_service=None,
-    input_type=_REMOVERULEREQUEST,
-    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
 ])
 _sym_db.RegisterServiceDescriptor(_ROLES)
 
diff --git a/perxis/roles/roles_pb2_grpc.py b/perxis/roles/roles_pb2_grpc.py
index e5632b4..cab5305 100644
--- a/perxis/roles/roles_pb2_grpc.py
+++ b/perxis/roles/roles_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from roles import roles_pb2 as roles_dot_roles__pb2
+from perxis.roles import roles_pb2 as perxis_dot_roles_dot_roles__pb2
 
 
 class RolesStub(object):
@@ -17,37 +17,27 @@ class RolesStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.roles.Roles/Create',
-                request_serializer=roles_dot_roles__pb2.CreateRequest.SerializeToString,
-                response_deserializer=roles_dot_roles__pb2.CreateResponse.FromString,
+                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=roles_dot_roles__pb2.GetRequest.SerializeToString,
-                response_deserializer=roles_dot_roles__pb2.GetResponse.FromString,
+                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=roles_dot_roles__pb2.UpdateRequest.SerializeToString,
+                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=roles_dot_roles__pb2.ListRequest.SerializeToString,
-                response_deserializer=roles_dot_roles__pb2.ListResponse.FromString,
+                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=roles_dot_roles__pb2.DeleteRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.SetRule = channel.unary_unary(
-                '/content.roles.Roles/SetRule',
-                request_serializer=roles_dot_roles__pb2.SetRuleRequest.SerializeToString,
-                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-                )
-        self.RemoveRule = channel.unary_unary(
-                '/content.roles.Roles/RemoveRule',
-                request_serializer=roles_dot_roles__pb2.RemoveRuleRequest.SerializeToString,
+                request_serializer=perxis_dot_roles_dot_roles__pb2.DeleteRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -90,56 +80,32 @@ class RolesServicer(object):
         context.set_details('Method not implemented!')
         raise NotImplementedError('Method not implemented!')
 
-    def SetRule(self, request, context):
-        """SetRule - добавляет правило доступа к API для роли
-        """
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-    def RemoveRule(self, request, context):
-        """RemoveRule - удаляет правило для роли
-        """
-        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=roles_dot_roles__pb2.CreateRequest.FromString,
-                    response_serializer=roles_dot_roles__pb2.CreateResponse.SerializeToString,
+                    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=roles_dot_roles__pb2.GetRequest.FromString,
-                    response_serializer=roles_dot_roles__pb2.GetResponse.SerializeToString,
+                    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=roles_dot_roles__pb2.UpdateRequest.FromString,
+                    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=roles_dot_roles__pb2.ListRequest.FromString,
-                    response_serializer=roles_dot_roles__pb2.ListResponse.SerializeToString,
+                    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=roles_dot_roles__pb2.DeleteRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'SetRule': grpc.unary_unary_rpc_method_handler(
-                    servicer.SetRule,
-                    request_deserializer=roles_dot_roles__pb2.SetRuleRequest.FromString,
-                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
-            ),
-            'RemoveRule': grpc.unary_unary_rpc_method_handler(
-                    servicer.RemoveRule,
-                    request_deserializer=roles_dot_roles__pb2.RemoveRuleRequest.FromString,
+                    request_deserializer=perxis_dot_roles_dot_roles__pb2.DeleteRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -164,8 +130,8 @@ class Roles(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Create',
-            roles_dot_roles__pb2.CreateRequest.SerializeToString,
-            roles_dot_roles__pb2.CreateResponse.FromString,
+            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)
 
@@ -181,8 +147,8 @@ class Roles(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Get',
-            roles_dot_roles__pb2.GetRequest.SerializeToString,
-            roles_dot_roles__pb2.GetResponse.FromString,
+            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)
 
@@ -198,7 +164,7 @@ class Roles(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Update',
-            roles_dot_roles__pb2.UpdateRequest.SerializeToString,
+            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)
@@ -215,8 +181,8 @@ class Roles(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/List',
-            roles_dot_roles__pb2.ListRequest.SerializeToString,
-            roles_dot_roles__pb2.ListResponse.FromString,
+            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)
 
@@ -232,41 +198,7 @@ class Roles(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.roles.Roles/Delete',
-            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)
-
-    @staticmethod
-    def SetRule(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/SetRule',
-            roles_dot_roles__pb2.SetRuleRequest.SerializeToString,
-            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
-
-    @staticmethod
-    def RemoveRule(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/RemoveRule',
-            roles_dot_roles__pb2.RemoveRuleRequest.SerializeToString,
+            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
index 8bb584e..5786074 100644
--- a/perxis/spaces/spaces_pb2.py
+++ b/perxis/spaces/spaces_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: spaces/spaces.proto
+# source: perxis/spaces/spaces.proto
 """Generated protocol buffer code."""
 from google.protobuf.internal import enum_type_wrapper
 from google.protobuf import descriptor as _descriptor
@@ -16,12 +16,12 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='spaces/spaces.proto',
+  name='perxis/spaces/spaces.proto',
   package='content.spaces',
   syntax='proto3',
   serialized_options=b'Z.github.com/perxteam/perxis/proto/spaces;spaces',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x13spaces/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\x30Z.github.com/perxteam/perxis/proto/spaces;spacesb\x06proto3'
+  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\x30Z.github.com/perxteam/perxis/proto/spaces;spacesb\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
 
@@ -75,8 +75,8 @@ _STATE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=702,
-  serialized_end=814,
+  serialized_start=709,
+  serialized_end=821,
 )
 _sym_db.RegisterEnumDescriptor(_STATE)
 
@@ -154,8 +154,8 @@ _SPACE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=69,
-  serialized_end=217,
+  serialized_start=76,
+  serialized_end=224,
 )
 
 
@@ -186,8 +186,8 @@ _CONFIG = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=219,
-  serialized_end=245,
+  serialized_start=226,
+  serialized_end=252,
 )
 
 
@@ -218,8 +218,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=247,
-  serialized_end=300,
+  serialized_start=254,
+  serialized_end=307,
 )
 
 
@@ -250,8 +250,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=302,
-  serialized_end=358,
+  serialized_start=309,
+  serialized_end=365,
 )
 
 
@@ -282,8 +282,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=360,
-  serialized_end=390,
+  serialized_start=367,
+  serialized_end=397,
 )
 
 
@@ -314,8 +314,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=392,
-  serialized_end=443,
+  serialized_start=399,
+  serialized_end=450,
 )
 
 
@@ -346,8 +346,8 @@ _LISTREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=445,
-  serialized_end=474,
+  serialized_start=452,
+  serialized_end=481,
 )
 
 
@@ -378,8 +378,8 @@ _LISTRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=476,
-  serialized_end=529,
+  serialized_start=483,
+  serialized_end=536,
 )
 
 
@@ -410,8 +410,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=531,
-  serialized_end=584,
+  serialized_start=538,
+  serialized_end=591,
 )
 
 
@@ -449,8 +449,8 @@ _UPDATECONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=586,
-  serialized_end=665,
+  serialized_start=593,
+  serialized_end=672,
 )
 
 
@@ -481,8 +481,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=667,
-  serialized_end=700,
+  serialized_start=674,
+  serialized_end=707,
 )
 
 _SPACE.fields_by_name['state'].enum_type = _STATE
@@ -509,77 +509,77 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 Space = _reflection.GeneratedProtocolMessageType('Space', (_message.Message,), {
   'DESCRIPTOR' : _SPACE,
-  '__module__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__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__' : 'spaces.spaces_pb2'
+  '__module__' : 'perxis.spaces.spaces_pb2'
   # @@protoc_insertion_point(class_scope:content.spaces.DeleteRequest)
   })
 _sym_db.RegisterMessage(DeleteRequest)
@@ -594,8 +594,8 @@ _SPACES = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=817,
-  serialized_end=1248,
+  serialized_start=824,
+  serialized_end=1255,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/spaces/spaces_pb2_grpc.py b/perxis/spaces/spaces_pb2_grpc.py
index 2ab95a7..3491187 100644
--- a/perxis/spaces/spaces_pb2_grpc.py
+++ b/perxis/spaces/spaces_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from spaces import spaces_pb2 as spaces_dot_spaces__pb2
+from perxis.spaces import spaces_pb2 as perxis_dot_spaces_dot_spaces__pb2
 
 
 class SpacesStub(object):
@@ -17,32 +17,32 @@ class SpacesStub(object):
         """
         self.Create = channel.unary_unary(
                 '/content.spaces.Spaces/Create',
-                request_serializer=spaces_dot_spaces__pb2.CreateRequest.SerializeToString,
-                response_deserializer=spaces_dot_spaces__pb2.CreateResponse.FromString,
+                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=spaces_dot_spaces__pb2.GetRequest.SerializeToString,
-                response_deserializer=spaces_dot_spaces__pb2.GetResponse.FromString,
+                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=spaces_dot_spaces__pb2.ListRequest.SerializeToString,
-                response_deserializer=spaces_dot_spaces__pb2.ListResponse.FromString,
+                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=spaces_dot_spaces__pb2.UpdateRequest.SerializeToString,
+                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=spaces_dot_spaces__pb2.UpdateConfigRequest.SerializeToString,
+                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=spaces_dot_spaces__pb2.DeleteRequest.SerializeToString,
+                request_serializer=perxis_dot_spaces_dot_spaces__pb2.DeleteRequest.SerializeToString,
                 response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                 )
 
@@ -91,32 +91,32 @@ def add_SpacesServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=spaces_dot_spaces__pb2.CreateRequest.FromString,
-                    response_serializer=spaces_dot_spaces__pb2.CreateResponse.SerializeToString,
+                    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=spaces_dot_spaces__pb2.GetRequest.FromString,
-                    response_serializer=spaces_dot_spaces__pb2.GetResponse.SerializeToString,
+                    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=spaces_dot_spaces__pb2.ListRequest.FromString,
-                    response_serializer=spaces_dot_spaces__pb2.ListResponse.SerializeToString,
+                    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=spaces_dot_spaces__pb2.UpdateRequest.FromString,
+                    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=spaces_dot_spaces__pb2.UpdateConfigRequest.FromString,
+                    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=spaces_dot_spaces__pb2.DeleteRequest.FromString,
+                    request_deserializer=perxis_dot_spaces_dot_spaces__pb2.DeleteRequest.FromString,
                     response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
             ),
     }
@@ -141,8 +141,8 @@ class Spaces(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Create',
-            spaces_dot_spaces__pb2.CreateRequest.SerializeToString,
-            spaces_dot_spaces__pb2.CreateResponse.FromString,
+            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)
 
@@ -158,8 +158,8 @@ class Spaces(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Get',
-            spaces_dot_spaces__pb2.GetRequest.SerializeToString,
-            spaces_dot_spaces__pb2.GetResponse.FromString,
+            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)
 
@@ -175,8 +175,8 @@ class Spaces(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/List',
-            spaces_dot_spaces__pb2.ListRequest.SerializeToString,
-            spaces_dot_spaces__pb2.ListResponse.FromString,
+            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)
 
@@ -192,7 +192,7 @@ class Spaces(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Update',
-            spaces_dot_spaces__pb2.UpdateRequest.SerializeToString,
+            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)
@@ -209,7 +209,7 @@ class Spaces(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/UpdateConfig',
-            spaces_dot_spaces__pb2.UpdateConfigRequest.SerializeToString,
+            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)
@@ -226,7 +226,7 @@ class Spaces(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/content.spaces.Spaces/Delete',
-            spaces_dot_spaces__pb2.DeleteRequest.SerializeToString,
+            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/users/users_pb2.py b/perxis/users/users_pb2.py
index 05cd35e..5e7542c 100644
--- a/perxis/users/users_pb2.py
+++ b/perxis/users/users_pb2.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: users/users.proto
+# source: perxis/users/users.proto
 """Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
@@ -13,18 +13,18 @@ _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 common import common_pb2 as common_dot_common__pb2
+from perxis.common import common_pb2 as perxis_dot_common_dot_common__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='users/users.proto',
+  name='perxis/users/users.proto',
   package='account.users',
   syntax='proto3',
   serialized_options=b'Z,github.com/perxteam/perxis/proto/users;users',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x11users/users.proto\x12\raccount.users\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x13\x63ommon/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\"E\n\rUpdateRequest\x12\x0f\n\x07user_id\x18\x01 \x01(\t\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,github.com/perxteam/perxis/proto/users;usersb\x06proto3'
+  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,github.com/perxteam/perxis/proto/users;usersb\x06proto3'
   ,
-  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,common_dot_common__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,perxis_dot_common_dot_common__pb2.DESCRIPTOR,])
 
 
 
@@ -105,8 +105,8 @@ _USER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=119,
-  serialized_end=324,
+  serialized_start=133,
+  serialized_end=338,
 )
 
 
@@ -179,8 +179,8 @@ _FILTER = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=327,
-  serialized_end=514,
+  serialized_start=341,
+  serialized_end=528,
 )
 
 
@@ -211,8 +211,8 @@ _CREATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=516,
-  serialized_end=568,
+  serialized_start=530,
+  serialized_end=582,
 )
 
 
@@ -243,8 +243,8 @@ _CREATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=570,
-  serialized_end=621,
+  serialized_start=584,
+  serialized_end=635,
 )
 
 
@@ -275,8 +275,8 @@ _GETREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=623,
-  serialized_end=652,
+  serialized_start=637,
+  serialized_end=666,
 )
 
 
@@ -307,8 +307,8 @@ _GETRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=654,
-  serialized_end=702,
+  serialized_start=668,
+  serialized_end=716,
 )
 
 
@@ -346,8 +346,8 @@ _FINDREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=704,
-  serialized_end=794,
+  serialized_start=718,
+  serialized_end=808,
 )
 
 
@@ -385,8 +385,8 @@ _FINDRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=796,
-  serialized_end=861,
+  serialized_start=810,
+  serialized_end=875,
 )
 
 
@@ -399,14 +399,7 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
-      name='user_id', full_name='account.users.UpdateRequest.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='update', full_name='account.users.UpdateRequest.update', index=1,
+      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,
@@ -424,8 +417,8 @@ _UPDATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=863,
-  serialized_end=932,
+  serialized_start=877,
+  serialized_end=929,
 )
 
 
@@ -456,8 +449,8 @@ _DELETEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=934,
-  serialized_end=966,
+  serialized_start=931,
+  serialized_end=963,
 )
 
 
@@ -488,8 +481,8 @@ _GETBYIDENTITYREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=968,
-  serialized_end=1008,
+  serialized_start=965,
+  serialized_end=1005,
 )
 
 
@@ -520,8 +513,8 @@ _GETBYIDENTITYRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1010,
-  serialized_end=1068,
+  serialized_start=1007,
+  serialized_end=1065,
 )
 
 _USER.fields_by_name['email_verified'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
@@ -532,7 +525,7 @@ _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 = common_dot_common__pb2._FINDOPTIONS
+_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
@@ -552,84 +545,84 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), {
   'DESCRIPTOR' : _USER,
-  '__module__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__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__' : 'users.users_pb2'
+  '__module__' : 'perxis.users.users_pb2'
   # @@protoc_insertion_point(class_scope:account.users.GetByIdentityResponse)
   })
 _sym_db.RegisterMessage(GetByIdentityResponse)
@@ -644,8 +637,8 @@ _USERS = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1071,
-  serialized_end=1508,
+  serialized_start=1068,
+  serialized_end=1505,
   methods=[
   _descriptor.MethodDescriptor(
     name='Create',
diff --git a/perxis/users/users_pb2_grpc.py b/perxis/users/users_pb2_grpc.py
index bad6550..526520a 100644
--- a/perxis/users/users_pb2_grpc.py
+++ b/perxis/users/users_pb2_grpc.py
@@ -3,7 +3,7 @@
 import grpc
 
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
-from users import users_pb2 as users_dot_users__pb2
+from perxis.users import users_pb2 as perxis_dot_users_dot_users__pb2
 
 
 class UsersStub(object):
@@ -17,33 +17,33 @@ class UsersStub(object):
         """
         self.Create = channel.unary_unary(
                 '/account.users.Users/Create',
-                request_serializer=users_dot_users__pb2.CreateRequest.SerializeToString,
-                response_deserializer=users_dot_users__pb2.CreateResponse.FromString,
+                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=users_dot_users__pb2.GetRequest.SerializeToString,
-                response_deserializer=users_dot_users__pb2.GetResponse.FromString,
+                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=users_dot_users__pb2.FindRequest.SerializeToString,
-                response_deserializer=users_dot_users__pb2.FindResponse.FromString,
+                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=users_dot_users__pb2.UpdateRequest.SerializeToString,
+                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=users_dot_users__pb2.DeleteRequest.SerializeToString,
+                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=users_dot_users__pb2.GetByIdentityRequest.SerializeToString,
-                response_deserializer=users_dot_users__pb2.GetByIdentityResponse.FromString,
+                request_serializer=perxis_dot_users_dot_users__pb2.GetByIdentityRequest.SerializeToString,
+                response_deserializer=perxis_dot_users_dot_users__pb2.GetByIdentityResponse.FromString,
                 )
 
 
@@ -101,33 +101,33 @@ def add_UsersServicer_to_server(servicer, server):
     rpc_method_handlers = {
             'Create': grpc.unary_unary_rpc_method_handler(
                     servicer.Create,
-                    request_deserializer=users_dot_users__pb2.CreateRequest.FromString,
-                    response_serializer=users_dot_users__pb2.CreateResponse.SerializeToString,
+                    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=users_dot_users__pb2.GetRequest.FromString,
-                    response_serializer=users_dot_users__pb2.GetResponse.SerializeToString,
+                    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=users_dot_users__pb2.FindRequest.FromString,
-                    response_serializer=users_dot_users__pb2.FindResponse.SerializeToString,
+                    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=users_dot_users__pb2.UpdateRequest.FromString,
+                    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=users_dot_users__pb2.DeleteRequest.FromString,
+                    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=users_dot_users__pb2.GetByIdentityRequest.FromString,
-                    response_serializer=users_dot_users__pb2.GetByIdentityResponse.SerializeToString,
+                    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(
@@ -151,8 +151,8 @@ class Users(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.users.Users/Create',
-            users_dot_users__pb2.CreateRequest.SerializeToString,
-            users_dot_users__pb2.CreateResponse.FromString,
+            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)
 
@@ -168,8 +168,8 @@ class Users(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.users.Users/Get',
-            users_dot_users__pb2.GetRequest.SerializeToString,
-            users_dot_users__pb2.GetResponse.FromString,
+            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)
 
@@ -185,8 +185,8 @@ class Users(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.users.Users/Find',
-            users_dot_users__pb2.FindRequest.SerializeToString,
-            users_dot_users__pb2.FindResponse.FromString,
+            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)
 
@@ -202,7 +202,7 @@ class Users(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.users.Users/Update',
-            users_dot_users__pb2.UpdateRequest.SerializeToString,
+            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)
@@ -219,7 +219,7 @@ class Users(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.users.Users/Delete',
-            users_dot_users__pb2.DeleteRequest.SerializeToString,
+            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)
@@ -236,7 +236,7 @@ class Users(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/account.users.Users/GetByIdentity',
-            users_dot_users__pb2.GetByIdentityRequest.SerializeToString,
-            users_dot_users__pb2.GetByIdentityResponse.FromString,
+            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/__init__.py b/perxis/versions/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/perxis/versions/account/__init__.py b/perxis/versions/account/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/perxis/versions/account/versions_pb2.py b/perxis/versions/account/versions_pb2.py
new file mode 100644
index 0000000..aba17a1
--- /dev/null
+++ b/perxis/versions/account/versions_pb2.py
@@ -0,0 +1,101 @@
+# -*- 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'Z9github.com/perxteam/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;Z9github.com/perxteam/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
new file mode 100644
index 0000000..4db38eb
--- /dev/null
+++ b/perxis/versions/account/versions_pb2_grpc.py
@@ -0,0 +1,67 @@
+# 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/__init__.py b/perxis/versions/content/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/perxis/versions/content/versions_pb2.py b/perxis/versions/content/versions_pb2.py
new file mode 100644
index 0000000..4e0b9e3
--- /dev/null
+++ b/perxis/versions/content/versions_pb2.py
@@ -0,0 +1,101 @@
+# -*- 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'Z9github.com/perxteam/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;Z9github.com/perxteam/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
new file mode 100644
index 0000000..2e6b4cb
--- /dev/null
+++ b/perxis/versions/content/versions_pb2_grpc.py
@@ -0,0 +1,67 @@
+# 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/accountmanagement/accountmanagement.proto b/proto/perxis/accountmanagement/accountmanagement.proto
similarity index 99%
rename from proto/accountmanagement/accountmanagement.proto
rename to proto/perxis/accountmanagement/accountmanagement.proto
index e5979f5..2b8557d 100644
--- a/proto/accountmanagement/accountmanagement.proto
+++ b/proto/perxis/accountmanagement/accountmanagement.proto
@@ -3,7 +3,7 @@ syntax = "proto3";
 import "google/protobuf/timestamp.proto";
 import "google/protobuf/empty.proto";
 import "google/protobuf/wrappers.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/accountmanagement;accountmanagement";
 
diff --git a/proto/clients/clients.proto b/proto/perxis/clients/clients.proto
similarity index 81%
rename from proto/clients/clients.proto
rename to proto/perxis/clients/clients.proto
index 07b6b51..c80838e 100644
--- a/proto/clients/clients.proto
+++ b/proto/perxis/clients/clients.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/clients;clients";
 
@@ -69,18 +69,6 @@ message EnableRequest {
   bool enable = 3;
 }
 
-message SetRuleRequest {
-  string space_id = 1;
-  string id = 2;
-  common.Rule rule = 3;
-}
-
-message RemoveRuleRequest {
-  string space_id = 1;
-  string id = 2;
-  string rule_id = 3;
-}
-
 service Clients  {
 
   // Create - создает клиента (приложение) для работы с API
@@ -103,10 +91,4 @@ service Clients  {
 
   // Enable - активирует/деактивирует клиента. Клиент не сможет обращаться к API платформы
   rpc Enable(EnableRequest) returns(google.protobuf.Empty) {}
-
-  // SetRule - добавляет клиенту правила доступа к API
-  rpc SetRule(SetRuleRequest) returns(google.protobuf.Empty) {}
-
-  // SetRule - удаляет правилу с указанным Id
-  rpc RemoveRule(RemoveRuleRequest) returns(google.protobuf.Empty) {}
 }
diff --git a/proto/collaborators/collaborators.proto b/proto/perxis/collaborators/collaborators.proto
similarity index 96%
rename from proto/collaborators/collaborators.proto
rename to proto/perxis/collaborators/collaborators.proto
index 7364cb4..7834ed2 100644
--- a/proto/collaborators/collaborators.proto
+++ b/proto/perxis/collaborators/collaborators.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/collaborators;collaborators";
 
diff --git a/proto/collections/collections.proto b/proto/perxis/collections/collections.proto
similarity index 95%
rename from proto/collections/collections.proto
rename to proto/perxis/collections/collections.proto
index 033fd17..bf29150 100644
--- a/proto/collections/collections.proto
+++ b/proto/perxis/collections/collections.proto
@@ -18,7 +18,7 @@ message Collection {
 }
 
 message CreateRequest {
-  Collection coll = 1;
+  Collection collection = 1;
 }
 message CreateResponse {
   Collection created = 1;
@@ -43,7 +43,7 @@ message ListResponse {
 }
 
 message UpdateRequest {
-  Collection coll = 1;
+  Collection collection = 1;
 }
 
 message DeleteRequest {
diff --git a/proto/common/common.proto b/proto/perxis/common/common.proto
similarity index 96%
rename from proto/common/common.proto
rename to proto/perxis/common/common.proto
index 34ea24e..181c57b 100644
--- a/proto/common/common.proto
+++ b/proto/perxis/common/common.proto
@@ -194,10 +194,9 @@ enum Action {
 }
 
 message Rule {
-  string id = 1;
-  string collection_id = 2;
-  repeated Action actions = 3;
-  Access access = 4;
+  string collection_id = 1;
+  repeated Action actions = 2;
+  Access access = 3;
   repeated string fields = 6;
   bool fields_allowed = 7;
 }
@@ -207,3 +206,11 @@ message Collaborator {
   string user_id = 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/contentcontrol/contentcontrol.proto b/proto/perxis/contentcontrol/contentcontrol.proto
similarity index 96%
rename from proto/contentcontrol/contentcontrol.proto
rename to proto/perxis/contentcontrol/contentcontrol.proto
index 377f32f..a5f24a8 100644
--- a/proto/contentcontrol/contentcontrol.proto
+++ b/proto/perxis/contentcontrol/contentcontrol.proto
@@ -5,7 +5,7 @@ option go_package = "github.com/perxteam/perxis/proto/contentcontrol;contentcont
 package contentcontrol;
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 message Host{
   string name = 1;
diff --git a/proto/contentdelivery/contentdelivery.proto b/proto/perxis/contentdelivery/contentdelivery.proto
similarity index 98%
rename from proto/contentdelivery/contentdelivery.proto
rename to proto/perxis/contentdelivery/contentdelivery.proto
index d8d5bb0..4f3822c 100644
--- a/proto/contentdelivery/contentdelivery.proto
+++ b/proto/perxis/contentdelivery/contentdelivery.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/contentdelivery;contentdelivery";
 
diff --git a/proto/contentmanagement/contentmanagment.proto b/proto/perxis/contentmanagement/contentmanagment.proto
similarity index 99%
rename from proto/contentmanagement/contentmanagment.proto
rename to proto/perxis/contentmanagement/contentmanagment.proto
index 199bb67..7b46413 100644
--- a/proto/contentmanagement/contentmanagment.proto
+++ b/proto/perxis/contentmanagement/contentmanagment.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/contentmanagement;contentmanagement";
 
diff --git a/proto/perxis/delivery/delivery.proto b/proto/perxis/delivery/delivery.proto
new file mode 100644
index 0000000..7577a3c
--- /dev/null
+++ b/proto/perxis/delivery/delivery.proto
@@ -0,0 +1,90 @@
+syntax = "proto3";
+
+import "perxis/locales/locales.proto";
+import "perxis/environments/environments.proto";
+import "perxis/collections/collections.proto";
+import "perxis/items/items.proto";
+import "perxis/common/common.proto";
+
+option go_package = "github.com/perxteam/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 locale_id = 4;
+  string item_id = 5;
+}
+message GetItemResponse {
+  content.items.Item item = 1;
+}
+
+message FindItemsRequest {
+  string space_id = 1;
+  string env_id = 2;
+  string collection_id = 3;
+  string locale_id = 4;
+  content.items.Filter filter = 5;
+  common.FindOptions 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/environments/environments.proto b/proto/perxis/environments/environments.proto
similarity index 100%
rename from proto/environments/environments.proto
rename to proto/perxis/environments/environments.proto
diff --git a/proto/file/file.proto b/proto/perxis/file/file.proto
similarity index 98%
rename from proto/file/file.proto
rename to proto/perxis/file/file.proto
index 3fd40d2..6df938f 100644
--- a/proto/file/file.proto
+++ b/proto/perxis/file/file.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/file;file";
 
diff --git a/proto/invitations/invitations.proto b/proto/perxis/invitations/invitations.proto
similarity index 100%
rename from proto/invitations/invitations.proto
rename to proto/perxis/invitations/invitations.proto
diff --git a/proto/items/items.proto b/proto/perxis/items/items.proto
similarity index 93%
rename from proto/items/items.proto
rename to proto/perxis/items/items.proto
index 6aada62..c621741 100644
--- a/proto/items/items.proto
+++ b/proto/perxis/items/items.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 import "google/protobuf/timestamp.proto";
 import "google/protobuf/struct.proto";
 
@@ -9,6 +9,24 @@ option go_package = "github.com/perxteam/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 Item {
   enum State {
     DRAFT = 0;
diff --git a/proto/locales/locales.proto b/proto/perxis/locales/locales.proto
similarity index 100%
rename from proto/locales/locales.proto
rename to proto/perxis/locales/locales.proto
diff --git a/proto/members/members.proto b/proto/perxis/members/members.proto
similarity index 98%
rename from proto/members/members.proto
rename to proto/perxis/members/members.proto
index 5158499..800f984 100644
--- a/proto/members/members.proto
+++ b/proto/perxis/members/members.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/members;members";
 
diff --git a/proto/organizations/organizations.proto b/proto/perxis/organizations/organizations.proto
similarity index 97%
rename from proto/organizations/organizations.proto
rename to proto/perxis/organizations/organizations.proto
index 7a8d4c0..8567c1d 100644
--- a/proto/organizations/organizations.proto
+++ b/proto/perxis/organizations/organizations.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/organizations;organizations";
 
diff --git a/proto/roles/roles.proto b/proto/perxis/roles/roles.proto
similarity index 73%
rename from proto/roles/roles.proto
rename to proto/perxis/roles/roles.proto
index 78f4453..7993c67 100644
--- a/proto/roles/roles.proto
+++ b/proto/perxis/roles/roles.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 import "google/protobuf/empty.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/roles;roles";
 
@@ -49,18 +49,6 @@ message DeleteRequest {
   string role_id = 2;
 }
 
-message SetRuleRequest {
-  string space_id = 1;
-  string role_id = 2;
-  common.Rule rule = 3;
-}
-
-message RemoveRuleRequest {
-  string space_id = 1;
-  string role_id = 2;
-  string rule_id = 3;
-}
-
 service Roles  {
 
   // Create - создает роль в рамках пространства
@@ -78,9 +66,4 @@ service Roles  {
   // Delete - удаляет указанную роль из пространстве
   rpc Delete(DeleteRequest) returns(google.protobuf.Empty) {}
 
-  // SetRule - добавляет правило доступа к API для роли
-  rpc SetRule(SetRuleRequest) returns(google.protobuf.Empty) {}
-
-  // RemoveRule - удаляет правило для роли
-  rpc RemoveRule(RemoveRuleRequest) returns(google.protobuf.Empty) {}
 }
\ No newline at end of file
diff --git a/proto/spaces/spaces.proto b/proto/perxis/spaces/spaces.proto
similarity index 100%
rename from proto/spaces/spaces.proto
rename to proto/perxis/spaces/spaces.proto
diff --git a/proto/users/users.proto b/proto/perxis/users/users.proto
similarity index 96%
rename from proto/users/users.proto
rename to proto/perxis/users/users.proto
index 664645b..ba577b2 100644
--- a/proto/users/users.proto
+++ b/proto/perxis/users/users.proto
@@ -2,7 +2,7 @@ syntax = "proto3";
 
 import "google/protobuf/empty.proto";
 import "google/protobuf/wrappers.proto";
-import "common/common.proto";
+import "perxis/common/common.proto";
 
 option go_package = "github.com/perxteam/perxis/proto/users;users";
 
@@ -58,7 +58,6 @@ message FindResponse {
 
 // userId = `current` для обновления текущего пользователя
 message UpdateRequest {
-  string user_id = 1; // Уникальный идентификатор, присваивается системой
   User update = 2; // Содержит только поля необходимые для обновления
 }
 
diff --git a/proto/perxis/versions/account/versions.proto b/proto/perxis/versions/account/versions.proto
new file mode 100644
index 0000000..2357d43
--- /dev/null
+++ b/proto/perxis/versions/account/versions.proto
@@ -0,0 +1,16 @@
+syntax = "proto3";
+
+import "google/protobuf/empty.proto";
+import "perxis/common/common.proto";
+
+option go_package = "github.com/perxteam/perxis/proto/versions/account;account";
+
+package account;
+
+message GetResponse {
+  common.Version version = 1;
+}
+
+service Versions {
+  rpc Get(google.protobuf.Empty) returns(GetResponse) {}
+}
\ No newline at end of file
diff --git a/proto/perxis/versions/content/versions.proto b/proto/perxis/versions/content/versions.proto
new file mode 100644
index 0000000..18a1195
--- /dev/null
+++ b/proto/perxis/versions/content/versions.proto
@@ -0,0 +1,16 @@
+syntax = "proto3";
+
+import "google/protobuf/empty.proto";
+import "perxis/common/common.proto";
+
+option go_package = "github.com/perxteam/perxis/proto/versions/content;content";
+
+package content;
+
+message GetResponse {
+  common.Version version = 1;
+}
+
+service Versions {
+  rpc Get(google.protobuf.Empty) returns(GetResponse) {}
+}
\ No newline at end of file
diff --git a/setup.py b/setup.py
index bd8f67c..c54a748 100644
--- a/setup.py
+++ b/setup.py
@@ -14,7 +14,7 @@ def load_requirements():
 
 setup(
     name='perxis',
-    version='0.0.1',
+    version='0.0.2',
     description='Perxis python client',
     long_description=long_description,
     long_description_content_type='text/markdown',
-- 
GitLab