support authentication in gRPC API (CORD-695)

Change-Id: I28a51cb3c67f2b096e39d8766ae5b8cf4b6e40d2
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 %}