SEBA-349 GRPC
added xos proto files

Change-Id: I59feae392782331d11e1ac506c18f772ccfb8898
diff --git a/contrib/xos/utility.proto b/contrib/xos/utility.proto
new file mode 100644
index 0000000..554e0a9
--- /dev/null
+++ b/contrib/xos/utility.proto
@@ -0,0 +1,111 @@
+syntax = "proto3";
+
+package xos;
+
+import "google/protobuf/empty.proto";
+import "annotations.proto";
+import "common.proto";
+import "xosoptions.proto";
+
+message LoginRequest {
+    string username = 1;
+    string password = 2;
+};
+
+message LoginResponse {
+    string sessionid = 1;
+};
+
+message ModelFilter {
+    string class_name = 1;
+};
+
+message ModelListEntry {
+    string class_name = 1;
+    int32 id = 2;
+    string info = 3;
+};
+
+message ModelList {
+    repeated ModelListEntry items = 1;
+};
+
+message XProtos {
+    string xproto = 1;
+};
+
+message PopulatedServiceInstance {
+    option (contentTypeId) = "core.serviceinstance";
+    oneof id_present {
+      int32 id = 1;
+    }
+    oneof leaf_model_name_present {
+      string leaf_model_name = 2[(val).maxLength = 1024, (val).nonNull = true];
+    }
+    oneof name_present {
+      string name = 3[(val).maxLength = 200];
+    }
+    oneof owner_present {
+      int32 owner_id = 4[(val).nonNull = true, (foreignKey).modelName = "Service", (foreignKey).reverseFieldName = "service_instances"];
+    }
+    repeated int32 provided_service_instances = 5;
+    repeated int32 subscribed_service_instances = 6;
+    repeated int32 subscribed_service = 7;
+    repeated int32 subscribed_network = 8;
+};
+
+service utility {
+
+  rpc Login(LoginRequest) returns (LoginResponse) {
+        option (googleapi.http) = {
+            post: "/xosapi/v1/utility/login"
+            body: "*"
+        };
+  }
+
+  rpc Logout(google.protobuf.Empty) returns (google.protobuf.Empty) {
+        option (googleapi.http) = {
+            post: "/xosapi/v1/utility/logout"
+            body: "*"
+        };
+  }
+
+  rpc NoOp(google.protobuf.Empty) returns (google.protobuf.Empty) {
+        option (googleapi.http) = {
+            post: "/xosapi/v1/utility/noop"
+            body: "*"
+        };
+  }
+
+  rpc AuthenticatedNoOp(google.protobuf.Empty) returns (google.protobuf.Empty) {
+        option (googleapi.http) = {
+            post: "/xosapi/v1/utility/auth_noop"
+            body: "*"
+        };
+  }
+
+  rpc SetDirtyModels(ModelFilter) returns (ModelList) {
+        option (googleapi.http) = {
+            post: "/xosapi/v1/utility/dirty_models"
+            body: "*"
+        };
+  }
+
+  rpc ListDirtyModels(ModelFilter) returns (ModelList) {
+        option (googleapi.http) = {
+            get: "/xosapi/v1/utility/dirty_models"
+        };
+  }
+
+  rpc GetXproto(google.protobuf.Empty) returns (XProtos) {
+        option (googleapi.http) = {
+            get: "/xosapi/v1/xproto"
+        };
+  }
+
+  rpc GetPopulatedServiceInstances(ID) returns (PopulatedServiceInstance) {
+        option (googleapi.http) = {
+            get: "/xosapi/v1/core/populatedserviceinstance/{id}"
+        };
+  }
+};