blob: c351f1fe0ea88c9cd09bdb3b81001b617745efe7 [file] [log] [blame]
Scott Bakerdab11192017-02-03 16:42:14 -08001syntax = "proto3";
2
3package xos;
4
5import "google/protobuf/empty.proto";
Zack Williams6bdd3ea2018-03-26 15:21:05 -07006import "annotations.proto";
Scott Bakerdab11192017-02-03 16:42:14 -08007import "common.proto";
Matteo Scandolo488c88e2018-02-01 11:52:33 -08008import "xosoptions.proto";
Scott Bakerdab11192017-02-03 16:42:14 -08009
10message LoginRequest {
11 string username = 1;
12 string password = 2;
13};
14
15message LoginResponse {
16 string sessionid = 1;
17};
18
Scott Baker21d5e4f2017-03-25 11:00:33 -070019message ModelFilter {
20 string class_name = 1;
21};
22
23message ModelListEntry {
24 string class_name = 1;
25 int32 id = 2;
26 string info = 3;
27};
28
29message ModelList {
30 repeated ModelListEntry items = 1;
31};
32
Matteo Scandolod9208552017-06-21 14:15:16 -070033message XProtos {
34 string xproto = 1;
35};
36
Scott Baker89704b12019-05-07 16:42:11 -070037message VersionInfo {
38 string version = 1;
39 string pythonVersion = 2;
40 string gitCommit = 3;
41 string buildTime = 4;
42 string os = 5;
43 string arch = 6;
44};
45
Scott Bakerdf2a0ac2019-06-07 11:56:20 -070046message DatabaseInfo {
47 enum DatabaseStatus {
48 UNKNOWN=0;
49 OPERATIONAL=1;
50 ERROR=2;
51 }
52 string name = 1;
53 string connection = 2;
54 string version = 3;
55 DatabaseStatus status = 4;
56}
57
Matteo Scandolo488c88e2018-02-01 11:52:33 -080058message PopulatedServiceInstance {
59 option (contentTypeId) = "core.serviceinstance";
60 oneof id_present {
61 int32 id = 1;
62 }
63 oneof leaf_model_name_present {
64 string leaf_model_name = 2[(val).maxLength = 1024, (val).nonNull = true];
65 }
66 oneof name_present {
67 string name = 3[(val).maxLength = 200];
68 }
69 oneof owner_present {
70 int32 owner_id = 4[(val).nonNull = true, (foreignKey).modelName = "Service", (foreignKey).reverseFieldName = "service_instances"];
71 }
72 repeated int32 provided_service_instances = 5;
73 repeated int32 subscribed_service_instances = 6;
74 repeated int32 subscribed_service = 7;
75 repeated int32 subscribed_network = 8;
76};
77
Scott Bakerdab11192017-02-03 16:42:14 -080078service utility {
79
80 rpc Login(LoginRequest) returns (LoginResponse) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -070081 option (googleapi.http) = {
Scott Bakerdab11192017-02-03 16:42:14 -080082 post: "/xosapi/v1/utility/login"
83 body: "*"
84 };
85 }
86
87 rpc Logout(google.protobuf.Empty) returns (google.protobuf.Empty) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -070088 option (googleapi.http) = {
Scott Bakerdab11192017-02-03 16:42:14 -080089 post: "/xosapi/v1/utility/logout"
90 body: "*"
91 };
92 }
Scott Bakerafdc4682017-02-14 14:49:05 -080093
Scott Baker5ebcd282017-03-16 16:11:20 -070094 rpc NoOp(google.protobuf.Empty) returns (google.protobuf.Empty) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -070095 option (googleapi.http) = {
Scott Baker5ebcd282017-03-16 16:11:20 -070096 post: "/xosapi/v1/utility/noop"
97 body: "*"
98 };
99 }
Scott Baker21d5e4f2017-03-25 11:00:33 -0700100
Scott Baker16778212017-05-04 14:35:00 -0700101 rpc AuthenticatedNoOp(google.protobuf.Empty) returns (google.protobuf.Empty) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -0700102 option (googleapi.http) = {
Scott Baker16778212017-05-04 14:35:00 -0700103 post: "/xosapi/v1/utility/auth_noop"
104 body: "*"
105 };
106 }
107
Scott Baker21d5e4f2017-03-25 11:00:33 -0700108 rpc SetDirtyModels(ModelFilter) returns (ModelList) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -0700109 option (googleapi.http) = {
Scott Baker21d5e4f2017-03-25 11:00:33 -0700110 post: "/xosapi/v1/utility/dirty_models"
111 body: "*"
112 };
113 }
114
115 rpc ListDirtyModels(ModelFilter) returns (ModelList) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -0700116 option (googleapi.http) = {
Scott Baker21d5e4f2017-03-25 11:00:33 -0700117 get: "/xosapi/v1/utility/dirty_models"
118 };
119 }
Matteo Scandolod9208552017-06-21 14:15:16 -0700120
121 rpc GetXproto(google.protobuf.Empty) returns (XProtos) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -0700122 option (googleapi.http) = {
Matteo Scandolod9208552017-06-21 14:15:16 -0700123 get: "/xosapi/v1/xproto"
124 };
125 }
Matteo Scandolo488c88e2018-02-01 11:52:33 -0800126
127 rpc GetPopulatedServiceInstances(ID) returns (PopulatedServiceInstance) {
Zack Williams6bdd3ea2018-03-26 15:21:05 -0700128 option (googleapi.http) = {
Matteo Scandolo488c88e2018-02-01 11:52:33 -0800129 get: "/xosapi/v1/core/populatedserviceinstance/{id}"
130 };
131 }
Scott Baker89704b12019-05-07 16:42:11 -0700132
133 rpc GetVersion(google.protobuf.Empty) returns (VersionInfo) {
134 option (googleapi.http) = {
135 get: "/xosapi/v1/version"
136 };
137 }
138
Scott Bakerdf2a0ac2019-06-07 11:56:20 -0700139 rpc GetDatabaseInfo(google.protobuf.Empty) returns (DatabaseInfo) {
140 option (googleapi.http) = {
141 get: "/xosapi/v1/dbinfo"
142 };
143 }
144
Scott Baker89704b12019-05-07 16:42:11 -0700145
Zack Williams6bdd3ea2018-03-26 15:21:05 -0700146};