diff --git a/xos/grpc/orm.py b/xos/grpc/orm.py
new file mode 100644
index 0000000..380a208
--- /dev/null
+++ b/xos/grpc/orm.py
@@ -0,0 +1,130 @@
+"""
+Django-like ORM layer for gRPC
+
+Usage:
+    api = ORMStub(stub)
+
+    api.Slices.all() ... list all slices
+
+    someSlice = api.Slices.get(id=1) ... get slice #1
+
+    someSlice.site ... automatically resolves site_id into a site object
+    someSlice.save() ... saves the slice object
+"""
+
+"""
+import grpc_client, orm
+c=grpc_client.SecureClient("xos-core.cord.lab", username="padmin@vicci.org", password="letmein")
+xos_orm=orm.ORMStub(c.stub)
+u=xos_orm.User.objects.get(id=1)
+"""
+
+import functools
+import grpc_client
+from google.protobuf.empty_pb2 import Empty
+from protos.common_pb2 import ID
+from protos.xosoptions_pb2 import foreignKey
+
+class ORMWrapper(object):
+    def __init__(self, wrapped_class, stub):
+        super(ORMWrapper, self).__setattr__("_wrapped_class", wrapped_class)
+        super(ORMWrapper, self).__setattr__("stub", stub)
+        super(ORMWrapper, self).__setattr__("cache", {})
+        fkmap=self.gen_fkmap()
+        super(ORMWrapper, self).__setattr__("_fkmap", fkmap)
+
+    def gen_fkmap(self):
+        fkmap = {}
+
+        for (name, field) in self._wrapped_class.DESCRIPTOR.fields_by_name.items():
+           if name.endswith("_id"):
+               fk = field.GetOptions().Extensions[foreignKey]
+               if fk:
+                   fkmap[name[:-3]] = {"src_fieldName": name, "modelName": fk.modelName}
+
+        return fkmap
+
+    def fk_resolve(self, name):
+        if name in self.cache:
+            return ORMWrapper(self.cache[name], self.stub)
+
+        fk_entry = self._fkmap[name]
+        get_method = getattr(self.stub, "Get%s" % fk_entry["modelName"])
+        id=ID(id=getattr(self, fk_entry["src_fieldName"]))
+        dest_model = get_method(id)
+
+        self.cache[name] = dest_model
+
+        return ORMWrapper(dest_model, self.stub)
+
+    def __getattr__(self, name, *args, **kwargs):
+        # note: getattr is only called for attributes that do not exist in
+        #       self.__dict__
+
+        if name in self._fkmap.keys():
+            return self.fk_resolve(name)
+
+        return getattr(self._wrapped_class, name, *args, **kwargs)
+
+    def __setattr__(self, name, value):
+        if name in self.__dict__:
+            super(ORMWrapper,self).__setattr__(name, value)
+        else:
+            setattr(self._wrapped_class, name, value)
+
+    def __repr__(self):
+        return self._wrapped_class.__repr__()
+
+    def save(self):
+        update_method = getattr(self.stub,"Update%s" % self._wrapped_class.__class__.__name__)
+        update_method(self._wrapped_class)
+
+    def delete(self):
+        delete_method = getattr(self.stub,"Delete%s" % self._wrapped_class.__class__.__name__)
+        id = ID(id=self._wrapped_class.id)
+        delete_method(id)
+
+class ORMObjectManager(object):
+    def __init__(self, stub, modelName):
+        self._stub = stub
+        self._modelName = modelName
+
+    def wrap_single(self, obj):
+        return ORMWrapper(obj, self._stub)
+
+    def wrap_list(self, obj):
+        result=[]
+        for item in obj.items:
+            result.append(ORMWrapper(item, self._stub))
+        return result
+
+    def all(self):
+        list_method = getattr(self._stub, "List%s" % self._modelName)
+        return self.wrap_list(list_method(Empty()))
+
+    def get(self, id):
+        get_method = getattr(self._stub, "Get%s" % self._modelName)
+        return self.wrap_single(get_method(ID(id=id)))
+
+class ORMModelClass(object):
+    def __init__(self, stub, model_name):
+        self.objects = ORMObjectManager(stub, model_name)
+
+class ORMStub(object):
+    def __init__(self, stub):
+        for name in dir(stub):
+           if name.startswith("Get"):
+               model_name = name[3:]
+               setattr(self,model_name, ORMModelClass(stub, model_name))
+
+#def wrap_get(*args, **kwargs):
+#    stub=kwargs.pop("stub")
+#    getmethod=kwargs.pop("getmethod")
+#    result = getmethod(*args, **kwargs)
+#    return ORMWrapper(result)
+#
+#def wrap_stub(stub):
+#    for name in dir(stub):
+#        if name.startswith("Get"):
+#            setattr(stub, name, functools.partial(wrap_get, stub=stub, getmethod=getattr(stub,name)))
+
diff --git a/xos/grpc/protos/xos.proto b/xos/grpc/protos/xos.proto
deleted file mode 100644
index fb1a10d..0000000
--- a/xos/grpc/protos/xos.proto
+++ /dev/null
@@ -1,7716 +0,0 @@
-syntax = "proto3";
-
-package xos;
-
-import "google/protobuf/empty.proto";
-import "google/api/annotations.proto";
-import "common.proto";
-
-// Note: all fields are wrapped in a "oneof". This causes proto3 to always send
-// fields that are set by the caller, regardless if they are set to a default
-// value. XOS uses this to know when to apply a default value.
-
-
-
-message ServiceControllerResource {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof loadable_module_present {
-      int32 loadable_module_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof subdirectory_present {
-      string subdirectory = 17;
-    }
-    oneof kind_present {
-      string kind = 18;
-    }
-    oneof format_present {
-      string format = 19;
-    }
-    oneof url_present {
-      string url = 20;
-    }
-}
-
-message ServiceControllerResources {
-    repeated ServiceControllerResource items = 1;
-}
-
-
-
-message XOSVolume {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof xos_present {
-      int32 xos_id = 15;
-    }
-    oneof container_path_present {
-      string container_path = 16;
-    }
-    oneof host_path_present {
-      string host_path = 17;
-    }
-    oneof read_only_present {
-      bool read_only = 18;
-    }
-}
-
-message XOSVolumes {
-    repeated XOSVolume items = 1;
-}
-
-
-
-message ServiceAttribute {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof value_present {
-      string value = 16;
-    }
-    oneof service_present {
-      int32 service_id = 17;
-    }
-}
-
-message ServiceAttributes {
-    repeated ServiceAttribute items = 1;
-}
-
-
-
-message ControllerImages {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof image_present {
-      int32 image_id = 15;
-    }
-    oneof controller_present {
-      int32 controller_id = 16;
-    }
-    oneof glance_image_id_present {
-      string glance_image_id = 17;
-    }
-}
-
-message ControllerImagess {
-    repeated ControllerImages items = 1;
-}
-
-
-
-message ControllerSitePrivilege {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof controller_present {
-      int32 controller_id = 15;
-    }
-    oneof site_privilege_present {
-      int32 site_privilege_id = 16;
-    }
-    oneof role_id_present {
-      string role_id = 17;
-    }
-}
-
-message ControllerSitePrivileges {
-    repeated ControllerSitePrivilege items = 1;
-}
-
-
-
-message Image {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof kind_present {
-      string kind = 16;
-    }
-    oneof disk_format_present {
-      string disk_format = 17;
-    }
-    oneof container_format_present {
-      string container_format = 18;
-    }
-    oneof path_present {
-      string path = 19;
-    }
-    oneof tag_present {
-      string tag = 20;
-    }
-}
-
-message Images {
-    repeated Image items = 1;
-}
-
-
-
-message ControllerNetwork {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof network_present {
-      int32 network_id = 15;
-    }
-    oneof controller_present {
-      int32 controller_id = 16;
-    }
-    oneof subnet_present {
-      string subnet = 17;
-    }
-    oneof start_ip_present {
-      string start_ip = 18;
-    }
-    oneof stop_ip_present {
-      string stop_ip = 19;
-    }
-    oneof net_id_present {
-      string net_id = 20;
-    }
-    oneof router_id_present {
-      string router_id = 21;
-    }
-    oneof subnet_id_present {
-      string subnet_id = 22;
-    }
-    oneof gateway_present {
-      string gateway = 23;
-    }
-    oneof segmentation_id_present {
-      string segmentation_id = 24;
-    }
-}
-
-message ControllerNetworks {
-    repeated ControllerNetwork items = 1;
-}
-
-
-
-message Site {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof site_url_present {
-      string site_url = 16;
-    }
-    oneof enabled_present {
-      bool enabled = 17;
-    }
-    oneof hosts_nodes_present {
-      bool hosts_nodes = 18;
-    }
-    oneof hosts_users_present {
-      bool hosts_users = 19;
-    }
-    oneof longitude_present {
-      float longitude = 20;
-    }
-    oneof latitude_present {
-      float latitude = 21;
-    }
-    oneof login_base_present {
-      string login_base = 22;
-    }
-    oneof is_public_present {
-      bool is_public = 23;
-    }
-    oneof abbreviated_name_present {
-      string abbreviated_name = 24;
-    }
-}
-
-message Sites {
-    repeated Site items = 1;
-}
-
-
-
-message Library {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof xos_present {
-      int32 xos_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof base_url_present {
-      string base_url = 17;
-    }
-    oneof version_present {
-      string version = 18;
-    }
-    oneof provides_present {
-      string provides = 19;
-    }
-    oneof requires_present {
-      string requires = 20;
-    }
-}
-
-message Librarys {
-    repeated Library items = 1;
-}
-
-
-
-message SliceRole {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_present {
-      string role = 15;
-    }
-}
-
-message SliceRoles {
-    repeated SliceRole items = 1;
-}
-
-
-
-message SiteDeployment {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof site_present {
-      int32 site_id = 15;
-    }
-    oneof deployment_present {
-      int32 deployment_id = 16;
-    }
-    oneof controller_present {
-      int32 controller_id = 17;
-    }
-    oneof availability_zone_present {
-      string availability_zone = 18;
-    }
-}
-
-message SiteDeployments {
-    repeated SiteDeployment items = 1;
-}
-
-
-
-message XOSComponentLink {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof component_present {
-      int32 component_id = 15;
-    }
-    oneof container_present {
-      string container = 16;
-    }
-    oneof alias_present {
-      string alias = 17;
-    }
-    oneof kind_present {
-      string kind = 18;
-    }
-}
-
-message XOSComponentLinks {
-    repeated XOSComponentLink items = 1;
-}
-
-
-
-message TenantPrivilege {
-    oneof created_present {
-      float created = 1;
-    }
-    oneof updated_present {
-      float updated = 2;
-    }
-    oneof enacted_present {
-      float enacted = 3;
-    }
-    oneof policed_present {
-      float policed = 4;
-    }
-    oneof backend_register_present {
-      string backend_register = 5;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 6;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 7;
-    }
-    oneof backend_status_present {
-      string backend_status = 8;
-    }
-    oneof deleted_present {
-      bool deleted = 9;
-    }
-    oneof write_protect_present {
-      bool write_protect = 10;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 11;
-    }
-    oneof no_sync_present {
-      bool no_sync = 12;
-    }
-    oneof no_policy_present {
-      bool no_policy = 13;
-    }
-    oneof id_present {
-      int32 id = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof tenant_present {
-      int32 tenant_id = 16;
-    }
-    oneof role_present {
-      int32 role_id = 17;
-    }
-}
-
-message TenantPrivileges {
-    repeated TenantPrivilege items = 1;
-}
-
-
-
-message Tag {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof service_present {
-      int32 service_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof value_present {
-      string value = 17;
-    }
-    oneof content_type_present {
-      int32 content_type_id = 18;
-    }
-    oneof object_id_present {
-      uint32 object_id = 19;
-    }
-}
-
-message Tags {
-    repeated Tag items = 1;
-}
-
-
-
-message ServiceMonitoringAgentInfo {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof service_present {
-      int32 service_id = 16;
-    }
-    oneof target_uri_present {
-      string target_uri = 17;
-    }
-}
-
-message ServiceMonitoringAgentInfos {
-    repeated ServiceMonitoringAgentInfo items = 1;
-}
-
-
-
-message XOSComponent {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof xos_present {
-      int32 xos_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof base_url_present {
-      string base_url = 17;
-    }
-    oneof version_present {
-      string version = 18;
-    }
-    oneof provides_present {
-      string provides = 19;
-    }
-    oneof requires_present {
-      string requires = 20;
-    }
-    oneof image_present {
-      string image = 21;
-    }
-    oneof command_present {
-      string command = 22;
-    }
-    oneof ports_present {
-      string ports = 23;
-    }
-}
-
-message XOSComponents {
-    repeated XOSComponent items = 1;
-}
-
-
-
-message Invoice {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof date_present {
-      float date = 15;
-    }
-    oneof account_present {
-      int32 account_id = 16;
-    }
-}
-
-message Invoices {
-    repeated Invoice items = 1;
-}
-
-
-
-message SlicePrivilege {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof slice_present {
-      int32 slice_id = 16;
-    }
-    oneof role_present {
-      int32 role_id = 17;
-    }
-}
-
-message SlicePrivileges {
-    repeated SlicePrivilege items = 1;
-}
-
-
-
-message Flavor {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof description_present {
-      string description = 16;
-    }
-    oneof flavor_present {
-      string flavor = 17;
-    }
-    oneof order_present {
-      int32 order = 18;
-    }
-    oneof default_present {
-      bool default = 19;
-    }
-}
-
-message Flavors {
-    repeated Flavor items = 1;
-}
-
-
-
-message Port {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof network_present {
-      int32 network_id = 15;
-    }
-    oneof instance_present {
-      int32 instance_id = 16;
-    }
-    oneof ip_present {
-      string ip = 17;
-    }
-    oneof port_id_present {
-      string port_id = 18;
-    }
-    oneof mac_present {
-      string mac = 19;
-    }
-    oneof xos_created_present {
-      bool xos_created = 20;
-    }
-}
-
-message Ports {
-    repeated Port items = 1;
-}
-
-
-
-message ServiceRole {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_present {
-      string role = 15;
-    }
-}
-
-message ServiceRoles {
-    repeated ServiceRole items = 1;
-}
-
-
-
-message ControllerSite {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof site_present {
-      int32 site_id = 15;
-    }
-    oneof controller_present {
-      int32 controller_id = 16;
-    }
-    oneof tenant_id_present {
-      string tenant_id = 17;
-    }
-}
-
-message ControllerSites {
-    repeated ControllerSite items = 1;
-}
-
-
-
-message ControllerSlice {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof controller_present {
-      int32 controller_id = 15;
-    }
-    oneof slice_present {
-      int32 slice_id = 16;
-    }
-    oneof tenant_id_present {
-      string tenant_id = 17;
-    }
-}
-
-message ControllerSlices {
-    repeated ControllerSlice items = 1;
-}
-
-
-
-message TenantRole {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_present {
-      string role = 15;
-    }
-}
-
-message TenantRoles {
-    repeated TenantRole items = 1;
-}
-
-
-
-message Slice {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof enabled_present {
-      bool enabled = 16;
-    }
-    oneof omf_friendly_present {
-      bool omf_friendly = 17;
-    }
-    oneof description_present {
-      string description = 18;
-    }
-    oneof slice_url_present {
-      string slice_url = 19;
-    }
-    oneof site_present {
-      int32 site_id = 20;
-    }
-    oneof max_instances_present {
-      int32 max_instances = 21;
-    }
-    oneof service_present {
-      int32 service_id = 22;
-    }
-    oneof network_present {
-      string network = 23;
-    }
-    oneof exposed_ports_present {
-      string exposed_ports = 24;
-    }
-    oneof serviceClass_present {
-      int32 serviceClass_id = 25;
-    }
-    oneof creator_present {
-      int32 creator_id = 26;
-    }
-    oneof default_flavor_present {
-      int32 default_flavor_id = 27;
-    }
-    oneof default_image_present {
-      int32 default_image_id = 28;
-    }
-    oneof default_node_present {
-      int32 default_node_id = 29;
-    }
-    oneof mount_data_sets_present {
-      string mount_data_sets = 30;
-    }
-    oneof default_isolation_present {
-      string default_isolation = 31;
-    }
-}
-
-message Slices {
-    repeated Slice items = 1;
-}
-
-
-
-message LoadableModuleResource {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof loadable_module_present {
-      int32 loadable_module_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof subdirectory_present {
-      string subdirectory = 17;
-    }
-    oneof kind_present {
-      string kind = 18;
-    }
-    oneof format_present {
-      string format = 19;
-    }
-    oneof url_present {
-      string url = 20;
-    }
-}
-
-message LoadableModuleResources {
-    repeated LoadableModuleResource items = 1;
-}
-
-
-
-message ControllerRole {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_present {
-      string role = 15;
-    }
-}
-
-message ControllerRoles {
-    repeated ControllerRole items = 1;
-}
-
-
-
-message Diag {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-}
-
-message Diags {
-    repeated Diag items = 1;
-}
-
-
-
-message XOS {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof ui_port_present {
-      int32 ui_port = 16;
-    }
-    oneof bootstrap_ui_port_present {
-      int32 bootstrap_ui_port = 17;
-    }
-    oneof db_container_name_present {
-      string db_container_name = 18;
-    }
-    oneof redis_container_name_present {
-      string redis_container_name = 19;
-    }
-    oneof docker_project_name_present {
-      string docker_project_name = 20;
-    }
-    oneof enable_build_present {
-      bool enable_build = 21;
-    }
-    oneof frontend_only_present {
-      bool frontend_only = 22;
-    }
-    oneof source_ui_image_present {
-      string source_ui_image = 23;
-    }
-    oneof extra_hosts_present {
-      string extra_hosts = 24;
-    }
-    oneof no_start_present {
-      bool no_start = 25;
-    }
-}
-
-message XOSs {
-    repeated XOS items = 1;
-}
-
-
-
-message ServiceClass {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof description_present {
-      string description = 16;
-    }
-    oneof commitment_present {
-      int32 commitment = 17;
-    }
-    oneof membershipFee_present {
-      int32 membershipFee = 18;
-    }
-    oneof membershipFeeMonths_present {
-      int32 membershipFeeMonths = 19;
-    }
-    oneof upgradeRequiresApproval_present {
-      bool upgradeRequiresApproval = 20;
-    }
-}
-
-message ServiceClasss {
-    repeated ServiceClass items = 1;
-}
-
-
-
-message TenantAttribute {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof value_present {
-      string value = 16;
-    }
-    oneof tenant_present {
-      int32 tenant_id = 17;
-    }
-}
-
-message TenantAttributes {
-    repeated TenantAttribute items = 1;
-}
-
-
-
-message SiteRole {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_present {
-      string role = 15;
-    }
-}
-
-message SiteRoles {
-    repeated SiteRole items = 1;
-}
-
-
-
-message Subscriber {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof kind_present {
-      string kind = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof service_specific_attribute_present {
-      string service_specific_attribute = 17;
-    }
-    oneof service_specific_id_present {
-      string service_specific_id = 18;
-    }
-}
-
-message Subscribers {
-    repeated Subscriber items = 1;
-}
-
-
-
-message Instance {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof instance_id_present {
-      string instance_id = 15;
-    }
-    oneof instance_uuid_present {
-      string instance_uuid = 16;
-    }
-    oneof name_present {
-      string name = 17;
-    }
-    oneof instance_name_present {
-      string instance_name = 18;
-    }
-    oneof ip_present {
-      string ip = 19;
-    }
-    oneof image_present {
-      int32 image_id = 20;
-    }
-    oneof creator_present {
-      int32 creator_id = 21;
-    }
-    oneof slice_present {
-      int32 slice_id = 22;
-    }
-    oneof deployment_present {
-      int32 deployment_id = 23;
-    }
-    oneof node_present {
-      int32 node_id = 24;
-    }
-    oneof numberCores_present {
-      int32 numberCores = 25;
-    }
-    oneof flavor_present {
-      int32 flavor_id = 26;
-    }
-    oneof userData_present {
-      string userData = 27;
-    }
-    oneof isolation_present {
-      string isolation = 28;
-    }
-    oneof volumes_present {
-      string volumes = 29;
-    }
-    oneof parent_present {
-      int32 parent_id = 30;
-    }
-}
-
-message Instances {
-    repeated Instance items = 1;
-}
-
-
-
-message Charge {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof account_present {
-      int32 account_id = 15;
-    }
-    oneof slice_present {
-      int32 slice_id = 16;
-    }
-    oneof kind_present {
-      string kind = 17;
-    }
-    oneof state_present {
-      string state = 18;
-    }
-    oneof date_present {
-      float date = 19;
-    }
-    oneof object_present {
-      int32 object_id = 20;
-    }
-    oneof amount_present {
-      float amount = 21;
-    }
-    oneof coreHours_present {
-      float coreHours = 22;
-    }
-    oneof invoice_present {
-      int32 invoice_id = 23;
-    }
-}
-
-message Charges {
-    repeated Charge items = 1;
-}
-
-
-
-message Program {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof description_present {
-      string description = 16;
-    }
-    oneof kind_present {
-      string kind = 17;
-    }
-    oneof command_present {
-      string command = 18;
-    }
-    oneof owner_present {
-      int32 owner_id = 19;
-    }
-    oneof contents_present {
-      string contents = 20;
-    }
-    oneof output_present {
-      string output = 21;
-    }
-    oneof messages_present {
-      string messages = 22;
-    }
-    oneof status_present {
-      string status = 23;
-    }
-}
-
-message Programs {
-    repeated Program items = 1;
-}
-
-
-
-message Role {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_type_present {
-      string role_type = 15;
-    }
-    oneof role_present {
-      string role = 16;
-    }
-    oneof description_present {
-      string description = 17;
-    }
-    oneof content_type_present {
-      int32 content_type_id = 18;
-    }
-}
-
-message Roles {
-    repeated Role items = 1;
-}
-
-
-
-message NodeLabel {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-}
-
-message NodeLabels {
-    repeated NodeLabel items = 1;
-}
-
-
-
-message NetworkTemplate {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof description_present {
-      string description = 16;
-    }
-    oneof guaranteed_bandwidth_present {
-      int32 guaranteed_bandwidth = 17;
-    }
-    oneof visibility_present {
-      string visibility = 18;
-    }
-    oneof translation_present {
-      string translation = 19;
-    }
-    oneof access_present {
-      string access = 20;
-    }
-    oneof shared_network_name_present {
-      string shared_network_name = 21;
-    }
-    oneof shared_network_id_present {
-      string shared_network_id = 22;
-    }
-    oneof topology_kind_present {
-      string topology_kind = 23;
-    }
-    oneof controller_kind_present {
-      string controller_kind = 24;
-    }
-    oneof vtn_kind_present {
-      string vtn_kind = 25;
-    }
-}
-
-message NetworkTemplates {
-    repeated NetworkTemplate items = 1;
-}
-
-
-
-message ServiceController {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof xos_present {
-      int32 xos_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof base_url_present {
-      string base_url = 17;
-    }
-    oneof version_present {
-      string version = 18;
-    }
-    oneof provides_present {
-      string provides = 19;
-    }
-    oneof requires_present {
-      string requires = 20;
-    }
-    oneof synchronizer_run_present {
-      string synchronizer_run = 21;
-    }
-    oneof synchronizer_config_present {
-      string synchronizer_config = 22;
-    }
-    oneof no_start_present {
-      bool no_start = 23;
-    }
-}
-
-message ServiceControllers {
-    repeated ServiceController items = 1;
-}
-
-
-
-message LoadableModule {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof xos_present {
-      int32 xos_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof base_url_present {
-      string base_url = 17;
-    }
-    oneof version_present {
-      string version = 18;
-    }
-    oneof provides_present {
-      string provides = 19;
-    }
-    oneof requires_present {
-      string requires = 20;
-    }
-}
-
-message LoadableModules {
-    repeated LoadableModule items = 1;
-}
-
-
-
-message UsableObject {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-}
-
-message UsableObjects {
-    repeated UsableObject items = 1;
-}
-
-
-
-message Node {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof site_deployment_present {
-      int32 site_deployment_id = 16;
-    }
-    oneof site_present {
-      int32 site_id = 17;
-    }
-}
-
-message Nodes {
-    repeated Node items = 1;
-}
-
-
-
-message AddressPool {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof addresses_present {
-      string addresses = 16;
-    }
-    oneof gateway_ip_present {
-      string gateway_ip = 17;
-    }
-    oneof gateway_mac_present {
-      string gateway_mac = 18;
-    }
-    oneof cidr_present {
-      string cidr = 19;
-    }
-    oneof inuse_present {
-      string inuse = 20;
-    }
-    oneof service_present {
-      int32 service_id = 21;
-    }
-}
-
-message AddressPools {
-    repeated AddressPool items = 1;
-}
-
-
-
-message DashboardView {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof url_present {
-      string url = 16;
-    }
-    oneof enabled_present {
-      bool enabled = 17;
-    }
-    oneof icon_present {
-      string icon = 18;
-    }
-    oneof icon_active_present {
-      string icon_active = 19;
-    }
-}
-
-message DashboardViews {
-    repeated DashboardView items = 1;
-}
-
-
-
-message NetworkParameter {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof parameter_present {
-      int32 parameter_id = 15;
-    }
-    oneof value_present {
-      string value = 16;
-    }
-    oneof content_type_present {
-      int32 content_type_id = 17;
-    }
-    oneof object_id_present {
-      uint32 object_id = 18;
-    }
-}
-
-message NetworkParameters {
-    repeated NetworkParameter items = 1;
-}
-
-
-
-message ImageDeployments {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof image_present {
-      int32 image_id = 15;
-    }
-    oneof deployment_present {
-      int32 deployment_id = 16;
-    }
-}
-
-message ImageDeploymentss {
-    repeated ImageDeployments items = 1;
-}
-
-
-
-message ControllerUser {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof controller_present {
-      int32 controller_id = 16;
-    }
-    oneof kuser_id_present {
-      string kuser_id = 17;
-    }
-}
-
-message ControllerUsers {
-    repeated ControllerUser items = 1;
-}
-
-
-
-message ReservedResource {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof instance_present {
-      int32 instance_id = 15;
-    }
-    oneof resource_present {
-      int32 resource_id = 16;
-    }
-    oneof quantity_present {
-      int32 quantity = 17;
-    }
-    oneof reservationSet_present {
-      int32 reservationSet_id = 18;
-    }
-}
-
-message ReservedResources {
-    repeated ReservedResource items = 1;
-}
-
-
-
-message JournalEntry {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof objClassName_present {
-      string objClassName = 2;
-    }
-    oneof objId_present {
-      string objId = 3;
-    }
-    oneof objUnicode_present {
-      string objUnicode = 4;
-    }
-    oneof operation_present {
-      string operation = 5;
-    }
-    oneof msg_present {
-      string msg = 6;
-    }
-    oneof timestamp_present {
-      float timestamp = 7;
-    }
-}
-
-message JournalEntrys {
-    repeated JournalEntry items = 1;
-}
-
-
-
-message UserCredential {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof key_id_present {
-      string key_id = 17;
-    }
-    oneof enc_value_present {
-      string enc_value = 18;
-    }
-}
-
-message UserCredentials {
-    repeated UserCredential items = 1;
-}
-
-
-
-message ControllerDashboardView {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof controller_present {
-      int32 controller_id = 15;
-    }
-    oneof dashboardView_present {
-      int32 dashboardView_id = 16;
-    }
-    oneof enabled_present {
-      bool enabled = 17;
-    }
-    oneof url_present {
-      string url = 18;
-    }
-}
-
-message ControllerDashboardViews {
-    repeated ControllerDashboardView items = 1;
-}
-
-
-
-message UserDashboardView {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof dashboardView_present {
-      int32 dashboardView_id = 16;
-    }
-    oneof order_present {
-      int32 order = 17;
-    }
-}
-
-message UserDashboardViews {
-    repeated UserDashboardView items = 1;
-}
-
-
-
-message Controller {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof backend_type_present {
-      string backend_type = 16;
-    }
-    oneof version_present {
-      string version = 17;
-    }
-    oneof auth_url_present {
-      string auth_url = 18;
-    }
-    oneof admin_user_present {
-      string admin_user = 19;
-    }
-    oneof admin_password_present {
-      string admin_password = 20;
-    }
-    oneof admin_tenant_present {
-      string admin_tenant = 21;
-    }
-    oneof domain_present {
-      string domain = 22;
-    }
-    oneof rabbit_host_present {
-      string rabbit_host = 23;
-    }
-    oneof rabbit_user_present {
-      string rabbit_user = 24;
-    }
-    oneof rabbit_password_present {
-      string rabbit_password = 25;
-    }
-    oneof deployment_present {
-      int32 deployment_id = 26;
-    }
-}
-
-message Controllers {
-    repeated Controller items = 1;
-}
-
-
-
-message TenantRootRole {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_present {
-      string role = 15;
-    }
-}
-
-message TenantRootRoles {
-    repeated TenantRootRole items = 1;
-}
-
-
-
-message Deployment {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof accessControl_present {
-      string accessControl = 16;
-    }
-}
-
-message Deployments {
-    repeated Deployment items = 1;
-}
-
-
-
-message Reservation {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof startTime_present {
-      float startTime = 15;
-    }
-    oneof slice_present {
-      int32 slice_id = 16;
-    }
-    oneof duration_present {
-      int32 duration = 17;
-    }
-}
-
-message Reservations {
-    repeated Reservation items = 1;
-}
-
-
-
-message SitePrivilege {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof site_present {
-      int32 site_id = 16;
-    }
-    oneof role_present {
-      int32 role_id = 17;
-    }
-}
-
-message SitePrivileges {
-    repeated SitePrivilege items = 1;
-}
-
-
-
-message Payment {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof account_present {
-      int32 account_id = 15;
-    }
-    oneof amount_present {
-      float amount = 16;
-    }
-    oneof date_present {
-      float date = 17;
-    }
-}
-
-message Payments {
-    repeated Payment items = 1;
-}
-
-
-
-message Tenant {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof kind_present {
-      string kind = 15;
-    }
-    oneof provider_service_present {
-      int32 provider_service_id = 16;
-    }
-    oneof subscriber_service_present {
-      int32 subscriber_service_id = 17;
-    }
-    oneof subscriber_tenant_present {
-      int32 subscriber_tenant_id = 18;
-    }
-    oneof subscriber_user_present {
-      int32 subscriber_user_id = 19;
-    }
-    oneof subscriber_root_present {
-      int32 subscriber_root_id = 20;
-    }
-    oneof subscriber_network_present {
-      int32 subscriber_network_id = 21;
-    }
-    oneof service_specific_id_present {
-      string service_specific_id = 22;
-    }
-    oneof service_specific_attribute_present {
-      string service_specific_attribute = 23;
-    }
-    oneof connect_method_present {
-      string connect_method = 24;
-    }
-}
-
-message Tenants {
-    repeated Tenant items = 1;
-}
-
-
-
-message Network {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof template_present {
-      int32 template_id = 16;
-    }
-    oneof subnet_present {
-      string subnet = 17;
-    }
-    oneof start_ip_present {
-      string start_ip = 18;
-    }
-    oneof end_ip_present {
-      string end_ip = 19;
-    }
-    oneof ports_present {
-      string ports = 20;
-    }
-    oneof labels_present {
-      string labels = 21;
-    }
-    oneof owner_present {
-      int32 owner_id = 22;
-    }
-    oneof guaranteed_bandwidth_present {
-      int32 guaranteed_bandwidth = 23;
-    }
-    oneof permit_all_slices_present {
-      bool permit_all_slices = 24;
-    }
-    oneof topology_parameters_present {
-      string topology_parameters = 25;
-    }
-    oneof controller_url_present {
-      string controller_url = 26;
-    }
-    oneof controller_parameters_present {
-      string controller_parameters = 27;
-    }
-    oneof network_id_present {
-      string network_id = 28;
-    }
-    oneof router_id_present {
-      string router_id = 29;
-    }
-    oneof subnet_id_present {
-      string subnet_id = 30;
-    }
-    oneof autoconnect_present {
-      bool autoconnect = 31;
-    }
-}
-
-message Networks {
-    repeated Network items = 1;
-}
-
-
-
-message NetworkSlice {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof network_present {
-      int32 network_id = 15;
-    }
-    oneof slice_present {
-      int32 slice_id = 16;
-    }
-}
-
-message NetworkSlices {
-    repeated NetworkSlice items = 1;
-}
-
-
-
-message Account {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof site_present {
-      int32 site_id = 15;
-    }
-}
-
-message Accounts {
-    repeated Account items = 1;
-}
-
-
-
-message TenantRoot {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof kind_present {
-      string kind = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof service_specific_attribute_present {
-      string service_specific_attribute = 17;
-    }
-    oneof service_specific_id_present {
-      string service_specific_id = 18;
-    }
-}
-
-message TenantRoots {
-    repeated TenantRoot items = 1;
-}
-
-
-
-message Service {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof description_present {
-      string description = 15;
-    }
-    oneof enabled_present {
-      bool enabled = 16;
-    }
-    oneof kind_present {
-      string kind = 17;
-    }
-    oneof name_present {
-      string name = 18;
-    }
-    oneof versionNumber_present {
-      string versionNumber = 19;
-    }
-    oneof published_present {
-      bool published = 20;
-    }
-    oneof view_url_present {
-      string view_url = 21;
-    }
-    oneof icon_url_present {
-      string icon_url = 22;
-    }
-    oneof public_key_present {
-      string public_key = 23;
-    }
-    oneof private_key_fn_present {
-      string private_key_fn = 24;
-    }
-    oneof service_specific_id_present {
-      string service_specific_id = 25;
-    }
-    oneof service_specific_attribute_present {
-      string service_specific_attribute = 26;
-    }
-    oneof controller_present {
-      int32 controller_id = 27;
-    }
-}
-
-message Services {
-    repeated Service items = 1;
-}
-
-
-
-message ControllerSlicePrivilege {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof controller_present {
-      int32 controller_id = 15;
-    }
-    oneof slice_privilege_present {
-      int32 slice_privilege_id = 16;
-    }
-    oneof role_id_present {
-      string role_id = 17;
-    }
-}
-
-message ControllerSlicePrivileges {
-    repeated ControllerSlicePrivilege items = 1;
-}
-
-
-
-message SiteCredential {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof site_present {
-      int32 site_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof key_id_present {
-      string key_id = 17;
-    }
-    oneof enc_value_present {
-      string enc_value = 18;
-    }
-}
-
-message SiteCredentials {
-    repeated SiteCredential items = 1;
-}
-
-
-
-message DeploymentPrivilege {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof deployment_present {
-      int32 deployment_id = 16;
-    }
-    oneof role_present {
-      int32 role_id = 17;
-    }
-}
-
-message DeploymentPrivileges {
-    repeated DeploymentPrivilege items = 1;
-}
-
-
-
-message NetworkParameterType {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof description_present {
-      string description = 16;
-    }
-}
-
-message NetworkParameterTypes {
-    repeated NetworkParameterType items = 1;
-}
-
-
-
-message Provider {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof kind_present {
-      string kind = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof service_specific_attribute_present {
-      string service_specific_attribute = 17;
-    }
-    oneof service_specific_id_present {
-      string service_specific_id = 18;
-    }
-}
-
-message Providers {
-    repeated Provider items = 1;
-}
-
-
-
-message TenantWithContainer {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof kind_present {
-      string kind = 15;
-    }
-    oneof provider_service_present {
-      int32 provider_service_id = 16;
-    }
-    oneof subscriber_service_present {
-      int32 subscriber_service_id = 17;
-    }
-    oneof subscriber_tenant_present {
-      int32 subscriber_tenant_id = 18;
-    }
-    oneof subscriber_user_present {
-      int32 subscriber_user_id = 19;
-    }
-    oneof subscriber_root_present {
-      int32 subscriber_root_id = 20;
-    }
-    oneof subscriber_network_present {
-      int32 subscriber_network_id = 21;
-    }
-    oneof service_specific_id_present {
-      string service_specific_id = 22;
-    }
-    oneof service_specific_attribute_present {
-      string service_specific_attribute = 23;
-    }
-    oneof connect_method_present {
-      string connect_method = 24;
-    }
-}
-
-message TenantWithContainers {
-    repeated TenantWithContainer items = 1;
-}
-
-
-
-message DeploymentRole {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof role_present {
-      string role = 15;
-    }
-}
-
-message DeploymentRoles {
-    repeated DeploymentRole items = 1;
-}
-
-
-
-message Project {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-}
-
-message Projects {
-    repeated Project items = 1;
-}
-
-
-
-message TenantRootPrivilege {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof tenant_root_present {
-      int32 tenant_root_id = 16;
-    }
-    oneof role_present {
-      int32 role_id = 17;
-    }
-}
-
-message TenantRootPrivileges {
-    repeated TenantRootPrivilege items = 1;
-}
-
-
-
-message XOSComponentVolume {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof component_present {
-      int32 component_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof container_path_present {
-      string container_path = 17;
-    }
-    oneof host_path_present {
-      string host_path = 18;
-    }
-    oneof read_only_present {
-      bool read_only = 19;
-    }
-}
-
-message XOSComponentVolumes {
-    repeated XOSComponentVolume items = 1;
-}
-
-
-
-message SliceCredential {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof slice_present {
-      int32 slice_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof key_id_present {
-      string key_id = 17;
-    }
-    oneof enc_value_present {
-      string enc_value = 18;
-    }
-}
-
-message SliceCredentials {
-    repeated SliceCredential items = 1;
-}
-
-
-
-message SliceTag {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof slice_present {
-      int32 slice_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof value_present {
-      string value = 17;
-    }
-}
-
-message SliceTags {
-    repeated SliceTag items = 1;
-}
-
-
-
-message CoarseTenant {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof kind_present {
-      string kind = 15;
-    }
-    oneof provider_service_present {
-      int32 provider_service_id = 16;
-    }
-    oneof subscriber_service_present {
-      int32 subscriber_service_id = 17;
-    }
-    oneof subscriber_tenant_present {
-      int32 subscriber_tenant_id = 18;
-    }
-    oneof subscriber_user_present {
-      int32 subscriber_user_id = 19;
-    }
-    oneof subscriber_root_present {
-      int32 subscriber_root_id = 20;
-    }
-    oneof subscriber_network_present {
-      int32 subscriber_network_id = 21;
-    }
-    oneof service_specific_id_present {
-      string service_specific_id = 22;
-    }
-    oneof service_specific_attribute_present {
-      string service_specific_attribute = 23;
-    }
-    oneof connect_method_present {
-      string connect_method = 24;
-    }
-}
-
-message CoarseTenants {
-    repeated CoarseTenant items = 1;
-}
-
-
-
-message Router {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof name_present {
-      string name = 15;
-    }
-    oneof owner_present {
-      int32 owner_id = 16;
-    }
-}
-
-message Routers {
-    repeated Router items = 1;
-}
-
-
-
-message ServiceResource {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof serviceClass_present {
-      int32 serviceClass_id = 15;
-    }
-    oneof name_present {
-      string name = 16;
-    }
-    oneof maxUnitsDeployment_present {
-      int32 maxUnitsDeployment = 17;
-    }
-    oneof maxUnitsNode_present {
-      int32 maxUnitsNode = 18;
-    }
-    oneof maxDuration_present {
-      int32 maxDuration = 19;
-    }
-    oneof bucketInRate_present {
-      int32 bucketInRate = 20;
-    }
-    oneof bucketMaxSize_present {
-      int32 bucketMaxSize = 21;
-    }
-    oneof cost_present {
-      int32 cost = 22;
-    }
-    oneof calendarReservable_present {
-      bool calendarReservable = 23;
-    }
-}
-
-message ServiceResources {
-    repeated ServiceResource items = 1;
-}
-
-
-
-message ServicePrivilege {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof created_present {
-      float created = 2;
-    }
-    oneof updated_present {
-      float updated = 3;
-    }
-    oneof enacted_present {
-      float enacted = 4;
-    }
-    oneof policed_present {
-      float policed = 5;
-    }
-    oneof backend_register_present {
-      string backend_register = 6;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 7;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 8;
-    }
-    oneof backend_status_present {
-      string backend_status = 9;
-    }
-    oneof deleted_present {
-      bool deleted = 10;
-    }
-    oneof write_protect_present {
-      bool write_protect = 11;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 12;
-    }
-    oneof no_sync_present {
-      bool no_sync = 13;
-    }
-    oneof no_policy_present {
-      bool no_policy = 14;
-    }
-    oneof user_present {
-      int32 user_id = 15;
-    }
-    oneof service_present {
-      int32 service_id = 16;
-    }
-    oneof role_present {
-      int32 role_id = 17;
-    }
-}
-
-message ServicePrivileges {
-    repeated ServicePrivilege items = 1;
-}
-
-
-
-message User {
-    oneof id_present {
-      int32 id = 1;
-    }
-    oneof password_present {
-      string password = 2;
-    }
-    oneof last_login_present {
-      float last_login = 3;
-    }
-    oneof email_present {
-      string email = 4;
-    }
-    oneof username_present {
-      string username = 5;
-    }
-    oneof firstname_present {
-      string firstname = 6;
-    }
-    oneof lastname_present {
-      string lastname = 7;
-    }
-    oneof phone_present {
-      string phone = 8;
-    }
-    oneof user_url_present {
-      string user_url = 9;
-    }
-    oneof site_present {
-      int32 site_id = 10;
-    }
-    oneof public_key_present {
-      string public_key = 11;
-    }
-    oneof is_active_present {
-      bool is_active = 12;
-    }
-    oneof is_admin_present {
-      bool is_admin = 13;
-    }
-    oneof is_staff_present {
-      bool is_staff = 14;
-    }
-    oneof is_readonly_present {
-      bool is_readonly = 15;
-    }
-    oneof is_registering_present {
-      bool is_registering = 16;
-    }
-    oneof is_appuser_present {
-      bool is_appuser = 17;
-    }
-    oneof login_page_present {
-      string login_page = 18;
-    }
-    oneof created_present {
-      float created = 19;
-    }
-    oneof updated_present {
-      float updated = 20;
-    }
-    oneof enacted_present {
-      float enacted = 21;
-    }
-    oneof policed_present {
-      float policed = 22;
-    }
-    oneof backend_status_present {
-      string backend_status = 23;
-    }
-    oneof backend_need_delete_present {
-      bool backend_need_delete = 24;
-    }
-    oneof backend_need_reap_present {
-      bool backend_need_reap = 25;
-    }
-    oneof deleted_present {
-      bool deleted = 26;
-    }
-    oneof write_protect_present {
-      bool write_protect = 27;
-    }
-    oneof lazy_blocked_present {
-      bool lazy_blocked = 28;
-    }
-    oneof no_sync_present {
-      bool no_sync = 29;
-    }
-    oneof no_policy_present {
-      bool no_policy = 30;
-    }
-    oneof timezone_present {
-      string timezone = 31;
-    }
-}
-
-message Users {
-    repeated User items = 1;
-}
-
-
-
-service xos {
-
-  rpc ListServiceControllerResource(google.protobuf.Empty) returns (ServiceControllerResources) {
-        option (google.api.http) = {
-            get: "/api/v1/servicecontrollerresources"
-        };
-  }
-  rpc GetServiceControllerResource(ID) returns (ServiceControllerResource) {
-        option (google.api.http) = {
-            get: "/api/v1/servicecontrollerresources/{id}"
-        };
-  }
-  rpc CreateServiceControllerResource(ServiceControllerResource) returns (ServiceControllerResource) {
-        option (google.api.http) = {
-            post: "/api/v1/servicecontrollerresources"
-            body: "*"
-        };
-  }
-  rpc UpdateServiceControllerResource(ServiceControllerResource) returns (ServiceControllerResource) {
-        option (google.api.http) = {
-            put: "/api/v1/servicecontrollerresources/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServiceControllerResource(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/servicecontrollerresources/{id}"
-        };
-  }
-
-  rpc ListXOSVolume(google.protobuf.Empty) returns (XOSVolumes) {
-        option (google.api.http) = {
-            get: "/api/v1/xosvolumes"
-        };
-  }
-  rpc GetXOSVolume(ID) returns (XOSVolume) {
-        option (google.api.http) = {
-            get: "/api/v1/xosvolumes/{id}"
-        };
-  }
-  rpc CreateXOSVolume(XOSVolume) returns (XOSVolume) {
-        option (google.api.http) = {
-            post: "/api/v1/xosvolumes"
-            body: "*"
-        };
-  }
-  rpc UpdateXOSVolume(XOSVolume) returns (XOSVolume) {
-        option (google.api.http) = {
-            put: "/api/v1/xosvolumes/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteXOSVolume(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/xosvolumes/{id}"
-        };
-  }
-
-  rpc ListServiceAttribute(google.protobuf.Empty) returns (ServiceAttributes) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceattributes"
-        };
-  }
-  rpc GetServiceAttribute(ID) returns (ServiceAttribute) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceattributes/{id}"
-        };
-  }
-  rpc CreateServiceAttribute(ServiceAttribute) returns (ServiceAttribute) {
-        option (google.api.http) = {
-            post: "/api/v1/serviceattributes"
-            body: "*"
-        };
-  }
-  rpc UpdateServiceAttribute(ServiceAttribute) returns (ServiceAttribute) {
-        option (google.api.http) = {
-            put: "/api/v1/serviceattributes/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServiceAttribute(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/serviceattributes/{id}"
-        };
-  }
-
-  rpc ListControllerImages(google.protobuf.Empty) returns (ControllerImagess) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerimageses"
-        };
-  }
-  rpc GetControllerImages(ID) returns (ControllerImages) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerimageses/{id}"
-        };
-  }
-  rpc CreateControllerImages(ControllerImages) returns (ControllerImages) {
-        option (google.api.http) = {
-            post: "/api/v1/controllerimageses"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerImages(ControllerImages) returns (ControllerImages) {
-        option (google.api.http) = {
-            put: "/api/v1/controllerimageses/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerImages(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllerimageses/{id}"
-        };
-  }
-
-  rpc ListControllerSitePrivilege(google.protobuf.Empty) returns (ControllerSitePrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/controllersiteprivileges"
-        };
-  }
-  rpc GetControllerSitePrivilege(ID) returns (ControllerSitePrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/controllersiteprivileges/{id}"
-        };
-  }
-  rpc CreateControllerSitePrivilege(ControllerSitePrivilege) returns (ControllerSitePrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/controllersiteprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerSitePrivilege(ControllerSitePrivilege) returns (ControllerSitePrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/controllersiteprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerSitePrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllersiteprivileges/{id}"
-        };
-  }
-
-  rpc ListImage(google.protobuf.Empty) returns (Images) {
-        option (google.api.http) = {
-            get: "/api/v1/images"
-        };
-  }
-  rpc GetImage(ID) returns (Image) {
-        option (google.api.http) = {
-            get: "/api/v1/images/{id}"
-        };
-  }
-  rpc CreateImage(Image) returns (Image) {
-        option (google.api.http) = {
-            post: "/api/v1/images"
-            body: "*"
-        };
-  }
-  rpc UpdateImage(Image) returns (Image) {
-        option (google.api.http) = {
-            put: "/api/v1/images/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteImage(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/images/{id}"
-        };
-  }
-
-  rpc ListControllerNetwork(google.protobuf.Empty) returns (ControllerNetworks) {
-        option (google.api.http) = {
-            get: "/api/v1/controllernetworks"
-        };
-  }
-  rpc GetControllerNetwork(ID) returns (ControllerNetwork) {
-        option (google.api.http) = {
-            get: "/api/v1/controllernetworks/{id}"
-        };
-  }
-  rpc CreateControllerNetwork(ControllerNetwork) returns (ControllerNetwork) {
-        option (google.api.http) = {
-            post: "/api/v1/controllernetworks"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerNetwork(ControllerNetwork) returns (ControllerNetwork) {
-        option (google.api.http) = {
-            put: "/api/v1/controllernetworks/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerNetwork(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllernetworks/{id}"
-        };
-  }
-
-  rpc ListSite(google.protobuf.Empty) returns (Sites) {
-        option (google.api.http) = {
-            get: "/api/v1/sites"
-        };
-  }
-  rpc GetSite(ID) returns (Site) {
-        option (google.api.http) = {
-            get: "/api/v1/sites/{id}"
-        };
-  }
-  rpc CreateSite(Site) returns (Site) {
-        option (google.api.http) = {
-            post: "/api/v1/sites"
-            body: "*"
-        };
-  }
-  rpc UpdateSite(Site) returns (Site) {
-        option (google.api.http) = {
-            put: "/api/v1/sites/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSite(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/sites/{id}"
-        };
-  }
-
-  rpc ListLibrary(google.protobuf.Empty) returns (Librarys) {
-        option (google.api.http) = {
-            get: "/api/v1/librarys"
-        };
-  }
-  rpc GetLibrary(ID) returns (Library) {
-        option (google.api.http) = {
-            get: "/api/v1/librarys/{id}"
-        };
-  }
-  rpc CreateLibrary(Library) returns (Library) {
-        option (google.api.http) = {
-            post: "/api/v1/librarys"
-            body: "*"
-        };
-  }
-  rpc UpdateLibrary(Library) returns (Library) {
-        option (google.api.http) = {
-            put: "/api/v1/librarys/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteLibrary(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/librarys/{id}"
-        };
-  }
-
-  rpc ListSliceRole(google.protobuf.Empty) returns (SliceRoles) {
-        option (google.api.http) = {
-            get: "/api/v1/sliceroles"
-        };
-  }
-  rpc GetSliceRole(ID) returns (SliceRole) {
-        option (google.api.http) = {
-            get: "/api/v1/sliceroles/{id}"
-        };
-  }
-  rpc CreateSliceRole(SliceRole) returns (SliceRole) {
-        option (google.api.http) = {
-            post: "/api/v1/sliceroles"
-            body: "*"
-        };
-  }
-  rpc UpdateSliceRole(SliceRole) returns (SliceRole) {
-        option (google.api.http) = {
-            put: "/api/v1/sliceroles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSliceRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/sliceroles/{id}"
-        };
-  }
-
-  rpc ListSiteDeployment(google.protobuf.Empty) returns (SiteDeployments) {
-        option (google.api.http) = {
-            get: "/api/v1/sitedeployments"
-        };
-  }
-  rpc GetSiteDeployment(ID) returns (SiteDeployment) {
-        option (google.api.http) = {
-            get: "/api/v1/sitedeployments/{id}"
-        };
-  }
-  rpc CreateSiteDeployment(SiteDeployment) returns (SiteDeployment) {
-        option (google.api.http) = {
-            post: "/api/v1/sitedeployments"
-            body: "*"
-        };
-  }
-  rpc UpdateSiteDeployment(SiteDeployment) returns (SiteDeployment) {
-        option (google.api.http) = {
-            put: "/api/v1/sitedeployments/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSiteDeployment(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/sitedeployments/{id}"
-        };
-  }
-
-  rpc ListXOSComponentLink(google.protobuf.Empty) returns (XOSComponentLinks) {
-        option (google.api.http) = {
-            get: "/api/v1/xoscomponentlinks"
-        };
-  }
-  rpc GetXOSComponentLink(ID) returns (XOSComponentLink) {
-        option (google.api.http) = {
-            get: "/api/v1/xoscomponentlinks/{id}"
-        };
-  }
-  rpc CreateXOSComponentLink(XOSComponentLink) returns (XOSComponentLink) {
-        option (google.api.http) = {
-            post: "/api/v1/xoscomponentlinks"
-            body: "*"
-        };
-  }
-  rpc UpdateXOSComponentLink(XOSComponentLink) returns (XOSComponentLink) {
-        option (google.api.http) = {
-            put: "/api/v1/xoscomponentlinks/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteXOSComponentLink(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/xoscomponentlinks/{id}"
-        };
-  }
-
-  rpc ListTenantPrivilege(google.protobuf.Empty) returns (TenantPrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantprivileges"
-        };
-  }
-  rpc GetTenantPrivilege(ID) returns (TenantPrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantprivileges/{id}"
-        };
-  }
-  rpc CreateTenantPrivilege(TenantPrivilege) returns (TenantPrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/tenantprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateTenantPrivilege(TenantPrivilege) returns (TenantPrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/tenantprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenantPrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenantprivileges/{id}"
-        };
-  }
-
-  rpc ListTag(google.protobuf.Empty) returns (Tags) {
-        option (google.api.http) = {
-            get: "/api/v1/tags"
-        };
-  }
-  rpc GetTag(ID) returns (Tag) {
-        option (google.api.http) = {
-            get: "/api/v1/tags/{id}"
-        };
-  }
-  rpc CreateTag(Tag) returns (Tag) {
-        option (google.api.http) = {
-            post: "/api/v1/tags"
-            body: "*"
-        };
-  }
-  rpc UpdateTag(Tag) returns (Tag) {
-        option (google.api.http) = {
-            put: "/api/v1/tags/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTag(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tags/{id}"
-        };
-  }
-
-  rpc ListServiceMonitoringAgentInfo(google.protobuf.Empty) returns (ServiceMonitoringAgentInfos) {
-        option (google.api.http) = {
-            get: "/api/v1/servicemonitoringagentinfos"
-        };
-  }
-  rpc GetServiceMonitoringAgentInfo(ID) returns (ServiceMonitoringAgentInfo) {
-        option (google.api.http) = {
-            get: "/api/v1/servicemonitoringagentinfos/{id}"
-        };
-  }
-  rpc CreateServiceMonitoringAgentInfo(ServiceMonitoringAgentInfo) returns (ServiceMonitoringAgentInfo) {
-        option (google.api.http) = {
-            post: "/api/v1/servicemonitoringagentinfos"
-            body: "*"
-        };
-  }
-  rpc UpdateServiceMonitoringAgentInfo(ServiceMonitoringAgentInfo) returns (ServiceMonitoringAgentInfo) {
-        option (google.api.http) = {
-            put: "/api/v1/servicemonitoringagentinfos/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServiceMonitoringAgentInfo(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/servicemonitoringagentinfos/{id}"
-        };
-  }
-
-  rpc ListXOSComponent(google.protobuf.Empty) returns (XOSComponents) {
-        option (google.api.http) = {
-            get: "/api/v1/xoscomponents"
-        };
-  }
-  rpc GetXOSComponent(ID) returns (XOSComponent) {
-        option (google.api.http) = {
-            get: "/api/v1/xoscomponents/{id}"
-        };
-  }
-  rpc CreateXOSComponent(XOSComponent) returns (XOSComponent) {
-        option (google.api.http) = {
-            post: "/api/v1/xoscomponents"
-            body: "*"
-        };
-  }
-  rpc UpdateXOSComponent(XOSComponent) returns (XOSComponent) {
-        option (google.api.http) = {
-            put: "/api/v1/xoscomponents/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteXOSComponent(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/xoscomponents/{id}"
-        };
-  }
-
-  rpc ListInvoice(google.protobuf.Empty) returns (Invoices) {
-        option (google.api.http) = {
-            get: "/api/v1/invoices"
-        };
-  }
-  rpc GetInvoice(ID) returns (Invoice) {
-        option (google.api.http) = {
-            get: "/api/v1/invoices/{id}"
-        };
-  }
-  rpc CreateInvoice(Invoice) returns (Invoice) {
-        option (google.api.http) = {
-            post: "/api/v1/invoices"
-            body: "*"
-        };
-  }
-  rpc UpdateInvoice(Invoice) returns (Invoice) {
-        option (google.api.http) = {
-            put: "/api/v1/invoices/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteInvoice(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/invoices/{id}"
-        };
-  }
-
-  rpc ListSlicePrivilege(google.protobuf.Empty) returns (SlicePrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/sliceprivileges"
-        };
-  }
-  rpc GetSlicePrivilege(ID) returns (SlicePrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/sliceprivileges/{id}"
-        };
-  }
-  rpc CreateSlicePrivilege(SlicePrivilege) returns (SlicePrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/sliceprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateSlicePrivilege(SlicePrivilege) returns (SlicePrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/sliceprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSlicePrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/sliceprivileges/{id}"
-        };
-  }
-
-  rpc ListFlavor(google.protobuf.Empty) returns (Flavors) {
-        option (google.api.http) = {
-            get: "/api/v1/flavors"
-        };
-  }
-  rpc GetFlavor(ID) returns (Flavor) {
-        option (google.api.http) = {
-            get: "/api/v1/flavors/{id}"
-        };
-  }
-  rpc CreateFlavor(Flavor) returns (Flavor) {
-        option (google.api.http) = {
-            post: "/api/v1/flavors"
-            body: "*"
-        };
-  }
-  rpc UpdateFlavor(Flavor) returns (Flavor) {
-        option (google.api.http) = {
-            put: "/api/v1/flavors/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteFlavor(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/flavors/{id}"
-        };
-  }
-
-  rpc ListPort(google.protobuf.Empty) returns (Ports) {
-        option (google.api.http) = {
-            get: "/api/v1/ports"
-        };
-  }
-  rpc GetPort(ID) returns (Port) {
-        option (google.api.http) = {
-            get: "/api/v1/ports/{id}"
-        };
-  }
-  rpc CreatePort(Port) returns (Port) {
-        option (google.api.http) = {
-            post: "/api/v1/ports"
-            body: "*"
-        };
-  }
-  rpc UpdatePort(Port) returns (Port) {
-        option (google.api.http) = {
-            put: "/api/v1/ports/{id}"
-            body: "*"
-        };
-  }
-  rpc DeletePort(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/ports/{id}"
-        };
-  }
-
-  rpc ListServiceRole(google.protobuf.Empty) returns (ServiceRoles) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceroles"
-        };
-  }
-  rpc GetServiceRole(ID) returns (ServiceRole) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceroles/{id}"
-        };
-  }
-  rpc CreateServiceRole(ServiceRole) returns (ServiceRole) {
-        option (google.api.http) = {
-            post: "/api/v1/serviceroles"
-            body: "*"
-        };
-  }
-  rpc UpdateServiceRole(ServiceRole) returns (ServiceRole) {
-        option (google.api.http) = {
-            put: "/api/v1/serviceroles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServiceRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/serviceroles/{id}"
-        };
-  }
-
-  rpc ListControllerSite(google.protobuf.Empty) returns (ControllerSites) {
-        option (google.api.http) = {
-            get: "/api/v1/controllersites"
-        };
-  }
-  rpc GetControllerSite(ID) returns (ControllerSite) {
-        option (google.api.http) = {
-            get: "/api/v1/controllersites/{id}"
-        };
-  }
-  rpc CreateControllerSite(ControllerSite) returns (ControllerSite) {
-        option (google.api.http) = {
-            post: "/api/v1/controllersites"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerSite(ControllerSite) returns (ControllerSite) {
-        option (google.api.http) = {
-            put: "/api/v1/controllersites/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerSite(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllersites/{id}"
-        };
-  }
-
-  rpc ListControllerSlice(google.protobuf.Empty) returns (ControllerSlices) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerslices"
-        };
-  }
-  rpc GetControllerSlice(ID) returns (ControllerSlice) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerslices/{id}"
-        };
-  }
-  rpc CreateControllerSlice(ControllerSlice) returns (ControllerSlice) {
-        option (google.api.http) = {
-            post: "/api/v1/controllerslices"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerSlice(ControllerSlice) returns (ControllerSlice) {
-        option (google.api.http) = {
-            put: "/api/v1/controllerslices/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerSlice(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllerslices/{id}"
-        };
-  }
-
-  rpc ListTenantRole(google.protobuf.Empty) returns (TenantRoles) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantroles"
-        };
-  }
-  rpc GetTenantRole(ID) returns (TenantRole) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantroles/{id}"
-        };
-  }
-  rpc CreateTenantRole(TenantRole) returns (TenantRole) {
-        option (google.api.http) = {
-            post: "/api/v1/tenantroles"
-            body: "*"
-        };
-  }
-  rpc UpdateTenantRole(TenantRole) returns (TenantRole) {
-        option (google.api.http) = {
-            put: "/api/v1/tenantroles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenantRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenantroles/{id}"
-        };
-  }
-
-  rpc ListSlice(google.protobuf.Empty) returns (Slices) {
-        option (google.api.http) = {
-            get: "/api/v1/slices"
-        };
-  }
-  rpc GetSlice(ID) returns (Slice) {
-        option (google.api.http) = {
-            get: "/api/v1/slices/{id}"
-        };
-  }
-  rpc CreateSlice(Slice) returns (Slice) {
-        option (google.api.http) = {
-            post: "/api/v1/slices"
-            body: "*"
-        };
-  }
-  rpc UpdateSlice(Slice) returns (Slice) {
-        option (google.api.http) = {
-            put: "/api/v1/slices/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSlice(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/slices/{id}"
-        };
-  }
-
-  rpc ListLoadableModuleResource(google.protobuf.Empty) returns (LoadableModuleResources) {
-        option (google.api.http) = {
-            get: "/api/v1/loadablemoduleresources"
-        };
-  }
-  rpc GetLoadableModuleResource(ID) returns (LoadableModuleResource) {
-        option (google.api.http) = {
-            get: "/api/v1/loadablemoduleresources/{id}"
-        };
-  }
-  rpc CreateLoadableModuleResource(LoadableModuleResource) returns (LoadableModuleResource) {
-        option (google.api.http) = {
-            post: "/api/v1/loadablemoduleresources"
-            body: "*"
-        };
-  }
-  rpc UpdateLoadableModuleResource(LoadableModuleResource) returns (LoadableModuleResource) {
-        option (google.api.http) = {
-            put: "/api/v1/loadablemoduleresources/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteLoadableModuleResource(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/loadablemoduleresources/{id}"
-        };
-  }
-
-  rpc ListControllerRole(google.protobuf.Empty) returns (ControllerRoles) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerroles"
-        };
-  }
-  rpc GetControllerRole(ID) returns (ControllerRole) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerroles/{id}"
-        };
-  }
-  rpc CreateControllerRole(ControllerRole) returns (ControllerRole) {
-        option (google.api.http) = {
-            post: "/api/v1/controllerroles"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerRole(ControllerRole) returns (ControllerRole) {
-        option (google.api.http) = {
-            put: "/api/v1/controllerroles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllerroles/{id}"
-        };
-  }
-
-  rpc ListDiag(google.protobuf.Empty) returns (Diags) {
-        option (google.api.http) = {
-            get: "/api/v1/diags"
-        };
-  }
-  rpc GetDiag(ID) returns (Diag) {
-        option (google.api.http) = {
-            get: "/api/v1/diags/{id}"
-        };
-  }
-  rpc CreateDiag(Diag) returns (Diag) {
-        option (google.api.http) = {
-            post: "/api/v1/diags"
-            body: "*"
-        };
-  }
-  rpc UpdateDiag(Diag) returns (Diag) {
-        option (google.api.http) = {
-            put: "/api/v1/diags/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteDiag(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/diags/{id}"
-        };
-  }
-
-  rpc ListXOS(google.protobuf.Empty) returns (XOSs) {
-        option (google.api.http) = {
-            get: "/api/v1/xoses"
-        };
-  }
-  rpc GetXOS(ID) returns (XOS) {
-        option (google.api.http) = {
-            get: "/api/v1/xoses/{id}"
-        };
-  }
-  rpc CreateXOS(XOS) returns (XOS) {
-        option (google.api.http) = {
-            post: "/api/v1/xoses"
-            body: "*"
-        };
-  }
-  rpc UpdateXOS(XOS) returns (XOS) {
-        option (google.api.http) = {
-            put: "/api/v1/xoses/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteXOS(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/xoses/{id}"
-        };
-  }
-
-  rpc ListServiceClass(google.protobuf.Empty) returns (ServiceClasss) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceclasses"
-        };
-  }
-  rpc GetServiceClass(ID) returns (ServiceClass) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceclasses/{id}"
-        };
-  }
-  rpc CreateServiceClass(ServiceClass) returns (ServiceClass) {
-        option (google.api.http) = {
-            post: "/api/v1/serviceclasses"
-            body: "*"
-        };
-  }
-  rpc UpdateServiceClass(ServiceClass) returns (ServiceClass) {
-        option (google.api.http) = {
-            put: "/api/v1/serviceclasses/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServiceClass(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/serviceclasses/{id}"
-        };
-  }
-
-  rpc ListTenantAttribute(google.protobuf.Empty) returns (TenantAttributes) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantattributes"
-        };
-  }
-  rpc GetTenantAttribute(ID) returns (TenantAttribute) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantattributes/{id}"
-        };
-  }
-  rpc CreateTenantAttribute(TenantAttribute) returns (TenantAttribute) {
-        option (google.api.http) = {
-            post: "/api/v1/tenantattributes"
-            body: "*"
-        };
-  }
-  rpc UpdateTenantAttribute(TenantAttribute) returns (TenantAttribute) {
-        option (google.api.http) = {
-            put: "/api/v1/tenantattributes/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenantAttribute(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenantattributes/{id}"
-        };
-  }
-
-  rpc ListSiteRole(google.protobuf.Empty) returns (SiteRoles) {
-        option (google.api.http) = {
-            get: "/api/v1/siteroles"
-        };
-  }
-  rpc GetSiteRole(ID) returns (SiteRole) {
-        option (google.api.http) = {
-            get: "/api/v1/siteroles/{id}"
-        };
-  }
-  rpc CreateSiteRole(SiteRole) returns (SiteRole) {
-        option (google.api.http) = {
-            post: "/api/v1/siteroles"
-            body: "*"
-        };
-  }
-  rpc UpdateSiteRole(SiteRole) returns (SiteRole) {
-        option (google.api.http) = {
-            put: "/api/v1/siteroles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSiteRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/siteroles/{id}"
-        };
-  }
-
-  rpc ListSubscriber(google.protobuf.Empty) returns (Subscribers) {
-        option (google.api.http) = {
-            get: "/api/v1/subscribers"
-        };
-  }
-  rpc GetSubscriber(ID) returns (Subscriber) {
-        option (google.api.http) = {
-            get: "/api/v1/subscribers/{id}"
-        };
-  }
-  rpc CreateSubscriber(Subscriber) returns (Subscriber) {
-        option (google.api.http) = {
-            post: "/api/v1/subscribers"
-            body: "*"
-        };
-  }
-  rpc UpdateSubscriber(Subscriber) returns (Subscriber) {
-        option (google.api.http) = {
-            put: "/api/v1/subscribers/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSubscriber(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/subscribers/{id}"
-        };
-  }
-
-  rpc ListInstance(google.protobuf.Empty) returns (Instances) {
-        option (google.api.http) = {
-            get: "/api/v1/instances"
-        };
-  }
-  rpc GetInstance(ID) returns (Instance) {
-        option (google.api.http) = {
-            get: "/api/v1/instances/{id}"
-        };
-  }
-  rpc CreateInstance(Instance) returns (Instance) {
-        option (google.api.http) = {
-            post: "/api/v1/instances"
-            body: "*"
-        };
-  }
-  rpc UpdateInstance(Instance) returns (Instance) {
-        option (google.api.http) = {
-            put: "/api/v1/instances/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteInstance(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/instances/{id}"
-        };
-  }
-
-  rpc ListCharge(google.protobuf.Empty) returns (Charges) {
-        option (google.api.http) = {
-            get: "/api/v1/charges"
-        };
-  }
-  rpc GetCharge(ID) returns (Charge) {
-        option (google.api.http) = {
-            get: "/api/v1/charges/{id}"
-        };
-  }
-  rpc CreateCharge(Charge) returns (Charge) {
-        option (google.api.http) = {
-            post: "/api/v1/charges"
-            body: "*"
-        };
-  }
-  rpc UpdateCharge(Charge) returns (Charge) {
-        option (google.api.http) = {
-            put: "/api/v1/charges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteCharge(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/charges/{id}"
-        };
-  }
-
-  rpc ListProgram(google.protobuf.Empty) returns (Programs) {
-        option (google.api.http) = {
-            get: "/api/v1/programs"
-        };
-  }
-  rpc GetProgram(ID) returns (Program) {
-        option (google.api.http) = {
-            get: "/api/v1/programs/{id}"
-        };
-  }
-  rpc CreateProgram(Program) returns (Program) {
-        option (google.api.http) = {
-            post: "/api/v1/programs"
-            body: "*"
-        };
-  }
-  rpc UpdateProgram(Program) returns (Program) {
-        option (google.api.http) = {
-            put: "/api/v1/programs/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteProgram(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/programs/{id}"
-        };
-  }
-
-  rpc ListRole(google.protobuf.Empty) returns (Roles) {
-        option (google.api.http) = {
-            get: "/api/v1/roles"
-        };
-  }
-  rpc GetRole(ID) returns (Role) {
-        option (google.api.http) = {
-            get: "/api/v1/roles/{id}"
-        };
-  }
-  rpc CreateRole(Role) returns (Role) {
-        option (google.api.http) = {
-            post: "/api/v1/roles"
-            body: "*"
-        };
-  }
-  rpc UpdateRole(Role) returns (Role) {
-        option (google.api.http) = {
-            put: "/api/v1/roles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/roles/{id}"
-        };
-  }
-
-  rpc ListNodeLabel(google.protobuf.Empty) returns (NodeLabels) {
-        option (google.api.http) = {
-            get: "/api/v1/nodelabels"
-        };
-  }
-  rpc GetNodeLabel(ID) returns (NodeLabel) {
-        option (google.api.http) = {
-            get: "/api/v1/nodelabels/{id}"
-        };
-  }
-  rpc CreateNodeLabel(NodeLabel) returns (NodeLabel) {
-        option (google.api.http) = {
-            post: "/api/v1/nodelabels"
-            body: "*"
-        };
-  }
-  rpc UpdateNodeLabel(NodeLabel) returns (NodeLabel) {
-        option (google.api.http) = {
-            put: "/api/v1/nodelabels/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteNodeLabel(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/nodelabels/{id}"
-        };
-  }
-
-  rpc ListNetworkTemplate(google.protobuf.Empty) returns (NetworkTemplates) {
-        option (google.api.http) = {
-            get: "/api/v1/networktemplates"
-        };
-  }
-  rpc GetNetworkTemplate(ID) returns (NetworkTemplate) {
-        option (google.api.http) = {
-            get: "/api/v1/networktemplates/{id}"
-        };
-  }
-  rpc CreateNetworkTemplate(NetworkTemplate) returns (NetworkTemplate) {
-        option (google.api.http) = {
-            post: "/api/v1/networktemplates"
-            body: "*"
-        };
-  }
-  rpc UpdateNetworkTemplate(NetworkTemplate) returns (NetworkTemplate) {
-        option (google.api.http) = {
-            put: "/api/v1/networktemplates/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteNetworkTemplate(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/networktemplates/{id}"
-        };
-  }
-
-  rpc ListServiceController(google.protobuf.Empty) returns (ServiceControllers) {
-        option (google.api.http) = {
-            get: "/api/v1/servicecontrollers"
-        };
-  }
-  rpc GetServiceController(ID) returns (ServiceController) {
-        option (google.api.http) = {
-            get: "/api/v1/servicecontrollers/{id}"
-        };
-  }
-  rpc CreateServiceController(ServiceController) returns (ServiceController) {
-        option (google.api.http) = {
-            post: "/api/v1/servicecontrollers"
-            body: "*"
-        };
-  }
-  rpc UpdateServiceController(ServiceController) returns (ServiceController) {
-        option (google.api.http) = {
-            put: "/api/v1/servicecontrollers/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServiceController(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/servicecontrollers/{id}"
-        };
-  }
-
-  rpc ListLoadableModule(google.protobuf.Empty) returns (LoadableModules) {
-        option (google.api.http) = {
-            get: "/api/v1/loadablemodules"
-        };
-  }
-  rpc GetLoadableModule(ID) returns (LoadableModule) {
-        option (google.api.http) = {
-            get: "/api/v1/loadablemodules/{id}"
-        };
-  }
-  rpc CreateLoadableModule(LoadableModule) returns (LoadableModule) {
-        option (google.api.http) = {
-            post: "/api/v1/loadablemodules"
-            body: "*"
-        };
-  }
-  rpc UpdateLoadableModule(LoadableModule) returns (LoadableModule) {
-        option (google.api.http) = {
-            put: "/api/v1/loadablemodules/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteLoadableModule(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/loadablemodules/{id}"
-        };
-  }
-
-  rpc ListUsableObject(google.protobuf.Empty) returns (UsableObjects) {
-        option (google.api.http) = {
-            get: "/api/v1/usableobjects"
-        };
-  }
-  rpc GetUsableObject(ID) returns (UsableObject) {
-        option (google.api.http) = {
-            get: "/api/v1/usableobjects/{id}"
-        };
-  }
-  rpc CreateUsableObject(UsableObject) returns (UsableObject) {
-        option (google.api.http) = {
-            post: "/api/v1/usableobjects"
-            body: "*"
-        };
-  }
-  rpc UpdateUsableObject(UsableObject) returns (UsableObject) {
-        option (google.api.http) = {
-            put: "/api/v1/usableobjects/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteUsableObject(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/usableobjects/{id}"
-        };
-  }
-
-  rpc ListNode(google.protobuf.Empty) returns (Nodes) {
-        option (google.api.http) = {
-            get: "/api/v1/nodes"
-        };
-  }
-  rpc GetNode(ID) returns (Node) {
-        option (google.api.http) = {
-            get: "/api/v1/nodes/{id}"
-        };
-  }
-  rpc CreateNode(Node) returns (Node) {
-        option (google.api.http) = {
-            post: "/api/v1/nodes"
-            body: "*"
-        };
-  }
-  rpc UpdateNode(Node) returns (Node) {
-        option (google.api.http) = {
-            put: "/api/v1/nodes/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteNode(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/nodes/{id}"
-        };
-  }
-
-  rpc ListAddressPool(google.protobuf.Empty) returns (AddressPools) {
-        option (google.api.http) = {
-            get: "/api/v1/addresspools"
-        };
-  }
-  rpc GetAddressPool(ID) returns (AddressPool) {
-        option (google.api.http) = {
-            get: "/api/v1/addresspools/{id}"
-        };
-  }
-  rpc CreateAddressPool(AddressPool) returns (AddressPool) {
-        option (google.api.http) = {
-            post: "/api/v1/addresspools"
-            body: "*"
-        };
-  }
-  rpc UpdateAddressPool(AddressPool) returns (AddressPool) {
-        option (google.api.http) = {
-            put: "/api/v1/addresspools/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteAddressPool(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/addresspools/{id}"
-        };
-  }
-
-  rpc ListDashboardView(google.protobuf.Empty) returns (DashboardViews) {
-        option (google.api.http) = {
-            get: "/api/v1/dashboardviews"
-        };
-  }
-  rpc GetDashboardView(ID) returns (DashboardView) {
-        option (google.api.http) = {
-            get: "/api/v1/dashboardviews/{id}"
-        };
-  }
-  rpc CreateDashboardView(DashboardView) returns (DashboardView) {
-        option (google.api.http) = {
-            post: "/api/v1/dashboardviews"
-            body: "*"
-        };
-  }
-  rpc UpdateDashboardView(DashboardView) returns (DashboardView) {
-        option (google.api.http) = {
-            put: "/api/v1/dashboardviews/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteDashboardView(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/dashboardviews/{id}"
-        };
-  }
-
-  rpc ListNetworkParameter(google.protobuf.Empty) returns (NetworkParameters) {
-        option (google.api.http) = {
-            get: "/api/v1/networkparameters"
-        };
-  }
-  rpc GetNetworkParameter(ID) returns (NetworkParameter) {
-        option (google.api.http) = {
-            get: "/api/v1/networkparameters/{id}"
-        };
-  }
-  rpc CreateNetworkParameter(NetworkParameter) returns (NetworkParameter) {
-        option (google.api.http) = {
-            post: "/api/v1/networkparameters"
-            body: "*"
-        };
-  }
-  rpc UpdateNetworkParameter(NetworkParameter) returns (NetworkParameter) {
-        option (google.api.http) = {
-            put: "/api/v1/networkparameters/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteNetworkParameter(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/networkparameters/{id}"
-        };
-  }
-
-  rpc ListImageDeployments(google.protobuf.Empty) returns (ImageDeploymentss) {
-        option (google.api.http) = {
-            get: "/api/v1/imagedeploymentses"
-        };
-  }
-  rpc GetImageDeployments(ID) returns (ImageDeployments) {
-        option (google.api.http) = {
-            get: "/api/v1/imagedeploymentses/{id}"
-        };
-  }
-  rpc CreateImageDeployments(ImageDeployments) returns (ImageDeployments) {
-        option (google.api.http) = {
-            post: "/api/v1/imagedeploymentses"
-            body: "*"
-        };
-  }
-  rpc UpdateImageDeployments(ImageDeployments) returns (ImageDeployments) {
-        option (google.api.http) = {
-            put: "/api/v1/imagedeploymentses/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteImageDeployments(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/imagedeploymentses/{id}"
-        };
-  }
-
-  rpc ListControllerUser(google.protobuf.Empty) returns (ControllerUsers) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerusers"
-        };
-  }
-  rpc GetControllerUser(ID) returns (ControllerUser) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerusers/{id}"
-        };
-  }
-  rpc CreateControllerUser(ControllerUser) returns (ControllerUser) {
-        option (google.api.http) = {
-            post: "/api/v1/controllerusers"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerUser(ControllerUser) returns (ControllerUser) {
-        option (google.api.http) = {
-            put: "/api/v1/controllerusers/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerUser(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllerusers/{id}"
-        };
-  }
-
-  rpc ListReservedResource(google.protobuf.Empty) returns (ReservedResources) {
-        option (google.api.http) = {
-            get: "/api/v1/reservedresources"
-        };
-  }
-  rpc GetReservedResource(ID) returns (ReservedResource) {
-        option (google.api.http) = {
-            get: "/api/v1/reservedresources/{id}"
-        };
-  }
-  rpc CreateReservedResource(ReservedResource) returns (ReservedResource) {
-        option (google.api.http) = {
-            post: "/api/v1/reservedresources"
-            body: "*"
-        };
-  }
-  rpc UpdateReservedResource(ReservedResource) returns (ReservedResource) {
-        option (google.api.http) = {
-            put: "/api/v1/reservedresources/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteReservedResource(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/reservedresources/{id}"
-        };
-  }
-
-  rpc ListJournalEntry(google.protobuf.Empty) returns (JournalEntrys) {
-        option (google.api.http) = {
-            get: "/api/v1/journalentrys"
-        };
-  }
-  rpc GetJournalEntry(ID) returns (JournalEntry) {
-        option (google.api.http) = {
-            get: "/api/v1/journalentrys/{id}"
-        };
-  }
-  rpc CreateJournalEntry(JournalEntry) returns (JournalEntry) {
-        option (google.api.http) = {
-            post: "/api/v1/journalentrys"
-            body: "*"
-        };
-  }
-  rpc UpdateJournalEntry(JournalEntry) returns (JournalEntry) {
-        option (google.api.http) = {
-            put: "/api/v1/journalentrys/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteJournalEntry(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/journalentrys/{id}"
-        };
-  }
-
-  rpc ListUserCredential(google.protobuf.Empty) returns (UserCredentials) {
-        option (google.api.http) = {
-            get: "/api/v1/usercredentials"
-        };
-  }
-  rpc GetUserCredential(ID) returns (UserCredential) {
-        option (google.api.http) = {
-            get: "/api/v1/usercredentials/{id}"
-        };
-  }
-  rpc CreateUserCredential(UserCredential) returns (UserCredential) {
-        option (google.api.http) = {
-            post: "/api/v1/usercredentials"
-            body: "*"
-        };
-  }
-  rpc UpdateUserCredential(UserCredential) returns (UserCredential) {
-        option (google.api.http) = {
-            put: "/api/v1/usercredentials/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteUserCredential(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/usercredentials/{id}"
-        };
-  }
-
-  rpc ListControllerDashboardView(google.protobuf.Empty) returns (ControllerDashboardViews) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerdashboardviews"
-        };
-  }
-  rpc GetControllerDashboardView(ID) returns (ControllerDashboardView) {
-        option (google.api.http) = {
-            get: "/api/v1/controllerdashboardviews/{id}"
-        };
-  }
-  rpc CreateControllerDashboardView(ControllerDashboardView) returns (ControllerDashboardView) {
-        option (google.api.http) = {
-            post: "/api/v1/controllerdashboardviews"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerDashboardView(ControllerDashboardView) returns (ControllerDashboardView) {
-        option (google.api.http) = {
-            put: "/api/v1/controllerdashboardviews/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerDashboardView(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllerdashboardviews/{id}"
-        };
-  }
-
-  rpc ListUserDashboardView(google.protobuf.Empty) returns (UserDashboardViews) {
-        option (google.api.http) = {
-            get: "/api/v1/userdashboardviews"
-        };
-  }
-  rpc GetUserDashboardView(ID) returns (UserDashboardView) {
-        option (google.api.http) = {
-            get: "/api/v1/userdashboardviews/{id}"
-        };
-  }
-  rpc CreateUserDashboardView(UserDashboardView) returns (UserDashboardView) {
-        option (google.api.http) = {
-            post: "/api/v1/userdashboardviews"
-            body: "*"
-        };
-  }
-  rpc UpdateUserDashboardView(UserDashboardView) returns (UserDashboardView) {
-        option (google.api.http) = {
-            put: "/api/v1/userdashboardviews/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteUserDashboardView(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/userdashboardviews/{id}"
-        };
-  }
-
-  rpc ListController(google.protobuf.Empty) returns (Controllers) {
-        option (google.api.http) = {
-            get: "/api/v1/controllers"
-        };
-  }
-  rpc GetController(ID) returns (Controller) {
-        option (google.api.http) = {
-            get: "/api/v1/controllers/{id}"
-        };
-  }
-  rpc CreateController(Controller) returns (Controller) {
-        option (google.api.http) = {
-            post: "/api/v1/controllers"
-            body: "*"
-        };
-  }
-  rpc UpdateController(Controller) returns (Controller) {
-        option (google.api.http) = {
-            put: "/api/v1/controllers/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteController(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllers/{id}"
-        };
-  }
-
-  rpc ListTenantRootRole(google.protobuf.Empty) returns (TenantRootRoles) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantrootroles"
-        };
-  }
-  rpc GetTenantRootRole(ID) returns (TenantRootRole) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantrootroles/{id}"
-        };
-  }
-  rpc CreateTenantRootRole(TenantRootRole) returns (TenantRootRole) {
-        option (google.api.http) = {
-            post: "/api/v1/tenantrootroles"
-            body: "*"
-        };
-  }
-  rpc UpdateTenantRootRole(TenantRootRole) returns (TenantRootRole) {
-        option (google.api.http) = {
-            put: "/api/v1/tenantrootroles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenantRootRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenantrootroles/{id}"
-        };
-  }
-
-  rpc ListDeployment(google.protobuf.Empty) returns (Deployments) {
-        option (google.api.http) = {
-            get: "/api/v1/deployments"
-        };
-  }
-  rpc GetDeployment(ID) returns (Deployment) {
-        option (google.api.http) = {
-            get: "/api/v1/deployments/{id}"
-        };
-  }
-  rpc CreateDeployment(Deployment) returns (Deployment) {
-        option (google.api.http) = {
-            post: "/api/v1/deployments"
-            body: "*"
-        };
-  }
-  rpc UpdateDeployment(Deployment) returns (Deployment) {
-        option (google.api.http) = {
-            put: "/api/v1/deployments/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteDeployment(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/deployments/{id}"
-        };
-  }
-
-  rpc ListReservation(google.protobuf.Empty) returns (Reservations) {
-        option (google.api.http) = {
-            get: "/api/v1/reservations"
-        };
-  }
-  rpc GetReservation(ID) returns (Reservation) {
-        option (google.api.http) = {
-            get: "/api/v1/reservations/{id}"
-        };
-  }
-  rpc CreateReservation(Reservation) returns (Reservation) {
-        option (google.api.http) = {
-            post: "/api/v1/reservations"
-            body: "*"
-        };
-  }
-  rpc UpdateReservation(Reservation) returns (Reservation) {
-        option (google.api.http) = {
-            put: "/api/v1/reservations/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteReservation(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/reservations/{id}"
-        };
-  }
-
-  rpc ListSitePrivilege(google.protobuf.Empty) returns (SitePrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/siteprivileges"
-        };
-  }
-  rpc GetSitePrivilege(ID) returns (SitePrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/siteprivileges/{id}"
-        };
-  }
-  rpc CreateSitePrivilege(SitePrivilege) returns (SitePrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/siteprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateSitePrivilege(SitePrivilege) returns (SitePrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/siteprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSitePrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/siteprivileges/{id}"
-        };
-  }
-
-  rpc ListPayment(google.protobuf.Empty) returns (Payments) {
-        option (google.api.http) = {
-            get: "/api/v1/payments"
-        };
-  }
-  rpc GetPayment(ID) returns (Payment) {
-        option (google.api.http) = {
-            get: "/api/v1/payments/{id}"
-        };
-  }
-  rpc CreatePayment(Payment) returns (Payment) {
-        option (google.api.http) = {
-            post: "/api/v1/payments"
-            body: "*"
-        };
-  }
-  rpc UpdatePayment(Payment) returns (Payment) {
-        option (google.api.http) = {
-            put: "/api/v1/payments/{id}"
-            body: "*"
-        };
-  }
-  rpc DeletePayment(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/payments/{id}"
-        };
-  }
-
-  rpc ListTenant(google.protobuf.Empty) returns (Tenants) {
-        option (google.api.http) = {
-            get: "/api/v1/tenants"
-        };
-  }
-  rpc GetTenant(ID) returns (Tenant) {
-        option (google.api.http) = {
-            get: "/api/v1/tenants/{id}"
-        };
-  }
-  rpc CreateTenant(Tenant) returns (Tenant) {
-        option (google.api.http) = {
-            post: "/api/v1/tenants"
-            body: "*"
-        };
-  }
-  rpc UpdateTenant(Tenant) returns (Tenant) {
-        option (google.api.http) = {
-            put: "/api/v1/tenants/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenant(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenants/{id}"
-        };
-  }
-
-  rpc ListNetwork(google.protobuf.Empty) returns (Networks) {
-        option (google.api.http) = {
-            get: "/api/v1/networks"
-        };
-  }
-  rpc GetNetwork(ID) returns (Network) {
-        option (google.api.http) = {
-            get: "/api/v1/networks/{id}"
-        };
-  }
-  rpc CreateNetwork(Network) returns (Network) {
-        option (google.api.http) = {
-            post: "/api/v1/networks"
-            body: "*"
-        };
-  }
-  rpc UpdateNetwork(Network) returns (Network) {
-        option (google.api.http) = {
-            put: "/api/v1/networks/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteNetwork(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/networks/{id}"
-        };
-  }
-
-  rpc ListNetworkSlice(google.protobuf.Empty) returns (NetworkSlices) {
-        option (google.api.http) = {
-            get: "/api/v1/networkslices"
-        };
-  }
-  rpc GetNetworkSlice(ID) returns (NetworkSlice) {
-        option (google.api.http) = {
-            get: "/api/v1/networkslices/{id}"
-        };
-  }
-  rpc CreateNetworkSlice(NetworkSlice) returns (NetworkSlice) {
-        option (google.api.http) = {
-            post: "/api/v1/networkslices"
-            body: "*"
-        };
-  }
-  rpc UpdateNetworkSlice(NetworkSlice) returns (NetworkSlice) {
-        option (google.api.http) = {
-            put: "/api/v1/networkslices/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteNetworkSlice(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/networkslices/{id}"
-        };
-  }
-
-  rpc ListAccount(google.protobuf.Empty) returns (Accounts) {
-        option (google.api.http) = {
-            get: "/api/v1/accounts"
-        };
-  }
-  rpc GetAccount(ID) returns (Account) {
-        option (google.api.http) = {
-            get: "/api/v1/accounts/{id}"
-        };
-  }
-  rpc CreateAccount(Account) returns (Account) {
-        option (google.api.http) = {
-            post: "/api/v1/accounts"
-            body: "*"
-        };
-  }
-  rpc UpdateAccount(Account) returns (Account) {
-        option (google.api.http) = {
-            put: "/api/v1/accounts/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteAccount(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/accounts/{id}"
-        };
-  }
-
-  rpc ListTenantRoot(google.protobuf.Empty) returns (TenantRoots) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantroots"
-        };
-  }
-  rpc GetTenantRoot(ID) returns (TenantRoot) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantroots/{id}"
-        };
-  }
-  rpc CreateTenantRoot(TenantRoot) returns (TenantRoot) {
-        option (google.api.http) = {
-            post: "/api/v1/tenantroots"
-            body: "*"
-        };
-  }
-  rpc UpdateTenantRoot(TenantRoot) returns (TenantRoot) {
-        option (google.api.http) = {
-            put: "/api/v1/tenantroots/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenantRoot(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenantroots/{id}"
-        };
-  }
-
-  rpc ListService(google.protobuf.Empty) returns (Services) {
-        option (google.api.http) = {
-            get: "/api/v1/services"
-        };
-  }
-  rpc GetService(ID) returns (Service) {
-        option (google.api.http) = {
-            get: "/api/v1/services/{id}"
-        };
-  }
-  rpc CreateService(Service) returns (Service) {
-        option (google.api.http) = {
-            post: "/api/v1/services"
-            body: "*"
-        };
-  }
-  rpc UpdateService(Service) returns (Service) {
-        option (google.api.http) = {
-            put: "/api/v1/services/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteService(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/services/{id}"
-        };
-  }
-
-  rpc ListControllerSlicePrivilege(google.protobuf.Empty) returns (ControllerSlicePrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/controllersliceprivileges"
-        };
-  }
-  rpc GetControllerSlicePrivilege(ID) returns (ControllerSlicePrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/controllersliceprivileges/{id}"
-        };
-  }
-  rpc CreateControllerSlicePrivilege(ControllerSlicePrivilege) returns (ControllerSlicePrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/controllersliceprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateControllerSlicePrivilege(ControllerSlicePrivilege) returns (ControllerSlicePrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/controllersliceprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteControllerSlicePrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/controllersliceprivileges/{id}"
-        };
-  }
-
-  rpc ListSiteCredential(google.protobuf.Empty) returns (SiteCredentials) {
-        option (google.api.http) = {
-            get: "/api/v1/sitecredentials"
-        };
-  }
-  rpc GetSiteCredential(ID) returns (SiteCredential) {
-        option (google.api.http) = {
-            get: "/api/v1/sitecredentials/{id}"
-        };
-  }
-  rpc CreateSiteCredential(SiteCredential) returns (SiteCredential) {
-        option (google.api.http) = {
-            post: "/api/v1/sitecredentials"
-            body: "*"
-        };
-  }
-  rpc UpdateSiteCredential(SiteCredential) returns (SiteCredential) {
-        option (google.api.http) = {
-            put: "/api/v1/sitecredentials/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSiteCredential(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/sitecredentials/{id}"
-        };
-  }
-
-  rpc ListDeploymentPrivilege(google.protobuf.Empty) returns (DeploymentPrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/deploymentprivileges"
-        };
-  }
-  rpc GetDeploymentPrivilege(ID) returns (DeploymentPrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/deploymentprivileges/{id}"
-        };
-  }
-  rpc CreateDeploymentPrivilege(DeploymentPrivilege) returns (DeploymentPrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/deploymentprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateDeploymentPrivilege(DeploymentPrivilege) returns (DeploymentPrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/deploymentprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteDeploymentPrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/deploymentprivileges/{id}"
-        };
-  }
-
-  rpc ListNetworkParameterType(google.protobuf.Empty) returns (NetworkParameterTypes) {
-        option (google.api.http) = {
-            get: "/api/v1/networkparametertypes"
-        };
-  }
-  rpc GetNetworkParameterType(ID) returns (NetworkParameterType) {
-        option (google.api.http) = {
-            get: "/api/v1/networkparametertypes/{id}"
-        };
-  }
-  rpc CreateNetworkParameterType(NetworkParameterType) returns (NetworkParameterType) {
-        option (google.api.http) = {
-            post: "/api/v1/networkparametertypes"
-            body: "*"
-        };
-  }
-  rpc UpdateNetworkParameterType(NetworkParameterType) returns (NetworkParameterType) {
-        option (google.api.http) = {
-            put: "/api/v1/networkparametertypes/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteNetworkParameterType(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/networkparametertypes/{id}"
-        };
-  }
-
-  rpc ListProvider(google.protobuf.Empty) returns (Providers) {
-        option (google.api.http) = {
-            get: "/api/v1/providers"
-        };
-  }
-  rpc GetProvider(ID) returns (Provider) {
-        option (google.api.http) = {
-            get: "/api/v1/providers/{id}"
-        };
-  }
-  rpc CreateProvider(Provider) returns (Provider) {
-        option (google.api.http) = {
-            post: "/api/v1/providers"
-            body: "*"
-        };
-  }
-  rpc UpdateProvider(Provider) returns (Provider) {
-        option (google.api.http) = {
-            put: "/api/v1/providers/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteProvider(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/providers/{id}"
-        };
-  }
-
-  rpc ListTenantWithContainer(google.protobuf.Empty) returns (TenantWithContainers) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantwithcontainers"
-        };
-  }
-  rpc GetTenantWithContainer(ID) returns (TenantWithContainer) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantwithcontainers/{id}"
-        };
-  }
-  rpc CreateTenantWithContainer(TenantWithContainer) returns (TenantWithContainer) {
-        option (google.api.http) = {
-            post: "/api/v1/tenantwithcontainers"
-            body: "*"
-        };
-  }
-  rpc UpdateTenantWithContainer(TenantWithContainer) returns (TenantWithContainer) {
-        option (google.api.http) = {
-            put: "/api/v1/tenantwithcontainers/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenantWithContainer(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenantwithcontainers/{id}"
-        };
-  }
-
-  rpc ListDeploymentRole(google.protobuf.Empty) returns (DeploymentRoles) {
-        option (google.api.http) = {
-            get: "/api/v1/deploymentroles"
-        };
-  }
-  rpc GetDeploymentRole(ID) returns (DeploymentRole) {
-        option (google.api.http) = {
-            get: "/api/v1/deploymentroles/{id}"
-        };
-  }
-  rpc CreateDeploymentRole(DeploymentRole) returns (DeploymentRole) {
-        option (google.api.http) = {
-            post: "/api/v1/deploymentroles"
-            body: "*"
-        };
-  }
-  rpc UpdateDeploymentRole(DeploymentRole) returns (DeploymentRole) {
-        option (google.api.http) = {
-            put: "/api/v1/deploymentroles/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteDeploymentRole(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/deploymentroles/{id}"
-        };
-  }
-
-  rpc ListProject(google.protobuf.Empty) returns (Projects) {
-        option (google.api.http) = {
-            get: "/api/v1/projects"
-        };
-  }
-  rpc GetProject(ID) returns (Project) {
-        option (google.api.http) = {
-            get: "/api/v1/projects/{id}"
-        };
-  }
-  rpc CreateProject(Project) returns (Project) {
-        option (google.api.http) = {
-            post: "/api/v1/projects"
-            body: "*"
-        };
-  }
-  rpc UpdateProject(Project) returns (Project) {
-        option (google.api.http) = {
-            put: "/api/v1/projects/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteProject(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/projects/{id}"
-        };
-  }
-
-  rpc ListTenantRootPrivilege(google.protobuf.Empty) returns (TenantRootPrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantrootprivileges"
-        };
-  }
-  rpc GetTenantRootPrivilege(ID) returns (TenantRootPrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/tenantrootprivileges/{id}"
-        };
-  }
-  rpc CreateTenantRootPrivilege(TenantRootPrivilege) returns (TenantRootPrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/tenantrootprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateTenantRootPrivilege(TenantRootPrivilege) returns (TenantRootPrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/tenantrootprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteTenantRootPrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/tenantrootprivileges/{id}"
-        };
-  }
-
-  rpc ListXOSComponentVolume(google.protobuf.Empty) returns (XOSComponentVolumes) {
-        option (google.api.http) = {
-            get: "/api/v1/xoscomponentvolumes"
-        };
-  }
-  rpc GetXOSComponentVolume(ID) returns (XOSComponentVolume) {
-        option (google.api.http) = {
-            get: "/api/v1/xoscomponentvolumes/{id}"
-        };
-  }
-  rpc CreateXOSComponentVolume(XOSComponentVolume) returns (XOSComponentVolume) {
-        option (google.api.http) = {
-            post: "/api/v1/xoscomponentvolumes"
-            body: "*"
-        };
-  }
-  rpc UpdateXOSComponentVolume(XOSComponentVolume) returns (XOSComponentVolume) {
-        option (google.api.http) = {
-            put: "/api/v1/xoscomponentvolumes/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteXOSComponentVolume(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/xoscomponentvolumes/{id}"
-        };
-  }
-
-  rpc ListSliceCredential(google.protobuf.Empty) returns (SliceCredentials) {
-        option (google.api.http) = {
-            get: "/api/v1/slicecredentials"
-        };
-  }
-  rpc GetSliceCredential(ID) returns (SliceCredential) {
-        option (google.api.http) = {
-            get: "/api/v1/slicecredentials/{id}"
-        };
-  }
-  rpc CreateSliceCredential(SliceCredential) returns (SliceCredential) {
-        option (google.api.http) = {
-            post: "/api/v1/slicecredentials"
-            body: "*"
-        };
-  }
-  rpc UpdateSliceCredential(SliceCredential) returns (SliceCredential) {
-        option (google.api.http) = {
-            put: "/api/v1/slicecredentials/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSliceCredential(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/slicecredentials/{id}"
-        };
-  }
-
-  rpc ListSliceTag(google.protobuf.Empty) returns (SliceTags) {
-        option (google.api.http) = {
-            get: "/api/v1/slicetags"
-        };
-  }
-  rpc GetSliceTag(ID) returns (SliceTag) {
-        option (google.api.http) = {
-            get: "/api/v1/slicetags/{id}"
-        };
-  }
-  rpc CreateSliceTag(SliceTag) returns (SliceTag) {
-        option (google.api.http) = {
-            post: "/api/v1/slicetags"
-            body: "*"
-        };
-  }
-  rpc UpdateSliceTag(SliceTag) returns (SliceTag) {
-        option (google.api.http) = {
-            put: "/api/v1/slicetags/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteSliceTag(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/slicetags/{id}"
-        };
-  }
-
-  rpc ListCoarseTenant(google.protobuf.Empty) returns (CoarseTenants) {
-        option (google.api.http) = {
-            get: "/api/v1/coarsetenants"
-        };
-  }
-  rpc GetCoarseTenant(ID) returns (CoarseTenant) {
-        option (google.api.http) = {
-            get: "/api/v1/coarsetenants/{id}"
-        };
-  }
-  rpc CreateCoarseTenant(CoarseTenant) returns (CoarseTenant) {
-        option (google.api.http) = {
-            post: "/api/v1/coarsetenants"
-            body: "*"
-        };
-  }
-  rpc UpdateCoarseTenant(CoarseTenant) returns (CoarseTenant) {
-        option (google.api.http) = {
-            put: "/api/v1/coarsetenants/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteCoarseTenant(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/coarsetenants/{id}"
-        };
-  }
-
-  rpc ListRouter(google.protobuf.Empty) returns (Routers) {
-        option (google.api.http) = {
-            get: "/api/v1/routers"
-        };
-  }
-  rpc GetRouter(ID) returns (Router) {
-        option (google.api.http) = {
-            get: "/api/v1/routers/{id}"
-        };
-  }
-  rpc CreateRouter(Router) returns (Router) {
-        option (google.api.http) = {
-            post: "/api/v1/routers"
-            body: "*"
-        };
-  }
-  rpc UpdateRouter(Router) returns (Router) {
-        option (google.api.http) = {
-            put: "/api/v1/routers/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteRouter(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/routers/{id}"
-        };
-  }
-
-  rpc ListServiceResource(google.protobuf.Empty) returns (ServiceResources) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceresources"
-        };
-  }
-  rpc GetServiceResource(ID) returns (ServiceResource) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceresources/{id}"
-        };
-  }
-  rpc CreateServiceResource(ServiceResource) returns (ServiceResource) {
-        option (google.api.http) = {
-            post: "/api/v1/serviceresources"
-            body: "*"
-        };
-  }
-  rpc UpdateServiceResource(ServiceResource) returns (ServiceResource) {
-        option (google.api.http) = {
-            put: "/api/v1/serviceresources/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServiceResource(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/serviceresources/{id}"
-        };
-  }
-
-  rpc ListServicePrivilege(google.protobuf.Empty) returns (ServicePrivileges) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceprivileges"
-        };
-  }
-  rpc GetServicePrivilege(ID) returns (ServicePrivilege) {
-        option (google.api.http) = {
-            get: "/api/v1/serviceprivileges/{id}"
-        };
-  }
-  rpc CreateServicePrivilege(ServicePrivilege) returns (ServicePrivilege) {
-        option (google.api.http) = {
-            post: "/api/v1/serviceprivileges"
-            body: "*"
-        };
-  }
-  rpc UpdateServicePrivilege(ServicePrivilege) returns (ServicePrivilege) {
-        option (google.api.http) = {
-            put: "/api/v1/serviceprivileges/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteServicePrivilege(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/serviceprivileges/{id}"
-        };
-  }
-
-  rpc ListUser(google.protobuf.Empty) returns (Users) {
-        option (google.api.http) = {
-            get: "/api/v1/users"
-        };
-  }
-  rpc GetUser(ID) returns (User) {
-        option (google.api.http) = {
-            get: "/api/v1/users/{id}"
-        };
-  }
-  rpc CreateUser(User) returns (User) {
-        option (google.api.http) = {
-            post: "/api/v1/users"
-            body: "*"
-        };
-  }
-  rpc UpdateUser(User) returns (User) {
-        option (google.api.http) = {
-            put: "/api/v1/users/{id}"
-            body: "*"
-        };
-  }
-  rpc DeleteUser(ID) returns (google.protobuf.Empty) {
-        option (google.api.http) = {
-            delete: "/api/v1/users/{id}"
-        };
-  }
-
-}
diff --git a/xos/grpc/protos/xosoptions.proto b/xos/grpc/protos/xosoptions.proto
new file mode 100644
index 0000000..d82fe6f
--- /dev/null
+++ b/xos/grpc/protos/xosoptions.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+
+package xos;
+
+import "google/protobuf/descriptor.proto";
+
+message ValRule {
+  int32 maxLength = 1;
+  bool nonNull = 2;
+  bool unique = 3;
+}
+
+message ForeignKeyRule {
+  string modelName = 1;
+}
+
+extend google.protobuf.FieldOptions {
+  ValRule val = 1001;
+  ForeignKeyRule foreignKey = 1002;
+}
diff --git a/xos/tools/apigen/protobuf.template.txt b/xos/tools/apigen/protobuf.template.txt
index b38c88c..359426a 100644
--- a/xos/tools/apigen/protobuf.template.txt
+++ b/xos/tools/apigen/protobuf.template.txt
@@ -5,6 +5,25 @@
 import "google/protobuf/empty.proto";
 import "google/api/annotations.proto";
 import "common.proto";
+import "xosoptions.proto";
+
+{%- macro fieldOpts(field) -%}
+  {%- set needComma=False -%}
+  {%- set needBrack=True -%}
+  {%- if field.max_length!=None -%}
+    {%- if needBrack -%}[{%- endif -%}{%- if needComma -%}, {%- endif -%}{%- set needComma=True -%}{%- set needBrack=False -%}
+    (val).maxLength = {{ field.max_length }}
+  {%- endif -%}
+  {%- if field.null==False -%}
+    {%- if needBrack -%}[{%- endif -%}{%- if needComma -%}, {%- endif -%}{%- set needComma=True -%}{%- set needBrack=False -%}
+    (val).nonNull= true
+  {%- endif -%}
+  {%- if field.related and field.related.model and field.related.model.__name__ -%}
+    {%- if needBrack -%}[{%- endif -%}{%- if needComma -%}, {%- endif -%}{%- set needComma=True -%}{%- set needBrack=False -%}
+    (foreignKey).modelName = "{{ field.related.model.__name__ }}"
+  {%- endif -%}
+  {%- if not needBrack -%}]{%- endif -%}
+{%- endmacro %}
 
 // Note: all fields are wrapped in a "oneof". This causes proto3 to always send
 // fields that are set by the caller, regardless if they are set to a default
@@ -16,11 +35,11 @@
   {%- for field in object.all_fields %}
     oneof {{ field.name }}_present {
     {%- if (field.get_internal_type() == "CharField") or (field.get_internal_type() == "TextField") or (field.get_internal_type() == "SlugField") %}
-      string {{ field.name }} = {{ loop.index }};
+      string {{ field.name }} = {{ loop.index }} {{ fieldOpts(field) }};
     {%- elif field.get_internal_type() == "BooleanField" %}
       bool {{ field.name }} = {{ loop.index }};
     {%- elif field.get_internal_type() == "ForeignKey" %}
-      int32 {{ field.name }}_id = {{ loop.index }};
+      int32 {{ field.name }}_id = {{ loop.index }} {{ fieldOpts(field) }};
     {%- elif field.get_internal_type() == "DateTimeField" %}
       float {{ field.name }} = {{ loop.index }};
     {%- elif field.get_internal_type() == "AutoField" %}
