diff --git a/xos/grpc/certs/Makefile b/xos/grpc/certs/Makefile
new file mode 100644
index 0000000..ad30dfc
--- /dev/null
+++ b/xos/grpc/certs/Makefile
@@ -0,0 +1,27 @@
+all: ca.crt server.crt server.key client.crt client.key
+
+ca.key:
+	openssl genrsa -passout pass:1111 -des3 -out ca.key 4096
+
+ca.crt: ca.key
+	openssl req -passin pass:1111 -new -x509 -days 365 -key ca.key -out ca.crt -subj  "/C=US/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=MyRootCA"
+
+server.key:
+	openssl genrsa -passout pass:1111 -des3 -out server.key 4096
+
+server.csr: server.key
+	openssl req -passin pass:1111 -new -key server.key -out server.csr -subj  "/C=US/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=localhost"
+
+server.crt: ca.crt ca.key server.csr
+	openssl x509 -req -passin pass:1111 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
+	openssl rsa -passin pass:1111 -in server.key -out server.key
+
+client.key:
+	openssl genrsa -passout pass:1111 -des3 -out client.key 4096
+
+client.csr: client.key
+	openssl req -passin pass:1111 -new -key client.key -out client.csr -subj  "/C=US/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=%CLIENT-COMPUTERNAME%"
+
+client.crt: client.csr ca.key
+	openssl x509 -passin pass:1111 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
+	openssl rsa -passin pass:1111 -in client.key -out client.key
\ No newline at end of file
diff --git a/xos/grpc/grpc_client.py b/xos/grpc/grpc_client.py
new file mode 100644
index 0000000..c40e99f
--- /dev/null
+++ b/xos/grpc/grpc_client.py
@@ -0,0 +1,51 @@
+import base64
+import grpc
+from protos.common_pb2 import *
+from protos.xos_pb2 import *
+from protos import xos_pb2_grpc
+from google.protobuf.empty_pb2 import Empty
+from grpc import metadata_call_credentials, ChannelCredentials, composite_channel_credentials, ssl_channel_credentials
+
+class UsernamePasswordCallCredentials(grpc.AuthMetadataPlugin):
+  """Metadata wrapper for raw access token credentials."""
+  def __init__(self, username, password):
+        self._username = username
+        self._password = password
+  def __call__(self, context, callback):
+        basic_auth = "Basic %s" % base64.b64encode("%s:%s" % (self._username, self._password))
+        metadata = (('Authorization', basic_auth),)
+        callback(metadata, None)
+
+class XOSClient(object):
+    def __init__(self, hostname, port):
+        self.hostname = hostname
+        self.port = port
+
+class InsecureClient(XOSClient):
+    def __init__(self, hostname, port=50055):
+        super(InsecureClient,self).__init__(hostname, port)
+        self.channel = grpc.insecure_channel("%s:%d" % (self.hostname, self.port))
+        self.stub = xos_pb2_grpc.xosStub(self.channel)
+
+class SecureClient(XOSClient):
+    def __init__(self, hostname, port=50051, cacert="certs/ca.crt", username=None, password=None):
+        super(SecureClient,self).__init__(hostname, port)
+
+        server_ca = open(cacert,"r").read()
+        call_creds = metadata_call_credentials(UsernamePasswordCallCredentials(username, password))
+        chan_creds = ssl_channel_credentials(server_ca)
+        chan_creds = composite_channel_credentials(chan_creds, call_creds)
+
+        self.channel = grpc.secure_channel("%s:%d" % (self.hostname, self.port), chan_creds)
+        self.stub = xos_pb2_grpc.xosStub(self.channel)
+
+def main():  # self-test
+    client = InsecureClient("localhost")
+    print client.stub.ListUser(Empty())
+
+    client = SecureClient("localhost", username="padmin@vicci.org", password="letmein")
+    print client.stub.ListUser(Empty())
+
+if __name__=="__main__":
+    main()
+
diff --git a/xos/grpc/grpc_server.py b/xos/grpc/grpc_server.py
index c94a5dc..278c0be 100644
--- a/xos/grpc/grpc_server.py
+++ b/xos/grpc/grpc_server.py
@@ -92,6 +92,13 @@
         logger.info('init-grpc-server port=%d' % self.port)
         self.thread_pool = futures.ThreadPoolExecutor(max_workers=10)
         self.server = grpc.server(self.thread_pool)
+
+        server_key = open("certs/server.key","r").read()
+        server_cert = open("certs/server.crt","r").read()
+        server_ca = open("certs/ca.crt","r").read()
+
+        self.credentials = grpc.ssl_server_credentials([(server_key, server_cert)], server_ca, False)
+
         self.services = []
 
     def start(self):
@@ -108,6 +115,8 @@
         # open port
         self.server.add_insecure_port('[::]:%s' % self.port)
 
+        self.server.add_secure_port("[::]:50051", self.credentials)
+
         # strat the server
         self.server.start()
 
diff --git a/xos/grpc/list_test.py b/xos/grpc/list_test.py
new file mode 100644
index 0000000..1ff17a5
--- /dev/null
+++ b/xos/grpc/list_test.py
@@ -0,0 +1,502 @@
+import grpc_client
+from grpc_client import Empty
+
+c=grpc_client.InsecureClient("localhost")
+
+
+print "testing insecure ListServiceControllerResource...",
+c.stub.ListServiceControllerResource(Empty())
+print "Okay"
+print "testing insecure ListXOSVolume...",
+c.stub.ListXOSVolume(Empty())
+print "Okay"
+print "testing insecure ListServiceAttribute...",
+c.stub.ListServiceAttribute(Empty())
+print "Okay"
+print "testing insecure ListControllerImages...",
+c.stub.ListControllerImages(Empty())
+print "Okay"
+print "testing insecure ListControllerSitePrivilege...",
+c.stub.ListControllerSitePrivilege(Empty())
+print "Okay"
+print "testing insecure ListImage...",
+c.stub.ListImage(Empty())
+print "Okay"
+print "testing insecure ListControllerNetwork...",
+c.stub.ListControllerNetwork(Empty())
+print "Okay"
+print "testing insecure ListSite...",
+c.stub.ListSite(Empty())
+print "Okay"
+print "testing insecure ListLibrary...",
+c.stub.ListLibrary(Empty())
+print "Okay"
+print "testing insecure ListSliceRole...",
+c.stub.ListSliceRole(Empty())
+print "Okay"
+print "testing insecure ListSiteDeployment...",
+c.stub.ListSiteDeployment(Empty())
+print "Okay"
+print "testing insecure ListXOSComponentLink...",
+c.stub.ListXOSComponentLink(Empty())
+print "Okay"
+print "testing insecure ListTenantPrivilege...",
+c.stub.ListTenantPrivilege(Empty())
+print "Okay"
+print "testing insecure ListTag...",
+c.stub.ListTag(Empty())
+print "Okay"
+print "testing insecure ListServiceMonitoringAgentInfo...",
+c.stub.ListServiceMonitoringAgentInfo(Empty())
+print "Okay"
+print "testing insecure ListXOSComponent...",
+c.stub.ListXOSComponent(Empty())
+print "Okay"
+print "testing insecure ListInvoice...",
+c.stub.ListInvoice(Empty())
+print "Okay"
+print "testing insecure ListSlicePrivilege...",
+c.stub.ListSlicePrivilege(Empty())
+print "Okay"
+print "testing insecure ListFlavor...",
+c.stub.ListFlavor(Empty())
+print "Okay"
+print "testing insecure ListPort...",
+c.stub.ListPort(Empty())
+print "Okay"
+print "testing insecure ListServiceRole...",
+c.stub.ListServiceRole(Empty())
+print "Okay"
+print "testing insecure ListControllerSite...",
+c.stub.ListControllerSite(Empty())
+print "Okay"
+print "testing insecure ListControllerSlice...",
+c.stub.ListControllerSlice(Empty())
+print "Okay"
+print "testing insecure ListTenantRole...",
+c.stub.ListTenantRole(Empty())
+print "Okay"
+print "testing insecure ListSlice...",
+c.stub.ListSlice(Empty())
+print "Okay"
+print "testing insecure ListLoadableModuleResource...",
+c.stub.ListLoadableModuleResource(Empty())
+print "Okay"
+print "testing insecure ListControllerRole...",
+c.stub.ListControllerRole(Empty())
+print "Okay"
+print "testing insecure ListDiag...",
+c.stub.ListDiag(Empty())
+print "Okay"
+print "testing insecure ListXOS...",
+c.stub.ListXOS(Empty())
+print "Okay"
+print "testing insecure ListServiceClass...",
+c.stub.ListServiceClass(Empty())
+print "Okay"
+print "testing insecure ListTenantAttribute...",
+c.stub.ListTenantAttribute(Empty())
+print "Okay"
+print "testing insecure ListSiteRole...",
+c.stub.ListSiteRole(Empty())
+print "Okay"
+print "testing insecure ListSubscriber...",
+c.stub.ListSubscriber(Empty())
+print "Okay"
+print "testing insecure ListInstance...",
+c.stub.ListInstance(Empty())
+print "Okay"
+print "testing insecure ListCharge...",
+c.stub.ListCharge(Empty())
+print "Okay"
+print "testing insecure ListProgram...",
+c.stub.ListProgram(Empty())
+print "Okay"
+print "testing insecure ListRole...",
+c.stub.ListRole(Empty())
+print "Okay"
+print "testing insecure ListNodeLabel...",
+c.stub.ListNodeLabel(Empty())
+print "Okay"
+print "testing insecure ListNetworkTemplate...",
+c.stub.ListNetworkTemplate(Empty())
+print "Okay"
+print "testing insecure ListServiceController...",
+c.stub.ListServiceController(Empty())
+print "Okay"
+print "testing insecure ListLoadableModule...",
+c.stub.ListLoadableModule(Empty())
+print "Okay"
+print "testing insecure ListUsableObject...",
+c.stub.ListUsableObject(Empty())
+print "Okay"
+print "testing insecure ListNode...",
+c.stub.ListNode(Empty())
+print "Okay"
+print "testing insecure ListAddressPool...",
+c.stub.ListAddressPool(Empty())
+print "Okay"
+print "testing insecure ListDashboardView...",
+c.stub.ListDashboardView(Empty())
+print "Okay"
+print "testing insecure ListNetworkParameter...",
+c.stub.ListNetworkParameter(Empty())
+print "Okay"
+print "testing insecure ListImageDeployments...",
+c.stub.ListImageDeployments(Empty())
+print "Okay"
+print "testing insecure ListControllerUser...",
+c.stub.ListControllerUser(Empty())
+print "Okay"
+print "testing insecure ListReservedResource...",
+c.stub.ListReservedResource(Empty())
+print "Okay"
+print "testing insecure ListJournalEntry...",
+c.stub.ListJournalEntry(Empty())
+print "Okay"
+print "testing insecure ListUserCredential...",
+c.stub.ListUserCredential(Empty())
+print "Okay"
+print "testing insecure ListControllerDashboardView...",
+c.stub.ListControllerDashboardView(Empty())
+print "Okay"
+print "testing insecure ListUserDashboardView...",
+c.stub.ListUserDashboardView(Empty())
+print "Okay"
+print "testing insecure ListController...",
+c.stub.ListController(Empty())
+print "Okay"
+print "testing insecure ListTenantRootRole...",
+c.stub.ListTenantRootRole(Empty())
+print "Okay"
+print "testing insecure ListDeployment...",
+c.stub.ListDeployment(Empty())
+print "Okay"
+print "testing insecure ListReservation...",
+c.stub.ListReservation(Empty())
+print "Okay"
+print "testing insecure ListSitePrivilege...",
+c.stub.ListSitePrivilege(Empty())
+print "Okay"
+print "testing insecure ListPayment...",
+c.stub.ListPayment(Empty())
+print "Okay"
+print "testing insecure ListTenant...",
+c.stub.ListTenant(Empty())
+print "Okay"
+print "testing insecure ListNetwork...",
+c.stub.ListNetwork(Empty())
+print "Okay"
+print "testing insecure ListNetworkSlice...",
+c.stub.ListNetworkSlice(Empty())
+print "Okay"
+print "testing insecure ListAccount...",
+c.stub.ListAccount(Empty())
+print "Okay"
+print "testing insecure ListTenantRoot...",
+c.stub.ListTenantRoot(Empty())
+print "Okay"
+print "testing insecure ListService...",
+c.stub.ListService(Empty())
+print "Okay"
+print "testing insecure ListControllerSlicePrivilege...",
+c.stub.ListControllerSlicePrivilege(Empty())
+print "Okay"
+print "testing insecure ListSiteCredential...",
+c.stub.ListSiteCredential(Empty())
+print "Okay"
+print "testing insecure ListDeploymentPrivilege...",
+c.stub.ListDeploymentPrivilege(Empty())
+print "Okay"
+print "testing insecure ListNetworkParameterType...",
+c.stub.ListNetworkParameterType(Empty())
+print "Okay"
+print "testing insecure ListProvider...",
+c.stub.ListProvider(Empty())
+print "Okay"
+print "testing insecure ListTenantWithContainer...",
+c.stub.ListTenantWithContainer(Empty())
+print "Okay"
+print "testing insecure ListDeploymentRole...",
+c.stub.ListDeploymentRole(Empty())
+print "Okay"
+print "testing insecure ListProject...",
+c.stub.ListProject(Empty())
+print "Okay"
+print "testing insecure ListTenantRootPrivilege...",
+c.stub.ListTenantRootPrivilege(Empty())
+print "Okay"
+print "testing insecure ListXOSComponentVolume...",
+c.stub.ListXOSComponentVolume(Empty())
+print "Okay"
+print "testing insecure ListSliceCredential...",
+c.stub.ListSliceCredential(Empty())
+print "Okay"
+print "testing insecure ListSliceTag...",
+c.stub.ListSliceTag(Empty())
+print "Okay"
+print "testing insecure ListCoarseTenant...",
+c.stub.ListCoarseTenant(Empty())
+print "Okay"
+print "testing insecure ListRouter...",
+c.stub.ListRouter(Empty())
+print "Okay"
+print "testing insecure ListServiceResource...",
+c.stub.ListServiceResource(Empty())
+print "Okay"
+print "testing insecure ListServicePrivilege...",
+c.stub.ListServicePrivilege(Empty())
+print "Okay"
+print "testing insecure ListUser...",
+c.stub.ListUser(Empty())
+print "Okay"
+
+c=grpc_client.SecureClient("localhost", username="padmin@vicci.org", password="letmein")
+
+
+print "testing secure ListServiceControllerResource...",
+c.stub.ListServiceControllerResource(Empty())
+print "Okay"
+print "testing secure ListXOSVolume...",
+c.stub.ListXOSVolume(Empty())
+print "Okay"
+print "testing secure ListServiceAttribute...",
+c.stub.ListServiceAttribute(Empty())
+print "Okay"
+print "testing secure ListControllerImages...",
+c.stub.ListControllerImages(Empty())
+print "Okay"
+print "testing secure ListControllerSitePrivilege...",
+c.stub.ListControllerSitePrivilege(Empty())
+print "Okay"
+print "testing secure ListImage...",
+c.stub.ListImage(Empty())
+print "Okay"
+print "testing secure ListControllerNetwork...",
+c.stub.ListControllerNetwork(Empty())
+print "Okay"
+print "testing secure ListSite...",
+c.stub.ListSite(Empty())
+print "Okay"
+print "testing secure ListLibrary...",
+c.stub.ListLibrary(Empty())
+print "Okay"
+print "testing secure ListSliceRole...",
+c.stub.ListSliceRole(Empty())
+print "Okay"
+print "testing secure ListSiteDeployment...",
+c.stub.ListSiteDeployment(Empty())
+print "Okay"
+print "testing secure ListXOSComponentLink...",
+c.stub.ListXOSComponentLink(Empty())
+print "Okay"
+print "testing secure ListTenantPrivilege...",
+c.stub.ListTenantPrivilege(Empty())
+print "Okay"
+print "testing secure ListTag...",
+c.stub.ListTag(Empty())
+print "Okay"
+print "testing secure ListServiceMonitoringAgentInfo...",
+c.stub.ListServiceMonitoringAgentInfo(Empty())
+print "Okay"
+print "testing secure ListXOSComponent...",
+c.stub.ListXOSComponent(Empty())
+print "Okay"
+print "testing secure ListInvoice...",
+c.stub.ListInvoice(Empty())
+print "Okay"
+print "testing secure ListSlicePrivilege...",
+c.stub.ListSlicePrivilege(Empty())
+print "Okay"
+print "testing secure ListFlavor...",
+c.stub.ListFlavor(Empty())
+print "Okay"
+print "testing secure ListPort...",
+c.stub.ListPort(Empty())
+print "Okay"
+print "testing secure ListServiceRole...",
+c.stub.ListServiceRole(Empty())
+print "Okay"
+print "testing secure ListControllerSite...",
+c.stub.ListControllerSite(Empty())
+print "Okay"
+print "testing secure ListControllerSlice...",
+c.stub.ListControllerSlice(Empty())
+print "Okay"
+print "testing secure ListTenantRole...",
+c.stub.ListTenantRole(Empty())
+print "Okay"
+print "testing secure ListSlice...",
+c.stub.ListSlice(Empty())
+print "Okay"
+print "testing secure ListLoadableModuleResource...",
+c.stub.ListLoadableModuleResource(Empty())
+print "Okay"
+print "testing secure ListControllerRole...",
+c.stub.ListControllerRole(Empty())
+print "Okay"
+print "testing secure ListDiag...",
+c.stub.ListDiag(Empty())
+print "Okay"
+print "testing secure ListXOS...",
+c.stub.ListXOS(Empty())
+print "Okay"
+print "testing secure ListServiceClass...",
+c.stub.ListServiceClass(Empty())
+print "Okay"
+print "testing secure ListTenantAttribute...",
+c.stub.ListTenantAttribute(Empty())
+print "Okay"
+print "testing secure ListSiteRole...",
+c.stub.ListSiteRole(Empty())
+print "Okay"
+print "testing secure ListSubscriber...",
+c.stub.ListSubscriber(Empty())
+print "Okay"
+print "testing secure ListInstance...",
+c.stub.ListInstance(Empty())
+print "Okay"
+print "testing secure ListCharge...",
+c.stub.ListCharge(Empty())
+print "Okay"
+print "testing secure ListProgram...",
+c.stub.ListProgram(Empty())
+print "Okay"
+print "testing secure ListRole...",
+c.stub.ListRole(Empty())
+print "Okay"
+print "testing secure ListNodeLabel...",
+c.stub.ListNodeLabel(Empty())
+print "Okay"
+print "testing secure ListNetworkTemplate...",
+c.stub.ListNetworkTemplate(Empty())
+print "Okay"
+print "testing secure ListServiceController...",
+c.stub.ListServiceController(Empty())
+print "Okay"
+print "testing secure ListLoadableModule...",
+c.stub.ListLoadableModule(Empty())
+print "Okay"
+print "testing secure ListUsableObject...",
+c.stub.ListUsableObject(Empty())
+print "Okay"
+print "testing secure ListNode...",
+c.stub.ListNode(Empty())
+print "Okay"
+print "testing secure ListAddressPool...",
+c.stub.ListAddressPool(Empty())
+print "Okay"
+print "testing secure ListDashboardView...",
+c.stub.ListDashboardView(Empty())
+print "Okay"
+print "testing secure ListNetworkParameter...",
+c.stub.ListNetworkParameter(Empty())
+print "Okay"
+print "testing secure ListImageDeployments...",
+c.stub.ListImageDeployments(Empty())
+print "Okay"
+print "testing secure ListControllerUser...",
+c.stub.ListControllerUser(Empty())
+print "Okay"
+print "testing secure ListReservedResource...",
+c.stub.ListReservedResource(Empty())
+print "Okay"
+print "testing secure ListJournalEntry...",
+c.stub.ListJournalEntry(Empty())
+print "Okay"
+print "testing secure ListUserCredential...",
+c.stub.ListUserCredential(Empty())
+print "Okay"
+print "testing secure ListControllerDashboardView...",
+c.stub.ListControllerDashboardView(Empty())
+print "Okay"
+print "testing secure ListUserDashboardView...",
+c.stub.ListUserDashboardView(Empty())
+print "Okay"
+print "testing secure ListController...",
+c.stub.ListController(Empty())
+print "Okay"
+print "testing secure ListTenantRootRole...",
+c.stub.ListTenantRootRole(Empty())
+print "Okay"
+print "testing secure ListDeployment...",
+c.stub.ListDeployment(Empty())
+print "Okay"
+print "testing secure ListReservation...",
+c.stub.ListReservation(Empty())
+print "Okay"
+print "testing secure ListSitePrivilege...",
+c.stub.ListSitePrivilege(Empty())
+print "Okay"
+print "testing secure ListPayment...",
+c.stub.ListPayment(Empty())
+print "Okay"
+print "testing secure ListTenant...",
+c.stub.ListTenant(Empty())
+print "Okay"
+print "testing secure ListNetwork...",
+c.stub.ListNetwork(Empty())
+print "Okay"
+print "testing secure ListNetworkSlice...",
+c.stub.ListNetworkSlice(Empty())
+print "Okay"
+print "testing secure ListAccount...",
+c.stub.ListAccount(Empty())
+print "Okay"
+print "testing secure ListTenantRoot...",
+c.stub.ListTenantRoot(Empty())
+print "Okay"
+print "testing secure ListService...",
+c.stub.ListService(Empty())
+print "Okay"
+print "testing secure ListControllerSlicePrivilege...",
+c.stub.ListControllerSlicePrivilege(Empty())
+print "Okay"
+print "testing secure ListSiteCredential...",
+c.stub.ListSiteCredential(Empty())
+print "Okay"
+print "testing secure ListDeploymentPrivilege...",
+c.stub.ListDeploymentPrivilege(Empty())
+print "Okay"
+print "testing secure ListNetworkParameterType...",
+c.stub.ListNetworkParameterType(Empty())
+print "Okay"
+print "testing secure ListProvider...",
+c.stub.ListProvider(Empty())
+print "Okay"
+print "testing secure ListTenantWithContainer...",
+c.stub.ListTenantWithContainer(Empty())
+print "Okay"
+print "testing secure ListDeploymentRole...",
+c.stub.ListDeploymentRole(Empty())
+print "Okay"
+print "testing secure ListProject...",
+c.stub.ListProject(Empty())
+print "Okay"
+print "testing secure ListTenantRootPrivilege...",
+c.stub.ListTenantRootPrivilege(Empty())
+print "Okay"
+print "testing secure ListXOSComponentVolume...",
+c.stub.ListXOSComponentVolume(Empty())
+print "Okay"
+print "testing secure ListSliceCredential...",
+c.stub.ListSliceCredential(Empty())
+print "Okay"
+print "testing secure ListSliceTag...",
+c.stub.ListSliceTag(Empty())
+print "Okay"
+print "testing secure ListCoarseTenant...",
+c.stub.ListCoarseTenant(Empty())
+print "Okay"
+print "testing secure ListRouter...",
+c.stub.ListRouter(Empty())
+print "Okay"
+print "testing secure ListServiceResource...",
+c.stub.ListServiceResource(Empty())
+print "Okay"
+print "testing secure ListServicePrivilege...",
+c.stub.ListServicePrivilege(Empty())
+print "Okay"
+print "testing secure ListUser...",
+c.stub.ListUser(Empty())
+print "Okay"
diff --git a/xos/grpc/protos/xos.proto b/xos/grpc/protos/xos.proto
index 7f60b5e..fb1a10d 100644
--- a/xos/grpc/protos/xos.proto
+++ b/xos/grpc/protos/xos.proto
@@ -3,31 +3,76 @@
 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 {
@@ -37,24 +82,60 @@
 
 
 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 {
@@ -64,23 +145,57 @@
 
 
 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 {
@@ -90,23 +205,57 @@
 
 
 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 {
@@ -116,23 +265,57 @@
 
 
 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 {
@@ -142,26 +325,66 @@
 
 
 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 {
@@ -171,30 +394,78 @@
 
 
 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 {
@@ -204,30 +475,78 @@
 
 
 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 {
@@ -237,26 +556,66 @@
 
 
 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 {
@@ -266,21 +625,51 @@
 
 
 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 {
@@ -290,24 +679,60 @@
 
 
 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 {
@@ -317,24 +742,60 @@
 
 
 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 {
@@ -344,23 +805,57 @@
 
 
 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 {
@@ -370,25 +865,63 @@
 
 
 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 {
@@ -398,23 +931,57 @@
 
 
 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 {
@@ -424,29 +991,75 @@
 
 
 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 {
@@ -456,22 +1069,54 @@
 
 
 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 {
@@ -481,23 +1126,57 @@
 
 
 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 {
@@ -507,25 +1186,63 @@
 
 
 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 {
@@ -535,26 +1252,66 @@
 
 
 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 {
@@ -564,21 +1321,51 @@
 
 
 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 {
@@ -588,23 +1375,57 @@
 
 
 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 {
@@ -614,23 +1435,57 @@
 
 
 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 {
@@ -640,21 +1495,51 @@
 
 
 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 {
@@ -664,37 +1549,99 @@
 
 
 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 {
@@ -704,26 +1651,66 @@
 
 
 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 {
@@ -733,21 +1720,51 @@
 
 
 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 {
@@ -757,21 +1774,51 @@
 
 
 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 {
@@ -781,31 +1828,81 @@
 
 
 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 {
@@ -815,26 +1912,66 @@
 
 
 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 {
@@ -844,23 +1981,57 @@
 
 
 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 {
@@ -870,21 +2041,51 @@
 
 
 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 {
@@ -894,24 +2095,60 @@
 
 
 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 {
@@ -921,36 +2158,96 @@
 
 
 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 {
@@ -960,29 +2257,75 @@
 
 
 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 {
@@ -992,29 +2335,75 @@
 
 
 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 {
@@ -1024,24 +2413,60 @@
 
 
 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 {
@@ -1051,21 +2476,51 @@
 
 
 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 {
@@ -1075,31 +2530,81 @@
 
 
 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 {
@@ -1109,29 +2614,75 @@
 
 
 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 {
@@ -1141,26 +2692,66 @@
 
 
 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 {
@@ -1170,21 +2761,51 @@
 
 
 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 {
@@ -1194,23 +2815,57 @@
 
 
 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 {
@@ -1220,27 +2875,69 @@
 
 
 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 {
@@ -1250,25 +2947,63 @@
 
 
 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 {
@@ -1278,24 +3013,60 @@
 
 
 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 {
@@ -1305,22 +3076,54 @@
 
 
 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 {
@@ -1330,23 +3133,57 @@
 
 
 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 {
@@ -1356,24 +3193,60 @@
 
 
 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 {
@@ -1383,13 +3256,27 @@
 
 
 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 {
@@ -1399,24 +3286,60 @@
 
 
 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 {
@@ -1426,24 +3349,60 @@
 
 
 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 {
@@ -1453,23 +3412,57 @@
 
 
 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 {
@@ -1479,32 +3472,84 @@
 
 
 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 {
@@ -1514,21 +3559,51 @@
 
 
 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 {
@@ -1538,22 +3613,54 @@
 
 
 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 {
@@ -1563,23 +3670,57 @@
 
 
 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 {
@@ -1589,23 +3730,57 @@
 
 
 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 {
@@ -1615,23 +3790,57 @@
 
 
 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 {
@@ -1641,30 +3850,78 @@
 
 
 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 {
@@ -1674,37 +3931,99 @@
 
 
 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 {
@@ -1714,22 +4033,54 @@
 
 
 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 {
@@ -1739,21 +4090,51 @@
 
 
 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 {
@@ -1763,24 +4144,60 @@
 
 
 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 {
@@ -1790,33 +4207,87 @@
 
 
 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 {
@@ -1826,23 +4297,57 @@
 
 
 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 {
@@ -1852,24 +4357,60 @@
 
 
 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 {
@@ -1879,23 +4420,57 @@
 
 
 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 {
@@ -1905,22 +4480,54 @@
 
 
 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 {
@@ -1930,24 +4537,60 @@
 
 
 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 {
@@ -1957,30 +4600,78 @@
 
 
 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 {
@@ -1990,21 +4681,51 @@
 
 
 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 {
@@ -2014,21 +4735,51 @@
 
 
 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 {
@@ -2038,23 +4789,57 @@
 
 
 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 {
@@ -2064,25 +4849,63 @@
 
 
 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 {
@@ -2092,24 +4915,60 @@
 
 
 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 {
@@ -2119,23 +4978,57 @@
 
 
 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 {
@@ -2145,30 +5038,78 @@
 
 
 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 {
@@ -2178,22 +5119,54 @@
 
 
 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 {
@@ -2203,29 +5176,75 @@
 
 
 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 {
@@ -2235,23 +5254,57 @@
 
 
 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 {
@@ -2261,37 +5314,99 @@
 
 
 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 {
@@ -2302,250 +5417,2300 @@
 
 service xos {
 
-  rpc ListServiceControllerResource(google.protobuf.Empty) returns (ServiceControllerResources) {}
-  rpc GetServiceControllerResource(ID) returns (ServiceControllerResource) {}
+  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) {}
-  rpc GetXOSVolume(ID) returns (XOSVolume) {}
+  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) {}
-  rpc GetServiceAttribute(ID) returns (ServiceAttribute) {}
+  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) {}
-  rpc GetControllerImages(ID) returns (ControllerImages) {}
+  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) {}
-  rpc GetControllerSitePrivilege(ID) returns (ControllerSitePrivilege) {}
+  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) {}
-  rpc GetImage(ID) returns (Image) {}
+  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) {}
-  rpc GetControllerNetwork(ID) returns (ControllerNetwork) {}
+  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) {}
-  rpc GetSite(ID) returns (Site) {}
+  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) {}
-  rpc GetLibrary(ID) returns (Library) {}
+  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) {}
-  rpc GetSliceRole(ID) returns (SliceRole) {}
+  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) {}
-  rpc GetSiteDeployment(ID) returns (SiteDeployment) {}
+  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) {}
-  rpc GetXOSComponentLink(ID) returns (XOSComponentLink) {}
+  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) {}
-  rpc GetTenantPrivilege(ID) returns (TenantPrivilege) {}
+  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) {}
-  rpc GetTag(ID) returns (Tag) {}
+  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) {}
-  rpc GetServiceMonitoringAgentInfo(ID) returns (ServiceMonitoringAgentInfo) {}
+  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) {}
-  rpc GetXOSComponent(ID) returns (XOSComponent) {}
+  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) {}
-  rpc GetInvoice(ID) returns (Invoice) {}
+  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) {}
-  rpc GetSlicePrivilege(ID) returns (SlicePrivilege) {}
+  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) {}
-  rpc GetFlavor(ID) returns (Flavor) {}
+  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) {}
-  rpc GetPort(ID) returns (Port) {}
+  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) {}
-  rpc GetServiceRole(ID) returns (ServiceRole) {}
+  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) {}
-  rpc GetControllerSite(ID) returns (ControllerSite) {}
+  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) {}
-  rpc GetControllerSlice(ID) returns (ControllerSlice) {}
+  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) {}
-  rpc GetTenantRole(ID) returns (TenantRole) {}
+  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) {}
-  rpc GetSlice(ID) returns (Slice) {}
+  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) {}
-  rpc GetLoadableModuleResource(ID) returns (LoadableModuleResource) {}
+  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) {}
-  rpc GetControllerRole(ID) returns (ControllerRole) {}
+  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) {}
-  rpc GetDiag(ID) returns (Diag) {}
+  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) {}
-  rpc GetXOS(ID) returns (XOS) {}
+  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) {}
-  rpc GetServiceClass(ID) returns (ServiceClass) {}
+  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) {}
-  rpc GetTenantAttribute(ID) returns (TenantAttribute) {}
+  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) {}
-  rpc GetSiteRole(ID) returns (SiteRole) {}
+  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) {}
-  rpc GetSubscriber(ID) returns (Subscriber) {}
+  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) {}
-  rpc GetInstance(ID) returns (Instance) {}
+  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) {}
-  rpc GetCharge(ID) returns (Charge) {}
+  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) {}
-  rpc GetProgram(ID) returns (Program) {}
+  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) {}
-  rpc GetRole(ID) returns (Role) {}
+  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) {}
-  rpc GetNodeLabel(ID) returns (NodeLabel) {}
+  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) {}
-  rpc GetNetworkTemplate(ID) returns (NetworkTemplate) {}
+  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) {}
-  rpc GetServiceController(ID) returns (ServiceController) {}
+  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) {}
-  rpc GetLoadableModule(ID) returns (LoadableModule) {}
+  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) {}
-  rpc GetUsableObject(ID) returns (UsableObject) {}
+  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) {}
-  rpc GetNode(ID) returns (Node) {}
+  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) {}
-  rpc GetAddressPool(ID) returns (AddressPool) {}
+  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) {}
-  rpc GetDashboardView(ID) returns (DashboardView) {}
+  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) {}
-  rpc GetNetworkParameter(ID) returns (NetworkParameter) {}
+  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) {}
-  rpc GetImageDeployments(ID) returns (ImageDeployments) {}
+  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) {}
-  rpc GetControllerUser(ID) returns (ControllerUser) {}
+  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) {}
-  rpc GetReservedResource(ID) returns (ReservedResource) {}
+  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) {}
-  rpc GetJournalEntry(ID) returns (JournalEntry) {}
+  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) {}
-  rpc GetUserCredential(ID) returns (UserCredential) {}
+  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) {}
-  rpc GetControllerDashboardView(ID) returns (ControllerDashboardView) {}
+  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) {}
-  rpc GetUserDashboardView(ID) returns (UserDashboardView) {}
+  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) {}
-  rpc GetController(ID) returns (Controller) {}
+  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) {}
-  rpc GetTenantRootRole(ID) returns (TenantRootRole) {}
+  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) {}
-  rpc GetDeployment(ID) returns (Deployment) {}
+  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) {}
-  rpc GetReservation(ID) returns (Reservation) {}
+  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) {}
-  rpc GetSitePrivilege(ID) returns (SitePrivilege) {}
+  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) {}
-  rpc GetPayment(ID) returns (Payment) {}
+  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) {}
-  rpc GetTenant(ID) returns (Tenant) {}
+  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) {}
-  rpc GetNetwork(ID) returns (Network) {}
+  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) {}
-  rpc GetNetworkSlice(ID) returns (NetworkSlice) {}
+  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) {}
-  rpc GetAccount(ID) returns (Account) {}
+  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) {}
-  rpc GetTenantRoot(ID) returns (TenantRoot) {}
+  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) {}
-  rpc GetService(ID) returns (Service) {}
+  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) {}
-  rpc GetControllerSlicePrivilege(ID) returns (ControllerSlicePrivilege) {}
+  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) {}
-  rpc GetSiteCredential(ID) returns (SiteCredential) {}
+  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) {}
-  rpc GetDeploymentPrivilege(ID) returns (DeploymentPrivilege) {}
+  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) {}
-  rpc GetNetworkParameterType(ID) returns (NetworkParameterType) {}
+  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) {}
-  rpc GetProvider(ID) returns (Provider) {}
+  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) {}
-  rpc GetTenantWithContainer(ID) returns (TenantWithContainer) {}
+  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) {}
-  rpc GetDeploymentRole(ID) returns (DeploymentRole) {}
+  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) {}
-  rpc GetProject(ID) returns (Project) {}
+  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) {}
-  rpc GetTenantRootPrivilege(ID) returns (TenantRootPrivilege) {}
+  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) {}
-  rpc GetXOSComponentVolume(ID) returns (XOSComponentVolume) {}
+  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) {}
-  rpc GetSliceCredential(ID) returns (SliceCredential) {}
+  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) {}
-  rpc GetSliceTag(ID) returns (SliceTag) {}
+  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) {}
-  rpc GetCoarseTenant(ID) returns (CoarseTenant) {}
+  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) {}
-  rpc GetRouter(ID) returns (Router) {}
+  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) {}
-  rpc GetServiceResource(ID) returns (ServiceResource) {}
+  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) {}
-  rpc GetServicePrivilege(ID) returns (ServicePrivilege) {}
+  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) {}
-  rpc GetUser(ID) returns (User) {}
+  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/xos_grpc_api.py b/xos/grpc/xos_grpc_api.py
new file mode 100644
index 0000000..cf98031
--- /dev/null
+++ b/xos/grpc/xos_grpc_api.py
@@ -0,0 +1,1885 @@
+import base64
+import time
+from protos import xos_pb2
+from google.protobuf.empty_pb2 import Empty
+
+from django.contrib.auth import authenticate as django_authenticate
+from core.models import *
+from xos.exceptions import *
+
+class XosService(xos_pb2.xosServicer):
+    def __init__(self, thread_pool):
+        self.thread_pool = thread_pool
+
+    def stop(self):
+        pass
+
+    def getProtoClass(self, djangoClass):
+        pClass = getattr(xos_pb2, djangoClass.__name__)
+        return pClass
+
+    def getPluralProtoClass(self, djangoClass):
+        pClass = getattr(xos_pb2, djangoClass.__name__ + "s")
+        return pClass
+
+    def convertFloat(self, x):
+        if not x:
+            return 0
+        else:
+            return float(x)
+
+    def convertDateTime(self, x):
+        if not x:
+            return 0
+        else:
+            return time.mktime(x.timetuple())
+
+    def convertForeignKey(self, x):
+        if not x:
+            return 0
+        else:
+            return int(x.id)
+
+    def objToProto(self, obj):
+        p_obj = self.getProtoClass(obj.__class__)()
+        for field in obj._meta.fields:
+            if getattr(obj, field.name) == None:
+                continue
+
+            ftype = field.get_internal_type()
+            if (ftype == "CharField") or (ftype == "TextField") or (ftype == "SlugField"):
+                setattr(p_obj, field.name, str(getattr(obj, field.name)))
+            elif (ftype == "BooleanField"):
+                setattr(p_obj, field.name, getattr(obj, field.name))
+            elif (ftype == "AutoField"):
+                setattr(p_obj, field.name, int(getattr(obj, field.name)))
+            elif (ftype == "IntegerField") or (ftype == "PositiveIntegerField"):
+                setattr(p_obj, field.name, int(getattr(obj, field.name)))
+            elif (ftype == "ForeignKey"):
+                setattr(p_obj, field.name+"_id", self.convertForeignKey(getattr(obj, field.name)))
+            elif (ftype == "DateTimeField"):
+                setattr(p_obj, field.name, self.convertDateTime(getattr(obj, field.name)))
+            elif (ftype == "FloatField"):
+                setattr(p_obj, field.name, float(getattr(obj, field.name)))
+            elif (ftype == "GenericIPAddressField"):
+                setattr(p_obj, field.name, str(getattr(obj, field.name)))
+        return p_obj
+
+    def protoToArgs(self, djangoClass, message):
+        args={}
+        fmap={}
+        fset={}
+        for field in djangoClass._meta.fields:
+            fmap[field.name] = field
+            if field.get_internal_type() == "ForeignKey":
+               # foreign key can be represented as an id
+               fmap[field.name + "_id"] = field
+
+        for (fieldDesc, val) in message.ListFields():
+            name = fieldDesc.name
+            if name in fmap:
+                if (name=="id"):
+                    # don't let anyone set the id
+                    continue
+                ftype = fmap[name].get_internal_type()
+                if (ftype == "CharField") or (ftype == "TextField") or (ftype == "SlugField"):
+                    args[name] = val
+                elif (ftype == "BooleanField"):
+                    args[name] = val
+                elif (ftype == "AutoField"):
+                    args[name] = val
+                elif (ftype == "IntegerField") or (ftype == "PositiveIntegerField"):
+                    args[name] = val
+                elif (ftype == "ForeignKey"):
+                    args[name] = val # field name already has "_id" at the end
+                elif (ftype == "DateTimeField"):
+                    pass # do something special here
+                elif (ftype == "FloatField"):
+                    args[name] = val
+                elif (ftype == "GenericIPAddressField"):
+                    args[name] = val
+                fset[name] = True
+
+        return args
+
+    def querysetToProto(self, djangoClass, queryset):
+        objs = queryset
+        p_objs = self.getPluralProtoClass(djangoClass)()
+
+        for obj in objs:
+           new_obj = p_objs.items.add()
+           new_obj.CopyFrom(self.objToProto(obj))
+
+        return p_objs
+
+    def get(self, djangoClass, id):
+        obj = djangoClass.objects.get(id=id)
+        return self.objToProto(obj)
+
+    def create(self, djangoClass, user, request):
+        args = self.protoToArgs(djangoClass, request)
+        new_obj = djangoClass(**args)
+        new_obj.caller = user
+        if (not user) or (not new_obj.can_update(user)):
+            raise XOSPermissionDenied()
+        new_obj.save()
+        return self.objToProto(new_obj)
+
+    def update(self, djangoClass, user, id, message):
+        obj = djangoClass.objects.get(id=id)
+        obj.caller = user
+        if (not user) or (not obj.can_update(user)):
+            raise XOSPermissionDenied()
+        args = self.protoToArgs(djangoClass, message)
+        for (k,v) in args.iteritems():
+            setattr(obj, k, v)
+        obj.save()
+        return self.objToProto(obj)
+
+    def delete(self, djangoClass, user, id):
+      obj = djangoClass.objects.get(id=id)
+      if (not user) or (not obj.can_update(user)):
+          raise XOSPermissionDenied()
+      obj.delete()
+      return Empty()
+
+    def authenticate(self, context):
+        for (k, v) in context.invocation_metadata():
+            if (k.lower()=="authorization"):
+                (method, auth) = v.split(" ",1)
+                if (method.lower() == "basic"):
+                    auth = base64.b64decode(auth)
+                    (username, password) = auth.split(":")
+                    user = django_authenticate(username=username, password=password)
+                    if not user:
+                        raise Exception("failed to authenticate %s:%s" % (username, password))
+                    print "authenticated %s:%s as %s" % (username, password, user)
+                    return user
+
+        return None
+
+
+
+    def ListServiceControllerResource(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServiceControllerResource, ServiceControllerResource.objects.all())
+
+    def GetServiceControllerResource(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServiceControllerResource, request.id)
+
+    def CreateServiceControllerResource(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServiceControllerResource, user, request)
+
+    def DeleteServiceControllerResource(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServiceControllerResource, user, request.id)
+
+    def UpdateServiceControllerResource(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServiceControllerResource, user, request.id, request)
+
+
+    def ListXOSVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(XOSVolume, XOSVolume.objects.all())
+
+    def GetXOSVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.get(XOSVolume, request.id)
+
+    def CreateXOSVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.create(XOSVolume, user, request)
+
+    def DeleteXOSVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(XOSVolume, user, request.id)
+
+    def UpdateXOSVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.update(XOSVolume, user, request.id, request)
+
+
+    def ListServiceAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServiceAttribute, ServiceAttribute.objects.all())
+
+    def GetServiceAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServiceAttribute, request.id)
+
+    def CreateServiceAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServiceAttribute, user, request)
+
+    def DeleteServiceAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServiceAttribute, user, request.id)
+
+    def UpdateServiceAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServiceAttribute, user, request.id, request)
+
+
+    def ListControllerImages(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerImages, ControllerImages.objects.all())
+
+    def GetControllerImages(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerImages, request.id)
+
+    def CreateControllerImages(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerImages, user, request)
+
+    def DeleteControllerImages(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerImages, user, request.id)
+
+    def UpdateControllerImages(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerImages, user, request.id, request)
+
+
+    def ListControllerSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerSitePrivilege, ControllerSitePrivilege.objects.all())
+
+    def GetControllerSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerSitePrivilege, request.id)
+
+    def CreateControllerSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerSitePrivilege, user, request)
+
+    def DeleteControllerSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerSitePrivilege, user, request.id)
+
+    def UpdateControllerSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerSitePrivilege, user, request.id, request)
+
+
+    def ListImage(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Image, Image.objects.all())
+
+    def GetImage(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Image, request.id)
+
+    def CreateImage(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Image, user, request)
+
+    def DeleteImage(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Image, user, request.id)
+
+    def UpdateImage(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Image, user, request.id, request)
+
+
+    def ListControllerNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerNetwork, ControllerNetwork.objects.all())
+
+    def GetControllerNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerNetwork, request.id)
+
+    def CreateControllerNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerNetwork, user, request)
+
+    def DeleteControllerNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerNetwork, user, request.id)
+
+    def UpdateControllerNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerNetwork, user, request.id, request)
+
+
+    def ListSite(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Site, Site.objects.all())
+
+    def GetSite(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Site, request.id)
+
+    def CreateSite(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Site, user, request)
+
+    def DeleteSite(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Site, user, request.id)
+
+    def UpdateSite(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Site, user, request.id, request)
+
+
+    def ListLibrary(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Library, Library.objects.all())
+
+    def GetLibrary(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Library, request.id)
+
+    def CreateLibrary(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Library, user, request)
+
+    def DeleteLibrary(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Library, user, request.id)
+
+    def UpdateLibrary(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Library, user, request.id, request)
+
+
+    def ListSliceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SliceRole, SliceRole.objects.all())
+
+    def GetSliceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SliceRole, request.id)
+
+    def CreateSliceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SliceRole, user, request)
+
+    def DeleteSliceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SliceRole, user, request.id)
+
+    def UpdateSliceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SliceRole, user, request.id, request)
+
+
+    def ListSiteDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SiteDeployment, SiteDeployment.objects.all())
+
+    def GetSiteDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SiteDeployment, request.id)
+
+    def CreateSiteDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SiteDeployment, user, request)
+
+    def DeleteSiteDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SiteDeployment, user, request.id)
+
+    def UpdateSiteDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SiteDeployment, user, request.id, request)
+
+
+    def ListXOSComponentLink(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(XOSComponentLink, XOSComponentLink.objects.all())
+
+    def GetXOSComponentLink(self, request, context):
+      user=self.authenticate(context)
+      return self.get(XOSComponentLink, request.id)
+
+    def CreateXOSComponentLink(self, request, context):
+      user=self.authenticate(context)
+      return self.create(XOSComponentLink, user, request)
+
+    def DeleteXOSComponentLink(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(XOSComponentLink, user, request.id)
+
+    def UpdateXOSComponentLink(self, request, context):
+      user=self.authenticate(context)
+      return self.update(XOSComponentLink, user, request.id, request)
+
+
+    def ListTenantPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(TenantPrivilege, TenantPrivilege.objects.all())
+
+    def GetTenantPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(TenantPrivilege, request.id)
+
+    def CreateTenantPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(TenantPrivilege, user, request)
+
+    def DeleteTenantPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(TenantPrivilege, user, request.id)
+
+    def UpdateTenantPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(TenantPrivilege, user, request.id, request)
+
+
+    def ListTag(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Tag, Tag.objects.all())
+
+    def GetTag(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Tag, request.id)
+
+    def CreateTag(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Tag, user, request)
+
+    def DeleteTag(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Tag, user, request.id)
+
+    def UpdateTag(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Tag, user, request.id, request)
+
+
+    def ListServiceMonitoringAgentInfo(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServiceMonitoringAgentInfo, ServiceMonitoringAgentInfo.objects.all())
+
+    def GetServiceMonitoringAgentInfo(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServiceMonitoringAgentInfo, request.id)
+
+    def CreateServiceMonitoringAgentInfo(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServiceMonitoringAgentInfo, user, request)
+
+    def DeleteServiceMonitoringAgentInfo(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServiceMonitoringAgentInfo, user, request.id)
+
+    def UpdateServiceMonitoringAgentInfo(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServiceMonitoringAgentInfo, user, request.id, request)
+
+
+    def ListXOSComponent(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(XOSComponent, XOSComponent.objects.all())
+
+    def GetXOSComponent(self, request, context):
+      user=self.authenticate(context)
+      return self.get(XOSComponent, request.id)
+
+    def CreateXOSComponent(self, request, context):
+      user=self.authenticate(context)
+      return self.create(XOSComponent, user, request)
+
+    def DeleteXOSComponent(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(XOSComponent, user, request.id)
+
+    def UpdateXOSComponent(self, request, context):
+      user=self.authenticate(context)
+      return self.update(XOSComponent, user, request.id, request)
+
+
+    def ListInvoice(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Invoice, Invoice.objects.all())
+
+    def GetInvoice(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Invoice, request.id)
+
+    def CreateInvoice(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Invoice, user, request)
+
+    def DeleteInvoice(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Invoice, user, request.id)
+
+    def UpdateInvoice(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Invoice, user, request.id, request)
+
+
+    def ListSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SlicePrivilege, SlicePrivilege.objects.all())
+
+    def GetSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SlicePrivilege, request.id)
+
+    def CreateSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SlicePrivilege, user, request)
+
+    def DeleteSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SlicePrivilege, user, request.id)
+
+    def UpdateSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SlicePrivilege, user, request.id, request)
+
+
+    def ListFlavor(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Flavor, Flavor.objects.all())
+
+    def GetFlavor(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Flavor, request.id)
+
+    def CreateFlavor(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Flavor, user, request)
+
+    def DeleteFlavor(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Flavor, user, request.id)
+
+    def UpdateFlavor(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Flavor, user, request.id, request)
+
+
+    def ListPort(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Port, Port.objects.all())
+
+    def GetPort(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Port, request.id)
+
+    def CreatePort(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Port, user, request)
+
+    def DeletePort(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Port, user, request.id)
+
+    def UpdatePort(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Port, user, request.id, request)
+
+
+    def ListServiceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServiceRole, ServiceRole.objects.all())
+
+    def GetServiceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServiceRole, request.id)
+
+    def CreateServiceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServiceRole, user, request)
+
+    def DeleteServiceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServiceRole, user, request.id)
+
+    def UpdateServiceRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServiceRole, user, request.id, request)
+
+
+    def ListControllerSite(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerSite, ControllerSite.objects.all())
+
+    def GetControllerSite(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerSite, request.id)
+
+    def CreateControllerSite(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerSite, user, request)
+
+    def DeleteControllerSite(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerSite, user, request.id)
+
+    def UpdateControllerSite(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerSite, user, request.id, request)
+
+
+    def ListControllerSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerSlice, ControllerSlice.objects.all())
+
+    def GetControllerSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerSlice, request.id)
+
+    def CreateControllerSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerSlice, user, request)
+
+    def DeleteControllerSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerSlice, user, request.id)
+
+    def UpdateControllerSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerSlice, user, request.id, request)
+
+
+    def ListTenantRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(TenantRole, TenantRole.objects.all())
+
+    def GetTenantRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(TenantRole, request.id)
+
+    def CreateTenantRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(TenantRole, user, request)
+
+    def DeleteTenantRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(TenantRole, user, request.id)
+
+    def UpdateTenantRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(TenantRole, user, request.id, request)
+
+
+    def ListSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Slice, Slice.objects.all())
+
+    def GetSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Slice, request.id)
+
+    def CreateSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Slice, user, request)
+
+    def DeleteSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Slice, user, request.id)
+
+    def UpdateSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Slice, user, request.id, request)
+
+
+    def ListLoadableModuleResource(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(LoadableModuleResource, LoadableModuleResource.objects.all())
+
+    def GetLoadableModuleResource(self, request, context):
+      user=self.authenticate(context)
+      return self.get(LoadableModuleResource, request.id)
+
+    def CreateLoadableModuleResource(self, request, context):
+      user=self.authenticate(context)
+      return self.create(LoadableModuleResource, user, request)
+
+    def DeleteLoadableModuleResource(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(LoadableModuleResource, user, request.id)
+
+    def UpdateLoadableModuleResource(self, request, context):
+      user=self.authenticate(context)
+      return self.update(LoadableModuleResource, user, request.id, request)
+
+
+    def ListControllerRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerRole, ControllerRole.objects.all())
+
+    def GetControllerRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerRole, request.id)
+
+    def CreateControllerRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerRole, user, request)
+
+    def DeleteControllerRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerRole, user, request.id)
+
+    def UpdateControllerRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerRole, user, request.id, request)
+
+
+    def ListDiag(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Diag, Diag.objects.all())
+
+    def GetDiag(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Diag, request.id)
+
+    def CreateDiag(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Diag, user, request)
+
+    def DeleteDiag(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Diag, user, request.id)
+
+    def UpdateDiag(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Diag, user, request.id, request)
+
+
+    def ListXOS(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(XOS, XOS.objects.all())
+
+    def GetXOS(self, request, context):
+      user=self.authenticate(context)
+      return self.get(XOS, request.id)
+
+    def CreateXOS(self, request, context):
+      user=self.authenticate(context)
+      return self.create(XOS, user, request)
+
+    def DeleteXOS(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(XOS, user, request.id)
+
+    def UpdateXOS(self, request, context):
+      user=self.authenticate(context)
+      return self.update(XOS, user, request.id, request)
+
+
+    def ListServiceClass(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServiceClass, ServiceClass.objects.all())
+
+    def GetServiceClass(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServiceClass, request.id)
+
+    def CreateServiceClass(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServiceClass, user, request)
+
+    def DeleteServiceClass(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServiceClass, user, request.id)
+
+    def UpdateServiceClass(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServiceClass, user, request.id, request)
+
+
+    def ListTenantAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(TenantAttribute, TenantAttribute.objects.all())
+
+    def GetTenantAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.get(TenantAttribute, request.id)
+
+    def CreateTenantAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.create(TenantAttribute, user, request)
+
+    def DeleteTenantAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(TenantAttribute, user, request.id)
+
+    def UpdateTenantAttribute(self, request, context):
+      user=self.authenticate(context)
+      return self.update(TenantAttribute, user, request.id, request)
+
+
+    def ListSiteRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SiteRole, SiteRole.objects.all())
+
+    def GetSiteRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SiteRole, request.id)
+
+    def CreateSiteRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SiteRole, user, request)
+
+    def DeleteSiteRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SiteRole, user, request.id)
+
+    def UpdateSiteRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SiteRole, user, request.id, request)
+
+
+    def ListSubscriber(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Subscriber, Subscriber.objects.all())
+
+    def GetSubscriber(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Subscriber, request.id)
+
+    def CreateSubscriber(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Subscriber, user, request)
+
+    def DeleteSubscriber(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Subscriber, user, request.id)
+
+    def UpdateSubscriber(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Subscriber, user, request.id, request)
+
+
+    def ListInstance(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Instance, Instance.objects.all())
+
+    def GetInstance(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Instance, request.id)
+
+    def CreateInstance(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Instance, user, request)
+
+    def DeleteInstance(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Instance, user, request.id)
+
+    def UpdateInstance(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Instance, user, request.id, request)
+
+
+    def ListCharge(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Charge, Charge.objects.all())
+
+    def GetCharge(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Charge, request.id)
+
+    def CreateCharge(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Charge, user, request)
+
+    def DeleteCharge(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Charge, user, request.id)
+
+    def UpdateCharge(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Charge, user, request.id, request)
+
+
+    def ListProgram(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Program, Program.objects.all())
+
+    def GetProgram(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Program, request.id)
+
+    def CreateProgram(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Program, user, request)
+
+    def DeleteProgram(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Program, user, request.id)
+
+    def UpdateProgram(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Program, user, request.id, request)
+
+
+    def ListRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Role, Role.objects.all())
+
+    def GetRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Role, request.id)
+
+    def CreateRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Role, user, request)
+
+    def DeleteRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Role, user, request.id)
+
+    def UpdateRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Role, user, request.id, request)
+
+
+    def ListNodeLabel(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(NodeLabel, NodeLabel.objects.all())
+
+    def GetNodeLabel(self, request, context):
+      user=self.authenticate(context)
+      return self.get(NodeLabel, request.id)
+
+    def CreateNodeLabel(self, request, context):
+      user=self.authenticate(context)
+      return self.create(NodeLabel, user, request)
+
+    def DeleteNodeLabel(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(NodeLabel, user, request.id)
+
+    def UpdateNodeLabel(self, request, context):
+      user=self.authenticate(context)
+      return self.update(NodeLabel, user, request.id, request)
+
+
+    def ListNetworkTemplate(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(NetworkTemplate, NetworkTemplate.objects.all())
+
+    def GetNetworkTemplate(self, request, context):
+      user=self.authenticate(context)
+      return self.get(NetworkTemplate, request.id)
+
+    def CreateNetworkTemplate(self, request, context):
+      user=self.authenticate(context)
+      return self.create(NetworkTemplate, user, request)
+
+    def DeleteNetworkTemplate(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(NetworkTemplate, user, request.id)
+
+    def UpdateNetworkTemplate(self, request, context):
+      user=self.authenticate(context)
+      return self.update(NetworkTemplate, user, request.id, request)
+
+
+    def ListServiceController(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServiceController, ServiceController.objects.all())
+
+    def GetServiceController(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServiceController, request.id)
+
+    def CreateServiceController(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServiceController, user, request)
+
+    def DeleteServiceController(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServiceController, user, request.id)
+
+    def UpdateServiceController(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServiceController, user, request.id, request)
+
+
+    def ListLoadableModule(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(LoadableModule, LoadableModule.objects.all())
+
+    def GetLoadableModule(self, request, context):
+      user=self.authenticate(context)
+      return self.get(LoadableModule, request.id)
+
+    def CreateLoadableModule(self, request, context):
+      user=self.authenticate(context)
+      return self.create(LoadableModule, user, request)
+
+    def DeleteLoadableModule(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(LoadableModule, user, request.id)
+
+    def UpdateLoadableModule(self, request, context):
+      user=self.authenticate(context)
+      return self.update(LoadableModule, user, request.id, request)
+
+
+    def ListUsableObject(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(UsableObject, UsableObject.objects.all())
+
+    def GetUsableObject(self, request, context):
+      user=self.authenticate(context)
+      return self.get(UsableObject, request.id)
+
+    def CreateUsableObject(self, request, context):
+      user=self.authenticate(context)
+      return self.create(UsableObject, user, request)
+
+    def DeleteUsableObject(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(UsableObject, user, request.id)
+
+    def UpdateUsableObject(self, request, context):
+      user=self.authenticate(context)
+      return self.update(UsableObject, user, request.id, request)
+
+
+    def ListNode(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Node, Node.objects.all())
+
+    def GetNode(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Node, request.id)
+
+    def CreateNode(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Node, user, request)
+
+    def DeleteNode(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Node, user, request.id)
+
+    def UpdateNode(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Node, user, request.id, request)
+
+
+    def ListAddressPool(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(AddressPool, AddressPool.objects.all())
+
+    def GetAddressPool(self, request, context):
+      user=self.authenticate(context)
+      return self.get(AddressPool, request.id)
+
+    def CreateAddressPool(self, request, context):
+      user=self.authenticate(context)
+      return self.create(AddressPool, user, request)
+
+    def DeleteAddressPool(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(AddressPool, user, request.id)
+
+    def UpdateAddressPool(self, request, context):
+      user=self.authenticate(context)
+      return self.update(AddressPool, user, request.id, request)
+
+
+    def ListDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(DashboardView, DashboardView.objects.all())
+
+    def GetDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.get(DashboardView, request.id)
+
+    def CreateDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.create(DashboardView, user, request)
+
+    def DeleteDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(DashboardView, user, request.id)
+
+    def UpdateDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.update(DashboardView, user, request.id, request)
+
+
+    def ListNetworkParameter(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(NetworkParameter, NetworkParameter.objects.all())
+
+    def GetNetworkParameter(self, request, context):
+      user=self.authenticate(context)
+      return self.get(NetworkParameter, request.id)
+
+    def CreateNetworkParameter(self, request, context):
+      user=self.authenticate(context)
+      return self.create(NetworkParameter, user, request)
+
+    def DeleteNetworkParameter(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(NetworkParameter, user, request.id)
+
+    def UpdateNetworkParameter(self, request, context):
+      user=self.authenticate(context)
+      return self.update(NetworkParameter, user, request.id, request)
+
+
+    def ListImageDeployments(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ImageDeployments, ImageDeployments.objects.all())
+
+    def GetImageDeployments(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ImageDeployments, request.id)
+
+    def CreateImageDeployments(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ImageDeployments, user, request)
+
+    def DeleteImageDeployments(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ImageDeployments, user, request.id)
+
+    def UpdateImageDeployments(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ImageDeployments, user, request.id, request)
+
+
+    def ListControllerUser(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerUser, ControllerUser.objects.all())
+
+    def GetControllerUser(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerUser, request.id)
+
+    def CreateControllerUser(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerUser, user, request)
+
+    def DeleteControllerUser(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerUser, user, request.id)
+
+    def UpdateControllerUser(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerUser, user, request.id, request)
+
+
+    def ListReservedResource(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ReservedResource, ReservedResource.objects.all())
+
+    def GetReservedResource(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ReservedResource, request.id)
+
+    def CreateReservedResource(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ReservedResource, user, request)
+
+    def DeleteReservedResource(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ReservedResource, user, request.id)
+
+    def UpdateReservedResource(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ReservedResource, user, request.id, request)
+
+
+    def ListJournalEntry(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(JournalEntry, JournalEntry.objects.all())
+
+    def GetJournalEntry(self, request, context):
+      user=self.authenticate(context)
+      return self.get(JournalEntry, request.id)
+
+    def CreateJournalEntry(self, request, context):
+      user=self.authenticate(context)
+      return self.create(JournalEntry, user, request)
+
+    def DeleteJournalEntry(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(JournalEntry, user, request.id)
+
+    def UpdateJournalEntry(self, request, context):
+      user=self.authenticate(context)
+      return self.update(JournalEntry, user, request.id, request)
+
+
+    def ListUserCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(UserCredential, UserCredential.objects.all())
+
+    def GetUserCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.get(UserCredential, request.id)
+
+    def CreateUserCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.create(UserCredential, user, request)
+
+    def DeleteUserCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(UserCredential, user, request.id)
+
+    def UpdateUserCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.update(UserCredential, user, request.id, request)
+
+
+    def ListControllerDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerDashboardView, ControllerDashboardView.objects.all())
+
+    def GetControllerDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerDashboardView, request.id)
+
+    def CreateControllerDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerDashboardView, user, request)
+
+    def DeleteControllerDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerDashboardView, user, request.id)
+
+    def UpdateControllerDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerDashboardView, user, request.id, request)
+
+
+    def ListUserDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(UserDashboardView, UserDashboardView.objects.all())
+
+    def GetUserDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.get(UserDashboardView, request.id)
+
+    def CreateUserDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.create(UserDashboardView, user, request)
+
+    def DeleteUserDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(UserDashboardView, user, request.id)
+
+    def UpdateUserDashboardView(self, request, context):
+      user=self.authenticate(context)
+      return self.update(UserDashboardView, user, request.id, request)
+
+
+    def ListController(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Controller, Controller.objects.all())
+
+    def GetController(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Controller, request.id)
+
+    def CreateController(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Controller, user, request)
+
+    def DeleteController(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Controller, user, request.id)
+
+    def UpdateController(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Controller, user, request.id, request)
+
+
+    def ListTenantRootRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(TenantRootRole, TenantRootRole.objects.all())
+
+    def GetTenantRootRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(TenantRootRole, request.id)
+
+    def CreateTenantRootRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(TenantRootRole, user, request)
+
+    def DeleteTenantRootRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(TenantRootRole, user, request.id)
+
+    def UpdateTenantRootRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(TenantRootRole, user, request.id, request)
+
+
+    def ListDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Deployment, Deployment.objects.all())
+
+    def GetDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Deployment, request.id)
+
+    def CreateDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Deployment, user, request)
+
+    def DeleteDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Deployment, user, request.id)
+
+    def UpdateDeployment(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Deployment, user, request.id, request)
+
+
+    def ListReservation(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Reservation, Reservation.objects.all())
+
+    def GetReservation(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Reservation, request.id)
+
+    def CreateReservation(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Reservation, user, request)
+
+    def DeleteReservation(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Reservation, user, request.id)
+
+    def UpdateReservation(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Reservation, user, request.id, request)
+
+
+    def ListSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SitePrivilege, SitePrivilege.objects.all())
+
+    def GetSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SitePrivilege, request.id)
+
+    def CreateSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SitePrivilege, user, request)
+
+    def DeleteSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SitePrivilege, user, request.id)
+
+    def UpdateSitePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SitePrivilege, user, request.id, request)
+
+
+    def ListPayment(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Payment, Payment.objects.all())
+
+    def GetPayment(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Payment, request.id)
+
+    def CreatePayment(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Payment, user, request)
+
+    def DeletePayment(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Payment, user, request.id)
+
+    def UpdatePayment(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Payment, user, request.id, request)
+
+
+    def ListTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Tenant, Tenant.objects.all())
+
+    def GetTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Tenant, request.id)
+
+    def CreateTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Tenant, user, request)
+
+    def DeleteTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Tenant, user, request.id)
+
+    def UpdateTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Tenant, user, request.id, request)
+
+
+    def ListNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Network, Network.objects.all())
+
+    def GetNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Network, request.id)
+
+    def CreateNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Network, user, request)
+
+    def DeleteNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Network, user, request.id)
+
+    def UpdateNetwork(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Network, user, request.id, request)
+
+
+    def ListNetworkSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(NetworkSlice, NetworkSlice.objects.all())
+
+    def GetNetworkSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.get(NetworkSlice, request.id)
+
+    def CreateNetworkSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.create(NetworkSlice, user, request)
+
+    def DeleteNetworkSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(NetworkSlice, user, request.id)
+
+    def UpdateNetworkSlice(self, request, context):
+      user=self.authenticate(context)
+      return self.update(NetworkSlice, user, request.id, request)
+
+
+    def ListAccount(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Account, Account.objects.all())
+
+    def GetAccount(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Account, request.id)
+
+    def CreateAccount(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Account, user, request)
+
+    def DeleteAccount(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Account, user, request.id)
+
+    def UpdateAccount(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Account, user, request.id, request)
+
+
+    def ListTenantRoot(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(TenantRoot, TenantRoot.objects.all())
+
+    def GetTenantRoot(self, request, context):
+      user=self.authenticate(context)
+      return self.get(TenantRoot, request.id)
+
+    def CreateTenantRoot(self, request, context):
+      user=self.authenticate(context)
+      return self.create(TenantRoot, user, request)
+
+    def DeleteTenantRoot(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(TenantRoot, user, request.id)
+
+    def UpdateTenantRoot(self, request, context):
+      user=self.authenticate(context)
+      return self.update(TenantRoot, user, request.id, request)
+
+
+    def ListService(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Service, Service.objects.all())
+
+    def GetService(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Service, request.id)
+
+    def CreateService(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Service, user, request)
+
+    def DeleteService(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Service, user, request.id)
+
+    def UpdateService(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Service, user, request.id, request)
+
+
+    def ListControllerSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ControllerSlicePrivilege, ControllerSlicePrivilege.objects.all())
+
+    def GetControllerSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ControllerSlicePrivilege, request.id)
+
+    def CreateControllerSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ControllerSlicePrivilege, user, request)
+
+    def DeleteControllerSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ControllerSlicePrivilege, user, request.id)
+
+    def UpdateControllerSlicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ControllerSlicePrivilege, user, request.id, request)
+
+
+    def ListSiteCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SiteCredential, SiteCredential.objects.all())
+
+    def GetSiteCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SiteCredential, request.id)
+
+    def CreateSiteCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SiteCredential, user, request)
+
+    def DeleteSiteCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SiteCredential, user, request.id)
+
+    def UpdateSiteCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SiteCredential, user, request.id, request)
+
+
+    def ListDeploymentPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(DeploymentPrivilege, DeploymentPrivilege.objects.all())
+
+    def GetDeploymentPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(DeploymentPrivilege, request.id)
+
+    def CreateDeploymentPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(DeploymentPrivilege, user, request)
+
+    def DeleteDeploymentPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(DeploymentPrivilege, user, request.id)
+
+    def UpdateDeploymentPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(DeploymentPrivilege, user, request.id, request)
+
+
+    def ListNetworkParameterType(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(NetworkParameterType, NetworkParameterType.objects.all())
+
+    def GetNetworkParameterType(self, request, context):
+      user=self.authenticate(context)
+      return self.get(NetworkParameterType, request.id)
+
+    def CreateNetworkParameterType(self, request, context):
+      user=self.authenticate(context)
+      return self.create(NetworkParameterType, user, request)
+
+    def DeleteNetworkParameterType(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(NetworkParameterType, user, request.id)
+
+    def UpdateNetworkParameterType(self, request, context):
+      user=self.authenticate(context)
+      return self.update(NetworkParameterType, user, request.id, request)
+
+
+    def ListProvider(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Provider, Provider.objects.all())
+
+    def GetProvider(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Provider, request.id)
+
+    def CreateProvider(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Provider, user, request)
+
+    def DeleteProvider(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Provider, user, request.id)
+
+    def UpdateProvider(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Provider, user, request.id, request)
+
+
+    def ListTenantWithContainer(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(TenantWithContainer, TenantWithContainer.objects.all())
+
+    def GetTenantWithContainer(self, request, context):
+      user=self.authenticate(context)
+      return self.get(TenantWithContainer, request.id)
+
+    def CreateTenantWithContainer(self, request, context):
+      user=self.authenticate(context)
+      return self.create(TenantWithContainer, user, request)
+
+    def DeleteTenantWithContainer(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(TenantWithContainer, user, request.id)
+
+    def UpdateTenantWithContainer(self, request, context):
+      user=self.authenticate(context)
+      return self.update(TenantWithContainer, user, request.id, request)
+
+
+    def ListDeploymentRole(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(DeploymentRole, DeploymentRole.objects.all())
+
+    def GetDeploymentRole(self, request, context):
+      user=self.authenticate(context)
+      return self.get(DeploymentRole, request.id)
+
+    def CreateDeploymentRole(self, request, context):
+      user=self.authenticate(context)
+      return self.create(DeploymentRole, user, request)
+
+    def DeleteDeploymentRole(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(DeploymentRole, user, request.id)
+
+    def UpdateDeploymentRole(self, request, context):
+      user=self.authenticate(context)
+      return self.update(DeploymentRole, user, request.id, request)
+
+
+    def ListProject(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Project, Project.objects.all())
+
+    def GetProject(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Project, request.id)
+
+    def CreateProject(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Project, user, request)
+
+    def DeleteProject(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Project, user, request.id)
+
+    def UpdateProject(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Project, user, request.id, request)
+
+
+    def ListTenantRootPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(TenantRootPrivilege, TenantRootPrivilege.objects.all())
+
+    def GetTenantRootPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(TenantRootPrivilege, request.id)
+
+    def CreateTenantRootPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(TenantRootPrivilege, user, request)
+
+    def DeleteTenantRootPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(TenantRootPrivilege, user, request.id)
+
+    def UpdateTenantRootPrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(TenantRootPrivilege, user, request.id, request)
+
+
+    def ListXOSComponentVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(XOSComponentVolume, XOSComponentVolume.objects.all())
+
+    def GetXOSComponentVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.get(XOSComponentVolume, request.id)
+
+    def CreateXOSComponentVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.create(XOSComponentVolume, user, request)
+
+    def DeleteXOSComponentVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(XOSComponentVolume, user, request.id)
+
+    def UpdateXOSComponentVolume(self, request, context):
+      user=self.authenticate(context)
+      return self.update(XOSComponentVolume, user, request.id, request)
+
+
+    def ListSliceCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SliceCredential, SliceCredential.objects.all())
+
+    def GetSliceCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SliceCredential, request.id)
+
+    def CreateSliceCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SliceCredential, user, request)
+
+    def DeleteSliceCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SliceCredential, user, request.id)
+
+    def UpdateSliceCredential(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SliceCredential, user, request.id, request)
+
+
+    def ListSliceTag(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(SliceTag, SliceTag.objects.all())
+
+    def GetSliceTag(self, request, context):
+      user=self.authenticate(context)
+      return self.get(SliceTag, request.id)
+
+    def CreateSliceTag(self, request, context):
+      user=self.authenticate(context)
+      return self.create(SliceTag, user, request)
+
+    def DeleteSliceTag(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(SliceTag, user, request.id)
+
+    def UpdateSliceTag(self, request, context):
+      user=self.authenticate(context)
+      return self.update(SliceTag, user, request.id, request)
+
+
+    def ListCoarseTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(CoarseTenant, CoarseTenant.objects.all())
+
+    def GetCoarseTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.get(CoarseTenant, request.id)
+
+    def CreateCoarseTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.create(CoarseTenant, user, request)
+
+    def DeleteCoarseTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(CoarseTenant, user, request.id)
+
+    def UpdateCoarseTenant(self, request, context):
+      user=self.authenticate(context)
+      return self.update(CoarseTenant, user, request.id, request)
+
+
+    def ListRouter(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(Router, Router.objects.all())
+
+    def GetRouter(self, request, context):
+      user=self.authenticate(context)
+      return self.get(Router, request.id)
+
+    def CreateRouter(self, request, context):
+      user=self.authenticate(context)
+      return self.create(Router, user, request)
+
+    def DeleteRouter(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(Router, user, request.id)
+
+    def UpdateRouter(self, request, context):
+      user=self.authenticate(context)
+      return self.update(Router, user, request.id, request)
+
+
+    def ListServiceResource(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServiceResource, ServiceResource.objects.all())
+
+    def GetServiceResource(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServiceResource, request.id)
+
+    def CreateServiceResource(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServiceResource, user, request)
+
+    def DeleteServiceResource(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServiceResource, user, request.id)
+
+    def UpdateServiceResource(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServiceResource, user, request.id, request)
+
+
+    def ListServicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(ServicePrivilege, ServicePrivilege.objects.all())
+
+    def GetServicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.get(ServicePrivilege, request.id)
+
+    def CreateServicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.create(ServicePrivilege, user, request)
+
+    def DeleteServicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(ServicePrivilege, user, request.id)
+
+    def UpdateServicePrivilege(self, request, context):
+      user=self.authenticate(context)
+      return self.update(ServicePrivilege, user, request.id, request)
+
+
+    def ListUser(self, request, context):
+      user=self.authenticate(context)
+      return self.querysetToProto(User, User.objects.all())
+
+    def GetUser(self, request, context):
+      user=self.authenticate(context)
+      return self.get(User, request.id)
+
+    def CreateUser(self, request, context):
+      user=self.authenticate(context)
+      return self.create(User, user, request)
+
+    def DeleteUser(self, request, context):
+      user=self.authenticate(context)
+      return self.delete(User, user, request.id)
+
+    def UpdateUser(self, request, context):
+      user=self.authenticate(context)
+      return self.update(User, user, request.id, request)
+
+
+
diff --git a/xos/tools/apigen/grpc_api.template.py b/xos/tools/apigen/grpc_api.template.py
index b7217cc..ddd2b77 100644
--- a/xos/tools/apigen/grpc_api.template.py
+++ b/xos/tools/apigen/grpc_api.template.py
@@ -1,8 +1,11 @@
+import base64
 import time
 from protos import xos_pb2
 from google.protobuf.empty_pb2 import Empty
 
+from django.contrib.auth import authenticate as django_authenticate
 from core.models import *
+from xos.exceptions import *
 
 class XosService(xos_pb2.xosServicer):
     def __init__(self, thread_pool):
@@ -113,36 +116,69 @@
         obj = djangoClass.objects.get(id=id)
         return self.objToProto(obj)
 
-    def create(self, djangoClass, request):
+    def create(self, djangoClass, user, request):
         args = self.protoToArgs(djangoClass, request)
         new_obj = djangoClass(**args)
+        new_obj.caller = user
+        if (not user) or (not new_obj.can_update(user)):
+            raise XOSPermissionDenied()
         new_obj.save()
         return self.objToProto(new_obj)
 
-    def update(self, djangoClass, id, message):
+    def update(self, djangoClass, user, id, message):
         obj = djangoClass.objects.get(id=id)
+        obj.caller = user
+        if (not user) or (not obj.can_update(user)):
+            raise XOSPermissionDenied()
         args = self.protoToArgs(djangoClass, message)
         for (k,v) in args.iteritems():
             setattr(obj, k, v)
         obj.save()
         return self.objToProto(obj)
 
+    def delete(self, djangoClass, user, id):
+      obj = djangoClass.objects.get(id=id)
+      if (not user) or (not obj.can_update(user)):
+          raise XOSPermissionDenied()
+      obj.delete()
+      return Empty()
+
+    def authenticate(self, context):
+        for (k, v) in context.invocation_metadata():
+            if (k.lower()=="authorization"):
+                (method, auth) = v.split(" ",1)
+                if (method.lower() == "basic"):
+                    auth = base64.b64decode(auth)
+                    (username, password) = auth.split(":")
+                    user = django_authenticate(username=username, password=password)
+                    if not user:
+                        raise Exception("failed to authenticate %s:%s" % (username, password))
+                    print "authenticated %s:%s as %s" % (username, password, user)
+                    return user
+
+        return None
+
+
 {% for object in generator.all() %}
     def List{{ object.camel() }}(self, request, context):
+      user=self.authenticate(context)
       return self.querysetToProto({{ object.camel() }}, {{ object.camel() }}.objects.all())
 
     def Get{{ object.camel() }}(self, request, context):
+      user=self.authenticate(context)
       return self.get({{ object.camel() }}, request.id)
 
     def Create{{ object.camel() }}(self, request, context):
-      return self.create({{ object.camel() }}, request)
+      user=self.authenticate(context)
+      return self.create({{ object.camel() }}, user, request)
 
     def Delete{{ object.camel() }}(self, request, context):
-      {{ object.camel() }}.objects.get(id=request.id).delete()
-      return Empty()
+      user=self.authenticate(context)
+      return self.delete({{ object.camel() }}, user, request.id)
 
     def Update{{ object.camel() }}(self, request, context):
-      return self.update({{ object.camel() }}, request.id, request)
+      user=self.authenticate(context)
+      return self.update({{ object.camel() }}, user, request.id, request)
 
 {% endfor %}
 
diff --git a/xos/tools/apigen/grpc_list_test.template.py b/xos/tools/apigen/grpc_list_test.template.py
index 8759e77..320d9eb 100644
--- a/xos/tools/apigen/grpc_list_test.template.py
+++ b/xos/tools/apigen/grpc_list_test.template.py
@@ -1,16 +1,19 @@
-import grpc
-from protos import common_pb2
-from protos import xos_pb2
-from protos import xos_pb2_grpc
-from google.protobuf.empty_pb2 import Empty
+import grpc_client
+from grpc_client import Empty
 
-channel = grpc.insecure_channel("localhost:50055")
-stub = xos_pb2_grpc.xosStub(channel)
+c=grpc_client.InsecureClient("localhost")
 
 {% for object in generator.all() %}
-print "List{{ object.camel() }}...",
-stub.List{{ object.camel() }}(Empty())
+print "testing insecure List{{ object.camel() }}...",
+c.stub.List{{ object.camel() }}(Empty())
 print "Okay"
 {%- endfor %}
 
+c=grpc_client.SecureClient("localhost", username="padmin@vicci.org", password="letmein")
+
+{% for object in generator.all() %}
+print "testing secure List{{ object.camel() }}...",
+c.stub.List{{ object.camel() }}(Empty())
+print "Okay"
+{%- endfor %}
 
