2023-08-07 21:30:30 +03:00
|
|
|
syntax = "proto3";
|
|
|
|
|
2023-08-11 21:27:38 +03:00
|
|
|
package pkgdash;
|
2023-08-07 21:30:30 +03:00
|
|
|
|
2023-08-11 21:27:38 +03:00
|
|
|
import "api/annotations.proto";
|
|
|
|
import "openapiv3/annotations.proto";
|
2023-08-07 21:30:30 +03:00
|
|
|
import "validate/validate.proto";
|
2023-08-16 13:17:42 +03:00
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
|
|
|
|
option go_package = "go.unistack.org/unistack-org/pkgdash/proto;pkgdashpb";
|
2023-08-07 21:30:30 +03:00
|
|
|
|
2023-08-11 21:27:38 +03:00
|
|
|
service PkgdashService {
|
2023-08-16 13:17:42 +03:00
|
|
|
rpc PackagesCreate(PackagesCreateReq) returns (PackagesCreateRsp) {
|
2023-08-11 21:27:38 +03:00
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
operation_id: "PackagesCreate";
|
2023-08-11 21:27:38 +03:00
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
option (micro.api.http) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
post: "/v1/packages";
|
|
|
|
body: "*";
|
2023-08-11 21:27:38 +03:00
|
|
|
};
|
2023-08-16 13:17:42 +03:00
|
|
|
}
|
|
|
|
rpc PackagesDelete(PackagesDeleteReq) returns (PackagesDeleteRsp) {
|
2023-08-11 21:27:38 +03:00
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
operation_id: "PackagesDelete";
|
2023-08-11 21:27:38 +03:00
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2023-08-16 13:17:42 +03:00
|
|
|
option (micro.api.http) = {delete: "/v1/packages/{id}"};
|
|
|
|
}
|
|
|
|
rpc PackagesList(PackagesListReq) returns (PackagesListRsp) {
|
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
|
|
|
operation_id: "PackagesList";
|
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
2023-08-11 21:27:38 +03:00
|
|
|
};
|
2023-08-16 13:17:42 +03:00
|
|
|
option (micro.api.http) = {get: "/v1/packages"};
|
|
|
|
}
|
|
|
|
rpc PackagesUpdate(PackagesUpdateReq) returns (PackagesUpdateRsp) {
|
2023-08-11 21:27:38 +03:00
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
operation_id: "PackagesUpdate";
|
2023-08-11 21:27:38 +03:00
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
option (micro.api.http) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
put: "/v1/packages/{id}";
|
2023-08-11 21:27:38 +03:00
|
|
|
body: "*";
|
|
|
|
};
|
2023-08-16 13:17:42 +03:00
|
|
|
}
|
|
|
|
rpc CommentsCreate(CommentsCreateReq) returns (CommentsCreateRsp) {
|
2023-08-11 21:45:08 +03:00
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
operation_id: "CommentsCreate";
|
2023-08-11 21:45:08 +03:00
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
option (micro.api.http) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
post: "/v1/packages/{package_id}/comments";
|
2023-08-11 21:45:08 +03:00
|
|
|
body: "*";
|
|
|
|
};
|
2023-08-16 13:17:42 +03:00
|
|
|
}
|
|
|
|
rpc CommentsLookup(CommentsLookupReq) returns (CommentsLookupRsp) {
|
2023-08-11 21:45:08 +03:00
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
operation_id: "CommentsLookup";
|
2023-08-11 21:45:08 +03:00
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
option (micro.api.http) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
get: "/v1/comments/{id}/comments";
|
|
|
|
additional_bindings {get: "/v1/comments/{package_id}/comments/{id}"};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
rpc CommentsList(CommentsListReq) returns (CommentsListRsp) {
|
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
|
|
|
operation_id: "CommentsList";
|
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
2023-08-11 21:45:08 +03:00
|
|
|
};
|
2023-08-16 13:17:42 +03:00
|
|
|
option (micro.api.http) = {get: "/v1/packages/{package_id}/comments"};
|
|
|
|
}
|
|
|
|
rpc CommentsDelete(CommentsDeleteReq) returns (CommentsDeleteRsp) {
|
2023-08-14 14:27:29 +03:00
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
operation_id: "CommentsDelete";
|
2023-08-14 14:27:29 +03:00
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
option (micro.api.http) = {
|
2023-08-16 13:17:42 +03:00
|
|
|
delete: "/v1/packages/{package_id}/comments/{id}";
|
|
|
|
additional_bindings {delete: "/v1/comments/{id}"};
|
2023-08-14 14:27:29 +03:00
|
|
|
};
|
|
|
|
}
|
2023-08-16 13:17:42 +03:00
|
|
|
rpc ModulesList(ModulesListReq) returns (ModulesListRsp) {
|
|
|
|
option (micro.openapiv3.openapiv3_operation) = {
|
|
|
|
operation_id: "ModulesList";
|
|
|
|
responses: {
|
|
|
|
default: {
|
|
|
|
reference: {_ref: ".pkgdash.ErrorRsp"};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
option (micro.api.http) = {get: "/v1/modules"};
|
|
|
|
}
|
2023-08-09 14:31:23 +03:00
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message ErrorRsp {
|
2023-08-09 14:31:23 +03:00
|
|
|
string code = 1 [json_name = "code"];
|
|
|
|
string title = 2 [json_name = "title"];
|
|
|
|
string uuid = 3 [json_name = "uuid"];
|
|
|
|
string details = 4 [json_name = "details"];
|
|
|
|
}
|
|
|
|
|
2023-08-07 21:30:30 +03:00
|
|
|
message Package {
|
|
|
|
uint64 id = 1 [(validate.rules).uint64.gt = 0];
|
|
|
|
string name = 2 [(validate.rules).string.min_len = 1];
|
|
|
|
string url = 3 [(validate.rules).string.min_len = 1];
|
2023-08-11 20:12:15 +03:00
|
|
|
repeated uint64 modules = 4;
|
|
|
|
repeated uint64 issues = 5;
|
|
|
|
repeated uint64 comments = 6;
|
2023-08-16 13:17:42 +03:00
|
|
|
google.protobuf.Timestamp created = 7;
|
|
|
|
google.protobuf.Timestamp updated = 8;
|
|
|
|
}
|
2023-08-07 21:30:30 +03:00
|
|
|
|
|
|
|
message Module {
|
|
|
|
uint64 id = 1 [(validate.rules).uint64.gt = 0];
|
|
|
|
string name = 2 [(validate.rules).string.min_len = 1];
|
|
|
|
string version = 3 [(validate.rules).string.min_len = 1];
|
|
|
|
uint64 package = 4 [(validate.rules).uint64.gt = 0];
|
2023-08-11 20:12:15 +03:00
|
|
|
string last_version = 5 [(validate.rules).string.min_len = 1];
|
2023-08-16 13:17:42 +03:00
|
|
|
google.protobuf.Timestamp created = 6;
|
|
|
|
google.protobuf.Timestamp updated = 7;
|
2023-08-07 21:30:30 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
message Issue {
|
|
|
|
uint64 id = 1 [(validate.rules).uint64.gt = 0];
|
|
|
|
uint64 status = 2 [(validate.rules).uint64.gt = 0];
|
|
|
|
string desc = 3 [(validate.rules).string.min_len = 1];
|
|
|
|
uint64 package = 4 [(validate.rules).uint64.gt = 0];
|
|
|
|
repeated uint64 modules = 5;
|
2023-08-16 13:17:42 +03:00
|
|
|
google.protobuf.Timestamp created = 6;
|
|
|
|
google.protobuf.Timestamp updated = 7;
|
2023-08-07 21:30:30 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
message Comment {
|
|
|
|
uint64 id = 1 [(validate.rules).uint64.gt = 0];
|
|
|
|
uint64 package = 2 [(validate.rules).uint64.gt = 0];
|
|
|
|
string text = 3;
|
2023-08-16 13:17:42 +03:00
|
|
|
google.protobuf.Timestamp created = 4;
|
|
|
|
google.protobuf.Timestamp updated = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message CommentsDeleteReq {
|
|
|
|
uint64 id = 1 [json_name = "id"];
|
|
|
|
uint64 package_id = 2 [json_name = "package_id"];
|
|
|
|
}
|
|
|
|
|
|
|
|
message CommentsDeleteRsp {}
|
|
|
|
|
|
|
|
message PackagesDeleteReq {
|
|
|
|
uint64 id = 1 [json_name = "id"];
|
2023-08-07 21:30:30 +03:00
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message PackagesDeleteRsp {}
|
|
|
|
|
|
|
|
message PackagesListReq {}
|
|
|
|
|
|
|
|
message PackagesListRsp {
|
2023-08-07 21:30:30 +03:00
|
|
|
repeated Package packages = 1;
|
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message PackagesUpdateReq {
|
2023-08-12 19:26:50 +03:00
|
|
|
uint64 id = 1 [(validate.rules).uint64.gt = 0];
|
|
|
|
string name = 2 [(validate.rules).string.min_len = 1];
|
|
|
|
string url = 3 [(validate.rules).string.min_len = 1];
|
2023-08-16 13:17:42 +03:00
|
|
|
repeated uint64 modules = 4;
|
|
|
|
repeated uint64 issues = 5;
|
2023-08-07 21:30:30 +03:00
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message PackagesUpdateRsp {
|
|
|
|
Package package = 1 [json_name = "package"];
|
2023-08-07 21:30:30 +03:00
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message CommentsCreateReq {
|
|
|
|
uint64 package_id = 1 [
|
|
|
|
json_name = "package_id",
|
|
|
|
(validate.rules).uint64.gt = 0
|
|
|
|
];
|
2023-08-07 21:30:30 +03:00
|
|
|
string text = 2;
|
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message CommentsCreateRsp {
|
|
|
|
Comment comment = 1 [json_name = "comment"];
|
2023-08-11 20:12:15 +03:00
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message PackagesCreateReq {
|
2023-08-12 19:26:50 +03:00
|
|
|
string name = 1 [(validate.rules).string.min_len = 1];
|
2023-08-16 13:17:42 +03:00
|
|
|
string url = 2 [(validate.rules).string.min_len = 1];
|
2023-08-11 20:12:15 +03:00
|
|
|
repeated uint64 modules = 3;
|
|
|
|
}
|
2023-08-11 21:45:08 +03:00
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message PackagesCreateRsp {
|
2023-08-12 19:26:50 +03:00
|
|
|
string status = 1 [(validate.rules).string.min_len = 1];
|
|
|
|
}
|
2023-08-11 20:12:15 +03:00
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message ModulesListReq {}
|
|
|
|
|
|
|
|
message ModulesListRsp {
|
|
|
|
repeated Module modules = 1;
|
2023-08-11 20:12:15 +03:00
|
|
|
}
|
2023-08-16 13:17:42 +03:00
|
|
|
|
|
|
|
message CommentsListReq {
|
|
|
|
uint64 package_id = 1 [json_name = "package_id"];
|
2023-08-14 14:27:29 +03:00
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message CommentsListRsp {
|
|
|
|
repeated Comment comments = 1 [json_name = "comments"];
|
2023-08-14 14:27:29 +03:00
|
|
|
}
|
|
|
|
|
2023-08-16 13:17:42 +03:00
|
|
|
message CommentsLookupReq {
|
|
|
|
uint64 id = 1 [json_name = "id"];
|
|
|
|
uint64 package_id = 2 [json_name = "package_id"];
|
|
|
|
}
|
|
|
|
|
|
|
|
message CommentsLookupRsp {
|
|
|
|
Comment comment = 1 [json_name = "comment"];
|
|
|
|
}
|