diff --git a/odpf/shield/v1beta1/shield.proto b/odpf/shield/v1beta1/shield.proto index b05686a8..1edc02c2 100644 --- a/odpf/shield/v1beta1/shield.proto +++ b/odpf/shield/v1beta1/shield.proto @@ -117,6 +117,17 @@ service ShieldService { }; } + rpc UpdateGroup(UpdateGroupRequest) returns (UpdateGroupResponse) { + option (google.api.http) = { + put: "/v1beta1/groups/{id}", + body: "body"; + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Group"; + summary: "Update Group by ID"; + }; + } + rpc ListGroupUsers(ListGroupUsersRequest) returns (ListGroupUsersResponse) { option (google.api.http) = { get: "/v1beta1/groups/{id}/users", @@ -127,14 +138,55 @@ service ShieldService { }; } - rpc UpdateGroup(UpdateGroupRequest) returns (UpdateGroupResponse) { + rpc AddGroupUser(AddGroupUserRequest) returns (AddGroupUserResponse) { option (google.api.http) = { - put: "/v1beta1/groups/{id}", + post: "/v1beta1/groups/{id}/users", body: "body"; }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { tags: "Group"; - summary: "Update Group by ID"; + summary: "Add User to Group"; + }; + } + + rpc RemoveGroupUser(RemoveGroupUserRequest) returns (RemoveGroupUserResponse) { + option (google.api.http) = { + delete: "/v1beta1/groups/{id}/users/{user_id}", + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Group"; + summary: "Remove User from Group"; + }; + } + + rpc ListGroupAdmins(ListGroupAdminsRequest) returns (ListGroupAdminsResponse) { + option (google.api.http) = { + get: "/v1beta1/groups/{id}/admins", + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Group"; + summary: "Get all Admins of a Group"; + }; + } + + rpc AddGroupAdmin(AddGroupAdminRequest) returns (AddGroupAdminResponse) { + option (google.api.http) = { + post: "/v1beta1/groups/{id}/admins", + body: "body"; + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Group"; + summary: "Add Admin to Group"; + }; + } + + rpc RemoveGroupAdmin(RemoveGroupAdminRequest) returns (RemoveGroupAdminResponse) { + option (google.api.http) = { + delete: "/v1beta1/groups/{id}/admins/{user_id}", + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Group"; + summary: "Remove Admin from Group"; }; } @@ -224,6 +276,37 @@ service ShieldService { }; } + rpc ListOrganizationAdmins(ListOrganizationAdminsRequest) returns (ListOrganizationAdminsResponse) { + option (google.api.http) = { + get: "/v1beta1/organizations/{id}/admins", + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Organization"; + summary: "Get all Admins of an Organization"; + }; + } + + rpc AddOrganizationAdmin(AddOrganizationAdminRequest) returns (AddOrganizationAdminResponse) { + option (google.api.http) = { + post: "/v1beta1/organizations/{id}/admins", + body: "body"; + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Organization"; + summary: "Add Admin to Organization"; + }; + } + + rpc RemoveOrganizationAdmin(RemoveOrganizationAdminRequest) returns (RemoveOrganizationAdminResponse) { + option (google.api.http) = { + delete: "/v1beta1/organizations/{id}/admins/{user_id}", + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Organization"; + summary: "Remove Admin from Organization"; + }; + } + // Projects rpc ListProjects(ListProjectsRequest) returns (ListProjectsResponse) { option (google.api.http) = { @@ -267,6 +350,37 @@ service ShieldService { }; } + rpc ListProjectAdmins(ListProjectAdminsRequest) returns (ListProjectAdminsResponse) { + option (google.api.http) = { + get: "/v1beta1/projects/{id}/admins", + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Project"; + summary: "Get all Admins of a Project"; + }; + } + + rpc AddProjectAdmin(AddProjectAdminRequest) returns (AddProjectAdminResponse) { + option (google.api.http) = { + post: "/v1beta1/projects/{id}/admins", + body: "body"; + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Project"; + summary: "Add Admin to Project"; + }; + } + + rpc RemoveProjectAdmin(RemoveProjectAdminRequest) returns (RemoveProjectAdminResponse) { + option (google.api.http) = { + delete: "/v1beta1/projects/{id}/admins/{user_id}", + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags: "Project"; + summary: "Remove Admin from Project"; + }; + } + // Actions rpc ListActions(ListActionsRequest) returns (ListActionsResponse) { option (google.api.http) = { @@ -576,9 +690,6 @@ message UpdateGroupResponse { Group group = 1; } -message ListGroupUsersResponse { - repeated User users = 1; -} message UpdateGroupRequest { string id = 1; @@ -593,10 +704,6 @@ message GetGroupRequest { string id = 1; } -message ListGroupUsersRequest { - string id = 1; -} - message ListGroupsRequest { string user_id = 1; } @@ -605,6 +712,66 @@ message ListGroupsResponse { repeated Group groups = 1; } +message ListGroupUsersRequest { + string id = 1; +} + +message ListGroupUsersResponse { + repeated User users = 1; +} + +message AddGroupUserRequestBody { + repeated string user_ids = 1; +} + +message AddGroupUserRequest { + string id = 1; + AddGroupUserRequestBody body = 2; +} + +message AddGroupUserResponse { + repeated User users = 1; +} + +message RemoveGroupUserRequest { + string id = 1; + string user_id = 2; +} + +message RemoveGroupUserResponse { + string message = 1; +} + +message ListGroupAdminsRequest { + string id = 1; +} + +message ListGroupAdminsResponse { + repeated User users = 1; +} + +message AddGroupAdminRequestBody { + repeated string user_ids = 1; +} + +message AddGroupAdminRequest { + string id = 1; + AddGroupAdminRequestBody body = 2; +} + +message AddGroupAdminResponse { + repeated User users = 1; +} + +message RemoveGroupAdminRequest { + string id = 1; + string user_id = 2; +} + +message RemoveGroupAdminResponse { + string message = 1; +} + message Role { string id = 1; string name = 2 [(validate.rules).string.pattern = "^[A-Za-z0-9_-]+$"]; @@ -702,6 +869,36 @@ message UpdateOrganizationRequest { OrganizationRequestBody body = 2; } +message ListOrganizationAdminsRequest { + string id = 1; +} + +message ListOrganizationAdminsResponse { + repeated User users = 1; +} + +message AddOrganizationAdminRequestBody { + repeated string user_ids = 1; +} + +message AddOrganizationAdminRequest { + string id = 1; + AddOrganizationAdminRequestBody body = 2; +} + +message AddOrganizationAdminResponse { + repeated User users = 1; +} + +message RemoveOrganizationAdminRequest { + string id = 1; + string user_id = 2; +} + +message RemoveOrganizationAdminResponse { + string message = 1; +} + message ProjectRequestBody { string name = 1 [(validate.rules).string.pattern = "^[A-Za-z0-9_-]+$"]; string slug = 2; @@ -751,6 +948,36 @@ message UpdateProjectRequest { ProjectRequestBody body = 2; } +message ListProjectAdminsRequest { + string id = 1; +} + +message ListProjectAdminsResponse { + repeated User users = 1; +} + +message AddProjectAdminRequestBody { + repeated string user_ids = 1; +} + +message AddProjectAdminRequest { + string id = 1; + AddProjectAdminRequestBody body = 2; +} + +message AddProjectAdminResponse { + repeated User users = 1; +} + +message RemoveProjectAdminRequest { + string id = 1; + string user_id = 2; +} + +message RemoveProjectAdminResponse { + string message = 1; +} + message Action { string id = 1; string name = 2 [(validate.rules).string.pattern = "^[A-Za-z0-9_-]+$"];